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

Side by Side Diff: chrome/browser/resources/options/chromeos/vpn_providers.js

Issue 1017443002: Allow users to add third-party VPNs from the settings page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@f_3_460428_update_details_dialog
Patch Set: Fixed closure errors. Addressed comments. Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview A singleton that keeps track of the VPN providers enabled in 6 * @fileoverview A singleton that keeps track of the VPN providers enabled in
7 * the primary user's profile. 7 * the primary user's profile.
8 */ 8 */
9 9
10 cr.define('options', function() { 10 cr.define('options', function() {
11 /** 11 /**
12 * @constructor 12 * @constructor
13 */ 13 */
14 function VPNProviders() { 14 function VPNProviders() {
15 } 15 }
16 16
17 cr.addSingletonGetter(VPNProviders); 17 cr.addSingletonGetter(VPNProviders);
18 18
19 VPNProviders.prototype = { 19 VPNProviders.prototype = {
20 /** 20 /**
21 * The VPN providers enabled in the primary user's profile. Each provider 21 * The VPN providers enabled in the primary user's profile. Each provider
22 * has a name. Third-party VPN providers additionally have an extension ID. 22 * has a name. Third-party VPN providers additionally have an extension ID.
23 * @type {!Array<{name: string, extensionID: ?string}>} 23 * @type {!Array<{name: string, extensionID: ?string}>}
24 * @private 24 * @private
25 */ 25 */
26 providers_: [], 26 providers_: [],
27 27
28 /** 28 /**
29 * Observers who will be called when the list of VPN providers changes.
30 * @type {!Array<!function()>}
31 */
32 observers_: [],
33
34 /**
35 * The VPN providers enabled in the primary user's profile.
36 * @type {!Array<{name: string, extensionID: ?string}>}
37 */
38 get providers() {
39 return this.providers_;
40 },
41 set providers(providers) {
42 this.providers_ = providers;
43 for (var i = 0; i < this.observers_.length; ++i)
44 this.observers_[i]();
45 },
46
47 /**
48 * Adds an observer to be called when the list of VPN providers changes.
49 * @param {!function()} observer The observer to add.
50 * @private
51 */
52 addObserver_: function(observer) {
53 this.observers_.push(observer);
54 },
55
56 /**
29 * Formats a network name for display purposes. If the network belongs to 57 * Formats a network name for display purposes. If the network belongs to
30 * a third-party VPN provider, the provider name is added to the network 58 * a third-party VPN provider, the provider name is added to the network
31 * name. 59 * name.
32 * @param {cr.onc.OncData} onc ONC data describing this network. 60 * @param {cr.onc.OncData} onc ONC data describing this network.
33 * @return {string} The resulting display name. 61 * @return {string} The resulting display name.
34 * @private 62 * @private
35 */ 63 */
36 formatNetworkName_: function(onc) { 64 formatNetworkName_: function(onc) {
37 var networkName = onc.getTranslatedValue('Name'); 65 var networkName = onc.getTranslatedValue('Name');
38 if (onc.getActiveValue('VPN.Type') != 'ThirdPartyVPN') 66 if (onc.getActiveValue('VPN.Type') != 'ThirdPartyVPN')
39 return networkName; 67 return networkName;
40 var extensionID = onc.getActiveValue('VPN.ThirdPartyVPN.ExtensionID'); 68 var extensionID = onc.getActiveValue('VPN.ThirdPartyVPN.ExtensionID');
41 for (var i = 0; i < this.providers_.length; ++i) { 69 for (var i = 0; i < this.providers_.length; ++i) {
42 if (extensionID == this.providers_[i].extensionID) { 70 if (extensionID == this.providers_[i].extensionID) {
43 return loadTimeData.getStringF('vpnNameTemplate', 71 return loadTimeData.getStringF('vpnNameTemplate',
44 this.providers_[i].name, 72 this.providers_[i].name,
45 networkName); 73 networkName);
46 } 74 }
47 } 75 }
48 return networkName; 76 return networkName;
49 }, 77 },
50 }; 78 };
51 79
52 /** 80 /**
81 * Adds an observer to be called when the list of VPN providers changes. Note
82 * that an observer may in turn call setProviders() but should be careful not
83 * to get stuck in an infinite loop as every change to the list of VPN
84 * providers will cause the observers to be called again.
85 * @param {!function()} observer The observer to add.
86 */
87 VPNProviders.addObserver = function(observer) {
88 VPNProviders.getInstance().addObserver_(observer);
89 };
90
91 /**
53 * Returns the list of VPN providers enabled in the primary user's profile. 92 * Returns the list of VPN providers enabled in the primary user's profile.
54 * @return {!Array<{name: string, extensionID: ?string}>} The list of VPN 93 * @return {!Array<{name: string, extensionID: ?string}>} The list of VPN
55 * providers enabled in the primary user's profile. 94 * providers enabled in the primary user's profile.
56 */ 95 */
57 VPNProviders.getProviders = function() { 96 VPNProviders.getProviders = function() {
58 return VPNProviders.getInstance().providers_; 97 return VPNProviders.getInstance().providers;
59 }; 98 };
60 99
61 /** 100 /**
62 * Replaces the list of VPN providers enabled in the primary user's profile. 101 * Replaces the list of VPN providers enabled in the primary user's profile.
63 * @param {!Array<{name: string, extensionID: ?string}>} providers The list 102 * @param {!Array<{name: string, extensionID: ?string}>} providers The list
64 * of VPN providers enabled in the primary user's profile. 103 * of VPN providers enabled in the primary user's profile.
65 */ 104 */
66 VPNProviders.setProviders = function(providers) { 105 VPNProviders.setProviders = function(providers) {
67 VPNProviders.getInstance().providers_ = providers; 106 VPNProviders.getInstance().providers = providers;
68 }; 107 };
69 108
70 /** 109 /**
71 * Formats a network name for display purposes. If the network belongs to a 110 * Formats a network name for display purposes. If the network belongs to a
72 * third-party VPN provider, the provider name is added to the network name. 111 * third-party VPN provider, the provider name is added to the network name.
73 * @param {cr.onc.OncData} onc ONC data describing this network. 112 * @param {cr.onc.OncData} onc ONC data describing this network.
74 * @return {string} The resulting display name. 113 * @return {string} The resulting display name.
75 */ 114 */
76 VPNProviders.formatNetworkName = function(onc) { 115 VPNProviders.formatNetworkName = function(onc) {
77 return VPNProviders.getInstance().formatNetworkName_(onc); 116 return VPNProviders.getInstance().formatNetworkName_(onc);
78 }; 117 };
79 118
80 // Export 119 // Export
81 return { 120 return {
82 VPNProviders: VPNProviders 121 VPNProviders: VPNProviders
83 }; 122 };
84 }); 123 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698