diff options
author | courage@chromium.org <courage@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-02 01:37:26 +0000 |
---|---|---|
committer | courage@chromium.org <courage@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-02 01:37:26 +0000 |
commit | a31ea18d6542b7534d44c681406750a16e6e5e5c (patch) | |
tree | b1b02a62bdca72c2249b46ad75d8b9ab68d099a0 /chrome/browser/extensions/api/identity/identity_mint_queue.cc | |
parent | bcc953e5a3cb15cb4b178269186a3cfe0265f7bb (diff) | |
download | chromium_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.cc | 7 |
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); |