diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-12 22:52:58 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-12 22:52:58 +0000 |
commit | 410426f7ac5d9d8dfea3c96b7ccf1c082a8218cb (patch) | |
tree | 7dac59c7049ccffe3357fdaeecdcb7acd7b95f56 /chrome_frame | |
parent | 7057f4f61731dc8373897957c821bffc6f99082c (diff) | |
download | chromium_src-410426f7ac5d9d8dfea3c96b7ccf1c082a8218cb.zip chromium_src-410426f7ac5d9d8dfea3c96b7ccf1c082a8218cb.tar.gz chromium_src-410426f7ac5d9d8dfea3c96b7ccf1c082a8218cb.tar.bz2 |
ChromeFrame would not switch to Chrome at times. The navigation manager in ChromeFrame maintains the current top level URL
which is used by the moniker patch to decide whether to wrap the callback. This url is typically set in the Bho in the BeforeNavigate
callback. We also had code to update this url when we receive a navigation update from Chrome. The reason we would not switch is because
of a race condition between receiving a top level navigation request from chrome and receiving a navigation update for the previous operation
which caused us to not wrap the bind status callback.
Fix is to not update the url in the callback when we receive a navigation status update. In any case it is Chrome's responsibility to inform
ChromeFrame about top level url navigations. We should fix the bug if any in Chrome which caused this hack to go in.
Fixes bug http://code.google.com/p/chromium/issues/detail?id=43922
Other changes are to replace the NOTREACHED in the chrome frame automation proxy code with a DLOG as this fires during chrome frame test runs.
Bug=43922
Review URL: http://codereview.chromium.org/1991008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47086 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame')
-rw-r--r-- | chrome_frame/chrome_active_document.cc | 9 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_automation.cc | 3 | ||||
-rw-r--r-- | chrome_frame/urlmon_moniker.cc | 2 |
3 files changed, 2 insertions, 12 deletions
diff --git a/chrome_frame/chrome_active_document.cc b/chrome_frame/chrome_active_document.cc index 7bc6fc3..1ef46e4 100644 --- a/chrome_frame/chrome_active_document.cc +++ b/chrome_frame/chrome_active_document.cc @@ -685,15 +685,6 @@ void ChromeActiveDocument::UpdateNavigationState( StartsWith(static_cast<BSTR>(url_), kChromeAttachExternalTabPrefix, false); - if (new_navigation_info.url.is_valid()) { - url_.Allocate(UTF8ToWide(new_navigation_info.url.spec()).c_str()); - NavigationManager* mgr = NavigationManager::GetThreadInstance(); - DCHECK(mgr); - if (mgr) { - mgr->set_url(url_); - } - } - if (is_internal_navigation) { ScopedComPtr<IDocObjectService> doc_object_svc; ScopedComPtr<IWebBrowserEventsService> web_browser_events_svc; diff --git a/chrome_frame/chrome_frame_automation.cc b/chrome_frame/chrome_frame_automation.cc index 49971d8..8d89cbd 100644 --- a/chrome_frame/chrome_frame_automation.cc +++ b/chrome_frame/chrome_frame_automation.cc @@ -70,8 +70,7 @@ class ChromeFrameAutomationProxyImpl::TabProxyNotificationMessageFilter tab->OnMessageReceived(message); tab->Release(); } else { - NOTREACHED() << "Failed to find TabProxy for tab:" << tab_handle; - return false; + DLOG(ERROR) << "Failed to find TabProxy for tab:" << tab_handle; } return true; } diff --git a/chrome_frame/urlmon_moniker.cc b/chrome_frame/urlmon_moniker.cc index 6a3910b..44decb3 100644 --- a/chrome_frame/urlmon_moniker.cc +++ b/chrome_frame/urlmon_moniker.cc @@ -142,7 +142,7 @@ bool ShouldWrapCallback(IMoniker* moniker, REFIID iid, IBindCtx* bind_context) { NavigationManager* mgr = NavigationManager::GetThreadInstance(); if (!mgr) { DLOG(INFO) << __FUNCTION__ << " Url: " << url << - " No navitagion manager to wrap"; + " No navigation manager to wrap"; return false; } |