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

Side by Side Diff: extensions/renderer/resources/guest_view/guest_view_container.js

Issue 1162053003: Move BrowserPluginDelegate's lifetime mgmt out of content/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync @tott Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This module implements the shared functionality for different guestview 5 // This module implements the shared functionality for different guestview
6 // containers, such as web_view, app_view, etc. 6 // containers, such as web_view, app_view, etc.
7 7
8 var DocumentNatives = requireNative('document_natives'); 8 var DocumentNatives = requireNative('document_natives');
9 var GuestView = require('guestView').GuestView; 9 var GuestView = require('guestView').GuestView;
10 var GuestViewInternalNatives = requireNative('guest_view_internal'); 10 var GuestViewInternalNatives = requireNative('guest_view_internal');
11 var IdGenerator = requireNative('id_generator'); 11 var IdGenerator = requireNative('id_generator');
12 var MessagingNatives = requireNative('messaging_natives');
12 13
13 function GuestViewContainer(element, viewType) { 14 function GuestViewContainer(element, viewType) {
14 privates(element).internal = this; 15 privates(element).internal = this;
15 this.attributes = {}; 16 this.attributes = {};
16 this.element = element; 17 this.element = element;
17 this.elementAttached = false; 18 this.elementAttached = false;
18 this.viewInstanceId = IdGenerator.GetNextId(); 19 this.viewInstanceId = IdGenerator.GetNextId();
19 this.viewType = viewType; 20 this.viewType = viewType;
20 21
21 this.setupGuestProperty(); 22 this.setupGuestProperty();
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 if (!this.internalInstanceId) { 116 if (!this.internalInstanceId) {
116 return true; 117 return true;
117 } 118 }
118 119
119 this.guest.attach(this.internalInstanceId, 120 this.guest.attach(this.internalInstanceId,
120 this.viewInstanceId, 121 this.viewInstanceId,
121 this.buildParams()); 122 this.buildParams());
122 return true; 123 return true;
123 }; 124 };
124 125
126 GuestViewContainer.prototype.makeGCOwnContainer = function(internalInstanceId) {
127 MessagingNatives.BindToGC(this, function() {
128 GuestViewInternalNatives.DestroyContainer(internalInstanceId);
129 }, -1);
130 };
131
125 GuestViewContainer.prototype.handleBrowserPluginAttributeMutation = 132 GuestViewContainer.prototype.handleBrowserPluginAttributeMutation =
126 function(name, oldValue, newValue) { 133 function(name, oldValue, newValue) {
127 if (name == 'internalinstanceid' && !oldValue && !!newValue) { 134 if (name == 'internalinstanceid' && !oldValue && !!newValue) {
128 privates(this).browserPluginElement.removeAttribute('internalinstanceid'); 135 privates(this).browserPluginElement.removeAttribute('internalinstanceid');
129 this.internalInstanceId = parseInt(newValue); 136 this.internalInstanceId = parseInt(newValue);
130 137
138 this.makeGCOwnContainer(this.internalInstanceId);
139
131 // Track when the element resizes using the element resize callback. 140 // Track when the element resizes using the element resize callback.
132 GuestViewInternalNatives.RegisterElementResizeCallback( 141 GuestViewInternalNatives.RegisterElementResizeCallback(
133 this.internalInstanceId, this.weakWrapper(this.onElementResize)); 142 this.internalInstanceId, this.weakWrapper(this.onElementResize));
134 143
135 if (!this.guest.getId()) { 144 if (!this.guest.getId()) {
136 return; 145 return;
137 } 146 }
138 this.guest.attach(this.internalInstanceId, 147 this.guest.attach(this.internalInstanceId,
139 this.viewInstanceId, 148 this.viewInstanceId,
140 this.buildParams()); 149 this.buildParams());
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 // Delete the callbacks so developers cannot call them and produce unexpected 283 // Delete the callbacks so developers cannot call them and produce unexpected
275 // behavior. 284 // behavior.
276 delete proto.createdCallback; 285 delete proto.createdCallback;
277 delete proto.attachedCallback; 286 delete proto.attachedCallback;
278 delete proto.detachedCallback; 287 delete proto.detachedCallback;
279 delete proto.attributeChangedCallback; 288 delete proto.attributeChangedCallback;
280 } 289 }
281 290
282 // Exports. 291 // Exports.
283 exports.GuestViewContainer = GuestViewContainer; 292 exports.GuestViewContainer = GuestViewContainer;
OLDNEW
« no previous file with comments | « extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698