diff options
author | scheib@chromium.org <scheib@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-22 04:16:06 +0000 |
---|---|---|
committer | scheib@chromium.org <scheib@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-22 04:16:06 +0000 |
commit | ebe0777a01bc177d685ed5ce232135c25f3c17a4 (patch) | |
tree | 7b13909f81017868d6fce9e086da36a62260e1c2 /extensions | |
parent | 9f86ec0740f2a2e5be556fa0e9ab5bb01a4ad484 (diff) | |
download | chromium_src-ebe0777a01bc177d685ed5ce232135c25f3c17a4.zip chromium_src-ebe0777a01bc177d685ed5ce232135c25f3c17a4.tar.gz chromium_src-ebe0777a01bc177d685ed5ce232135c25f3c17a4.tar.bz2 |
Unload all apps / extensions immediately when deleting a profile.
Previously apps could remain running with references to profiles that had been deleted by users, but before the browser shut down and profiles were fully removed. Problems included E.g. opening a link in an app would open a tab in the deleted profile.
Relanding patch: ShutdownStartupCycle failed in build [49353], this patch was speculatively reverted in r269383 [49355], but ShutdownStartupCycle failed again in [49362] after the revert had landed.
[49353] http://build.chromium.org/p/chromium.mac/builders/Mac%2010.6%20Tests%20%28dbg%29%281%29/builds/49353
[49355] http://build.chromium.org/p/chromium.mac/builders/Mac%2010.6%20Tests%20%28dbg%29%281%29/builds/49355
[49362] http://build.chromium.org/p/chromium.mac/builders/Mac%2010.6%20Tests%20%28dbg%29%281%29/builds/49362
BUG=368684, 374683
TEST=Manual testing as described on http://crbug.com/368684#c1 and http://crbug.com/374683#c7
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=269343
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=270890
Review URL: https://codereview.chromium.org/266343002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272090 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/browser/process_manager.cc | 5 | ||||
-rw-r--r-- | extensions/common/extension.h | 12 |
2 files changed, 11 insertions, 6 deletions
diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc index 9e5f0c6..b110aa3 100644 --- a/extensions/browser/process_manager.cc +++ b/extensions/browser/process_manager.cc @@ -436,7 +436,10 @@ void ProcessManager::DecrementLazyKeepaliveCount(const Extension* extension) { void ProcessManager::DecrementLazyKeepaliveCount( const std::string& extension_id) { int& count = background_page_data_[extension_id].lazy_keepalive_count; - DCHECK_GT(count, 0); + DCHECK(count > 0 || + !ExtensionRegistry::Get(GetBrowserContext()) + ->enabled_extensions() + .Contains(extension_id)); // If we reach a zero keepalive count when the lazy background page is about // to be closed, incrementing close_sequence_id will cancel the close diff --git a/extensions/common/extension.h b/extensions/common/extension.h index 4000910..6679252 100644 --- a/extensions/common/extension.h +++ b/extensions/common/extension.h @@ -522,11 +522,13 @@ struct InstalledExtensionInfo { struct UnloadedExtensionInfo { // TODO(DHNishi): Move this enum to ExtensionRegistryObserver. enum Reason { - REASON_DISABLE, // Extension is being disabled. - REASON_UPDATE, // Extension is being updated to a newer version. - REASON_UNINSTALL, // Extension is being uninstalled. - REASON_TERMINATE, // Extension has terminated. - REASON_BLACKLIST, // Extension has been blacklisted. + REASON_UNDEFINED, // Undefined state used to initialize variables. + REASON_DISABLE, // Extension is being disabled. + REASON_UPDATE, // Extension is being updated to a newer version. + REASON_UNINSTALL, // Extension is being uninstalled. + REASON_TERMINATE, // Extension has terminated. + REASON_BLACKLIST, // Extension has been blacklisted. + REASON_PROFILE_SHUTDOWN, // Profile is being shut down. }; Reason reason; |