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 * @unrestricted | 5 * @unrestricted |
6 */ | 6 */ |
7 NetworkConditions.NetworkConditionsSelector = class { | 7 MobileThrottling.NetworkConditionsSelector = class { |
8 /** | 8 /** |
9 * @param {function(!Array<!NetworkConditions.NetworkConditionsGroup>):!Array<
?SDK.NetworkManager.Conditions>} populateCallback | 9 * @param {function(!Array<!MobileThrottling.NetworkConditionsGroup>):!Array<?
SDK.NetworkManager.Conditions>} populateCallback |
10 * @param {function(number)} selectCallback | 10 * @param {function(number)} selectCallback |
11 */ | 11 */ |
12 constructor(populateCallback, selectCallback) { | 12 constructor(populateCallback, selectCallback) { |
13 this._populateCallback = populateCallback; | 13 this._populateCallback = populateCallback; |
14 this._selectCallback = selectCallback; | 14 this._selectCallback = selectCallback; |
15 this._customSetting = Common.moduleSetting('customNetworkConditions'); | 15 this._customSetting = Common.moduleSetting('customNetworkConditions'); |
16 this._customSetting.addChangeListener(this._populateOptions, this); | 16 this._customSetting.addChangeListener(this._populateOptions, this); |
17 this._manager = SDK.multitargetNetworkManager; | 17 this._manager = SDK.multitargetNetworkManager; |
18 this._manager.addEventListener( | 18 this._manager.addEventListener( |
19 SDK.MultitargetNetworkManager.Events.ConditionsChanged, this._conditions
Changed, this); | 19 SDK.MultitargetNetworkManager.Events.ConditionsChanged, this._conditions
Changed, this); |
(...skipping 15 matching lines...) Expand all Loading... |
35 if (throughputInKbps < 1024 * 10) | 35 if (throughputInKbps < 1024 * 10) |
36 return Common.UIString('%.1f%sMb/s', throughputInKbps / 1024, delimiter); | 36 return Common.UIString('%.1f%sMb/s', throughputInKbps / 1024, delimiter); |
37 return Common.UIString('%d%sMb/s', (throughputInKbps / 1024) | 0, delimiter)
; | 37 return Common.UIString('%d%sMb/s', (throughputInKbps / 1024) | 0, delimiter)
; |
38 } | 38 } |
39 | 39 |
40 /** | 40 /** |
41 * @param {!HTMLSelectElement} selectElement | 41 * @param {!HTMLSelectElement} selectElement |
42 */ | 42 */ |
43 static decorateSelect(selectElement) { | 43 static decorateSelect(selectElement) { |
44 var options = []; | 44 var options = []; |
45 var selector = new NetworkConditions.NetworkConditionsSelector(populate, sel
ect); | 45 var selector = new MobileThrottling.NetworkConditionsSelector(populate, sele
ct); |
46 selectElement.addEventListener('change', optionSelected, false); | 46 selectElement.addEventListener('change', optionSelected, false); |
47 | 47 |
48 /** | 48 /** |
49 * @param {!Array.<!NetworkConditions.NetworkConditionsGroup>} groups | 49 * @param {!Array.<!MobileThrottling.NetworkConditionsGroup>} groups |
50 * @return {!Array<?SDK.NetworkManager.Conditions>} | 50 * @return {!Array<?SDK.NetworkManager.Conditions>} |
51 */ | 51 */ |
52 function populate(groups) { | 52 function populate(groups) { |
53 selectElement.removeChildren(); | 53 selectElement.removeChildren(); |
54 options = []; | 54 options = []; |
55 for (var i = 0; i < groups.length; ++i) { | 55 for (var i = 0; i < groups.length; ++i) { |
56 var group = groups[i]; | 56 var group = groups[i]; |
57 var groupElement = selectElement.createChild('optgroup'); | 57 var groupElement = selectElement.createChild('optgroup'); |
58 groupElement.label = group.title; | 58 groupElement.label = group.title; |
59 for (var conditions of group.items) { | 59 for (var conditions of group.items) { |
(...skipping 30 matching lines...) Expand all Loading... |
90 * @return {!UI.ToolbarMenuButton} | 90 * @return {!UI.ToolbarMenuButton} |
91 */ | 91 */ |
92 static createToolbarMenuButton() { | 92 static createToolbarMenuButton() { |
93 var button = new UI.ToolbarMenuButton(appendItems); | 93 var button = new UI.ToolbarMenuButton(appendItems); |
94 button.setGlyph(''); | 94 button.setGlyph(''); |
95 button.turnIntoSelect(); | 95 button.turnIntoSelect(); |
96 | 96 |
97 /** @type {!Array<?SDK.NetworkManager.Conditions>} */ | 97 /** @type {!Array<?SDK.NetworkManager.Conditions>} */ |
98 var options = []; | 98 var options = []; |
99 var selectedIndex = -1; | 99 var selectedIndex = -1; |
100 var selector = new NetworkConditions.NetworkConditionsSelector(populate, sel
ect); | 100 var selector = new MobileThrottling.NetworkConditionsSelector(populate, sele
ct); |
101 return button; | 101 return button; |
102 | 102 |
103 /** | 103 /** |
104 * @param {!UI.ContextMenu} contextMenu | 104 * @param {!UI.ContextMenu} contextMenu |
105 */ | 105 */ |
106 function appendItems(contextMenu) { | 106 function appendItems(contextMenu) { |
107 for (var index = 0; index < options.length; ++index) { | 107 for (var index = 0; index < options.length; ++index) { |
108 var conditions = options[index]; | 108 var conditions = options[index]; |
109 if (!conditions) { | 109 if (!conditions) { |
110 contextMenu.appendSeparator(); | 110 contextMenu.appendSeparator(); |
111 } else { | 111 } else { |
112 contextMenu.appendCheckboxItem( | 112 contextMenu.appendCheckboxItem( |
113 Common.UIString(conditions.title), selector.optionSelected.bind(se
lector, conditions), | 113 Common.UIString(conditions.title), selector.optionSelected.bind(se
lector, conditions), |
114 selectedIndex === index); | 114 selectedIndex === index); |
115 } | 115 } |
116 } | 116 } |
117 contextMenu.appendItem(Common.UIString('Edit\u2026'), selector.revealAndUp
date.bind(selector)); | 117 contextMenu.appendItem(Common.UIString('Edit\u2026'), selector.revealAndUp
date.bind(selector)); |
118 } | 118 } |
119 | 119 |
120 /** | 120 /** |
121 * @param {!Array.<!NetworkConditions.NetworkConditionsGroup>} groups | 121 * @param {!Array.<!MobileThrottling.NetworkConditionsGroup>} groups |
122 * @return {!Array<?SDK.NetworkManager.Conditions>} | 122 * @return {!Array<?SDK.NetworkManager.Conditions>} |
123 */ | 123 */ |
124 function populate(groups) { | 124 function populate(groups) { |
125 options = []; | 125 options = []; |
126 for (var group of groups) { | 126 for (var group of groups) { |
127 for (var conditions of group.items) | 127 for (var conditions of group.items) |
128 options.push(conditions); | 128 options.push(conditions); |
129 options.push(null); | 129 options.push(null); |
130 } | 130 } |
131 return options; | 131 return options; |
(...skipping 13 matching lines...) Expand all Loading... |
145 */ | 145 */ |
146 static createOfflineToolbarCheckbox() { | 146 static createOfflineToolbarCheckbox() { |
147 var checkbox = new UI.ToolbarCheckbox( | 147 var checkbox = new UI.ToolbarCheckbox( |
148 Common.UIString('Offline'), Common.UIString('Force disconnected from net
work'), forceOffline); | 148 Common.UIString('Offline'), Common.UIString('Force disconnected from net
work'), forceOffline); |
149 SDK.multitargetNetworkManager.addEventListener( | 149 SDK.multitargetNetworkManager.addEventListener( |
150 SDK.MultitargetNetworkManager.Events.ConditionsChanged, networkCondition
sChanged); | 150 SDK.MultitargetNetworkManager.Events.ConditionsChanged, networkCondition
sChanged); |
151 checkbox.setChecked(SDK.multitargetNetworkManager.networkConditions() === SD
K.NetworkManager.OfflineConditions); | 151 checkbox.setChecked(SDK.multitargetNetworkManager.networkConditions() === SD
K.NetworkManager.OfflineConditions); |
152 | 152 |
153 function forceOffline() { | 153 function forceOffline() { |
154 if (checkbox.checked()) { | 154 if (checkbox.checked()) { |
155 NetworkConditions.NetworkConditionsSelector._lastNetworkConditions = | 155 MobileThrottling.NetworkConditionsSelector._lastNetworkConditions = |
156 SDK.multitargetNetworkManager.networkConditions(); | 156 SDK.multitargetNetworkManager.networkConditions(); |
157 SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.Of
flineConditions); | 157 SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.Of
flineConditions); |
158 } else { | 158 } else { |
159 SDK.multitargetNetworkManager.setNetworkConditions( | 159 SDK.multitargetNetworkManager.setNetworkConditions( |
160 NetworkConditions.NetworkConditionsSelector._lastNetworkConditions); | 160 MobileThrottling.NetworkConditionsSelector._lastNetworkConditions); |
161 } | 161 } |
162 } | 162 } |
163 | 163 |
164 function networkConditionsChanged() { | 164 function networkConditionsChanged() { |
165 var conditions = SDK.multitargetNetworkManager.networkConditions(); | 165 var conditions = SDK.multitargetNetworkManager.networkConditions(); |
166 checkbox.setChecked(conditions === SDK.NetworkManager.OfflineConditions); | 166 checkbox.setChecked(conditions === SDK.NetworkManager.OfflineConditions); |
167 } | 167 } |
168 return checkbox; | 168 return checkbox; |
169 } | 169 } |
170 | 170 |
171 _populateOptions() { | 171 _populateOptions() { |
172 var customGroup = {title: Common.UIString('Custom'), items: this._customSett
ing.get()}; | 172 var customGroup = {title: Common.UIString('Custom'), items: this._customSett
ing.get()}; |
173 var presetsGroup = {title: Common.UIString('Presets'), items: NetworkConditi
ons.NetworkConditionsSelector.presets}; | 173 var presetsGroup = {title: Common.UIString('Presets'), items: MobileThrottli
ng.NetworkConditionsSelector.presets}; |
174 var disabledGroup = {title: Common.UIString('Disabled'), items: [SDK.Network
Manager.NoThrottlingConditions]}; | 174 var disabledGroup = {title: Common.UIString('Disabled'), items: [SDK.Network
Manager.NoThrottlingConditions]}; |
175 this._options = this._populateCallback([disabledGroup, presetsGroup, customG
roup]); | 175 this._options = this._populateCallback([disabledGroup, presetsGroup, customG
roup]); |
176 if (!this._conditionsChanged()) { | 176 if (!this._conditionsChanged()) { |
177 for (var i = this._options.length - 1; i >= 0; i--) { | 177 for (var i = this._options.length - 1; i >= 0; i--) { |
178 if (this._options[i]) { | 178 if (this._options[i]) { |
179 this.optionSelected(/** @type {!SDK.NetworkManager.Conditions} */ (thi
s._options[i])); | 179 this.optionSelected(/** @type {!SDK.NetworkManager.Conditions} */ (thi
s._options[i])); |
180 break; | 180 break; |
181 } | 181 } |
182 } | 182 } |
183 } | 183 } |
(...skipping 22 matching lines...) Expand all Loading... |
206 option.latency === value.latency && option.title === value.title) { | 206 option.latency === value.latency && option.title === value.title) { |
207 this._selectCallback(index); | 207 this._selectCallback(index); |
208 return true; | 208 return true; |
209 } | 209 } |
210 } | 210 } |
211 return false; | 211 return false; |
212 } | 212 } |
213 }; | 213 }; |
214 | 214 |
215 /** @typedef {!{title: string, items: !Array<!SDK.NetworkManager.Conditions>}} *
/ | 215 /** @typedef {!{title: string, items: !Array<!SDK.NetworkManager.Conditions>}} *
/ |
216 NetworkConditions.NetworkConditionsGroup; | 216 MobileThrottling.NetworkConditionsGroup; |
217 | 217 |
218 | 218 |
219 /** @type {!Array.<!SDK.NetworkManager.Conditions>} */ | 219 /** @type {!Array.<!SDK.NetworkManager.Conditions>} */ |
220 NetworkConditions.NetworkConditionsSelector.presets = [ | 220 MobileThrottling.NetworkConditionsSelector.presets = [ |
221 SDK.NetworkManager.OfflineConditions, | 221 SDK.NetworkManager.OfflineConditions, |
222 {title: 'Slow 3G', download: 500 * 1024 / 8 * .8, upload: 500 * 1024 / 8 * .8,
latency: 400 * 5}, | 222 {title: 'Slow 3G', download: 500 * 1024 / 8 * .8, upload: 500 * 1024 / 8 * .8,
latency: 400 * 5}, |
223 {title: 'Fast 3G', download: 1.6 * 1024 * 1024 / 8 * .9, upload: 750 * 1024 /
8 * .9, latency: 150 * 3.75} | 223 {title: 'Fast 3G', download: 1.6 * 1024 * 1024 / 8 * .9, upload: 750 * 1024 /
8 * .9, latency: 150 * 3.75} |
224 ]; | 224 ]; |
225 | 225 |
226 /** | 226 /** |
227 * @implements {UI.ActionDelegate} | 227 * @implements {UI.ActionDelegate} |
228 * @unrestricted | 228 * @unrestricted |
229 */ | 229 */ |
230 NetworkConditions.NetworkConditionsActionDelegate = class { | 230 MobileThrottling.NetworkConditionsActionDelegate = class { |
231 /** | 231 /** |
232 * @override | 232 * @override |
233 * @param {!UI.Context} context | 233 * @param {!UI.Context} context |
234 * @param {string} actionId | 234 * @param {string} actionId |
235 * @return {boolean} | 235 * @return {boolean} |
236 */ | 236 */ |
237 handleAction(context, actionId) { | 237 handleAction(context, actionId) { |
238 if (actionId === 'network-conditions.network-online') { | 238 if (actionId === 'network-conditions.network-online') { |
239 SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.NoTh
rottlingConditions); | 239 SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.NoTh
rottlingConditions); |
240 return true; | 240 return true; |
241 } | 241 } |
242 if (actionId === 'network-conditions.network-offline') { | 242 if (actionId === 'network-conditions.network-offline') { |
243 SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.Offl
ineConditions); | 243 SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.Offl
ineConditions); |
244 return true; | 244 return true; |
245 } | 245 } |
246 return false; | 246 return false; |
247 } | 247 } |
248 }; | 248 }; |
OLD | NEW |