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

Unified Diff: extensions/renderer/resources/guest_view/guest_view.js

Issue 972313002: Make <webview> use out-of-process iframe architecture. (Closed) Base URL: ssh://saopaulo.wat/mnt/dev/shared/src@testoopif2z-better-chrome
Patch Set: address all comments from Nasko and Charlie, minus is_loading Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: extensions/renderer/resources/guest_view/guest_view.js
diff --git a/extensions/renderer/resources/guest_view/guest_view.js b/extensions/renderer/resources/guest_view/guest_view.js
index 27368a488f792040d6cfcfd90d270f48dc8ffd46..350c5f431db181c4a86ff94abab777690a7d6cf8 100644
--- a/extensions/renderer/resources/guest_view/guest_view.js
+++ b/extensions/renderer/resources/guest_view/guest_view.js
@@ -139,11 +139,16 @@ GuestViewImpl.prototype.attachImpl = function(
return;
}
+ var isSitePerProcess = GuestViewInternalNatives.IsSitePerProcess();
// Callback wrapper function to store the contentWindow from the attachGuest()
// callback, handle potential attaching failure, register an automatic detach,
// and advance the queue.
var callbackWrapper = function(callback, contentWindow) {
// Check if attaching failed.
+ if (isSitePerProcess) {
+ contentWindow = this.guestView.browserPluginElement.contentWindow;
Fady Samuel 2015/05/26 16:42:15 Why are you using browserPluginElement for sitePer
+ }
+
if (!contentWindow) {
this.state = GUEST_STATE_CREATED;
this.internalInstanceId = 0;
@@ -156,10 +161,17 @@ GuestViewImpl.prototype.attachImpl = function(
};
attachParams['instanceId'] = viewInstanceId;
- GuestViewInternalNatives.AttachGuest(internalInstanceId,
- this.id,
- attachParams,
- callbackWrapper.bind(this, callback));
+ if (isSitePerProcess) {
+ var contentWindow = this.guestView.browserPluginElement.contentWindow;
+ GuestViewInternalNatives.AttachIframeGuest(
+ internalInstanceId, this.id, attachParams, contentWindow,
+ callbackWrapper.bind(this, callback));
+ } else {
+ GuestViewInternalNatives.AttachGuest(internalInstanceId,
+ this.id,
+ attachParams,
+ callbackWrapper.bind(this, callback));
+ }
this.internalInstanceId = internalInstanceId;
this.state = GUEST_STATE_ATTACHED;
@@ -185,13 +197,16 @@ GuestViewImpl.prototype.createImpl = function(createParams, callback) {
return;
}
+ var isSitePerProcess = GuestViewInternalNatives.IsSitePerProcess();
// Callback wrapper function to store the guestInstanceId from the
// createGuest() callback, handle potential creation failure, and advance the
// queue.
var callbackWrapper = function(callback, guestInfo) {
this.id = guestInfo.id;
- this.contentWindow =
- GuestViewInternalNatives.GetContentWindow(guestInfo.contentWindowId);
+ if (!isSitePerProcess) {
+ this.contentWindow =
+ GuestViewInternalNatives.GetContentWindow(guestInfo.contentWindowId);
+ }
// Check if creation failed.
if (this.id === 0) {
@@ -277,6 +292,10 @@ function GuestView(viewType, guestInstanceId) {
privates(this).internal = new GuestViewImpl(this, viewType, guestInstanceId);
}
+GuestView.prototype.setBrowserPluginElement = function(browserPluginElement) {
+ this.browserPluginElement = browserPluginElement;
+}
+
// Attaches the guestview to the container with ID |internalInstanceId|.
GuestView.prototype.attach = function(
internalInstanceId, viewInstanceId, attachParams, callback) {

Powered by Google App Engine
This is Rietveld 408576698