summaryrefslogtreecommitdiffstats
path: root/chrome_frame/urlmon_url_request.cc
diff options
context:
space:
mode:
authorananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-09 23:53:26 +0000
committerananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-09 23:53:26 +0000
commitffec6bf36fb4527d051960d4871623a5b91ec122 (patch)
treeebe555761e809e0733955482b3f8581f74e4b171 /chrome_frame/urlmon_url_request.cc
parent443f856cef514cbfd1a17d486f66c3d3530946c5 (diff)
downloadchromium_src-ffec6bf36fb4527d051960d4871623a5b91ec122.zip
chromium_src-ffec6bf36fb4527d051960d4871623a5b91ec122.tar.gz
chromium_src-ffec6bf36fb4527d051960d4871623a5b91ec122.tar.bz2
Fix IE6 switching issues
Fixes for issues with new moniker patch. BUG=none TEST=covered by existing tests Review URL: http://codereview.chromium.org/1625010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44160 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/urlmon_url_request.cc')
-rw-r--r--chrome_frame/urlmon_url_request.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/chrome_frame/urlmon_url_request.cc b/chrome_frame/urlmon_url_request.cc
index 364f01d..e3cc03b 100644
--- a/chrome_frame/urlmon_url_request.cc
+++ b/chrome_frame/urlmon_url_request.cc
@@ -624,7 +624,6 @@ HRESULT UrlmonUrlRequest::StartAsyncDownload() {
HRESULT hr = E_FAIL;
DCHECK((moniker_ && bind_context_) || (!moniker_ && !bind_context_));
-
if (!moniker_.get()) {
std::wstring wide_url = UTF8ToWide(url());
hr = CreateURLMonikerEx(NULL, wide_url.c_str(), moniker_.Receive(),
@@ -653,8 +652,17 @@ HRESULT UrlmonUrlRequest::StartAsyncDownload() {
// in destruction of our object. It's fine but we access some members
// below for debug info. :)
ScopedComPtr<IHttpSecurity> self(this);
+
+ // Inform our moniker patch this binding should nto be tortured.
+ // TODO(amit): factor this out.
+ hr = bind_context_->RegisterObjectParam(L"_CHROMEFRAME_REQUEST_", self);
+ DCHECK(SUCCEEDED(hr));
+
hr = moniker_->BindToStorage(bind_context_, NULL, __uuidof(IStream),
reinterpret_cast<void**>(stream.Receive()));
+
+ bind_context_->RevokeObjectParam(L"_CHROMEFRAME_REQUEST_");
+
if (hr == S_OK) {
DCHECK(binding_ != NULL || status_.get_state() == Status::DONE);
}