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