12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)cr.define('network.config', function() { 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var NetworkConfig = cr.ui.define('div'); 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NetworkConfig.prototype = { 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) __proto__: HTMLDivElement.prototype, 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) decorate: function() { 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var params = parseQueryParams(window.location); 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.networkId_ = params.network; 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.activeArea_ = null; 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.userArea_ = null; 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.managedArea_ = null; 16d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) this.stateArea_ = null; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.updateDom_(); 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.fetchProperties_(); 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }, 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fetchProperties_: function() { 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chrome.networkingPrivate.getProperties( 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.networkId_, 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.updateActiveSettings_.bind(this)); 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chrome.networkingPrivate.getManagedProperties( 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.networkId_, 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.updateManagedSettings_.bind(this)); 28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) chrome.networkingPrivate.getState( 29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) this.networkId_, 30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) this.updateState_.bind(this)); 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) stringifyJSON_: function(properties) { 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return JSON.stringify(properties, undefined, 2); 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) updateActiveSettings_: function(properties) { 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.activeArea_.value = this.stringifyJSON_(properties); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) updateManagedSettings_: function(properties) { 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var error = chrome.runtime.lastError; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (error) { 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.managedArea_.value = error.message; 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.userArea_.value = 'undefined'; 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.managedArea_.value = this.stringifyJSON_(properties); 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.userArea_.value = this.stringifyJSON_( 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.extractUserSettings_(properties)); 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 53d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) updateState_: function(properties) { 54d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) this.stateArea_.value = this.stringifyJSON_(properties); 55d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) }, 56d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extractUserSettings_: function(properties) { 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if ('UserSetting' in properties) 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return properties['UserSetting']; 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if ('SharedSetting' in properties) 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return properties['SharedSetting']; 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var result = {}; 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (var fieldName in properties) { 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var entry = properties[fieldName]; 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (typeof entry === 'object') { 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var nestedResult = this.extractUserSettings_(entry); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (nestedResult) 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) result[fieldName] = nestedResult; 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (Object.keys(result).length) 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return result; 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) else 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return undefined; 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) updateDom_: function() { 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var div = document.createElement('div'); 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.activeArea_ = function() { 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var label = document.createElement('h4'); 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) label.textContent = 'Active Settings (getProperties)'; 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) div.appendChild(label); 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var area = document.createElement('textarea'); 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) div.appendChild(area); 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return area; 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }(); 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.userArea_ = function() { 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var label = document.createElement('h4'); 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) label.textContent = 'User Settings'; 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) div.appendChild(label); 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var area = document.createElement('textarea'); 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) div.appendChild(area); 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return area; 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }(); 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.managedArea_ = function() { 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var label = document.createElement('h4'); 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) label.textContent = 'Managed Settings (getManagedProperties)'; 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) div.appendChild(label); 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var area = document.createElement('textarea'); 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) div.appendChild(area); 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return area; 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }(); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 109d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) this.stateArea_ = function() { 110d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) var label = document.createElement('h4'); 111d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) label.textContent = 'State (getState)'; 112d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) div.appendChild(label); 113d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) var area = document.createElement('textarea'); 114d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) div.appendChild(area); 115d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return area; 116d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) }(); 117d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.appendChild(div); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }, 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) get userSettings() { 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return JSON.parse(this.userArea_.value); 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }, 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) get networkId() { 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return this.networkId_; 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return { 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NetworkConfig: NetworkConfig 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}); 134