Index: extensions/renderer/resources/guest_view/guest_view_container.js |
diff --git a/extensions/renderer/resources/guest_view/guest_view_container.js b/extensions/renderer/resources/guest_view/guest_view_container.js |
index 95bb1deeaedf472f779f40aa8ccda3c838a79357..bf012226008535476388a653de5e3bd52fe0920f 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() { |