• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
ConditionalWorkItemList(Condition * condition)10 ConditionalWorkItemList::ConditionalWorkItemList(Condition* condition)
11     : condition_(condition) {
12 }
13 
~ConditionalWorkItemList()14 ConditionalWorkItemList::~ConditionalWorkItemList() {}
15 
Do()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 
Rollback()27 void ConditionalWorkItemList::Rollback() {
28   VLOG(1) << "Rolling back conditional list " << log_message_;
29   WorkItemList::Rollback();
30 }
31 
32 // Pre-defined conditions:
33 //------------------------------------------------------------------------------
ShouldRun() const34 bool ConditionRunIfFileExists::ShouldRun() const {
35   return base::PathExists(key_path_);
36 }
37 
ShouldRun() const38 bool Not::ShouldRun() const {
39   return !original_condition_->ShouldRun();
40 }
41 
42