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

Unified Diff: chrome/browser/component_updater/component_unpacker.cc

Issue 25909005: Use UtilityProcessHost to patch files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nonblocking
Patch Set: Fix ASAN failure, rebase to LKGR/259825 Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/component_updater/component_unpacker.cc
diff --git a/chrome/browser/component_updater/component_unpacker.cc b/chrome/browser/component_updater/component_unpacker.cc
index 4134b3e1beae9e9bb6cb9c4919ca74d4acba21c3..f179262ea2987f4ef3dca707ab59b7a5be1eff93 100644
--- a/chrome/browser/component_updater/component_unpacker.cc
+++ b/chrome/browser/component_updater/component_unpacker.cc
@@ -98,18 +98,17 @@ ComponentUnpacker::ComponentUnpacker(
const std::vector<uint8>& pk_hash,
const base::FilePath& path,
const std::string& fingerprint,
- ComponentPatcher* patcher,
ComponentInstaller* installer,
+ bool in_process,
scoped_refptr<base::SequencedTaskRunner> task_runner)
: pk_hash_(pk_hash),
path_(path),
is_delta_(false),
fingerprint_(fingerprint),
- patcher_(patcher),
installer_(installer),
+ in_process_(in_process),
error_(kNone),
extended_error_(0),
- ptr_factory_(this),
task_runner_(task_runner) {
}
@@ -137,8 +136,7 @@ bool ComponentUnpacker::UnpackInternal() {
return Verify() && Unzip() && BeginPatching();
}
-void ComponentUnpacker::Unpack(
- const base::Callback<void(Error, int)>& callback) {
+void ComponentUnpacker::Unpack(const Callback& callback) {
callback_ = callback;
if (!UnpackInternal())
Finish();
@@ -202,20 +200,23 @@ bool ComponentUnpacker::BeginPatching() {
error_ = kUnzipPathError;
return false;
}
+ patcher_ = new ComponentPatcher(unpack_diff_path_,
+ unpack_path_,
+ installer_,
+ in_process_,
+ task_runner_);
task_runner_->PostTask(
- FROM_HERE, base::Bind(&DifferentialUpdatePatch,
- unpack_diff_path_,
- unpack_path_,
- patcher_,
- installer_,
- base::Bind(&ComponentUnpacker::EndPatching,
- GetWeakPtr())));
+ FROM_HERE,
+ base::Bind(&ComponentPatcher::Start,
+ patcher_,
+ base::Bind(&ComponentUnpacker::EndPatching,
+ scoped_refptr<ComponentUnpacker>(this))));
} else {
- task_runner_->PostTask(
- FROM_HERE, base::Bind(&ComponentUnpacker::EndPatching,
- GetWeakPtr(),
- kNone,
- 0));
+ task_runner_->PostTask(FROM_HERE,
+ base::Bind(&ComponentUnpacker::EndPatching,
+ scoped_refptr<ComponentUnpacker>(this),
+ kNone,
+ 0));
}
return true;
}
@@ -223,6 +224,7 @@ bool ComponentUnpacker::BeginPatching() {
void ComponentUnpacker::EndPatching(Error error, int extended_error) {
error_ = error;
extended_error_ = extended_error;
+ patcher_ = NULL;
if (error_ != kNone) {
Finish();
return;
@@ -267,10 +269,6 @@ void ComponentUnpacker::Finish() {
callback_.Run(error_, extended_error_);
}
-base::WeakPtr<ComponentUnpacker> ComponentUnpacker::GetWeakPtr() {
- return ptr_factory_.GetWeakPtr();
-}
-
ComponentUnpacker::~ComponentUnpacker() {
}

Powered by Google App Engine
This is Rietveld 408576698