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 ebcc3136b5e56a3b0bb67996f3da111ab60ebb61..60b133267e291c851cb68ba2295b829c5bdb9b9f 100644 |
--- a/extensions/renderer/resources/guest_view/guest_view_container.js |
+++ b/extensions/renderer/resources/guest_view/guest_view_container.js |
@@ -9,6 +9,7 @@ var DocumentNatives = requireNative('document_natives'); |
var GuestView = require('guestView').GuestView; |
var GuestViewInternalNatives = requireNative('guest_view_internal'); |
var IdGenerator = requireNative('id_generator'); |
+var MessagingNatives = requireNative('messaging_natives'); |
function GuestViewContainer(element, viewType) { |
privates(element).internal = this; |
@@ -122,12 +123,20 @@ GuestViewContainer.prototype.attachWindow = function() { |
return true; |
}; |
+GuestViewContainer.prototype.makeGCOwnContainer = function(internalInstanceId) { |
+ MessagingNatives.BindToGC(this, function() { |
+ GuestViewInternalNatives.DestroyContainer(internalInstanceId); |
+ }, -1); |
+}; |
+ |
GuestViewContainer.prototype.handleBrowserPluginAttributeMutation = |
function(name, oldValue, newValue) { |
if (name == 'internalinstanceid' && !oldValue && !!newValue) { |
privates(this).browserPluginElement.removeAttribute('internalinstanceid'); |
this.internalInstanceId = parseInt(newValue); |
+ this.makeGCOwnContainer(this.internalInstanceId); |
+ |
// Track when the element resizes using the element resize callback. |
GuestViewInternalNatives.RegisterElementResizeCallback( |
this.internalInstanceId, this.weakWrapper(this.onElementResize)); |