summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/api/identity/identity_mint_queue.cc
diff options
context:
space:
mode:
authorcourage@chromium.org <courage@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-02 01:37:26 +0000
committercourage@chromium.org <courage@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-02 01:37:26 +0000
commita31ea18d6542b7534d44c681406750a16e6e5e5c (patch)
treeb1b02a62bdca72c2249b46ad75d8b9ab68d099a0 /chrome/browser/extensions/api/identity/identity_mint_queue.cc
parentbcc953e5a3cb15cb4b178269186a3cfe0265f7bb (diff)
downloadchromium_src-a31ea18d6542b7534d44c681406750a16e6e5e5c.zip
chromium_src-a31ea18d6542b7534d44c681406750a16e6e5e5c.tar.gz
chromium_src-a31ea18d6542b7534d44c681406750a16e6e5e5c.tar.bz2
Identity API: Cancel getAuthToken requests before browser shutdown
If an app or extension background page calls chrome.identity.getAuthToken just before browser shutdown, it's possible for the call to outlive the user's profile, leading to destruction order problems. This change adds a shutdown observer to the (browser context keyed) IdentityAPI. The getAuthToken function uses this observer to clean up immediately during shutdown. BUG=352496 Review URL: https://codereview.chromium.org/217843002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@261024 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/api/identity/identity_mint_queue.cc')
-rw-r--r--chrome/browser/extensions/api/identity/identity_mint_queue.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/chrome/browser/extensions/api/identity/identity_mint_queue.cc b/chrome/browser/extensions/api/identity/identity_mint_queue.cc
index 7af32a2..a6131ab 100644
--- a/chrome/browser/extensions/api/identity/identity_mint_queue.cc
+++ b/chrome/browser/extensions/api/identity/identity_mint_queue.cc
@@ -50,6 +50,13 @@ void IdentityMintRequestQueue::RequestComplete(
request_queue.front()->StartMintToken(type);
}
+void IdentityMintRequestQueue::RequestCancel(
+ const ExtensionTokenKey& key,
+ IdentityMintRequestQueue::Request* request) {
+ GetRequestQueueMap(MINT_TYPE_INTERACTIVE)[key].remove(request);
+ GetRequestQueueMap(MINT_TYPE_NONINTERACTIVE)[key].remove(request);
+}
+
bool IdentityMintRequestQueue::empty(IdentityMintRequestQueue::MintType type,
const ExtensionTokenKey& key) {
RequestQueueMap& request_queue_map = GetRequestQueueMap(type);