Commit a71ea760 authored by lfg's avatar lfg Committed by Commit bot

Moving web_view.js to extensions.

BUG=352293

Review URL: https://codereview.chromium.org/564913003

Cr-Commit-Position: refs/heads/master@{#294519}
parent 81d30234
......@@ -242,16 +242,12 @@ void ChromeExtensionsDispatcherDelegate::PopulateSourceMap(
source_map->RegisterSource("tagWatcher", IDR_TAG_WATCHER_JS);
source_map->RegisterSource("chromeWebViewInternal",
IDR_CHROME_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS);
// Note: webView not webview so that this doesn't interfere with the
// chrome.webview API bindings.
source_map->RegisterSource("webView", IDR_WEB_VIEW_JS);
source_map->RegisterSource("webViewEvents", IDR_WEB_VIEW_EVENTS_JS);
source_map->RegisterSource("webViewExperimental",
IDR_WEB_VIEW_EXPERIMENTAL_JS);
source_map->RegisterSource("chromeWebView", IDR_CHROME_WEB_VIEW_JS);
source_map->RegisterSource("chromeWebViewExperimental",
IDR_CHROME_WEB_VIEW_EXPERIMENTAL_JS);
source_map->RegisterSource("webViewRequest",
IDR_WEB_VIEW_REQUEST_CUSTOM_BINDINGS_JS);
source_map->RegisterSource("denyAppView", IDR_APP_VIEW_DENY_JS);
source_map->RegisterSource("denyWebView", IDR_WEB_VIEW_DENY_JS);
source_map->RegisterSource("injectAppTitlebar", IDR_INJECT_APP_TITLEBAR_JS);
}
......@@ -275,9 +271,11 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
// Note: setting up the WebView class here, not the chrome.webview API.
// The API will be automatically set up when first used.
if (context->GetAvailability("webViewInternal").is_available()) {
module_system->Require("webView");
if (context->GetAvailability("webViewExperimentalInternal").is_available())
module_system->Require("webViewExperimental");
module_system->Require("chromeWebView");
if (context->GetAvailability("webViewExperimentalInternal")
.is_available()) {
module_system->Require("chromeWebViewExperimental");
}
} else if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT) {
module_system->Require("denyWebView");
}
......
// Copyright 2014 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.
// This module implements chrome-specific <webview> API.
var ChromeWebView = require('chromeWebViewInternal').ChromeWebView;
var CreateEvent = require('webViewEvents').CreateEvent;
var EventBindings = require('event_bindings');
var WebViewInternal = require('webView').WebViewInternal
var CHROME_WEB_VIEW_EVENTS = {
'contextmenu': {
evt: CreateEvent('chromeWebViewInternal.contextmenu'),
cancelable: true,
customHandler: function(handler, event, webViewEvent) {
handler.webViewInternal.maybeHandleContextMenu(event, webViewEvent);
},
fields: ['items']
}
};
/**
* Implemented when the ChromeWebView API is available.
* @private
*/
WebViewInternal.prototype.maybeGetChromeWebViewEvents = function() {
return CHROME_WEB_VIEW_EVENTS;
};
/**
* Calls to show contextmenu right away instead of dispatching a 'contextmenu'
* event.
* This will be overridden in chrome_web_view_experimental.js to implement
* contextmenu API.
*/
WebViewInternal.prototype.maybeHandleContextMenu = function(e, webViewEvent) {
var requestId = e.requestId;
// Setting |params| = undefined will show the context menu unmodified, hence
// the 'contextmenu' API is disabled for stable channel.
var params = undefined;
ChromeWebView.showContextMenu(this.guestInstanceId, requestId, params);
};
......@@ -5,8 +5,8 @@
// This module implements experimental API for <webview>.
// See web_view.js for details.
//
// <webview> Experimental API is only available on canary and dev channels of
// Chrome.
// <webview> Chrome Experimental API is only available on canary and dev
// channels of Chrome.
var ContextMenusSchema =
requireNative('schema_registry').GetSchema('contextMenus');
......@@ -129,26 +129,6 @@ WebViewInternal.prototype.maybeHandleContextMenu = function(e, webViewEvent) {
} // else we will ignore showing the context menu completely.
};
WebViewInternal.prototype.maybeGetExperimentalEvents = function() {
return {};
};
/** @private */
WebViewInternal.prototype.maybeGetExperimentalPermissions = function() {
return [];
};
/** @private */
WebViewInternal.prototype.captureVisibleRegion = function(spec, callback) {
WebView.captureVisibleRegion(this.guestInstanceId, spec, callback);
};
WebViewInternal.maybeRegisterExperimentalAPIs = function(proto) {
proto.captureVisibleRegion = function(spec, callback) {
privates(this).internal.captureVisibleRegion(spec, callback);
};
};
/** @private */
WebViewInternal.prototype.setupExperimentalContextMenus = function() {
var createContextMenus = function() {
......
......@@ -44,6 +44,8 @@
file="extensions\chrome_direct_setting.js" type="BINDATA" />
<include name="IDR_CHROME_SETTING_JS" file="extensions\chrome_setting.js" type="BINDATA" />
<include name="IDR_CHROME_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS" file="extensions\chrome_web_view_internal_custom_bindings.js" type="BINDATA" />
<include name="IDR_CHROME_WEB_VIEW_EXPERIMENTAL_JS" file="extensions\chrome_web_view_experimental.js" type="BINDATA" />
<include name="IDR_CHROME_WEB_VIEW_JS" file="extensions\chrome_web_view.js" type="BINDATA" />
<include name="IDR_CONTENT_SETTING_JS" file="extensions\content_setting.js" type="BINDATA" />
<include name="IDR_DECLARATIVE_CONTENT_CUSTOM_BINDINGS_JS" file="extensions\declarative_content_custom_bindings.js" type="BINDATA" />
<include name="IDR_DECLARATIVE_WEBREQUEST_CUSTOM_BINDINGS_JS" file="extensions\declarative_webrequest_custom_bindings.js" type="BINDATA" />
......@@ -85,10 +87,6 @@
<include name="IDR_WEB_REQUEST_CUSTOM_BINDINGS_JS" file="extensions\web_request_custom_bindings.js" type="BINDATA" />
<include name="IDR_WEB_REQUEST_INTERNAL_CUSTOM_BINDINGS_JS" file="extensions\web_request_internal_custom_bindings.js" type="BINDATA" />
<include name="IDR_WEBSTORE_CUSTOM_BINDINGS_JS" file="extensions\webstore_custom_bindings.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_DENY_JS" file="extensions\web_view_deny.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_EVENTS_JS" file="extensions\web_view_events.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_EXPERIMENTAL_JS" file="extensions\web_view_experimental.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_JS" file="extensions\web_view.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_REQUEST_CUSTOM_BINDINGS_JS" file="extensions\web_view_request_custom_bindings.js" type="BINDATA" />
<!-- Platform app support. -->
......
......@@ -519,8 +519,15 @@ std::vector<std::pair<std::string, int> > Dispatcher::GetJsResources() {
IDR_UNCAUGHT_EXCEPTION_HANDLER_JS));
resources.push_back(std::make_pair("unload_event", IDR_UNLOAD_EVENT_JS));
resources.push_back(std::make_pair("utils", IDR_UTILS_JS));
// Note: webView not webview so that this doesn't interfere with the
// chrome.webview API bindings.
resources.push_back(std::make_pair("webView", IDR_WEB_VIEW_JS));
resources.push_back(std::make_pair("webViewEvents", IDR_WEB_VIEW_EVENTS_JS));
resources.push_back(
std::make_pair("webViewExperimental", IDR_WEB_VIEW_EXPERIMENTAL_JS));
resources.push_back(std::make_pair("webViewInternal",
IDR_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS));
resources.push_back(std::make_pair("denyWebView", IDR_WEB_VIEW_DENY_JS));
resources.push_back(
std::make_pair(mojo::kBufferModuleName, IDR_MOJO_BUFFER_JS));
resources.push_back(
......
......@@ -31,7 +31,11 @@
<include name="IDR_UNCAUGHT_EXCEPTION_HANDLER_JS" file="uncaught_exception_handler.js" type="BINDATA" />
<include name="IDR_UNLOAD_EVENT_JS" file="unload_event.js" type="BINDATA" />
<include name="IDR_UTILS_JS" file="utils.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_DENY_JS" file="web_view_deny.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_EVENTS_JS" file="web_view_events.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_EXPERIMENTAL_JS" file="web_view_experimental.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS" file="web_view_internal.js" type="BINDATA" />
<include name="IDR_WEB_VIEW_JS" file="web_view.js" type="BINDATA" />
<!-- Custom bindings for APIs. -->
<include name="IDR_APP_RUNTIME_CUSTOM_BINDINGS_JS" file="app_runtime_custom_bindings.js" type="BINDATA" />
......
......@@ -10,7 +10,6 @@ var DocumentNatives = requireNative('document_natives');
var GuestViewInternal =
require('binding').Binding.create('guestViewInternal').generate();
var IdGenerator = requireNative('id_generator');
var ChromeWebView = require('chromeWebViewInternal').ChromeWebView
// TODO(lazyboy): Rename this to WebViewInternal and call WebViewInternal
// something else.
var WebView = require('webViewInternal').WebView;
......@@ -1011,6 +1010,12 @@ window.addEventListener('readystatechange', function listener(event) {
window.removeEventListener(event.type, listener, useCapture);
}, useCapture);
/**
* Implemented when the ChromeWebView API is available.
* @private
*/
WebViewInternal.prototype.maybeGetChromeWebViewEvents = function() {};
/**
* Implemented when the experimental API is available.
* @private
......@@ -1025,25 +1030,12 @@ WebViewInternal.prototype.maybeGetExperimentalPermissions = function() {
return [];
};
/**
* Calls to show contextmenu right away instead of dispatching a 'contextmenu'
* event.
* This will be overridden in web_view_experimental.js to implement contextmenu
* API.
*/
WebViewInternal.prototype.maybeHandleContextMenu = function(e, webViewEvent) {
var requestId = e.requestId;
// Setting |params| = undefined will show the context menu unmodified, hence
// the 'contextmenu' API is disabled for stable channel.
var params = undefined;
ChromeWebView.showContextMenu(this.guestInstanceId, requestId, params);
};
/**
* Implemented when the experimental API is available.
* @private
*/
WebViewInternal.prototype.setupExperimentalContextMenus = function() {};
WebViewInternal.prototype.setupExperimentalContextMenus = function() {
};
exports.WebView = WebView;
exports.WebViewInternal = WebViewInternal;
......@@ -50,14 +50,6 @@ var WEB_VIEW_EVENTS = {
evt: CreateEvent('webViewInternal.onContentLoad'),
fields: []
},
'contextmenu': {
evt: CreateEvent('chromeWebViewInternal.contextmenu'),
cancelable: true,
customHandler: function(handler, event, webViewEvent) {
handler.handleContextMenu(event, webViewEvent);
},
fields: ['items']
},
'dialog': {
cancelable: true,
customHandler: function(handler, event, webViewEvent) {
......@@ -283,6 +275,10 @@ WebViewEvents.prototype.getEvents = function() {
for (var eventName in experimentalEvents) {
WEB_VIEW_EVENTS[eventName] = experimentalEvents[eventName];
}
var chromeEvents = this.webViewInternal.maybeGetChromeWebViewEvents();
for (var eventName in chromeEvents) {
WEB_VIEW_EVENTS[eventName] = chromeEvents[eventName];
}
return WEB_VIEW_EVENTS;
};
......@@ -309,11 +305,6 @@ WebViewEvents.prototype.setupEvent = function(name, info) {
};
// Event handlers.
WebViewEvents.prototype.handleContextMenu = function(e, webViewEvent) {
this.webViewInternal.maybeHandleContextMenu(e, webViewEvent);
};
WebViewEvents.prototype.handleDialogEvent = function(event, webViewEvent) {
var showWarningMessage = function(dialogType) {
var VOWELS = ['a', 'e', 'i', 'o', 'u'];
......
// Copyright 2014 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.
// This module implements experimental API for <webview>.
// See web_view.js for details.
//
// <webview> Experimental API is only available on canary and dev channels of
// Chrome.
var WebViewInternal = require('webView').WebViewInternal;
WebViewInternal.prototype.maybeGetExperimentalEvents = function() {
return {};
};
/** @private */
WebViewInternal.prototype.maybeGetExperimentalPermissions = function() {
return [];
};
/** @private */
WebViewInternal.prototype.captureVisibleRegion = function(spec, callback) {
WebView.captureVisibleRegion(this.guestInstanceId, spec, callback);
};
WebViewInternal.maybeRegisterExperimentalAPIs = function(proto) {
proto.captureVisibleRegion = function(spec, callback) {
privates(this).internal.captureVisibleRegion(spec, callback);
};
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment