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'); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 fields: [] | 43 fields: [] |
44 }, | 44 }, |
45 'consolemessage': { | 45 'consolemessage': { |
46 evt: CreateEvent('webViewInternal.onConsoleMessage'), | 46 evt: CreateEvent('webViewInternal.onConsoleMessage'), |
47 fields: ['level', 'message', 'line', 'sourceId'] | 47 fields: ['level', 'message', 'line', 'sourceId'] |
48 }, | 48 }, |
49 'contentload': { | 49 'contentload': { |
50 evt: CreateEvent('webViewInternal.onContentLoad'), | 50 evt: CreateEvent('webViewInternal.onContentLoad'), |
51 fields: [] | 51 fields: [] |
52 }, | 52 }, |
53 'contextmenu': { | |
54 evt: CreateEvent('chromeWebViewInternal.contextmenu'), | |
55 cancelable: true, | |
56 customHandler: function(handler, event, webViewEvent) { | |
57 handler.handleContextMenu(event, webViewEvent); | |
58 }, | |
59 fields: ['items'] | |
60 }, | |
61 'dialog': { | 53 'dialog': { |
62 cancelable: true, | 54 cancelable: true, |
63 customHandler: function(handler, event, webViewEvent) { | 55 customHandler: function(handler, event, webViewEvent) { |
64 handler.handleDialogEvent(event, webViewEvent); | 56 handler.handleDialogEvent(event, webViewEvent); |
65 }, | 57 }, |
66 evt: CreateEvent('webViewInternal.onDialog'), | 58 evt: CreateEvent('webViewInternal.onDialog'), |
67 fields: ['defaultPromptText', 'messageText', 'messageType', 'url'] | 59 fields: ['defaultPromptText', 'messageText', 'messageType', 'url'] |
68 }, | 60 }, |
69 'exit': { | 61 'exit': { |
70 evt: CreateEvent('webViewInternal.onExit'), | 62 evt: CreateEvent('webViewInternal.onExit'), |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 } | 268 } |
277 | 269 |
278 this.webViewInternal.setRequestPropertyOnWebViewNode(request); | 270 this.webViewInternal.setRequestPropertyOnWebViewNode(request); |
279 }; | 271 }; |
280 | 272 |
281 WebViewEvents.prototype.getEvents = function() { | 273 WebViewEvents.prototype.getEvents = function() { |
282 var experimentalEvents = this.webViewInternal.maybeGetExperimentalEvents(); | 274 var experimentalEvents = this.webViewInternal.maybeGetExperimentalEvents(); |
283 for (var eventName in experimentalEvents) { | 275 for (var eventName in experimentalEvents) { |
284 WEB_VIEW_EVENTS[eventName] = experimentalEvents[eventName]; | 276 WEB_VIEW_EVENTS[eventName] = experimentalEvents[eventName]; |
285 } | 277 } |
| 278 var chromeEvents = this.webViewInternal.maybeGetChromeWebViewEvents(); |
| 279 for (var eventName in chromeEvents) { |
| 280 WEB_VIEW_EVENTS[eventName] = chromeEvents[eventName]; |
| 281 } |
286 return WEB_VIEW_EVENTS; | 282 return WEB_VIEW_EVENTS; |
287 }; | 283 }; |
288 | 284 |
289 WebViewEvents.prototype.setupEvent = function(name, info) { | 285 WebViewEvents.prototype.setupEvent = function(name, info) { |
290 info.evt.addListener(function(e) { | 286 info.evt.addListener(function(e) { |
291 var details = {bubbles:true}; | 287 var details = {bubbles:true}; |
292 if (info.cancelable) { | 288 if (info.cancelable) { |
293 details.cancelable = true; | 289 details.cancelable = true; |
294 } | 290 } |
295 var webViewEvent = new Event(name, details); | 291 var webViewEvent = new Event(name, details); |
296 $Array.forEach(info.fields, function(field) { | 292 $Array.forEach(info.fields, function(field) { |
297 if (e[field] !== undefined) { | 293 if (e[field] !== undefined) { |
298 webViewEvent[field] = e[field]; | 294 webViewEvent[field] = e[field]; |
299 } | 295 } |
300 }.bind(this)); | 296 }.bind(this)); |
301 if (info.customHandler) { | 297 if (info.customHandler) { |
302 info.customHandler(this, e, webViewEvent); | 298 info.customHandler(this, e, webViewEvent); |
303 return; | 299 return; |
304 } | 300 } |
305 this.webViewInternal.dispatchEvent(webViewEvent); | 301 this.webViewInternal.dispatchEvent(webViewEvent); |
306 }.bind(this), {instanceId: this.viewInstanceId}); | 302 }.bind(this), {instanceId: this.viewInstanceId}); |
307 | 303 |
308 this.webViewInternal.setupEventProperty(name); | 304 this.webViewInternal.setupEventProperty(name); |
309 }; | 305 }; |
310 | 306 |
311 | 307 |
312 // Event handlers. | |
313 WebViewEvents.prototype.handleContextMenu = function(e, webViewEvent) { | |
314 this.webViewInternal.maybeHandleContextMenu(e, webViewEvent); | |
315 }; | |
316 | |
317 WebViewEvents.prototype.handleDialogEvent = function(event, webViewEvent) { | 308 WebViewEvents.prototype.handleDialogEvent = function(event, webViewEvent) { |
318 var showWarningMessage = function(dialogType) { | 309 var showWarningMessage = function(dialogType) { |
319 var VOWELS = ['a', 'e', 'i', 'o', 'u']; | 310 var VOWELS = ['a', 'e', 'i', 'o', 'u']; |
320 var WARNING_MSG_DIALOG_BLOCKED = '<webview>: %1 %2 dialog was blocked.'; | 311 var WARNING_MSG_DIALOG_BLOCKED = '<webview>: %1 %2 dialog was blocked.'; |
321 var article = (VOWELS.indexOf(dialogType.charAt(0)) >= 0) ? 'An' : 'A'; | 312 var article = (VOWELS.indexOf(dialogType.charAt(0)) >= 0) ? 'An' : 'A'; |
322 var output = WARNING_MSG_DIALOG_BLOCKED.replace('%1', article); | 313 var output = WARNING_MSG_DIALOG_BLOCKED.replace('%1', article); |
323 output = output.replace('%2', dialogType); | 314 output = output.replace('%2', dialogType); |
324 window.console.warn(output); | 315 window.console.warn(output); |
325 }; | 316 }; |
326 | 317 |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
621 } | 612 } |
622 }; | 613 }; |
623 | 614 |
624 WebViewEvents.prototype.handleSizeChangedEvent = function( | 615 WebViewEvents.prototype.handleSizeChangedEvent = function( |
625 event, webViewEvent) { | 616 event, webViewEvent) { |
626 this.webViewInternal.onSizeChanged(webViewEvent); | 617 this.webViewInternal.onSizeChanged(webViewEvent); |
627 }; | 618 }; |
628 | 619 |
629 exports.WebViewEvents = WebViewEvents; | 620 exports.WebViewEvents = WebViewEvents; |
630 exports.CreateEvent = CreateEvent; | 621 exports.CreateEvent = CreateEvent; |
OLD | NEW |