diff options
-rw-r--r-- | chrome_frame/bho.cc | 2 | ||||
-rw-r--r-- | chrome_frame/http_negotiate.cc | 30 |
2 files changed, 16 insertions, 16 deletions
diff --git a/chrome_frame/bho.cc b/chrome_frame/bho.cc index 7a126f3..48838a9 100644 --- a/chrome_frame/bho.cc +++ b/chrome_frame/bho.cc @@ -110,9 +110,11 @@ STDMETHODIMP Bho::BeforeNavigate2(IDispatch* dispatch, VARIANT* url, } DLOG(INFO) << "BeforeNavigate2: " << url->bstrVal; + ScopedComPtr<IBrowserService> browser_service; DoQueryService(SID_SShellBrowser, web_browser2, browser_service.Receive()); if (!browser_service || !CheckForCFNavigation(browser_service, false)) { + // TODO(tommi): Remove? Isn't this done below by calling set_referrer("")? referrer_.clear(); } diff --git a/chrome_frame/http_negotiate.cc b/chrome_frame/http_negotiate.cc index 4cc1a7d..37fcf2f 100644 --- a/chrome_frame/http_negotiate.cc +++ b/chrome_frame/http_negotiate.cc @@ -203,19 +203,17 @@ HRESULT HttpNegotiatePatch::BeginningTransaction( return hr; } - ScopedComPtr<IWebBrowser2> browser2; - DoQueryService(IID_ITargetFrame2, me, browser2.Receive()); - if (browser2) { - VARIANT_BOOL is_top_level = VARIANT_FALSE; - browser2->get_TopLevelContainer(&is_top_level); - - DLOG(INFO) << "called OnBeginningTransaction " << is_top_level; - - if (is_top_level != VARIANT_FALSE) { - std::string referrer = FindReferrerFromHeaders(headers, - *additional_headers); - NavigationManager* mgr = NavigationManager::GetThreadInstance(); - if (mgr) { + NavigationManager* mgr = NavigationManager::GetThreadInstance(); + if (mgr && mgr->IsTopLevelUrl(url)) { + ScopedComPtr<IWebBrowser2> browser2; + DoQueryService(IID_ITargetFrame2, me, browser2.Receive()); + if (browser2) { + VARIANT_BOOL is_top_level = VARIANT_FALSE; + browser2->get_TopLevelContainer(&is_top_level); + + if (is_top_level != VARIANT_FALSE) { + std::string referrer = FindReferrerFromHeaders(headers, + *additional_headers); // When we switch from IE to CF the BeginningTransaction function is // called twice. The first call contains the referrer while the // second call does not. We set the referrer only if the URL in the @@ -225,12 +223,12 @@ HRESULT HttpNegotiatePatch::BeginningTransaction( DCHECK(mgr->referrer().empty()); mgr->set_referrer(referrer); } - } else { - DLOG(INFO) << "No NavigationManager"; } + } else { + DLOG(INFO) << "No IWebBrowser2"; } } else { - DLOG(INFO) << "No IWebBrowser2"; + DLOG(INFO) << "No NavigationManager"; } static const char kLowerCaseUserAgent[] = "user-agent"; |