diff options
author | jorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-17 21:35:08 +0000 |
---|---|---|
committer | jorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-17 21:35:08 +0000 |
commit | 37e050cf1d493e210ac6035c1ff45ccb1784c69b (patch) | |
tree | 4f4fc7766e17084d44eff9ca637a78f950c43ddb /chrome/browser/renderer_host | |
parent | f2e5f9dbec4e957fbf709afefd49813b5515b846 (diff) | |
download | chromium_src-37e050cf1d493e210ac6035c1ff45ccb1784c69b.zip chromium_src-37e050cf1d493e210ac6035c1ff45ccb1784c69b.tar.gz chromium_src-37e050cf1d493e210ac6035c1ff45ccb1784c69b.tar.bz2 |
When we're initializing the modal dialog box which asks whether the page has permission to access a "cookie", double check that the value has not since been set. If it has, close the window before it's even shown.
This is a stop-gap solution. We should probably come up with something more elegent long term.
TEST=Go to a page that starts a database transaction and immediately sets a local storage value. You should get one prompt instead of 2.
BUG=36006
Review URL: http://codereview.chromium.org/619009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39270 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r-- | chrome/browser/renderer_host/database_permission_request.cc | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/chrome/browser/renderer_host/database_permission_request.cc b/chrome/browser/renderer_host/database_permission_request.cc index 32fa8e6..29030de 100644 --- a/chrome/browser/renderer_host/database_permission_request.cc +++ b/chrome/browser/renderer_host/database_permission_request.cc @@ -90,9 +90,8 @@ void DatabasePermissionRequest::SendResponse(ContentSetting content_setting, on_allow_.reset(); on_block_.reset(); - // And lastly, release our self ref which may trigger delete. Do the release - // on a local variable instead of a member variable to avoid reentrancy - // nastiness if the ref count goes to 0. - scoped_refptr<DatabasePermissionRequest> self; - self.swap(self_ref_); + // This seems safer than possibly being deleted while in method(s) related to + // this object. Any thread will do, but UI is always around and can be + // posted without locking, so we'll ask it to do the release. + ChromeThread::ReleaseSoon(ChromeThread::UI, FROM_HERE, self_ref_.release()); } |