| Index: chrome/browser/extensions/extension_garbage_collector.cc
|
| diff --git a/chrome/browser/extensions/extension_garbage_collector.cc b/chrome/browser/extensions/extension_garbage_collector.cc
|
| index e24e5ad0247a3a81cb34854140b10ac78fb29975..efc39846548bc9fd5333299fd3fa221469c1fc26 100644
|
| --- a/chrome/browser/extensions/extension_garbage_collector.cc
|
| +++ b/chrome/browser/extensions/extension_garbage_collector.cc
|
| @@ -234,13 +234,22 @@ void ExtensionGarbageCollector::GarbageCollectIsolatedStorageIfNeeded() {
|
| }
|
| }
|
|
|
| - ExtensionService* service =
|
| - ExtensionSystem::Get(context_)->extension_service();
|
| - service->OnGarbageCollectIsolatedStorageStart();
|
| + DCHECK(!installs_delayed_for_gc_);
|
| + installs_delayed_for_gc_ = true;
|
| content::BrowserContext::GarbageCollectStoragePartitions(
|
| context_, std::move(active_paths),
|
| - base::Bind(&ExtensionService::OnGarbageCollectIsolatedStorageFinished,
|
| - service->AsWeakPtr()));
|
| + base::Bind(
|
| + &ExtensionGarbageCollector::OnGarbageCollectIsolatedStorageFinished,
|
| + weak_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void ExtensionGarbageCollector::OnGarbageCollectIsolatedStorageFinished() {
|
| + DCHECK(installs_delayed_for_gc_);
|
| + installs_delayed_for_gc_ = false;
|
| +
|
| + ExtensionSystem::Get(context_)
|
| + ->extension_service()
|
| + ->MaybeFinishDelayedInstallations();
|
| }
|
|
|
| void ExtensionGarbageCollector::OnBeginCrxInstall(
|
| @@ -263,4 +272,10 @@ void ExtensionGarbageCollector::OnFinishCrxInstall(
|
| }
|
| }
|
|
|
| +InstallGate::Action ExtensionGarbageCollector::ShouldDelay(
|
| + const Extension* extension,
|
| + bool install_immediately) {
|
| + return installs_delayed_for_gc_ ? DELAY : INSTALL;
|
| +}
|
| +
|
| } // namespace extensions
|
|
|