| 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 |