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

Side by Side Diff: trunk/src/chrome/renderer/resources/extensions/web_view.js

Issue 23965004: Revert 222090 "<webview>: Cleanup WebRequest event listeners whe..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Shim that simulates a <webview> tag via Mutation Observers. 5 // Shim that simulates a <webview> tag via Mutation Observers.
6 // 6 //
7 // The actual tag is implemented via the browser plugin. The internals of this 7 // The actual tag is implemented via the browser plugin. The internals of this
8 // are hidden via Shadow DOM. 8 // are hidden via Shadow DOM.
9 9
10 'use strict'; 10 'use strict';
11 11
12 var DocumentNatives = requireNative('document_natives'); 12 var DocumentNatives = requireNative('document_natives');
13 var EventBindings = require('event_bindings'); 13 var EventBindings = require('event_bindings');
14 var MessagingNatives = requireNative('messaging_natives'); 14 var MessagingNatives = requireNative('messaging_natives');
15 var WebRequestEvent = require('webRequestInternal').WebRequestEvent; 15 var WebRequestEvent = require('webRequestInternal').WebRequestEvent;
16 var WebRequestSchema = 16 var WebRequestSchema =
17 requireNative('schema_registry').GetSchema('webRequest'); 17 requireNative('schema_registry').GetSchema('webRequest');
18 var WebView = require('binding').Binding.create('webview').generate(); 18 var WebView = require('binding').Binding.create('webview').generate();
19 var WebViewNatives = requireNative('webview_natives');
20 19
21 // This secret enables hiding <webview> private members from the outside scope. 20 // This secret enables hiding <webview> private members from the outside scope.
22 // Outside of this file, |secret| is inaccessible. The only way to access the 21 // Outside of this file, |secret| is inaccessible. The only way to access the
23 // <webview> element's internal members is via the |secret|. Since it's only 22 // <webview> element's internal members is via the |secret|. Since it's only
24 // accessible by code here (and in web_view_experimental), only <webview>'s 23 // accessible by code here (and in web_view_experimental), only <webview>'s
25 // API can access it and not external developers. 24 // API can access it and not external developers.
26 var secret = {}; 25 var secret = {};
27 26
28 var WEB_VIEW_ATTRIBUTE_MAXHEIGHT = 'maxheight'; 27 var WEB_VIEW_ATTRIBUTE_MAXHEIGHT = 'maxheight';
29 var WEB_VIEW_ATTRIBUTE_MAXWIDTH = 'maxwidth'; 28 var WEB_VIEW_ATTRIBUTE_MAXWIDTH = 'maxwidth';
30 var WEB_VIEW_ATTRIBUTE_MINHEIGHT = 'minheight'; 29 var WEB_VIEW_ATTRIBUTE_MINHEIGHT = 'minheight';
31 var WEB_VIEW_ATTRIBUTE_MINWIDTH = 'minwidth'; 30 var WEB_VIEW_ATTRIBUTE_MINWIDTH = 'minwidth';
32 31
33 /** @type {Array.<string>} */ 32 /** @type {Array.<string>} */
34 var WEB_VIEW_ATTRIBUTES = [ 33 var WEB_VIEW_ATTRIBUTES = [
35 'name', 34 'name',
36 'partition', 35 'partition',
37 'autosize', 36 'autosize',
38 WEB_VIEW_ATTRIBUTE_MINHEIGHT, 37 WEB_VIEW_ATTRIBUTE_MINHEIGHT,
39 WEB_VIEW_ATTRIBUTE_MINWIDTH, 38 WEB_VIEW_ATTRIBUTE_MINWIDTH,
40 WEB_VIEW_ATTRIBUTE_MAXHEIGHT, 39 WEB_VIEW_ATTRIBUTE_MAXHEIGHT,
41 WEB_VIEW_ATTRIBUTE_MAXWIDTH 40 WEB_VIEW_ATTRIBUTE_MAXWIDTH
42 ]; 41 ];
43 42
43 var webViewInstanceIdCounter = 0;
44
44 var CreateEvent = function(name) { 45 var CreateEvent = function(name) {
45 var eventOpts = {supportsListeners: true, supportsFilters: true}; 46 var eventOpts = {supportsListeners: true, supportsFilters: true};
46 return new EventBindings.Event(name, undefined, eventOpts); 47 return new EventBindings.Event(name, undefined, eventOpts);
47 }; 48 };
48 49
49 var WEB_VIEW_EVENTS = { 50 var WEB_VIEW_EVENTS = {
50 'close': { 51 'close': {
51 evt: CreateEvent('webview.onClose'), 52 evt: CreateEvent('webview.onClose'),
52 fields: [] 53 fields: []
53 }, 54 },
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 node.style.height = webViewEvent.newHeight + 'px'; 544 node.style.height = webViewEvent.newHeight + 'px';
544 } 545 }
545 node.dispatchEvent(webViewEvent); 546 node.dispatchEvent(webViewEvent);
546 }; 547 };
547 548
548 /** 549 /**
549 * @private 550 * @private
550 */ 551 */
551 WebViewInternal.prototype.setupWebviewNodeEvents_ = function() { 552 WebViewInternal.prototype.setupWebviewNodeEvents_ = function() {
552 var self = this; 553 var self = this;
553 this.viewInstanceId_ = WebViewNatives.GetNextInstanceID(); 554 this.viewInstanceId_ = ++webViewInstanceIdCounter;
554 var onInstanceIdAllocated = function(e) { 555 var onInstanceIdAllocated = function(e) {
555 var detail = e.detail ? JSON.parse(e.detail) : {}; 556 var detail = e.detail ? JSON.parse(e.detail) : {};
556 self.instanceId_ = detail.windowId; 557 self.instanceId_ = detail.windowId;
557 var params = { 558 var params = {
558 'api': 'webview', 559 'api': 'webview',
559 'instanceId': self.viewInstanceId_ 560 'instanceId': self.viewInstanceId_
560 }; 561 };
561 self.browserPluginNode_['-internal-attach'](params); 562 self.browserPluginNode_['-internal-attach'](params);
562 563
563 var events = self.getEvents_(); 564 var events = self.getEvents_();
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 932
932 /** 933 /**
933 * Implemented when the experimental API is available. 934 * Implemented when the experimental API is available.
934 * @private 935 * @private
935 */ 936 */
936 WebViewInternal.prototype.maybeAttachWebRequestEventToWebview_ = function() {}; 937 WebViewInternal.prototype.maybeAttachWebRequestEventToWebview_ = function() {};
937 938
938 exports.WebView = WebView; 939 exports.WebView = WebView;
939 exports.WebViewInternal = WebViewInternal; 940 exports.WebViewInternal = WebViewInternal;
940 exports.CreateEvent = CreateEvent; 941 exports.CreateEvent = CreateEvent;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698