diff options
Diffstat (limited to 'chrome_frame/bho.cc')
-rw-r--r-- | chrome_frame/bho.cc | 57 |
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); } |