| 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 f179262ea2987f4ef3dca707ab59b7a5be1eff93..4134b3e1beae9e9bb6cb9c4919ca74d4acba21c3 100644
|
| --- a/chrome/browser/component_updater/component_unpacker.cc
|
| +++ b/chrome/browser/component_updater/component_unpacker.cc
|
| @@ -98,17 +98,18 @@
|
| 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) {
|
| }
|
|
|
| @@ -136,7 +137,8 @@
|
| return Verify() && Unzip() && BeginPatching();
|
| }
|
|
|
| -void ComponentUnpacker::Unpack(const Callback& callback) {
|
| +void ComponentUnpacker::Unpack(
|
| + const base::Callback<void(Error, int)>& callback) {
|
| callback_ = callback;
|
| if (!UnpackInternal())
|
| Finish();
|
| @@ -200,23 +202,20 @@
|
| error_ = kUnzipPathError;
|
| return false;
|
| }
|
| - patcher_ = new ComponentPatcher(unpack_diff_path_,
|
| - unpack_path_,
|
| - installer_,
|
| - in_process_,
|
| - task_runner_);
|
| task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&ComponentPatcher::Start,
|
| - patcher_,
|
| - base::Bind(&ComponentUnpacker::EndPatching,
|
| - scoped_refptr<ComponentUnpacker>(this))));
|
| + FROM_HERE, base::Bind(&DifferentialUpdatePatch,
|
| + unpack_diff_path_,
|
| + unpack_path_,
|
| + patcher_,
|
| + installer_,
|
| + base::Bind(&ComponentUnpacker::EndPatching,
|
| + GetWeakPtr())));
|
| } else {
|
| - task_runner_->PostTask(FROM_HERE,
|
| - base::Bind(&ComponentUnpacker::EndPatching,
|
| - scoped_refptr<ComponentUnpacker>(this),
|
| - kNone,
|
| - 0));
|
| + task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&ComponentUnpacker::EndPatching,
|
| + GetWeakPtr(),
|
| + kNone,
|
| + 0));
|
| }
|
| return true;
|
| }
|
| @@ -224,7 +223,6 @@
|
| void ComponentUnpacker::EndPatching(Error error, int extended_error) {
|
| error_ = error;
|
| extended_error_ = extended_error;
|
| - patcher_ = NULL;
|
| if (error_ != kNone) {
|
| Finish();
|
| return;
|
| @@ -269,6 +267,10 @@
|
| callback_.Run(error_, extended_error_);
|
| }
|
|
|
| +base::WeakPtr<ComponentUnpacker> ComponentUnpacker::GetWeakPtr() {
|
| + return ptr_factory_.GetWeakPtr();
|
| +}
|
| +
|
| ComponentUnpacker::~ComponentUnpacker() {
|
| }
|
|
|
|
|