summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorjorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-17 21:35:08 +0000
committerjorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-17 21:35:08 +0000
commit37e050cf1d493e210ac6035c1ff45ccb1784c69b (patch)
tree4f4fc7766e17084d44eff9ca637a78f950c43ddb /chrome/browser/renderer_host
parentf2e5f9dbec4e957fbf709afefd49813b5515b846 (diff)
downloadchromium_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.cc9
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());
}