OLD | NEW |
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 Polymer element wrapping cr-network-list including the | 6 * @fileoverview Polymer element wrapping cr-network-list including the |
7 * networkingPrivate calls to populate it. | 7 * networkingPrivate calls to populate it. |
8 */ | 8 */ |
9 | 9 |
10 Polymer({ | 10 Polymer({ |
11 is: 'cr-network-select', | 11 is: 'cr-network-select', |
12 | 12 |
13 behaviors: [I18nBehavior], | 13 behaviors: [I18nBehavior], |
14 | 14 |
15 properties: { | 15 properties: { |
16 /** | 16 /** |
17 * Network state for the active network. | |
18 * @type {?CrOnc.NetworkStateProperties} | |
19 */ | |
20 activeNetworkState: Object, | |
21 | |
22 /** | |
23 * If true, the element includes an 'expand' button that toggles the | |
24 * expanded state of the network list. | |
25 */ | |
26 expandable: { | |
27 type: Boolean, | |
28 value: false, | |
29 }, | |
30 | |
31 /** | |
32 * The maximum height in pixels for the list. | |
33 */ | |
34 maxHeight: { | |
35 type: Number, | |
36 value: 1000, | |
37 }, | |
38 | |
39 /** | |
40 * If true, expand the network list. | |
41 */ | |
42 networkListOpened: { | |
43 type: Boolean, | |
44 value: true, | |
45 observer: 'networkListOpenedChanged_', | |
46 }, | |
47 | |
48 /** | |
49 * If true, show the active network state. | |
50 */ | |
51 showActive: { | |
52 type: Boolean, | |
53 value: false, | |
54 reflectToAttribute: true, | |
55 }, | |
56 | |
57 /** | |
58 * Show all buttons in list items. | 17 * Show all buttons in list items. |
59 */ | 18 */ |
60 showButtons: { | 19 showButtons: { |
61 type: Boolean, | 20 type: Boolean, |
62 value: false, | 21 value: false, |
63 reflectToAttribute: true, | 22 reflectToAttribute: true, |
64 }, | 23 }, |
65 | 24 |
66 /** | 25 /** |
67 * List of all network state data for all visible networks. | |
68 * @type {!Array<!CrOnc.NetworkStateProperties>} | |
69 */ | |
70 networkStateList: { | |
71 type: Array, | |
72 value: function() { | |
73 return []; | |
74 } | |
75 }, | |
76 | |
77 /** | |
78 * The list of custom items to display after the list of networks. | 26 * The list of custom items to display after the list of networks. |
79 * See CrNetworkList for details. | 27 * See CrNetworkList for details. |
80 * @type {!Array<CrNetworkList.CustomItemState>} | 28 * @type {!Array<CrNetworkList.CustomItemState>} |
81 */ | 29 */ |
82 customItems: { | 30 customItems: { |
83 type: Array, | 31 type: Array, |
84 value: function() { | 32 value: function() { |
85 return []; | 33 return []; |
86 }, | 34 }, |
87 }, | 35 }, |
88 | 36 |
89 /** | 37 /** |
90 * Whether to handle "item-selected" for network items. | 38 * Whether to handle "item-selected" for network items. |
91 * If this property is false, "network-item-selected" event is fired | 39 * If this property is false, "network-item-selected" event is fired |
92 * carrying CrOnc.NetworkStateProperties as event detail. | 40 * carrying CrOnc.NetworkStateProperties as event detail. |
93 * | |
94 * @type {Function} | 41 * @type {Function} |
95 */ | 42 */ |
96 handleNetworkItemSelected: { | 43 handleNetworkItemSelected: { |
97 type: Boolean, | 44 type: Boolean, |
98 value: false, | 45 value: false, |
99 reflectToAttribute: true, | 46 reflectToAttribute: true, |
100 }, | 47 }, |
| 48 |
| 49 /** |
| 50 * List of all network state data for all visible networks. |
| 51 * @private {!Array<!CrOnc.NetworkStateProperties>} |
| 52 */ |
| 53 networkStateList_: { |
| 54 type: Array, |
| 55 value: function() { |
| 56 return []; |
| 57 } |
| 58 }, |
| 59 |
101 }, | 60 }, |
102 | 61 |
103 /** | 62 /** |
104 * Listener function for chrome.networkingPrivate.onNetworkListChanged event. | 63 * Listener function for chrome.networkingPrivate.onNetworkListChanged event. |
105 * @type {function(!Array<string>)} | 64 * @type {function(!Array<string>)} |
106 * @private | 65 * @private |
107 */ | 66 */ |
108 networkListChangedListener_: function() {}, | 67 networkListChangedListener_: function() {}, |
109 | 68 |
110 /** | 69 /** |
111 * Listener function for chrome.networkingPrivate.onDeviceStateListChanged | 70 * Listener function for chrome.networkingPrivate.onDeviceStateListChanged |
112 * event. | 71 * event. |
113 * @type {function(!Array<string>)} | 72 * @type {function(!Array<string>)} |
114 * @private | 73 * @private |
115 */ | 74 */ |
116 deviceStateListChangedListener_: function() {}, | 75 deviceStateListChangedListener_: function() {}, |
117 | 76 |
118 /** @override */ | 77 /** @override */ |
119 attached: function() { | 78 attached: function() { |
120 this.networkListChangedListener_ = this.refreshNetworks_.bind(this); | 79 this.networkListChangedListener_ = this.refreshNetworks.bind(this); |
121 chrome.networkingPrivate.onNetworkListChanged.addListener( | 80 chrome.networkingPrivate.onNetworkListChanged.addListener( |
122 this.networkListChangedListener_); | 81 this.networkListChangedListener_); |
123 | 82 |
124 this.deviceStateListChangedListener_ = this.refreshNetworks_.bind(this); | 83 this.deviceStateListChangedListener_ = this.refreshNetworks.bind(this); |
125 chrome.networkingPrivate.onDeviceStateListChanged.addListener( | 84 chrome.networkingPrivate.onDeviceStateListChanged.addListener( |
126 this.deviceStateListChangedListener_); | 85 this.deviceStateListChangedListener_); |
127 | 86 |
128 this.refreshNetworks_(); | 87 this.refreshNetworks(); |
129 chrome.networkingPrivate.requestNetworkScan(); | 88 chrome.networkingPrivate.requestNetworkScan(); |
130 }, | 89 }, |
131 | 90 |
132 /** @override */ | 91 /** @override */ |
133 detached: function() { | 92 detached: function() { |
134 chrome.networkingPrivate.onNetworkListChanged.removeListener( | 93 chrome.networkingPrivate.onNetworkListChanged.removeListener( |
135 this.networkListChangedListener_); | 94 this.networkListChangedListener_); |
136 chrome.networkingPrivate.onDeviceStateListChanged.removeListener( | 95 chrome.networkingPrivate.onDeviceStateListChanged.removeListener( |
137 this.deviceStateListChangedListener_); | 96 this.deviceStateListChangedListener_); |
138 }, | 97 }, |
139 | 98 |
140 /** | 99 /** |
141 * Polymer changed function. | 100 * Request the list of visible networks. May be called externally to force a |
| 101 * refresh and list update (e.g. when the element is shown). |
142 * @private | 102 * @private |
143 */ | 103 */ |
144 networkListOpenedChanged_: function() { | 104 refreshNetworks: function() { |
145 if (this.networkListOpened) | |
146 chrome.networkingPrivate.requestNetworkScan(); | |
147 }, | |
148 | |
149 /** | |
150 * Request the list of visible networks. | |
151 * @private | |
152 */ | |
153 refreshNetworks_: function() { | |
154 var filter = { | 105 var filter = { |
155 networkType: chrome.networkingPrivate.NetworkType.ALL, | 106 networkType: chrome.networkingPrivate.NetworkType.ALL, |
156 visible: true, | 107 visible: true, |
157 configured: false | 108 configured: false |
158 }; | 109 }; |
159 chrome.networkingPrivate.getNetworks( | 110 chrome.networkingPrivate.getNetworks( |
160 filter, this.getNetworksCallback_.bind(this)); | 111 filter, this.getNetworksCallback_.bind(this)); |
161 }, | 112 }, |
162 | 113 |
163 /** | 114 /** |
164 * @param {!Array<!CrOnc.NetworkStateProperties>} states | 115 * @param {!Array<!CrOnc.NetworkStateProperties>} states |
165 * @private | 116 * @private |
166 */ | 117 */ |
167 getNetworksCallback_: function(states) { | 118 getNetworksCallback_: function(states) { |
168 this.activeNetworkState = states[0] || undefined; | 119 this.networkStateList_ = states; |
169 this.networkStateList = states; | |
170 }, | 120 }, |
171 | 121 |
172 /** | 122 /** |
173 * Event triggered when a cr-network-list-item is selected. | 123 * Event triggered when a cr-network-list-item is selected. |
174 * @param {!{detail: !CrOnc.NetworkStateProperties}} event | 124 * @param {!{detail: !CrOnc.NetworkStateProperties}} event |
175 * @private | 125 * @private |
176 */ | 126 */ |
177 onNetworkListItemSelected_: function(event) { | 127 onNetworkListItemSelected_: function(event) { |
178 var state = event.detail; | 128 var state = event.detail; |
179 | 129 |
180 if (!this.handleNetworkItemSelected) { | 130 if (!this.handleNetworkItemSelected) { |
181 this.fire('network-item-selected', state); | 131 this.fire('network-item-selected', state); |
182 return; | 132 return; |
183 } | 133 } |
184 | 134 |
185 if (state.ConnectionState != CrOnc.ConnectionState.NOT_CONNECTED) | 135 if (state.ConnectionState != CrOnc.ConnectionState.NOT_CONNECTED) |
186 return; | 136 return; |
187 | 137 |
188 chrome.networkingPrivate.startConnect(state.GUID, function() { | 138 chrome.networkingPrivate.startConnect(state.GUID, function() { |
189 var lastError = chrome.runtime.lastError; | 139 var lastError = chrome.runtime.lastError; |
190 if (lastError && lastError != 'connecting') | 140 if (lastError && lastError != 'connecting') |
191 console.error('networkingPrivate.startConnect error: ' + lastError); | 141 console.error('networkingPrivate.startConnect error: ' + lastError); |
192 }); | 142 }); |
193 }, | 143 }, |
194 | |
195 getExpandA11yText_: function() { | |
196 return this.i18n('networkExpandA11yLabel'); | |
197 }, | |
198 }); | 144 }); |
OLD | NEW |