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( ...@@ -242,16 +242,12 @@ void ChromeExtensionsDispatcherDelegate::PopulateSourceMap(
source_map->RegisterSource("tagWatcher", IDR_TAG_WATCHER_JS); source_map->RegisterSource("tagWatcher", IDR_TAG_WATCHER_JS);
source_map->RegisterSource("chromeWebViewInternal", source_map->RegisterSource("chromeWebViewInternal",
IDR_CHROME_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS); IDR_CHROME_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS);
// Note: webView not webview so that this doesn't interfere with the source_map->RegisterSource("chromeWebView", IDR_CHROME_WEB_VIEW_JS);
// chrome.webview API bindings. source_map->RegisterSource("chromeWebViewExperimental",
source_map->RegisterSource("webView", IDR_WEB_VIEW_JS); IDR_CHROME_WEB_VIEW_EXPERIMENTAL_JS);
source_map->RegisterSource("webViewEvents", IDR_WEB_VIEW_EVENTS_JS);
source_map->RegisterSource("webViewExperimental",
IDR_WEB_VIEW_EXPERIMENTAL_JS);
source_map->RegisterSource("webViewRequest", source_map->RegisterSource("webViewRequest",
IDR_WEB_VIEW_REQUEST_CUSTOM_BINDINGS_JS); IDR_WEB_VIEW_REQUEST_CUSTOM_BINDINGS_JS);
source_map->RegisterSource("denyAppView", IDR_APP_VIEW_DENY_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); source_map->RegisterSource("injectAppTitlebar", IDR_INJECT_APP_TITLEBAR_JS);
} }
...@@ -275,9 +271,11 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules( ...@@ -275,9 +271,11 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
// Note: setting up the WebView class here, not the chrome.webview API. // Note: setting up the WebView class here, not the chrome.webview API.
// The API will be automatically set up when first used. // The API will be automatically set up when first used.
if (context->GetAvailability("webViewInternal").is_available()) { if (context->GetAvailability("webViewInternal").is_available()) {
module_system->Require("webView"); module_system->Require("chromeWebView");
if (context->GetAvailability("webViewExperimentalInternal").is_available()) if (context->GetAvailability("webViewExperimentalInternal")
module_system->Require("webViewExperimental"); .is_available()) {
module_system->Require("chromeWebViewExperimental");
}
} else if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT) { } else if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT) {
module_system->Require("denyWebView"); 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 @@ ...@@ -5,8 +5,8 @@
// This module implements experimental API for <webview>. // This module implements experimental API for <webview>.
// See web_view.js for details. // See web_view.js for details.
// //
// <webview> Experimental API is only available on canary and dev channels of // <webview> Chrome Experimental API is only available on canary and dev
// Chrome. // channels of Chrome.
var ContextMenusSchema = var ContextMenusSchema =
requireNative('schema_registry').GetSchema('contextMenus'); requireNative('schema_registry').GetSchema('contextMenus');
...@@ -129,26 +129,6 @@ WebViewInternal.prototype.maybeHandleContextMenu = function(e, webViewEvent) { ...@@ -129,26 +129,6 @@ WebViewInternal.prototype.maybeHandleContextMenu = function(e, webViewEvent) {
} // else we will ignore showing the context menu completely. } // 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 */ /** @private */
WebViewInternal.prototype.setupExperimentalContextMenus = function() { WebViewInternal.prototype.setupExperimentalContextMenus = function() {
var createContextMenus = function() { var createContextMenus = function() {
......
...@@ -44,6 +44,8 @@ ...@@ -44,6 +44,8 @@
file="extensions\chrome_direct_setting.js" type="BINDATA" /> 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_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_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_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_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" /> <include name="IDR_DECLARATIVE_WEBREQUEST_CUSTOM_BINDINGS_JS" file="extensions\declarative_webrequest_custom_bindings.js" type="BINDATA" />
...@@ -85,10 +87,6 @@ ...@@ -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_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_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_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" /> <include name="IDR_WEB_VIEW_REQUEST_CUSTOM_BINDINGS_JS" file="extensions\web_view_request_custom_bindings.js" type="BINDATA" />
<!-- Platform app support. --> <!-- Platform app support. -->
......
...@@ -519,8 +519,15 @@ std::vector<std::pair<std::string, int> > Dispatcher::GetJsResources() { ...@@ -519,8 +519,15 @@ std::vector<std::pair<std::string, int> > Dispatcher::GetJsResources() {
IDR_UNCAUGHT_EXCEPTION_HANDLER_JS)); IDR_UNCAUGHT_EXCEPTION_HANDLER_JS));
resources.push_back(std::make_pair("unload_event", IDR_UNLOAD_EVENT_JS)); resources.push_back(std::make_pair("unload_event", IDR_UNLOAD_EVENT_JS));
resources.push_back(std::make_pair("utils", IDR_UTILS_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", resources.push_back(std::make_pair("webViewInternal",
IDR_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS)); IDR_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS));
resources.push_back(std::make_pair("denyWebView", IDR_WEB_VIEW_DENY_JS));
resources.push_back( resources.push_back(
std::make_pair(mojo::kBufferModuleName, IDR_MOJO_BUFFER_JS)); std::make_pair(mojo::kBufferModuleName, IDR_MOJO_BUFFER_JS));
resources.push_back( resources.push_back(
......
...@@ -31,7 +31,11 @@ ...@@ -31,7 +31,11 @@
<include name="IDR_UNCAUGHT_EXCEPTION_HANDLER_JS" file="uncaught_exception_handler.js" type="BINDATA" /> <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_UNLOAD_EVENT_JS" file="unload_event.js" type="BINDATA" />
<include name="IDR_UTILS_JS" file="utils.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_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. --> <!-- Custom bindings for APIs. -->
<include name="IDR_APP_RUNTIME_CUSTOM_BINDINGS_JS" file="app_runtime_custom_bindings.js" type="BINDATA" /> <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'); ...@@ -10,7 +10,6 @@ var DocumentNatives = requireNative('document_natives');
var GuestViewInternal = var GuestViewInternal =
require('binding').Binding.create('guestViewInternal').generate(); require('binding').Binding.create('guestViewInternal').generate();
var IdGenerator = requireNative('id_generator'); var IdGenerator = requireNative('id_generator');
var ChromeWebView = require('chromeWebViewInternal').ChromeWebView
// TODO(lazyboy): Rename this to WebViewInternal and call WebViewInternal // TODO(lazyboy): Rename this to WebViewInternal and call WebViewInternal
// something else. // something else.
var WebView = require('webViewInternal').WebView; var WebView = require('webViewInternal').WebView;
...@@ -1011,6 +1010,12 @@ window.addEventListener('readystatechange', function listener(event) { ...@@ -1011,6 +1010,12 @@ window.addEventListener('readystatechange', function listener(event) {
window.removeEventListener(event.type, listener, useCapture); window.removeEventListener(event.type, listener, useCapture);
}, useCapture); }, useCapture);
/**
* Implemented when the ChromeWebView API is available.
* @private
*/
WebViewInternal.prototype.maybeGetChromeWebViewEvents = function() {};
/** /**
* Implemented when the experimental API is available. * Implemented when the experimental API is available.
* @private * @private
...@@ -1025,25 +1030,12 @@ WebViewInternal.prototype.maybeGetExperimentalPermissions = function() { ...@@ -1025,25 +1030,12 @@ WebViewInternal.prototype.maybeGetExperimentalPermissions = function() {
return []; 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. * Implemented when the experimental API is available.
* @private * @private
*/ */
WebViewInternal.prototype.setupExperimentalContextMenus = function() {}; WebViewInternal.prototype.setupExperimentalContextMenus = function() {
};
exports.WebView = WebView; exports.WebView = WebView;
exports.WebViewInternal = WebViewInternal; exports.WebViewInternal = WebViewInternal;
...@@ -50,14 +50,6 @@ var WEB_VIEW_EVENTS = { ...@@ -50,14 +50,6 @@ var WEB_VIEW_EVENTS = {
evt: CreateEvent('webViewInternal.onContentLoad'), evt: CreateEvent('webViewInternal.onContentLoad'),
fields: [] fields: []
}, },
'contextmenu': {
evt: CreateEvent('chromeWebViewInternal.contextmenu'),
cancelable: true,
customHandler: function(handler, event, webViewEvent) {
handler.handleContextMenu(event, webViewEvent);
},
fields: ['items']
},
'dialog': { 'dialog': {
cancelable: true, cancelable: true,
customHandler: function(handler, event, webViewEvent) { customHandler: function(handler, event, webViewEvent) {
...@@ -283,6 +275,10 @@ WebViewEvents.prototype.getEvents = function() { ...@@ -283,6 +275,10 @@ WebViewEvents.prototype.getEvents = function() {
for (var eventName in experimentalEvents) { for (var eventName in experimentalEvents) {
WEB_VIEW_EVENTS[eventName] = experimentalEvents[eventName]; 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; return WEB_VIEW_EVENTS;
}; };
...@@ -309,11 +305,6 @@ WebViewEvents.prototype.setupEvent = function(name, info) { ...@@ -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) { WebViewEvents.prototype.handleDialogEvent = function(event, webViewEvent) {
var showWarningMessage = function(dialogType) { var showWarningMessage = function(dialogType) {
var VOWELS = ['a', 'e', 'i', 'o', 'u']; 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