Index: chrome/browser/component_updater/component_updater_service.cc |
diff --git a/chrome/browser/component_updater/component_updater_service.cc b/chrome/browser/component_updater/component_updater_service.cc |
index 920871d207f782ab0320fa425f5d3dc3cc965ec1..548a5f803d672c4ca42c6b20a16e4b4b8fef2108 100644 |
--- a/chrome/browser/component_updater/component_updater_service.cc |
+++ b/chrome/browser/component_updater/component_updater_service.cc |
@@ -21,7 +21,6 @@ |
#include "base/threading/sequenced_worker_pool.h" |
#include "base/timer/timer.h" |
#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/component_updater/component_patcher.h" |
#include "chrome/browser/component_updater/component_unpacker.h" |
#include "chrome/browser/component_updater/component_updater_ping_manager.h" |
#include "chrome/browser/component_updater/component_updater_utils.h" |
@@ -251,8 +250,6 @@ class CrxUpdateService : public ComponentUpdateService { |
scoped_ptr<ComponentUpdateService::Configurator> config_; |
- scoped_ptr<ComponentPatcher> component_patcher_; |
- |
scoped_ptr<UpdateChecker> update_checker_; |
scoped_ptr<PingManager> ping_manager_; |
@@ -280,7 +277,6 @@ class CrxUpdateService : public ComponentUpdateService { |
CrxUpdateService::CrxUpdateService(ComponentUpdateService::Configurator* config) |
: config_(config), |
- component_patcher_(config->CreateComponentPatcher()), |
ping_manager_(new PingManager(config->PingUrl(), |
config->RequestContext())), |
blocking_task_runner_(BrowserThread::GetBlockingPool()-> |
@@ -843,8 +839,8 @@ void CrxUpdateService::Install(scoped_ptr<CRXContext> context, |
unpacker_.reset(new ComponentUnpacker(context->pk_hash, |
crx_path, |
context->fingerprint, |
- component_patcher_.get(), |
context->installer, |
+ config_->InProcess(), |
blocking_task_runner_)); |
unpacker_->Unpack(base::Bind(&CrxUpdateService::EndUnpacking, |
base::Unretained(this), |
@@ -864,6 +860,8 @@ void CrxUpdateService::EndUnpacking(const std::string& component_id, |
base::Bind(&CrxUpdateService::DoneInstalling, base::Unretained(this), |
component_id, error, extended_error), |
base::TimeDelta::FromMilliseconds(config_->StepDelay())); |
+ // Reset the unpacker last, otherwise we free our own arguments. |
Sorin Jianu
2014/02/03 20:57:57
What happens if the unpacker is destroyed sooner?
waffles
2014/02/07 01:00:59
The problem is that the unpacker owns the EndUnpac
Sorin Jianu
2014/02/27 20:53:57
Thank you. I would suggest rewording the comment a
|
+ unpacker_.reset(); |
} |
// Installation has been completed. Adjust the component status and |