| Index: chrome/renderer/external_extension.cc
 | 
| diff --git a/chrome/renderer/external_extension.cc b/chrome/renderer/external_extension.cc
 | 
| index ff616dca7353cc6e378d0010cc77f9a914699f98..b0f81753bbababa39a03200394ad62e0d43efd66 100644
 | 
| --- a/chrome/renderer/external_extension.cc
 | 
| +++ b/chrome/renderer/external_extension.cc
 | 
| @@ -7,17 +7,15 @@
 | 
|  #include <stdint.h>
 | 
|  
 | 
|  #include "base/macros.h"
 | 
| -#include "chrome/common/render_messages.h"
 | 
| -#include "chrome/common/search_provider.h"
 | 
| -#include "content/public/renderer/render_view.h"
 | 
| +#include "chrome/common/search_provider.mojom.h"
 | 
| +#include "content/public/renderer/render_thread.h"
 | 
| +#include "services/shell/public/cpp/interface_provider.h"
 | 
|  #include "third_party/WebKit/public/web/WebDocument.h"
 | 
|  #include "third_party/WebKit/public/web/WebLocalFrame.h"
 | 
| -#include "third_party/WebKit/public/web/WebView.h"
 | 
|  #include "v8/include/v8.h"
 | 
|  
 | 
|  using blink::WebLocalFrame;
 | 
|  using blink::WebView;
 | 
| -using content::RenderView;
 | 
|  
 | 
|  namespace extensions_v8 {
 | 
|  
 | 
| @@ -46,9 +44,6 @@ class ExternalExtensionWrapper : public v8::Extension {
 | 
|        v8::Isolate* isolate,
 | 
|        v8::Local<v8::String> name) override;
 | 
|  
 | 
| -  // Helper function to find the RenderView. May return NULL.
 | 
| -  static RenderView* GetRenderView();
 | 
| -
 | 
|    // Implementation of window.external.IsSearchProviderInstalled.
 | 
|    static void IsSearchProviderInstalled(
 | 
|        const v8::FunctionCallbackInfo<v8::Value>& args);
 | 
| @@ -74,21 +69,6 @@ ExternalExtensionWrapper::GetNativeFunctionTemplate(
 | 
|  }
 | 
|  
 | 
|  // static
 | 
| -RenderView* ExternalExtensionWrapper::GetRenderView() {
 | 
| -  WebLocalFrame* webframe = WebLocalFrame::frameForCurrentContext();
 | 
| -  DCHECK(webframe) << "There should be an active frame since we just got "
 | 
| -      "a native function called.";
 | 
| -  if (!webframe)
 | 
| -    return NULL;
 | 
| -
 | 
| -  WebView* webview = webframe->view();
 | 
| -  if (!webview)
 | 
| -    return NULL;  // can happen during closing
 | 
| -
 | 
| -  return RenderView::FromWebView(webview);
 | 
| -}
 | 
| -
 | 
| -// static
 | 
|  void ExternalExtensionWrapper::IsSearchProviderInstalled(
 | 
|      const v8::FunctionCallbackInfo<v8::Value>& args) {
 | 
|    if (!args.Length() || !args[0]->IsString())
 | 
| @@ -99,24 +79,25 @@ void ExternalExtensionWrapper::IsSearchProviderInstalled(
 | 
|      return;
 | 
|  
 | 
|    std::string name(*utf8name);
 | 
| -  RenderView* render_view = GetRenderView();
 | 
| -  if (!render_view)
 | 
| -    return;
 | 
|  
 | 
|    WebLocalFrame* webframe = WebLocalFrame::frameForCurrentContext();
 | 
|    if (!webframe)
 | 
|      return;
 | 
|  
 | 
| -  search_provider::InstallState install = search_provider::DENIED;
 | 
| +  chrome::mojom::InstallState install = chrome::mojom::InstallState::DENIED;
 | 
|    GURL inquiry_url = GURL(webframe->document().url()).Resolve(name);
 | 
|    if (!inquiry_url.is_empty()) {
 | 
|      webframe->didCallIsSearchProviderInstalled();
 | 
| -    render_view->Send(new ChromeViewHostMsg_GetSearchProviderInstallState(
 | 
| -        render_view->GetRoutingID(), webframe->document().url(), inquiry_url,
 | 
| -        &install));
 | 
| +    chrome::mojom::SearchProviderInstallStatePtr search_provider_service;
 | 
| +    content::RenderThread::Get()->GetRemoteInterfaces()->GetInterface(
 | 
| +        mojo::GetProxy(&search_provider_service));
 | 
| +    if (!search_provider_service->GetInstallState(webframe->document().url(),
 | 
| +                                                  inquiry_url, &install)) {
 | 
| +      DLOG(ERROR) << "Can't fetch search provider install state";
 | 
| +    }
 | 
|    }
 | 
|  
 | 
| -  if (install == search_provider::DENIED) {
 | 
| +  if (install == chrome::mojom::InstallState::DENIED) {
 | 
|      // FIXME: throw access denied exception.
 | 
|      v8::Isolate* isolate = args.GetIsolate();
 | 
|      isolate->ThrowException(v8::Exception::Error(v8::String::Empty(isolate)));
 | 
| 
 |