1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This module implements the attributes of the <extensionoptions> tag.
7 var GuestViewAttributes
= require('guestViewAttributes').GuestViewAttributes
;
8 var ExtensionOptionsConstants
=
9 require('extensionOptionsConstants').ExtensionOptionsConstants
;
10 var ExtensionOptionsImpl
= require('extensionOptions').ExtensionOptionsImpl
;
12 // -----------------------------------------------------------------------------
13 // ExtensionAttribute object.
15 // Attribute that handles extension binded to the extensionoptions.
16 function ExtensionAttribute(view
) {
17 GuestViewAttributes
.Attribute
.call(
18 this, ExtensionOptionsConstants
.ATTRIBUTE_EXTENSION
, view
);
21 ExtensionAttribute
.prototype.__proto__
=
22 GuestViewAttributes
.Attribute
.prototype;
24 ExtensionAttribute
.prototype.handleMutation = function(oldValue
, newValue
) {
25 // Once this attribute has been set, it cannot be unset.
26 if (!newValue
&& oldValue
) {
27 this.setValueIgnoreMutation(oldValue
);
31 if (!newValue
|| !this.elementAttached
)
34 this.view
.createGuest();
37 // -----------------------------------------------------------------------------
39 // Sets up all of the extensionoptions attributes.
40 ExtensionOptionsImpl
.prototype.setupAttributes = function() {
41 this.attributes
[ExtensionOptionsConstants
.ATTRIBUTE_EXTENSION
] =
42 new ExtensionAttribute(this);