diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-29 18:37:44 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-29 18:37:44 +0000 |
commit | c442e9fe2a67bbc9dc4c0d09709649fec2fa0546 (patch) | |
tree | 947b2f382b2447e73ccfa669889c318ae9c890e3 /chrome_frame/urlmon_moniker.cc | |
parent | 0fab7cdd43e7dd01e69ef5f9c13f5eae6bd54853 (diff) | |
download | chromium_src-c442e9fe2a67bbc9dc4c0d09709649fec2fa0546.zip chromium_src-c442e9fe2a67bbc9dc4c0d09709649fec2fa0546.tar.gz chromium_src-c442e9fe2a67bbc9dc4c0d09709649fec2fa0546.tar.bz2 |
Fresh ChromeFrame installs triggered via wave required IE to be restarted for wave to switch to Chrome in the current page/tab.
The ChromeFrame install flow instantiates the ChromeFrame ActiveX which ensures that the IMoniker patches are in place for switching
to work. However ChromeFrame relies on the BHO to be loaded in order to determine that a URL is a top level URL.
The ChromeFrame ActiveX now attempts to load the BHO dynamically and registers it with the top level IWebBrowser for the page.
This fixes bug http://code.google.com/p/chromium/issues/detail?id=42790
Bug=42790
Review URL: http://codereview.chromium.org/1789007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45969 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/urlmon_moniker.cc')
-rw-r--r-- | chrome_frame/urlmon_moniker.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/chrome_frame/urlmon_moniker.cc b/chrome_frame/urlmon_moniker.cc index fe064ce..4150927 100644 --- a/chrome_frame/urlmon_moniker.cc +++ b/chrome_frame/urlmon_moniker.cc @@ -146,12 +146,24 @@ bool ShouldWrapCallback(IMoniker* moniker, REFIID iid, IBindCtx* bind_context) { return false; } + // TODO(ananta) + // Use the IsSubFrameRequest function to determine if a request is a top + // level request. Something like this. + // ScopedComPtr<IUnknown> bscb_holder; + // bind_context->GetObjectParam(L"_BSCB_Holder_", bscb_holder.Receive()); + // if (bscb_holder) { + // ScopedComPtr<IHttpNegotiate> http_negotiate; + // http_negotiate.QueryFrom(bscb_holder); + // if (http_negotiate && !IsSubFrameRequest(http_negotiate)) + // return true; + // } + // There are some cases where the IsSubFrameRequest function can return + // incorrect results. bool should_wrap = mgr->IsTopLevelUrl(url); if (!should_wrap) { DLOG(INFO) << __FUNCTION__ << " Url: " << url << " Not wrapping: Not top level url."; } - return should_wrap; } |