Index: chrome/browser/ui/search_engines/search_engine_tab_helper.cc |
diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chrome/browser/ui/search_engines/search_engine_tab_helper.cc |
index e9c8fd0adb29205dfb1cdceb62ef99d742019327..80eada7f438ff246cb61028c78616ba0de50f9e4 100644 |
--- a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc |
+++ b/chrome/browser/ui/search_engines/search_engine_tab_helper.cc |
@@ -23,6 +23,7 @@ |
#include "content/public/browser/render_process_host.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/common/url_fetcher.h" |
+#include "services/service_manager/public/cpp/interface_registry.h" |
using content::NavigationController; |
using content::NavigationEntry; |
@@ -72,43 +73,46 @@ base::string16 GenerateKeywordFromNavigationEntry( |
void AssociateURLFetcherWithWebContents(content::WebContents* web_contents, |
net::URLFetcher* url_fetcher) { |
content::AssociateURLFetcherWithRenderFrame( |
- url_fetcher, |
- url::Origin(web_contents->GetURL()), |
+ url_fetcher, url::Origin(web_contents->GetURL()), |
web_contents->GetRenderProcessHost()->GetID(), |
web_contents->GetMainFrame()->GetRoutingID()); |
} |
} // namespace |
-SearchEngineTabHelper::~SearchEngineTabHelper() { |
+SearchEngineTabHelper::SearchEngineTabHelper() |
+ : osdd_handler_binding_(this), weak_factory_(this) { |
} |
-void SearchEngineTabHelper::DidFinishNavigation( |
- content::NavigationHandle* handle) { |
- GenerateKeywordIfNecessary(handle); |
+SearchEngineTabHelper::~SearchEngineTabHelper() { |
} |
-bool SearchEngineTabHelper::OnMessageReceived(const IPC::Message& message) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(SearchEngineTabHelper, message) |
- IPC_MESSAGE_HANDLER(ChromeViewHostMsg_PageHasOSDD, OnPageHasOSDD) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- |
- return handled; |
+void SearchEngineTabHelper::RenderFrameCreated( |
+ content::RenderFrameHost* render_frame_host) { |
+ render_frame_host->GetInterfaceRegistry()->AddInterface( |
+ base::Bind(&SearchEngineTabHelper::OnOSDDHandlerRequest, |
+ weak_factory_.GetWeakPtr())); |
} |
-bool SearchEngineTabHelper::OnMessageReceived( |
- const IPC::Message& message, |
- content::RenderFrameHost* render_frame_host) { |
- return OnMessageReceived(message); |
+void SearchEngineTabHelper::DidFinishNavigation( |
+ content::NavigationHandle* handle) { |
+ GenerateKeywordIfNecessary(handle); |
} |
SearchEngineTabHelper::SearchEngineTabHelper(WebContents* web_contents) |
- : content::WebContentsObserver(web_contents) { |
+ : content::WebContentsObserver(web_contents), |
+ osdd_handler_binding_(this), |
+ weak_factory_(this) { |
DCHECK(web_contents); |
} |
+void SearchEngineTabHelper::OnOSDDHandlerRequest( |
+ chrome::mojom::OSDDHandlerRequest request) { |
+ if (!osdd_handler_binding_.is_bound()) { |
+ osdd_handler_binding_.Bind(std::move(request)); |
+ } |
+} |
+ |
void SearchEngineTabHelper::OnPageHasOSDD( |
const GURL& page_url, |
const GURL& osdd_url) { |