Home | History | Annotate | Download | only in util
      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