summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome_frame/bho.cc2
-rw-r--r--chrome_frame/http_negotiate.cc30
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";