Chromium Code Reviews| Index: extensions/renderer/resources/guest_view/extension_view_events.js |
| diff --git a/extensions/renderer/resources/guest_view/extension_view_events.js b/extensions/renderer/resources/guest_view/extension_view_events.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f2e5ebf14c4d5004d27c4a5c82f7f30322198aa7 |
| --- /dev/null |
| +++ b/extensions/renderer/resources/guest_view/extension_view_events.js |
| @@ -0,0 +1,56 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// Event management for ExtensionView. |
| + |
| +var EventBindings = require('event_bindings'); |
| + |
| +var CreateEvent = function(name) { |
| + var eventOpts = {supportsListeners: true, supportsFilters: true}; |
| + return new EventBindings.Event(name, undefined, eventOpts); |
| +}; |
| + |
| +var EXTENSION_VIEW_EVENTS = { |
| + 'loadcommit': { |
| + customHandler: function(handler, event, extensionViewEvent) { |
|
Fady Samuel
2015/02/17 23:20:36
just call this handler instead of customHandler.
apacible
2015/02/18 00:04:12
Done.
|
| + handler.handleLoadCommitEvent(event, extensionViewEvent); |
| + }, |
| + evt: CreateEvent('extensionViewInternal.onLoadCommit'), |
| + fields: ['url', 'isTopLevel'] |
|
Fady Samuel
2015/02/17 23:20:36
These fields don't do anything here. Please remove
apacible
2015/02/18 00:04:12
Done.
|
| + } |
| +}; |
| + |
| +// Constructor. |
| +function ExtensionViewEvents(extensionViewImpl, viewInstanceId) { |
| + this.extensionViewImpl = extensionViewImpl; |
| + this.viewInstanceId = viewInstanceId; |
| + |
| + // Set up the events. |
| + var events = this.getEvents(); |
| + for (var eventName in events) { |
| + this.setupEvent(eventName, events[eventName]); |
| + } |
| +} |
| + |
| +ExtensionViewEvents.prototype.getEvents = function() { |
| + return EXTENSION_VIEW_EVENTS; |
| +}; |
| + |
| +ExtensionViewEvents.prototype.setupEvent = function(name, info) { |
| + info.evt.addListener(function(e) { |
| + var details = {}; |
| + var extensionViewEvent = new Event(name, details); |
|
Fady Samuel
2015/02/17 23:20:36
Delete the two lines above?
apacible
2015/02/18 00:04:12
Done.
|
| + if (info.customHandler) { |
|
Fady Samuel
2015/02/17 23:20:36
if (info.handler)
info.handler.call(this, e);
apacible
2015/02/18 00:04:12
Done.
|
| + info.customHandler(this, e, extensionViewEvent); |
| + return; |
| + } |
| + }.bind(this), {instanceId: this.viewInstanceId}); |
| +}; |
| + |
| +ExtensionViewEvents.prototype.handleLoadCommitEvent = |
| + function(event, webViewEvent) { |
| + this.extensionViewImpl.onLoadCommit(event.url); |
| +}; |
| + |
| +exports.ExtensionViewEvents = ExtensionViewEvents; |