• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
WorkItem()22 WorkItem::WorkItem() : ignore_failure_(false) {
23 }
24 
~WorkItem()25 WorkItem::~WorkItem() {
26 }
27 
CreateCallbackWorkItem(base::Callback<bool (const CallbackWorkItem &)> callback)28 CallbackWorkItem* WorkItem::CreateCallbackWorkItem(
29     base::Callback<bool(const CallbackWorkItem&)> callback) {
30   return new CallbackWorkItem(callback);
31 }
32 
CreateCopyTreeWorkItem(const base::FilePath & source_path,const base::FilePath & dest_path,const base::FilePath & temp_dir,CopyOverWriteOption overwrite_option,const base::FilePath & alternative_path)33 CopyTreeWorkItem* 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 
CreateCreateDirWorkItem(const base::FilePath & path)43 CreateDirWorkItem* WorkItem::CreateCreateDirWorkItem(
44     const base::FilePath& path) {
45   return new CreateDirWorkItem(path);
46 }
47 
CreateCreateRegKeyWorkItem(HKEY predefined_root,const std::wstring & path,REGSAM wow64_access)48 CreateRegKeyWorkItem* 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 
CreateDeleteRegKeyWorkItem(HKEY predefined_root,const std::wstring & path,REGSAM wow64_access)55 DeleteRegKeyWorkItem* 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 
CreateDeleteRegValueWorkItem(HKEY predefined_root,const std::wstring & key_path,REGSAM wow64_access,const std::wstring & value_name)62 DeleteRegValueWorkItem* 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 
CreateDeleteTreeWorkItem(const base::FilePath & root_path,const base::FilePath & temp_path,const std::vector<base::FilePath> & key_paths)71 DeleteTreeWorkItem* 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 
CreateMoveTreeWorkItem(const base::FilePath & source_path,const base::FilePath & dest_path,const base::FilePath & temp_dir,MoveTreeOption duplicate_option)78 MoveTreeWorkItem* 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 
CreateSetRegValueWorkItem(HKEY predefined_root,const std::wstring & key_path,REGSAM wow64_access,const std::wstring & value_name,const std::wstring & value_data,bool overwrite)89 SetRegValueWorkItem* 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 
CreateSetRegValueWorkItem(HKEY predefined_root,const std::wstring & key_path,REGSAM wow64_access,const std::wstring & value_name,DWORD value_data,bool overwrite)104 SetRegValueWorkItem* 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 
CreateSetRegValueWorkItem(HKEY predefined_root,const std::wstring & key_path,REGSAM wow64_access,const std::wstring & value_name,int64 value_data,bool overwrite)119 SetRegValueWorkItem* 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 
CreateSelfRegWorkItem(const std::wstring & dll_path,bool do_register,bool user_level_registration)134 SelfRegWorkItem* 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 
CreateWorkItemList()140 WorkItemList* WorkItem::CreateWorkItemList() {
141   return new WorkItemList();
142 }
143 
144 // static
CreateNoRollbackWorkItemList()145 WorkItemList* WorkItem::CreateNoRollbackWorkItemList() {
146   return new NoRollbackWorkItemList();
147 }
148 
CreateConditionalWorkItemList(Condition * condition)149 WorkItemList* WorkItem::CreateConditionalWorkItemList(Condition* condition) {
150   return new ConditionalWorkItemList(condition);
151 }
152