work_item.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright (c) 2011 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/work_item.h" 6 7#include <windows.h> 8 9#include "chrome/installer/util/callback_work_item.h" 10#include "chrome/installer/util/conditional_work_item_list.h" 11#include "chrome/installer/util/copy_tree_work_item.h" 12#include "chrome/installer/util/create_dir_work_item.h" 13#include "chrome/installer/util/create_reg_key_work_item.h" 14#include "chrome/installer/util/delete_tree_work_item.h" 15#include "chrome/installer/util/delete_reg_key_work_item.h" 16#include "chrome/installer/util/delete_reg_value_work_item.h" 17#include "chrome/installer/util/move_tree_work_item.h" 18#include "chrome/installer/util/self_reg_work_item.h" 19#include "chrome/installer/util/set_reg_value_work_item.h" 20#include "chrome/installer/util/work_item_list.h" 21 22WorkItem::WorkItem() : ignore_failure_(false) { 23} 24 25WorkItem::~WorkItem() { 26} 27 28CallbackWorkItem* WorkItem::CreateCallbackWorkItem( 29 base::Callback<bool(const CallbackWorkItem&)> callback) { 30 return new CallbackWorkItem(callback); 31} 32 33CopyTreeWorkItem* WorkItem::CreateCopyTreeWorkItem( 34 const base::FilePath& source_path, 35 const base::FilePath& dest_path, 36 const base::FilePath& temp_dir, 37 CopyOverWriteOption overwrite_option, 38 const base::FilePath& alternative_path) { 39 return new CopyTreeWorkItem(source_path, dest_path, temp_dir, 40 overwrite_option, alternative_path); 41} 42 43CreateDirWorkItem* WorkItem::CreateCreateDirWorkItem( 44 const base::FilePath& path) { 45 return new CreateDirWorkItem(path); 46} 47 48CreateRegKeyWorkItem* WorkItem::CreateCreateRegKeyWorkItem( 49 HKEY predefined_root, 50 const std::wstring& path, 51 REGSAM wow64_access) { 52 return new CreateRegKeyWorkItem(predefined_root, path, wow64_access); 53} 54 55DeleteRegKeyWorkItem* WorkItem::CreateDeleteRegKeyWorkItem( 56 HKEY predefined_root, 57 const std::wstring& path, 58 REGSAM wow64_access) { 59 return new DeleteRegKeyWorkItem(predefined_root, path, wow64_access); 60} 61 62DeleteRegValueWorkItem* WorkItem::CreateDeleteRegValueWorkItem( 63 HKEY predefined_root, 64 const std::wstring& key_path, 65 REGSAM wow64_access, 66 const std::wstring& value_name) { 67 return new DeleteRegValueWorkItem( 68 predefined_root, key_path, wow64_access, value_name); 69} 70 71DeleteTreeWorkItem* WorkItem::CreateDeleteTreeWorkItem( 72 const base::FilePath& root_path, 73 const base::FilePath& temp_path, 74 const std::vector<base::FilePath>& key_paths) { 75 return new DeleteTreeWorkItem(root_path, temp_path, key_paths); 76} 77 78MoveTreeWorkItem* WorkItem::CreateMoveTreeWorkItem( 79 const base::FilePath& source_path, 80 const base::FilePath& dest_path, 81 const base::FilePath& temp_dir, 82 MoveTreeOption duplicate_option) { 83 return new MoveTreeWorkItem(source_path, 84 dest_path, 85 temp_dir, 86 duplicate_option); 87} 88 89SetRegValueWorkItem* WorkItem::CreateSetRegValueWorkItem( 90 HKEY predefined_root, 91 const std::wstring& key_path, 92 REGSAM wow64_access, 93 const std::wstring& value_name, 94 const std::wstring& value_data, 95 bool overwrite) { 96 return new SetRegValueWorkItem(predefined_root, 97 key_path, 98 wow64_access, 99 value_name, 100 value_data, 101 overwrite); 102} 103 104SetRegValueWorkItem* WorkItem::CreateSetRegValueWorkItem( 105 HKEY predefined_root, 106 const std::wstring& key_path, 107 REGSAM wow64_access, 108 const std::wstring& value_name, 109 DWORD value_data, 110 bool overwrite) { 111 return new SetRegValueWorkItem(predefined_root, 112 key_path, 113 wow64_access, 114 value_name, 115 value_data, 116 overwrite); 117} 118 119SetRegValueWorkItem* WorkItem::CreateSetRegValueWorkItem( 120 HKEY predefined_root, 121 const std::wstring& key_path, 122 REGSAM wow64_access, 123 const std::wstring& value_name, 124 int64 value_data, 125 bool overwrite) { 126 return new SetRegValueWorkItem(predefined_root, 127 key_path, 128 wow64_access, 129 value_name, 130 value_data, 131 overwrite); 132} 133 134SelfRegWorkItem* WorkItem::CreateSelfRegWorkItem(const std::wstring& dll_path, 135 bool do_register, 136 bool user_level_registration) { 137 return new SelfRegWorkItem(dll_path, do_register, user_level_registration); 138} 139 140WorkItemList* WorkItem::CreateWorkItemList() { 141 return new WorkItemList(); 142} 143 144// static 145WorkItemList* WorkItem::CreateNoRollbackWorkItemList() { 146 return new NoRollbackWorkItemList(); 147} 148 149WorkItemList* WorkItem::CreateConditionalWorkItemList(Condition* condition) { 150 return new ConditionalWorkItemList(condition); 151} 152