OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 // Event management for WebViewInternal. | 5 // Event management for WebViewInternal. |
6 | 6 |
7 var DeclarativeWebRequestSchema = | 7 var DeclarativeWebRequestSchema = |
8 requireNative('schema_registry').GetSchema('declarativeWebRequest'); | 8 requireNative('schema_registry').GetSchema('declarativeWebRequest'); |
9 var EventBindings = require('event_bindings'); | 9 var EventBindings = require('event_bindings'); |
10 var IdGenerator = requireNative('id_generator'); | 10 var IdGenerator = requireNative('id_generator'); |
11 var MessagingNatives = requireNative('messaging_natives'); | 11 var MessagingNatives = requireNative('messaging_natives'); |
12 var WebRequestEvent = require('webRequestInternal').WebRequestEvent; | 12 var WebRequestEvent = require('webRequestInternal').WebRequestEvent; |
13 var WebRequestSchema = | 13 var WebRequestSchema = |
14 requireNative('schema_registry').GetSchema('webRequest'); | 14 requireNative('schema_registry').GetSchema('webRequest'); |
15 var WebView = require('webViewInternal').WebView; | 15 var WebView = require('webViewInternal').WebView; |
16 | 16 |
17 var CreateEvent = function(name) { | 17 var CreateEvent = function(name) { |
18 var eventOpts = {supportsListeners: true, supportsFilters: true}; | 18 var eventOpts = {supportsListeners: true, supportsFilters: true}; |
19 return new EventBindings.Event(name, undefined, eventOpts); | 19 return new EventBindings.Event(name, undefined, eventOpts); |
20 }; | 20 }; |
21 | 21 |
22 var FrameNameChangedEvent = CreateEvent('webViewInternal.onFrameNameChanged'); | 22 var FrameNameChangedEvent = CreateEvent('webViewInternal.onFrameNameChanged'); |
23 var PluginDestroyedEvent = CreateEvent('webViewInternal.onPluginDestroyed'); | |
23 var WebRequestMessageEvent = CreateEvent('webViewInternal.onMessage'); | 24 var WebRequestMessageEvent = CreateEvent('webViewInternal.onMessage'); |
24 | 25 |
25 // WEB_VIEW_EVENTS is a map of stable <webview> DOM event names to their | 26 // WEB_VIEW_EVENTS is a map of stable <webview> DOM event names to their |
26 // associated extension event descriptor objects. | 27 // associated extension event descriptor objects. |
27 // An event listener will be attached to the extension event |evt| specified in | 28 // An event listener will be attached to the extension event |evt| specified in |
28 // the descriptor. | 29 // the descriptor. |
29 // |fields| specifies the public-facing fields in the DOM event that are | 30 // |fields| specifies the public-facing fields in the DOM event that are |
30 // accessible to <webview> developers. | 31 // accessible to <webview> developers. |
31 // |customHandler| allows a handler function to be called each time an extension | 32 // |customHandler| allows a handler function to be called each time an extension |
32 // event is caught by its event listener. The DOM event should be dispatched | 33 // event is caught by its event listener. The DOM event should be dispatched |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
185 // Constructor. | 186 // Constructor. |
186 function WebViewEvents(webViewInternal, viewInstanceId) { | 187 function WebViewEvents(webViewInternal, viewInstanceId) { |
187 this.webViewInternal = webViewInternal; | 188 this.webViewInternal = webViewInternal; |
188 this.viewInstanceId = viewInstanceId; | 189 this.viewInstanceId = viewInstanceId; |
189 this.setup(); | 190 this.setup(); |
190 } | 191 } |
191 | 192 |
192 // Sets up events. | 193 // Sets up events. |
193 WebViewEvents.prototype.setup = function() { | 194 WebViewEvents.prototype.setup = function() { |
194 this.setupFrameNameChangedEvent(); | 195 this.setupFrameNameChangedEvent(); |
196 this.setupPluginDestroyedEvent(); | |
195 this.setupWebRequestEvents(); | 197 this.setupWebRequestEvents(); |
196 this.webViewInternal.setupExperimentalContextMenus(); | 198 this.webViewInternal.setupExperimentalContextMenus(); |
197 | 199 |
198 var events = this.getEvents(); | 200 var events = this.getEvents(); |
199 for (var eventName in events) { | 201 for (var eventName in events) { |
200 this.setupEvent(eventName, events[eventName]); | 202 this.setupEvent(eventName, events[eventName]); |
201 } | 203 } |
202 }; | 204 }; |
203 | 205 |
204 WebViewEvents.prototype.setupFrameNameChangedEvent = function() { | 206 WebViewEvents.prototype.setupFrameNameChangedEvent = function() { |
205 var self = this; | 207 var self = this; |
206 FrameNameChangedEvent.addListener(function(e) { | 208 FrameNameChangedEvent.addListener(function(e) { |
207 self.webViewInternal.onFrameNameChanged(e.name); | 209 self.webViewInternal.onFrameNameChanged(e.name); |
208 }, {instanceId: self.viewInstanceId}); | 210 }, {instanceId: self.viewInstanceId}); |
209 }; | 211 }; |
210 | 212 |
213 WebViewEvents.prototype.setupPluginDestroyedEvent = function() { | |
214 var self = this; | |
215 PluginDestroyedEvent.addListener(function(e) { | |
216 self.webViewInternal.onPluginDestroyed(); | |
217 }, {instanceId: self.viewInstanceId}); | |
218 }; | |
Fady Samuel
2014/08/25 18:55:34
I'm trying to switch away from self to bind(this).
lazyboy
2014/08/25 19:16:44
Done.
| |
219 | |
211 WebViewEvents.prototype.setupWebRequestEvents = function() { | 220 WebViewEvents.prototype.setupWebRequestEvents = function() { |
212 var self = this; | 221 var self = this; |
213 var request = {}; | 222 var request = {}; |
214 var createWebRequestEvent = function(webRequestEvent) { | 223 var createWebRequestEvent = function(webRequestEvent) { |
215 return function() { | 224 return function() { |
216 if (!self[webRequestEvent.name]) { | 225 if (!self[webRequestEvent.name]) { |
217 self[webRequestEvent.name] = | 226 self[webRequestEvent.name] = |
218 new WebRequestEvent( | 227 new WebRequestEvent( |
219 'webViewInternal.' + webRequestEvent.name, | 228 'webViewInternal.' + webRequestEvent.name, |
220 webRequestEvent.parameters, | 229 webRequestEvent.parameters, |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
597 } | 606 } |
598 }; | 607 }; |
599 | 608 |
600 WebViewEvents.prototype.handleSizeChangedEvent = function( | 609 WebViewEvents.prototype.handleSizeChangedEvent = function( |
601 event, webViewEvent) { | 610 event, webViewEvent) { |
602 this.webViewInternal.onSizeChanged(webViewEvent); | 611 this.webViewInternal.onSizeChanged(webViewEvent); |
603 }; | 612 }; |
604 | 613 |
605 exports.WebViewEvents = WebViewEvents; | 614 exports.WebViewEvents = WebViewEvents; |
606 exports.CreateEvent = CreateEvent; | 615 exports.CreateEvent = CreateEvent; |
OLD | NEW |