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

Unified Diff: extensions/renderer/resources/guest_view/guest_view_events.js

Issue 988293004: Added the 'internal' flag for guestview event info. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: extensions/renderer/resources/guest_view/guest_view_events.js
diff --git a/extensions/renderer/resources/guest_view/guest_view_events.js b/extensions/renderer/resources/guest_view/guest_view_events.js
index caed8c88af8ad6fa8610980653b99e22c6d60545..f6a7e8308ed4a31af52b31061a73815a20702c23 100644
--- a/extensions/renderer/resources/guest_view/guest_view_events.js
+++ b/extensions/renderer/resources/guest_view/guest_view_events.js
@@ -41,6 +41,11 @@ function GuestViewEvents(view) {
// should be dispatched within this handler function (if desired). With no
// handler function, the DOM event will be dispatched by default each time
// the extension event is caught.
+// |internal| (default: false) specifies that the event will not be dispatched
+// as a DOM event, and will also not appear as an on* property on the view’s
+// element. A |handler| should be specified for all internal events, and
+// |fields| and |cancelable| should be left unspecified (as they are only
+// meaningful for DOM events).
GuestViewEvents.EVENTS = {};
// Sets up the handling of events.
@@ -57,7 +62,9 @@ GuestViewEvents.prototype.setupEvents = function() {
// Sets up the handling of the |eventName| event.
GuestViewEvents.prototype.setupEvent = function(eventName, eventInfo) {
- this.setupEventProperty(eventName);
+ if (!eventInfo.internal) {
+ this.setupEventProperty(eventName);
+ }
var listenerOpts = { instanceId: this.view.viewInstanceId };
if (eventInfo.handler) {
@@ -67,6 +74,11 @@ GuestViewEvents.prototype.setupEvent = function(eventName, eventInfo) {
return;
}
+ // Internal events are not dispatched as DOM events.
+ if (eventInfo.internal) {
+ return;
+ }
+
eventInfo.evt.addListener(function(e) {
var domEvent = this.makeDomEvent(e, eventName);
this.view.dispatchEvent(domEvent);
@@ -79,6 +91,11 @@ GuestViewEvents.prototype.makeDomEvent = function(event, eventName) {
var eventInfo =
GuestViewEvents.EVENTS[eventName] || this.getEvents()[eventName];
+ // Internal events are not dispatched as DOM events.
+ if (eventInfo.internal) {
+ return null;
+ }
+
var details = { bubbles: true };
if (eventInfo.cancelable) {
details.cancelable = true;

Powered by Google App Engine
This is Rietveld 408576698