| Index: chrome/renderer/plugins/chrome_plugin_placeholder.cc
|
| diff --git a/chrome/renderer/plugins/chrome_plugin_placeholder.cc b/chrome/renderer/plugins/chrome_plugin_placeholder.cc
|
| index 899087a9bb64082932cf9fd64e79fd2ca68b95e5..d6631e6473a19d81f606599f79a4919cab62a200 100644
|
| --- a/chrome/renderer/plugins/chrome_plugin_placeholder.cc
|
| +++ b/chrome/renderer/plugins/chrome_plugin_placeholder.cc
|
| @@ -14,12 +14,15 @@
|
| #include "content/public/common/context_menu_params.h"
|
| #include "content/public/renderer/render_frame.h"
|
| #include "content/public/renderer/render_thread.h"
|
| +#include "gin/handle.h"
|
| +#include "gin/object_template_builder.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/renderer_resources.h"
|
| #include "grit/webkit_strings.h"
|
| #include "third_party/WebKit/public/web/WebDocument.h"
|
| #include "third_party/WebKit/public/web/WebFrame.h"
|
| #include "third_party/WebKit/public/web/WebInputEvent.h"
|
| +#include "third_party/WebKit/public/web/WebKit.h"
|
| #include "third_party/WebKit/public/web/WebScriptSource.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| @@ -36,8 +39,6 @@ using blink::WebNode;
|
| using blink::WebPlugin;
|
| using blink::WebPluginContainer;
|
| using blink::WebPluginParams;
|
| -using webkit_glue::CppArgumentList;
|
| -using webkit_glue::CppVariant;
|
|
|
| namespace {
|
| const plugins::PluginPlaceholder* g_last_active_menu = NULL;
|
| @@ -218,9 +219,7 @@ void ChromePluginPlaceholder::OnLoadBlockedPlugins(
|
| plugins::PluginPlaceholder::OnLoadBlockedPlugins(identifier);
|
| }
|
|
|
| -void ChromePluginPlaceholder::OpenAboutPluginsCallback(
|
| - const CppArgumentList& args,
|
| - CppVariant* result) {
|
| +void ChromePluginPlaceholder::OpenAboutPluginsCallback() {
|
| RenderThread::Get()->Send(
|
| new ChromeViewHostMsg_OpenAboutPlugins(routing_id()));
|
| }
|
| @@ -267,7 +266,7 @@ void ChromePluginPlaceholder::OnCancelledDownloadingPlugin() {
|
| #endif // defined(ENABLE_PLUGIN_INSTALLATION)
|
|
|
| void ChromePluginPlaceholder::PluginListChanged() {
|
| - if (!GetFrame())
|
| + if (!GetFrame() || !plugin())
|
| return;
|
| WebDocument document = GetFrame()->top()->document();
|
| if (document.isNull())
|
| @@ -354,8 +353,19 @@ void ChromePluginPlaceholder::ShowContextMenu(const WebMouseEvent& event) {
|
| }
|
|
|
| void ChromePluginPlaceholder::BindWebFrame(blink::WebFrame* frame) {
|
| - plugins::PluginPlaceholder::BindWebFrame(frame);
|
| - BindCallback("openAboutPlugins",
|
| - base::Bind(&ChromePluginPlaceholder::OpenAboutPluginsCallback,
|
| - base::Unretained(this)));
|
| + v8::Isolate* isolate = blink::mainThreadIsolate();
|
| + v8::HandleScope handle_scope(isolate);
|
| + v8::Handle<v8::Context> context = frame->mainWorldScriptContext();
|
| + DCHECK(!context.IsEmpty());
|
| +
|
| + v8::Context::Scope context_scope(context);
|
| + v8::Handle<v8::Object> global = context->Global();
|
| + global->Set(gin::StringToV8(isolate, "plugin"),
|
| + gin::CreateHandle(isolate, this).ToV8());
|
| +}
|
| +
|
| +gin::ObjectTemplateBuilder ChromePluginPlaceholder::GetObjectTemplateBuilder(
|
| + v8::Isolate* isolate) {
|
| + return PluginPlaceholder::GetObjectTemplateBuilder(isolate).SetMethod(
|
| + "openAboutPlugins", &ChromePluginPlaceholder::OpenAboutPluginsCallback);
|
| }
|
|
|