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 42