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

Unified Diff: extensions/renderer/resources/guest_view/web_view/web_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/web_view/web_view.js
diff --git a/extensions/renderer/resources/guest_view/web_view/web_view.js b/extensions/renderer/resources/guest_view/web_view/web_view.js
index fd0e45c81b01e04239d6704d51194cc3d1cfff2d..254d56b1bf06be30a88c4804b6db774a2130f496 100644
--- a/extensions/renderer/resources/guest_view/web_view/web_view.js
+++ b/extensions/renderer/resources/guest_view/web_view/web_view.js
@@ -14,11 +14,17 @@ var WebViewConstants = require('webViewConstants').WebViewConstants;
var WebViewEvents = require('webViewEvents').WebViewEvents;
var WebViewInternal = require('webViewInternal').WebViewInternal;
+var IdGenerator = requireNative('id_generator');
+var GuestViewInternalNatives = requireNative('guest_view_internal');
+
+var LOG = function(msg) { window.console.log(msg); };
+
// Represents the internal state of <webview>.
function WebViewImpl(webviewElement) {
GuestViewContainer.call(this, webviewElement, 'webview');
this.cachedZoom = 1;
this.setupElementProperties();
+ this.isSitePerProcess = GuestViewInternalNatives.IsSitePerProcess();
new WebViewEvents(this, this.viewInstanceId);
}
@@ -92,7 +98,11 @@ WebViewImpl.prototype.setupElementProperties = function() {
// dynamic getter value.
Object.defineProperty(this.element, 'contentWindow', {
get: function() {
- return this.guest.getContentWindow();
+ if (this.isSitePerProcess) {
+ return this.getBrowserPluginElement().contentWindow;
+ } else {
+ return this.guest.getContentWindow();
+ }
}.bind(this),
// No setter.
enumerable: true
@@ -189,6 +199,12 @@ WebViewImpl.prototype.attachWindow = function(opt_guestInstanceId) {
this.guest = new GuestView('webview', opt_guestInstanceId);
}
+ if (this.isSitePerProcess) {
+ var generatedID = IdGenerator.GetNextId();
+ this.onInternalInstanceID(generatedID);
+ return true;
+ }
+
return GuestViewContainer.prototype.attachWindow.call(this);
};

Powered by Google App Engine
This is Rietveld 408576698