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/files/file_util.h" 8#include "base/logging.h" 9 10ConditionalWorkItemList::ConditionalWorkItemList(Condition* condition) 11 : condition_(condition) { 12} 13 14ConditionalWorkItemList::~ConditionalWorkItemList() {} 15 16bool 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 27void ConditionalWorkItemList::Rollback() { 28 VLOG(1) << "Rolling back conditional list " << log_message_; 29 WorkItemList::Rollback(); 30} 31 32// Pre-defined conditions: 33//------------------------------------------------------------------------------ 34bool ConditionRunIfFileExists::ShouldRun() const { 35 return base::PathExists(key_path_); 36} 37 38bool Not::ShouldRun() const { 39 return !original_condition_->ShouldRun(); 40} 41 42