summaryrefslogtreecommitdiffstats
path: root/chrome_frame/bho.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome_frame/bho.cc')
-rw-r--r--chrome_frame/bho.cc57
1 files changed, 9 insertions, 48 deletions
diff --git a/chrome_frame/bho.cc b/chrome_frame/bho.cc
index 5c9fc89..e275707 100644
--- a/chrome_frame/bho.cc
+++ b/chrome_frame/bho.cc
@@ -47,24 +47,7 @@ _ATL_FUNC_INFO Bho::kBeforeNavigate2Info = {
}
};
-_ATL_FUNC_INFO Bho::kNavigateComplete2Info = {
- CC_STDCALL, VT_EMPTY, 2, {
- VT_DISPATCH,
- VT_VARIANT | VT_BYREF
- }
-};
-
-_ATL_FUNC_INFO Bho::kNavigateErrorInfo = {
- CC_STDCALL, VT_EMPTY, 5, {
- VT_DISPATCH,
- VT_VARIANT | VT_BYREF,
- VT_VARIANT | VT_BYREF,
- VT_VARIANT | VT_BYREF,
- VT_BOOL | VT_BYREF,
- }
-};
-
-Bho::Bho() : pending_navigation_count_(0) {
+Bho::Bho() {
}
HRESULT Bho::FinalConstruct() {
@@ -132,27 +115,10 @@ STDMETHODIMP Bho::BeforeNavigate2(IDispatch* dispatch, VARIANT* url,
referrer_.clear();
}
url_ = url->bstrVal;
- pending_navigation_count_++;
ProcessOptInUrls(web_browser2, url->bstrVal);
return S_OK;
}
-STDMETHODIMP_(void) Bho::NavigateComplete2(IDispatch* dispatch,
- VARIANT* url) {
- DLOG(INFO) << "In NavigateComplete2 for url:" << url->bstrVal;
- pending_navigation_count_--;
- DCHECK(pending_navigation_count_ >= 0);
-}
-
-STDMETHODIMP_(void) Bho::OnNavigateError(IDispatch* dispatch, VARIANT* url,
- VARIANT* frame_name,
- VARIANT* status_code,
- VARIANT* cancel) {
- DLOG(INFO) << "In NavigateError for url:" << url->bstrVal;
- pending_navigation_count_--;
- DCHECK(pending_navigation_count_ >= 0);
-}
-
HRESULT Bho::NavigateToCurrentUrlInCF(IBrowserService* browser) {
DCHECK(browser);
MarkBrowserOnThreadForCFNavigation(browser);
@@ -226,13 +192,7 @@ void ClearDocumentContents(IUnknown* browser) {
// Returns true if the currently loaded document in the browser has
// any embedded items such as a frame or an iframe.
-bool DocumentHasEmbeddedItems(IUnknown* browser,
- int pending_navigation_count) {
- // For a document with embedded frames the pending navigation count will be
- // greater than 1.
- if (pending_navigation_count <= 1)
- return false;
-
+bool DocumentHasEmbeddedItems(IUnknown* browser) {
bool has_embedded_items = false;
ScopedComPtr<IWebBrowser2> web_browser2;
@@ -278,12 +238,12 @@ HRESULT Bho::OnHttpEquiv(IBrowserService_OnHttpEquiv_Fn original_httpequiv,
// notification is coming from those and not the top level document.
// The embedded items should only be created once the top level
// doc has been created.
- Bho* bho = Bho::GetCurrentThreadBhoInstance();
- DCHECK(bho);
- if (bho) {
- if (!DocumentHasEmbeddedItems(browser, bho->pending_navigation_count())) {
- DLOG(INFO) << "Found tag in page. Marking browser." << bho->url() <<
- StringPrintf(" tid=0x%08X", ::GetCurrentThreadId());
+ if (!DocumentHasEmbeddedItems(browser)) {
+ Bho* bho = Bho::GetCurrentThreadBhoInstance();
+ DCHECK(bho);
+ DLOG(INFO) << "Found tag in page. Marking browser." << bho->url() <<
+ StringPrintf(" tid=0x%08X", ::GetCurrentThreadId());
+ if (bho) {
// TODO(tommi): See if we can't figure out a cleaner way to avoid
// this. For some documents we can hit a problem here. When we
// attempt to navigate the document again in CF, mshtml can "complete"
@@ -298,6 +258,7 @@ HRESULT Bho::OnHttpEquiv(IBrowserService_OnHttpEquiv_Fn original_httpequiv,
}
}
}
+
return original_httpequiv(browser, shell_view, done, in_arg, out_arg);
}