Add the ability to code generated prepopulated static nested structs
[chromium-blink-merge.git] / extensions / renderer / resources / guest_view / extension_view / extension_view_attributes.js
blob550fc0f5f3f90056653661366a7a432a0a86ff2c
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 <extensionview> tag.
7 var GuestViewAttributes = require('guestViewAttributes').GuestViewAttributes;
8 var ExtensionViewConstants =
9     require('extensionViewConstants').ExtensionViewConstants;
10 var ExtensionViewImpl = require('extensionView').ExtensionViewImpl;
11 var ExtensionViewInternal =
12     require('extensionViewInternal').ExtensionViewInternal;
14 // -----------------------------------------------------------------------------
15 // ExtensionAttribute object.
17 // Attribute that handles the extension associated with the extensionview.
18 function ExtensionAttribute(view) {
19   GuestViewAttributes.ReadOnlyAttribute.call(
20       this, ExtensionViewConstants.ATTRIBUTE_EXTENSION, view);
23 ExtensionAttribute.prototype.__proto__ =
24     GuestViewAttributes.ReadOnlyAttribute.prototype;
26 // -----------------------------------------------------------------------------
27 // SrcAttribute object.
29 // Attribute that handles the location and navigation of the extensionview.
30 // This is read only because we only want to be able to navigate to a src
31 // through the load API call, which checks for URL validity and the extension
32 // ID of the new src.
33 function SrcAttribute(view) {
34   GuestViewAttributes.ReadOnlyAttribute.call(
35       this, ExtensionViewConstants.ATTRIBUTE_SRC, view);
38 SrcAttribute.prototype.__proto__ =
39     GuestViewAttributes.ReadOnlyAttribute.prototype;
41 SrcAttribute.prototype.handleMutation = function(oldValue, newValue) {
42   console.log('src is read only. Use .load(url) to navigate to a new ' +
43       'extension page.');
44   this.setValueIgnoreMutation(oldValue);
47 // -----------------------------------------------------------------------------
49 // Sets up all of the extensionview attributes.
50 ExtensionViewImpl.prototype.setupAttributes = function() {
51   this.attributes[ExtensionViewConstants.ATTRIBUTE_EXTENSION] =
52       new ExtensionAttribute(this);
53   this.attributes[ExtensionViewConstants.ATTRIBUTE_SRC] =
54       new SrcAttribute(this);