diff options
author | bauerb <bauerb@chromium.org> | 2015-02-04 17:09:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-05 01:09:55 +0000 |
commit | 810e60f487982e8edc208b78b0b4b2b2a12a77a0 (patch) | |
tree | f76a8cb2498a8e32804fd0a9eb04703ed7a84127 /components/component_updater/default_component_installer.cc | |
parent | abfbde8049ea4726e3c750a15aad66c5ab9f5093 (diff) | |
download | chromium_src-810e60f487982e8edc208b78b0b4b2b2a12a77a0.zip chromium_src-810e60f487982e8edc208b78b0b4b2b2a12a77a0.tar.gz chromium_src-810e60f487982e8edc208b78b0b4b2b2a12a77a0.tar.bz2 |
Make ComponentInstaller refcounted.
Before this CL, component installers were leaked in almost all cases. If we allow uninstalling components (see https://codereview.chromium.org/879993005/), we need to fix those leaks.
BUG=436459
Review URL: https://codereview.chromium.org/897873002
Cr-Commit-Position: refs/heads/master@{#314701}
Diffstat (limited to 'components/component_updater/default_component_installer.cc')
-rw-r--r-- | components/component_updater/default_component_installer.cc | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/components/component_updater/default_component_installer.cc b/components/component_updater/default_component_installer.cc index 6588973..d73b4fc 100644 --- a/components/component_updater/default_component_installer.cc +++ b/components/component_updater/default_component_installer.cc @@ -55,8 +55,7 @@ void DefaultComponentInstaller::Register(ComponentUpdateService* cus) { task_runner_->PostTask( FROM_HERE, base::Bind(&DefaultComponentInstaller::StartRegistration, - base::Unretained(this), - cus)); + this, cus)); } void DefaultComponentInstaller::OnUpdateError(int error) { @@ -103,11 +102,8 @@ bool DefaultComponentInstaller::Install(const base::DictionaryValue& manifest, current_manifest_->DeepCopy()); main_task_runner_->PostTask( FROM_HERE, - base::Bind(&ComponentInstallerTraits::ComponentReady, - base::Unretained(installer_traits_.get()), - current_version_, - GetInstallDirectory(), - base::Passed(&manifest_copy))); + base::Bind(&DefaultComponentInstaller::ComponentReady, + this, base::Passed(&manifest_copy))); return true; } @@ -197,8 +193,7 @@ void DefaultComponentInstaller::StartRegistration(ComponentUpdateService* cus) { main_task_runner_->PostTask( FROM_HERE, base::Bind(&DefaultComponentInstaller::FinishRegistration, - base::Unretained(this), - cus)); + this, cus)); } base::FilePath DefaultComponentInstaller::GetInstallDirectory() { @@ -230,8 +225,13 @@ void DefaultComponentInstaller::FinishRegistration( scoped_ptr<base::DictionaryValue> manifest_copy( current_manifest_->DeepCopy()); + ComponentReady(manifest_copy.Pass()); +} + +void DefaultComponentInstaller::ComponentReady( + scoped_ptr<base::DictionaryValue> manifest) { installer_traits_->ComponentReady( - current_version_, GetInstallDirectory(), manifest_copy.Pass()); + current_version_, GetInstallDirectory(), manifest.Pass()); } } // namespace component_updater |