summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorscheib@chromium.org <scheib@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-22 04:16:06 +0000
committerscheib@chromium.org <scheib@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-22 04:16:06 +0000
commitebe0777a01bc177d685ed5ce232135c25f3c17a4 (patch)
tree7b13909f81017868d6fce9e086da36a62260e1c2 /extensions
parent9f86ec0740f2a2e5be556fa0e9ab5bb01a4ad484 (diff)
downloadchromium_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.cc5
-rw-r--r--extensions/common/extension.h12
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;