- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / installer / util / conditional_work_item_list.cc
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/installer/util/conditional_work_item_list.h"
6
7 #include "base/file_util.h"
8 #include "base/logging.h"
9
10 ConditionalWorkItemList::ConditionalWorkItemList(Condition* condition)
11     : condition_(condition) {
12 }
13
14 ConditionalWorkItemList::~ConditionalWorkItemList() {}
15
16 bool ConditionalWorkItemList::Do() {
17   VLOG(1) << "Evaluating " << log_message_ << " condition...";
18   if (condition_.get() && condition_->ShouldRun()) {
19     VLOG(1) << "Beginning conditional work item list";
20     return WorkItemList::Do();
21   }
22   VLOG(1) << "No work to do in condition work item list "
23           << log_message_;
24   return true;
25 }
26
27 void ConditionalWorkItemList::Rollback() {
28   VLOG(1) << "Rolling back conditional list " << log_message_;
29   WorkItemList::Rollback();
30 }
31
32 // Pre-defined conditions:
33 //------------------------------------------------------------------------------
34 bool ConditionRunIfFileExists::ShouldRun() const {
35   return base::PathExists(key_path_);
36 }
37
38 bool Not::ShouldRun() const {
39   return !original_condition_->ShouldRun();
40 }
41