summaryrefslogtreecommitdiffstats
path: root/extensions/renderer/resources
diff options
context:
space:
mode:
authorpaulmeyer <paulmeyer@chromium.org>2015-03-06 13:46:13 -0800
committerCommit bot <commit-bot@chromium.org>2015-03-06 21:46:44 +0000
commit4e0d1372aefe2ffd2d2be9ffc566f97a7a9d3848 (patch)
treed9b6ced1ba3feee191b88964671180cddf33fc85 /extensions/renderer/resources
parent794e9820dc79d9c94734e87ed73f7a46faa15666 (diff)
downloadchromium_src-4e0d1372aefe2ffd2d2be9ffc566f97a7a9d3848.zip
chromium_src-4e0d1372aefe2ffd2d2be9ffc566f97a7a9d3848.tar.gz
chromium_src-4e0d1372aefe2ffd2d2be9ffc566f97a7a9d3848.tar.bz2
Added the onResize and onContentResize events to GuestViewEvents.
Review URL: https://codereview.chromium.org/987473002 Cr-Commit-Position: refs/heads/master@{#319513}
Diffstat (limited to 'extensions/renderer/resources')
-rw-r--r--extensions/renderer/resources/guest_view/guest_view.js11
-rw-r--r--extensions/renderer/resources/guest_view/guest_view_container.js41
-rw-r--r--extensions/renderer/resources/guest_view/guest_view_events.js5
3 files changed, 47 insertions, 10 deletions
diff --git a/extensions/renderer/resources/guest_view/guest_view.js b/extensions/renderer/resources/guest_view/guest_view.js
index 8ff4f3c..616cc3f 100644
--- a/extensions/renderer/resources/guest_view/guest_view.js
+++ b/extensions/renderer/resources/guest_view/guest_view.js
@@ -5,16 +5,13 @@
// This module implements a wrapper for a guestview that manages its
// creation, attaching, and destruction.
+var CreateEvent = require('guestViewEvents').CreateEvent;
var EventBindings = require('event_bindings');
var GuestViewInternal =
require('binding').Binding.create('guestViewInternal').generate();
var GuestViewInternalNatives = requireNative('guest_view_internal');
// Events.
-var CreateEvent = function(name) {
- var eventOpts = {supportsListeners: true, supportsFilters: true};
- return new EventBindings.Event(name, undefined, eventOpts);
-};
var ResizeEvent = CreateEvent('guestViewInternal.onResize');
// Possible states.
@@ -30,7 +27,7 @@ var ERROR_MSG_NOT_ATTACHED = 'The guest is not attached.';
var ERROR_MSG_NOT_CREATED = 'The guest has not been created.';
// Properties.
-var PROPERTY_ON_RESIZE = 'onResize';
+var PROPERTY_ON_RESIZE = 'onresize';
// Contains and hides the internal implementation details of |GuestView|,
// including maintaining its state and enforcing the proper usage of its API
@@ -55,7 +52,7 @@ function GuestViewImpl(guestView, viewType, guestInstanceId) {
// Sets up the onResize property on the GuestView.
GuestViewImpl.prototype.setupOnResize = function() {
- Object.defineProperty(this.guestView, PROPERTY_ON_RESIZE, {
+ $Object.defineProperty(this.guestView, PROPERTY_ON_RESIZE, {
get: function() {
return this[PROPERTY_ON_RESIZE];
}.bind(this),
@@ -69,7 +66,7 @@ GuestViewImpl.prototype.setupOnResize = function() {
if (!this[PROPERTY_ON_RESIZE]) {
return;
}
- this[PROPERTY_ON_RESIZE](e.oldWidth, e.oldHeight, e.newWidth, e.newHeight);
+ this[PROPERTY_ON_RESIZE](e);
}.bind(this);
};
diff --git a/extensions/renderer/resources/guest_view/guest_view_container.js b/extensions/renderer/resources/guest_view/guest_view_container.js
index 95bb1de..bf01222 100644
--- a/extensions/renderer/resources/guest_view/guest_view_container.js
+++ b/extensions/renderer/resources/guest_view/guest_view_container.js
@@ -14,10 +14,12 @@ function GuestViewContainer(element, viewType) {
privates(element).internal = this;
this.element = element;
this.elementAttached = false;
- this.guest = new GuestView(viewType);
this.viewInstanceId = IdGenerator.GetNextId();
this.viewType = viewType;
+ this.setupGuestProperty();
+ this.guest = new GuestView(viewType);
+
privates(this).browserPluginElement = this.createBrowserPluginElement();
this.setupFocusPropagation();
@@ -53,6 +55,32 @@ GuestViewContainer.registerElement =
registerGuestViewElement(guestViewContainerType);
window.removeEventListener(event.type, listener, useCapture);
}, useCapture);
+ };
+
+// Create the 'guest' property to track new GuestViews and always listen for
+// their resizes.
+GuestViewContainer.prototype.setupGuestProperty = function() {
+ Object.defineProperty(this, 'guest', {
+ get: function() {
+ return privates(this).guest;
+ }.bind(this),
+ set: function(value) {
+ privates(this).guest = value;
+ if (!value) {
+ return;
+ }
+ privates(this).guest.onresize = function(e) {
+ // Dispatch the 'contentresize' event.
+ var contentResizeEvent = new Event('contentresize', { bubbles: true });
+ contentResizeEvent.oldWidth = e.oldWidth;
+ contentResizeEvent.oldHeight = e.oldHeight;
+ contentResizeEvent.newWidth = e.newWidth;
+ contentResizeEvent.newHeight = e.newHeight;
+ this.dispatchEvent(contentResizeEvent);
+ }.bind(this);
+ }.bind(this),
+ enumerable: true
+ });
};
GuestViewContainer.prototype.createBrowserPluginElement = function() {
@@ -114,10 +142,17 @@ GuestViewContainer.prototype.handleBrowserPluginAttributeMutation =
GuestViewContainer.prototype.onElementResize = function(oldWidth, oldHeight,
newWidth, newHeight) {
+ // Dispatch the 'resize' event.
+ var resizeEvent = new Event('resize', { bubbles: true });
+ resizeEvent.oldWidth = oldWidth;
+ resizeEvent.oldHeight = oldHeight;
+ resizeEvent.newWidth = newWidth;
+ resizeEvent.newHeight = newHeight;
+ this.dispatchEvent(resizeEvent);
+
if (!this.guest.getId())
return;
- this.guest.setSize(
- {normal: {width: newWidth, height: newHeight}});
+ this.guest.setSize({normal: {width: newWidth, height: newHeight}});
};
GuestViewContainer.prototype.buildParams = function() {
diff --git a/extensions/renderer/resources/guest_view/guest_view_events.js b/extensions/renderer/resources/guest_view/guest_view_events.js
index 415d0c4..caed8c8 100644
--- a/extensions/renderer/resources/guest_view/guest_view_events.js
+++ b/extensions/renderer/resources/guest_view/guest_view_events.js
@@ -15,6 +15,11 @@ function GuestViewEvents(view) {
this.view = view;
this.on = {};
+ // |setupEventProperty| is normally called automatically, but these events are
+ // are registered here because they are dispatched from GuestViewContainer
+ // instead of in response to extension events.
+ this.setupEventProperty('contentresize');
+ this.setupEventProperty('resize');
this.setupEvents();
}