Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1058)

Side by Side Diff: components/update_client/component_patcher_operation.cc

Issue 897873002: Make ComponentInstaller refcounted. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@2015_01_19_component_installer
Patch Set: fix Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/update_client/component_patcher_operation.h" 5 #include "components/update_client/component_patcher_operation.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 25 matching lines...) Expand all
36 } // namespace 36 } // namespace
37 37
38 const char kOp[] = "op"; 38 const char kOp[] = "op";
39 const char kBsdiff[] = "bsdiff"; 39 const char kBsdiff[] = "bsdiff";
40 const char kCourgette[] = "courgette"; 40 const char kCourgette[] = "courgette";
41 const char kInput[] = "input"; 41 const char kInput[] = "input";
42 const char kPatch[] = "patch"; 42 const char kPatch[] = "patch";
43 43
44 DeltaUpdateOp* CreateDeltaUpdateOp( 44 DeltaUpdateOp* CreateDeltaUpdateOp(
45 const std::string& operation, 45 const std::string& operation,
46 scoped_refptr<OutOfProcessPatcher> out_of_process_patcher) { 46 const scoped_refptr<OutOfProcessPatcher>& out_of_process_patcher) {
47 if (operation == "copy") { 47 if (operation == "copy") {
48 return new DeltaUpdateOpCopy(); 48 return new DeltaUpdateOpCopy();
49 } else if (operation == "create") { 49 } else if (operation == "create") {
50 return new DeltaUpdateOpCreate(); 50 return new DeltaUpdateOpCreate();
51 } else if (operation == "bsdiff" || operation == "courgette") { 51 } else if (operation == "bsdiff" || operation == "courgette") {
52 return new DeltaUpdateOpPatch(operation, out_of_process_patcher); 52 return new DeltaUpdateOpPatch(operation, out_of_process_patcher);
53 } 53 }
54 return NULL; 54 return NULL;
55 } 55 }
56 56
57 DeltaUpdateOp::DeltaUpdateOp() { 57 DeltaUpdateOp::DeltaUpdateOp() {
58 } 58 }
59 59
60 DeltaUpdateOp::~DeltaUpdateOp() { 60 DeltaUpdateOp::~DeltaUpdateOp() {
61 } 61 }
62 62
63 void DeltaUpdateOp::Run(const base::DictionaryValue* command_args, 63 void DeltaUpdateOp::Run(
64 const base::FilePath& input_dir, 64 const base::DictionaryValue* command_args,
65 const base::FilePath& unpack_dir, 65 const base::FilePath& input_dir,
66 ComponentInstaller* installer, 66 const base::FilePath& unpack_dir,
67 const ComponentUnpacker::Callback& callback, 67 const scoped_refptr<ComponentInstaller>& installer,
68 scoped_refptr<base::SequencedTaskRunner> task_runner) { 68 const ComponentUnpacker::Callback& callback,
69 const scoped_refptr<base::SequencedTaskRunner>& task_runner) {
69 callback_ = callback; 70 callback_ = callback;
70 task_runner_ = task_runner; 71 task_runner_ = task_runner;
71 std::string output_rel_path; 72 std::string output_rel_path;
72 if (!command_args->GetString(kOutput, &output_rel_path) || 73 if (!command_args->GetString(kOutput, &output_rel_path) ||
73 !command_args->GetString(kSha256, &output_sha256_)) { 74 !command_args->GetString(kSha256, &output_sha256_)) {
74 DoneRunning(ComponentUnpacker::kDeltaBadCommands, 0); 75 DoneRunning(ComponentUnpacker::kDeltaBadCommands, 0);
75 return; 76 return;
76 } 77 }
77 78
78 output_abs_path_ = 79 output_abs_path_ =
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 134
134 DeltaUpdateOpCopy::DeltaUpdateOpCopy() { 135 DeltaUpdateOpCopy::DeltaUpdateOpCopy() {
135 } 136 }
136 137
137 DeltaUpdateOpCopy::~DeltaUpdateOpCopy() { 138 DeltaUpdateOpCopy::~DeltaUpdateOpCopy() {
138 } 139 }
139 140
140 ComponentUnpacker::Error DeltaUpdateOpCopy::DoParseArguments( 141 ComponentUnpacker::Error DeltaUpdateOpCopy::DoParseArguments(
141 const base::DictionaryValue* command_args, 142 const base::DictionaryValue* command_args,
142 const base::FilePath& input_dir, 143 const base::FilePath& input_dir,
143 ComponentInstaller* installer) { 144 const scoped_refptr<ComponentInstaller>& installer) {
144 std::string input_rel_path; 145 std::string input_rel_path;
145 if (!command_args->GetString(kInput, &input_rel_path)) 146 if (!command_args->GetString(kInput, &input_rel_path))
146 return ComponentUnpacker::kDeltaBadCommands; 147 return ComponentUnpacker::kDeltaBadCommands;
147 148
148 if (!installer->GetInstalledFile(input_rel_path, &input_abs_path_)) 149 if (!installer->GetInstalledFile(input_rel_path, &input_abs_path_))
149 return ComponentUnpacker::kDeltaMissingExistingFile; 150 return ComponentUnpacker::kDeltaMissingExistingFile;
150 151
151 return ComponentUnpacker::kNone; 152 return ComponentUnpacker::kNone;
152 } 153 }
153 154
154 void DeltaUpdateOpCopy::DoRun(const ComponentUnpacker::Callback& callback) { 155 void DeltaUpdateOpCopy::DoRun(const ComponentUnpacker::Callback& callback) {
155 if (!base::CopyFile(input_abs_path_, output_abs_path_)) 156 if (!base::CopyFile(input_abs_path_, output_abs_path_))
156 callback.Run(ComponentUnpacker::kDeltaOperationFailure, 0); 157 callback.Run(ComponentUnpacker::kDeltaOperationFailure, 0);
157 else 158 else
158 callback.Run(ComponentUnpacker::kNone, 0); 159 callback.Run(ComponentUnpacker::kNone, 0);
159 } 160 }
160 161
161 DeltaUpdateOpCreate::DeltaUpdateOpCreate() { 162 DeltaUpdateOpCreate::DeltaUpdateOpCreate() {
162 } 163 }
163 164
164 DeltaUpdateOpCreate::~DeltaUpdateOpCreate() { 165 DeltaUpdateOpCreate::~DeltaUpdateOpCreate() {
165 } 166 }
166 167
167 ComponentUnpacker::Error DeltaUpdateOpCreate::DoParseArguments( 168 ComponentUnpacker::Error DeltaUpdateOpCreate::DoParseArguments(
168 const base::DictionaryValue* command_args, 169 const base::DictionaryValue* command_args,
169 const base::FilePath& input_dir, 170 const base::FilePath& input_dir,
170 ComponentInstaller* installer) { 171 const scoped_refptr<ComponentInstaller>& installer) {
171 std::string patch_rel_path; 172 std::string patch_rel_path;
172 if (!command_args->GetString(kPatch, &patch_rel_path)) 173 if (!command_args->GetString(kPatch, &patch_rel_path))
173 return ComponentUnpacker::kDeltaBadCommands; 174 return ComponentUnpacker::kDeltaBadCommands;
174 175
175 patch_abs_path_ = 176 patch_abs_path_ =
176 input_dir.Append(base::FilePath::FromUTF8Unsafe(patch_rel_path)); 177 input_dir.Append(base::FilePath::FromUTF8Unsafe(patch_rel_path));
177 178
178 return ComponentUnpacker::kNone; 179 return ComponentUnpacker::kNone;
179 } 180 }
180 181
(...skipping 10 matching lines...) Expand all
191 : operation_(operation), out_of_process_patcher_(out_of_process_patcher) { 192 : operation_(operation), out_of_process_patcher_(out_of_process_patcher) {
192 DCHECK(operation == kBsdiff || operation == kCourgette); 193 DCHECK(operation == kBsdiff || operation == kCourgette);
193 } 194 }
194 195
195 DeltaUpdateOpPatch::~DeltaUpdateOpPatch() { 196 DeltaUpdateOpPatch::~DeltaUpdateOpPatch() {
196 } 197 }
197 198
198 ComponentUnpacker::Error DeltaUpdateOpPatch::DoParseArguments( 199 ComponentUnpacker::Error DeltaUpdateOpPatch::DoParseArguments(
199 const base::DictionaryValue* command_args, 200 const base::DictionaryValue* command_args,
200 const base::FilePath& input_dir, 201 const base::FilePath& input_dir,
201 ComponentInstaller* installer) { 202 const scoped_refptr<ComponentInstaller>& installer) {
202 std::string patch_rel_path; 203 std::string patch_rel_path;
203 std::string input_rel_path; 204 std::string input_rel_path;
204 if (!command_args->GetString(kPatch, &patch_rel_path) || 205 if (!command_args->GetString(kPatch, &patch_rel_path) ||
205 !command_args->GetString(kInput, &input_rel_path)) 206 !command_args->GetString(kInput, &input_rel_path))
206 return ComponentUnpacker::kDeltaBadCommands; 207 return ComponentUnpacker::kDeltaBadCommands;
207 208
208 if (!installer->GetInstalledFile(input_rel_path, &input_abs_path_)) 209 if (!installer->GetInstalledFile(input_rel_path, &input_abs_path_))
209 return ComponentUnpacker::kDeltaMissingExistingFile; 210 return ComponentUnpacker::kDeltaMissingExistingFile;
210 211
211 patch_abs_path_ = 212 patch_abs_path_ =
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 } else { 254 } else {
254 callback.Run(ComponentUnpacker::kDeltaOperationFailure, 255 callback.Run(ComponentUnpacker::kDeltaOperationFailure,
255 result + kCourgetteErrorOffset); 256 result + kCourgetteErrorOffset);
256 } 257 }
257 } else { 258 } else {
258 NOTREACHED(); 259 NOTREACHED();
259 } 260 }
260 } 261 }
261 262
262 } // namespace update_client 263 } // namespace update_client
OLDNEW
« no previous file with comments | « components/update_client/component_patcher_operation.h ('k') | components/update_client/component_unpacker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698