Index: extensions/renderer/resources/guest_view/extension_view_attributes.js |
diff --git a/extensions/renderer/resources/guest_view/extension_view_attributes.js b/extensions/renderer/resources/guest_view/extension_view_attributes.js |
index e71d2eac3e0821bb360703463beec652cd97ea61..73632b87b06041b4b1ff143a368f8a2eef9aa0e4 100644 |
--- a/extensions/renderer/resources/guest_view/extension_view_attributes.js |
+++ b/extensions/renderer/resources/guest_view/extension_view_attributes.js |
@@ -57,9 +57,8 @@ ExtensionViewAttribute.prototype.defineProperty = function() { |
// Called when the attribute's value changes. |
ExtensionViewAttribute.prototype.maybeHandleMutation = |
function(oldValue, newValue) { |
- if (this.ignoreMutation) { |
+ if (this.ignoreMutation) |
return; |
- } |
this.handleMutation(oldValue, newValue); |
} |
@@ -68,12 +67,27 @@ ExtensionViewAttribute.prototype.maybeHandleMutation = |
ExtensionViewAttribute.prototype.handleMutation = |
function(oldValue, newValue) {}; |
+ExtensionViewAttribute.prototype.reset = function() { |
+ this.setValueIgnoreMutation(); |
+} |
+ |
+// Attribute that handles extension binded to the extensionview. |
+function ExtensionAttribute(extensionViewImpl) { |
+ ExtensionViewAttribute.call(this, ExtensionViewConstants.ATTRIBUTE_EXTENSION, |
+ extensionViewImpl); |
+} |
+ |
+ExtensionAttribute.prototype.__proto__ = ExtensionViewAttribute.prototype; |
+ |
+ExtensionAttribute.prototype.handleMutation = function(oldValue, newValue) { |
+ this.setValueIgnoreMutation(oldValue); |
+} |
+ |
// Attribute that handles the location and navigation of the extensionview. |
function SrcAttribute(extensionViewImpl) { |
ExtensionViewAttribute.call(this, ExtensionViewConstants.ATTRIBUTE_SRC, |
extensionViewImpl); |
this.setupMutationObserver(); |
- this.beforeFirstNavigation = true; |
} |
SrcAttribute.prototype.__proto__ = ExtensionViewAttribute.prototype; |
@@ -115,27 +129,20 @@ SrcAttribute.prototype.parse = function() { |
if (!this.extensionViewImpl.elementAttached || !this.getValue()) |
return; |
- if (!this.extensionViewImpl.guest.getId()) { |
- if (this.beforeFirstNavigation) { |
- this.beforeFirstNavigation = false; |
- this.extensionViewImpl.createGuest(); |
- } |
+ if (!this.extensionViewImpl.guest.getId()) |
return; |
- } |
ExtensionViewInternal.navigate(this.extensionViewImpl.guest.getId(), |
this.getValue()); |
}; |
-SrcAttribute.prototype.reset = function() { |
- this.beforeFirstNavigation = true; |
-}; |
- |
// ----------------------------------------------------------------------------- |
// Sets up all of the extensionview attributes. |
ExtensionViewImpl.prototype.setupExtensionViewAttributes = function() { |
this.attributes = {}; |
+ this.attributes[ExtensionViewConstants.ATTRIBUTE_EXTENSION] = |
+ new ExtensionAttribute(this); |
this.attributes[ExtensionViewConstants.ATTRIBUTE_SRC] = |
new SrcAttribute(this); |
}; |