summaryrefslogtreecommitdiffstats
path: root/chrome_frame/utils.h
diff options
context:
space:
mode:
authorananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-11 00:03:55 +0000
committerananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-11 00:03:55 +0000
commit7af08f6cf18eef9089dbfbe94590ac004c649906 (patch)
tree6aad7112e51ca202b44d9411daadf858aefdb26c /chrome_frame/utils.h
parentc0e5f71c772164b794089e26a2f3cc001b8b13f9 (diff)
downloadchromium_src-7af08f6cf18eef9089dbfbe94590ac004c649906.zip
chromium_src-7af08f6cf18eef9089dbfbe94590ac004c649906.tar.gz
chromium_src-7af08f6cf18eef9089dbfbe94590ac004c649906.tar.bz2
Fix the flakiness with download requests routed by ChromeFrame to the host browser. We issue
the NavigateWithBindCtx interface call to issue a navigation such that it reuses the existing bind context. This basically results in a cross apartment deadlock at times when we are in the context of a OnStopBinding call in our bind status callback implementation. The Navigate call is marshaled to a different thread which tries to grab a urlmon critical section which is held in the context of the OnStopBinding call by the current thread. Fix is to use PostMessage to ensure that we unwind the current call chain. BUG=73985 TEST=As described in the bug. Review URL: http://codereview.chromium.org/6677004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77732 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/utils.h')
-rw-r--r--chrome_frame/utils.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/chrome_frame/utils.h b/chrome_frame/utils.h
index c2d6ef9..3e0035a 100644
--- a/chrome_frame/utils.h
+++ b/chrome_frame/utils.h
@@ -461,9 +461,9 @@ extern base::Lock g_ChromeFrameHistogramLock;
// This structure contains the parameters sent over to initiate a download
// request in the host browser.
struct DownloadInHostParams {
- IBindCtx* bind_ctx;
- IMoniker* moniker;
- IStream* post_data;
+ base::win::ScopedComPtr<IBindCtx> bind_ctx;
+ base::win::ScopedComPtr<IMoniker> moniker;
+ base::win::ScopedComPtr<IStream> post_data;
std::string request_headers;
};