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

Unified Diff: chrome/renderer/extensions/app_window_custom_bindings.cc

Issue 534163002: Move app.window API implementation to extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix OWNERS Created 6 years, 3 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/extensions/app_window_custom_bindings.cc
diff --git a/chrome/renderer/extensions/app_window_custom_bindings.cc b/chrome/renderer/extensions/app_window_custom_bindings.cc
deleted file mode 100644
index 35dd1bea7adf79cb028d41f3a299de4b2c91bef9..0000000000000000000000000000000000000000
--- a/chrome/renderer/extensions/app_window_custom_bindings.cc
+++ /dev/null
@@ -1,131 +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/extensions/app_window_custom_bindings.h"
-
-#include <string>
-
-#include "base/command_line.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/grit/renderer_resources.h"
-#include "content/public/renderer/render_thread.h"
-#include "content/public/renderer/render_view.h"
-#include "content/public/renderer/render_view_observer.h"
-#include "content/public/renderer/render_view_visitor.h"
-#include "content/public/renderer/v8_value_converter.h"
-#include "extensions/common/extension_messages.h"
-#include "extensions/renderer/dispatcher.h"
-#include "extensions/renderer/scoped_persistent.h"
-#include "extensions/renderer/script_context.h"
-#include "extensions/renderer/script_context_set.h"
-#include "third_party/WebKit/public/web/WebLocalFrame.h"
-#include "third_party/WebKit/public/web/WebView.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "v8/include/v8.h"
-
-namespace extensions {
-
-class DidCreateDocumentElementObserver : public content::RenderViewObserver {
- public:
- DidCreateDocumentElementObserver(content::RenderView* view,
- Dispatcher* dispatcher)
- : content::RenderViewObserver(view), dispatcher_(dispatcher) {}
-
- virtual void DidCreateDocumentElement(blink::WebLocalFrame* frame) OVERRIDE {
- DCHECK(frame);
- DCHECK(dispatcher_);
- // Don't attempt to inject the titlebar into iframes.
- if (frame->parent())
- return;
- v8::HandleScope handle_scope(v8::Isolate::GetCurrent());
- ScriptContext* script_context =
- dispatcher_->script_context_set().GetByV8Context(
- frame->mainWorldScriptContext());
-
- if (!script_context)
- return;
- v8::Context::Scope context_scope(script_context->v8_context());
- script_context->module_system()->CallModuleMethod(
- "injectAppTitlebar", "didCreateDocumentElement");
- }
-
- private:
- Dispatcher* dispatcher_;
-};
-
-AppWindowCustomBindings::AppWindowCustomBindings(Dispatcher* dispatcher,
- ScriptContext* context)
- : ObjectBackedNativeHandler(context), dispatcher_(dispatcher) {
- RouteFunction("GetView",
- base::Bind(&AppWindowCustomBindings::GetView,
- base::Unretained(this)));
-
- RouteFunction("GetWindowControlsHtmlTemplate",
- base::Bind(&AppWindowCustomBindings::GetWindowControlsHtmlTemplate,
- base::Unretained(this)));
-}
-
-void AppWindowCustomBindings::GetView(
- const v8::FunctionCallbackInfo<v8::Value>& args) {
- // TODO(jeremya): convert this to IDL nocompile to get validation, and turn
- // these argument checks into CHECK().
- if (args.Length() != 2)
- return;
-
- if (!args[0]->IsInt32())
- return;
-
- if (!args[1]->IsBoolean())
- return;
-
- int view_id = args[0]->Int32Value();
-
- bool inject_titlebar = args[1]->BooleanValue();
-
- if (view_id == MSG_ROUTING_NONE)
- return;
-
- content::RenderView* view = content::RenderView::FromRoutingID(view_id);
- if (!view)
- return;
-
- if (inject_titlebar)
- new DidCreateDocumentElementObserver(view, dispatcher_);
-
- // TODO(jeremya): it doesn't really make sense to set the opener here, but we
- // need to make sure the security origin is set up before returning the DOM
- // reference. A better way to do this would be to have the browser pass the
- // opener through so opener_id is set in RenderViewImpl's constructor.
- content::RenderView* render_view = context()->GetRenderView();
- if (!render_view)
- return;
- blink::WebFrame* opener = render_view->GetWebView()->mainFrame();
- blink::WebFrame* frame = view->GetWebView()->mainFrame();
- frame->setOpener(opener);
- content::RenderThread::Get()->Send(
- new ExtensionHostMsg_ResumeRequests(view->GetRoutingID()));
-
- v8::Local<v8::Value> window = frame->mainWorldScriptContext()->Global();
- args.GetReturnValue().Set(window);
-}
-
-void AppWindowCustomBindings::GetWindowControlsHtmlTemplate(
- const v8::FunctionCallbackInfo<v8::Value>& args) {
- CHECK_EQ(args.Length(), 0);
-
- v8::Handle<v8::Value> result = v8::String::Empty(args.GetIsolate());
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableAppWindowControls)) {
- base::StringValue value(
- ResourceBundle::GetSharedInstance()
- .GetRawDataResource(IDR_WINDOW_CONTROLS_TEMPLATE_HTML)
- .as_string());
- scoped_ptr<content::V8ValueConverter> converter(
- content::V8ValueConverter::create());
- result = converter->ToV8Value(&value, context()->v8_context());
- }
- args.GetReturnValue().Set(result);
-}
-
-} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698