Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(667)

Unified Diff: chrome/renderer/external_extension.cc

Issue 2177123003: Move SearchProvider implementation into Blink and make it a no-op. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/external_extension.cc
diff --git a/chrome/renderer/external_extension.cc b/chrome/renderer/external_extension.cc
deleted file mode 100644
index b0f81753bbababa39a03200394ad62e0d43efd66..0000000000000000000000000000000000000000
--- a/chrome/renderer/external_extension.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/renderer/external_extension.h"
-
-#include <stdint.h>
-
-#include "base/macros.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 "v8/include/v8.h"
-
-using blink::WebLocalFrame;
-using blink::WebView;
-
-namespace extensions_v8 {
-
-namespace {
-
-const char* const kSearchProviderApi =
- "var external;"
- "if (!external)"
- " external = {};"
- "external.IsSearchProviderInstalled = function(name) {"
- " native function NativeIsSearchProviderInstalled();"
- " return NativeIsSearchProviderInstalled(name);"
- "};";
-
-const char kExternalExtensionName[] = "v8/External";
-
-} // namespace
-
-class ExternalExtensionWrapper : public v8::Extension {
- public:
- ExternalExtensionWrapper();
-
- // Allows v8's javascript code to call the native functions defined
- // in this class for window.external.
- v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate(
- v8::Isolate* isolate,
- v8::Local<v8::String> name) override;
-
- // Implementation of window.external.IsSearchProviderInstalled.
- static void IsSearchProviderInstalled(
- const v8::FunctionCallbackInfo<v8::Value>& args);
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ExternalExtensionWrapper);
-};
-
-ExternalExtensionWrapper::ExternalExtensionWrapper()
- : v8::Extension(kExternalExtensionName, kSearchProviderApi) {
-}
-
-v8::Local<v8::FunctionTemplate>
-ExternalExtensionWrapper::GetNativeFunctionTemplate(
- v8::Isolate* isolate,
- v8::Local<v8::String> name) {
- if (name->Equals(v8::String::NewFromUtf8(
- isolate, "NativeIsSearchProviderInstalled"))) {
- return v8::FunctionTemplate::New(isolate, IsSearchProviderInstalled);
- }
-
- return v8::Local<v8::FunctionTemplate>();
-}
-
-// static
-void ExternalExtensionWrapper::IsSearchProviderInstalled(
- const v8::FunctionCallbackInfo<v8::Value>& args) {
- if (!args.Length() || !args[0]->IsString())
- return;
-
- v8::String::Utf8Value utf8name(args[0]);
- if (!utf8name.length())
- return;
-
- std::string name(*utf8name);
-
- WebLocalFrame* webframe = WebLocalFrame::frameForCurrentContext();
- if (!webframe)
- return;
-
- chrome::mojom::InstallState install = chrome::mojom::InstallState::DENIED;
- GURL inquiry_url = GURL(webframe->document().url()).Resolve(name);
- if (!inquiry_url.is_empty()) {
- webframe->didCallIsSearchProviderInstalled();
- 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 == chrome::mojom::InstallState::DENIED) {
- // FIXME: throw access denied exception.
- v8::Isolate* isolate = args.GetIsolate();
- isolate->ThrowException(v8::Exception::Error(v8::String::Empty(isolate)));
- return;
- }
- args.GetReturnValue().Set(static_cast<int32_t>(install));
-}
-
-v8::Extension* ExternalExtension::Get() {
- return new ExternalExtensionWrapper();
-}
-
-} // namespace extensions_v8

Powered by Google App Engine
This is Rietveld 408576698