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