work_item.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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
21WorkItem::WorkItem() : ignore_failure_(false) {
22}
23
24WorkItem::~WorkItem() {
25}
26
27CallbackWorkItem* WorkItem::CreateCallbackWorkItem(
28    base::Callback<bool(const CallbackWorkItem&)> callback) {
29  return new CallbackWorkItem(callback);
30}
31
32CopyRegKeyWorkItem* 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
41CopyTreeWorkItem* 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
51CreateDirWorkItem* WorkItem::CreateCreateDirWorkItem(
52    const base::FilePath& path) {
53  return new CreateDirWorkItem(path);
54}
55
56CreateRegKeyWorkItem* WorkItem::CreateCreateRegKeyWorkItem(
57    HKEY predefined_root, const std::wstring& path) {
58  return new CreateRegKeyWorkItem(predefined_root, path);
59}
60
61DeleteRegKeyWorkItem* WorkItem::CreateDeleteRegKeyWorkItem(
62    HKEY predefined_root, const std::wstring& path) {
63  return new DeleteRegKeyWorkItem(predefined_root, path);
64}
65
66DeleteRegValueWorkItem* 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
73DeleteTreeWorkItem* 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
80MoveTreeWorkItem* 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
91SetRegValueWorkItem* 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
101SetRegValueWorkItem* 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
111SetRegValueWorkItem* 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
121SelfRegWorkItem* 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
127WorkItemList* WorkItem::CreateWorkItemList() {
128  return new WorkItemList();
129}
130
131// static
132WorkItemList* WorkItem::CreateNoRollbackWorkItemList() {
133  return new NoRollbackWorkItemList();
134}
135
136WorkItemList* WorkItem::CreateConditionalWorkItemList(Condition* condition) {
137  return new ConditionalWorkItemList(condition);
138}
139