Merge lp:~ken-vandine/ubuntu-system-settings/rtm-1378812 into lp:ubuntu-system-settings/rtm-14.09
- rtm-1378812
- Merge into rtm-14.09
Proposed by
Ken VanDine
Status: | Merged |
---|---|
Approved by: | Ken VanDine |
Approved revision: | 940 |
Merged at revision: | 948 |
Proposed branch: | lp:~ken-vandine/ubuntu-system-settings/rtm-1378812 |
Merge into: | lp:ubuntu-system-settings/rtm-14.09 |
Diff against target: |
1909 lines (+582/-884) 15 files modified
plugins/cellular/Components/CMakeLists.txt (+5/-5) plugins/cellular/Components/CellularSingleSim.qml (+0/-117) plugins/cellular/Components/DataMultiSim.qml (+8/-119) plugins/cellular/Components/MultiSim.qml (+52/-10) plugins/cellular/Components/NoSim.qml (+5/-12) plugins/cellular/Components/RadioSingleSim.qml (+57/-0) plugins/cellular/Components/SimEditor.qml (+31/-14) plugins/cellular/Components/SingleSim.qml (+34/-4) plugins/cellular/PageChooseCarrier.qml (+3/-2) plugins/cellular/PageChooseCarriers.qml (+2/-2) plugins/cellular/PageComponent.qml (+2/-2) plugins/cellular/sims.js (+10/-0) tests/autopilot/ubuntu_system_settings/__init__.py (+164/-1) tests/autopilot/ubuntu_system_settings/tests/__init__.py (+7/-3) tests/autopilot/ubuntu_system_settings/tests/test_cellular.py (+202/-593) |
To merge this branch: | bzr merge lp:~ken-vandine/ubuntu-system-settings/rtm-1378812 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jonas G. Drange (community) | Approve | ||
Review via email: mp+242124@code.launchpad.net |
Commit message
[cellular] split "Cellular Data" and "Connection type" into two separate pieces in the UI for both single and multi SIM
Description of the change
[cellular] split "Cellular Data" and "Connection type" into two separate pieces in the UI for both single and multi SIM
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'plugins/cellular/Components/CMakeLists.txt' |
2 | --- plugins/cellular/Components/CMakeLists.txt 2014-08-29 14:32:28 +0000 |
3 | +++ plugins/cellular/Components/CMakeLists.txt 2014-11-18 20:15:26 +0000 |
4 | @@ -1,12 +1,12 @@ |
5 | set(QML_SOURCES |
6 | + DataMultiSim.qml |
7 | + DefaultSim.qml |
8 | + MultiSim.qml |
9 | NoSim.qml |
10 | - SingleSim.qml |
11 | - MultiSim.qml |
12 | - CellularSingleSim.qml |
13 | - CellularMultiSim.qml |
14 | - DefaultSim.qml |
15 | + RadioSingleSim.qml |
16 | Sim.qml |
17 | SimEditor.qml |
18 | + SingleSim.qml |
19 | ) |
20 | install(FILES ${QML_SOURCES} DESTINATION ${PLUGIN_QML_DIR}/cellular/Components) |
21 | |
22 | |
23 | === removed file 'plugins/cellular/Components/CellularSingleSim.qml' |
24 | --- plugins/cellular/Components/CellularSingleSim.qml 2014-11-12 16:17:17 +0000 |
25 | +++ plugins/cellular/Components/CellularSingleSim.qml 1970-01-01 00:00:00 +0000 |
26 | @@ -1,117 +0,0 @@ |
27 | -/* |
28 | - * Copyright (C) 2014 Canonical Ltd |
29 | - * |
30 | - * This program is free software: you can redistribute it and/or modify |
31 | - * it under the terms of the GNU General Public License version 3 as |
32 | - * published by the Free Software Foundation. |
33 | - * |
34 | - * This program is distributed in the hope that it will be useful, |
35 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
36 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
37 | - * GNU General Public License for more details. |
38 | - * |
39 | - * You should have received a copy of the GNU General Public License |
40 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
41 | - * |
42 | - * Authors: |
43 | - * Jonas G. Drange <jonas.drange@canonical.com> |
44 | - * |
45 | -*/ |
46 | -import QtQuick 2.0 |
47 | -import Ubuntu.Components 0.1 |
48 | -import Ubuntu.Components.ListItems 0.1 as ListItem |
49 | - |
50 | -Column { |
51 | - height: childrenRect.height |
52 | - |
53 | - property var selector: selector |
54 | - |
55 | - ListItem.ItemSelector { |
56 | - id: selector |
57 | - objectName: "technologyPreferenceSelector" |
58 | - text: i18n.tr("Cellular data:") |
59 | - expanded: true |
60 | - |
61 | - // an empty string is not a valid preference, which means |
62 | - // we disregard the interace and disable the selector |
63 | - enabled: sim.radioSettings.technologyPreference !== "" |
64 | - |
65 | - // model for this selector is modemTechnologies, with |
66 | - // 'off' prepended |
67 | - model: { |
68 | - var m = sim.radioSettings.modemTechnologies.slice(0); |
69 | - m.unshift("off"); |
70 | - return m; |
71 | - } |
72 | - |
73 | - delegate: OptionSelectorDelegate { |
74 | - text: { |
75 | - return { |
76 | - 'off': i18n.tr("Off"), |
77 | - 'gsm': i18n.tr("2G only (saves battery)"), |
78 | - 'umts': i18n.tr("2G/3G (faster)"), |
79 | - 'lte': i18n.tr("2G/3G/4G (faster)") |
80 | - }[modelData] |
81 | - } |
82 | - } |
83 | - selectedIndex: { |
84 | - if (sim.connMan.powered) { |
85 | - // will return -1 if empty, which will select nothing. |
86 | - // Makes sense, since the SIM is online, but the |
87 | - // radioSettings interface is not ready yet (sim locked?) |
88 | - return model.indexOf(sim.radioSettings.technologyPreference); |
89 | - } else { |
90 | - return 0; |
91 | - } |
92 | - } |
93 | - } |
94 | - |
95 | - ListItem.Standard { |
96 | - id: dataRoamingItem |
97 | - objectName: "dataRoamingSwitch" |
98 | - text: i18n.tr("Data roaming") |
99 | - enabled: sim.connMan.powered |
100 | - control: Switch { |
101 | - id: dataRoamingControl |
102 | - property bool serverChecked: sim.connMan.roamingAllowed |
103 | - onServerCheckedChanged: checked = serverChecked |
104 | - Component.onCompleted: checked = serverChecked |
105 | - onTriggered: sim.connMan.roamingAllowed = checked |
106 | - } |
107 | - } |
108 | - |
109 | - Connections { |
110 | - target: sim.connMan |
111 | - onPoweredChanged: { |
112 | - if (powered) { |
113 | - // restore the tech preference |
114 | - selector.selectedIndex = selector |
115 | - .model.indexOf(sim.radioSettings.technologyPreference) |
116 | - } else { |
117 | - selector.selectedIndex = 0; |
118 | - } |
119 | - } |
120 | - } |
121 | - |
122 | - // binds the SIM online state to the UI |
123 | - Binding { |
124 | - target: sim.connMan |
125 | - property: "powered" |
126 | - value: selector.selectedIndex !== 0 |
127 | - } |
128 | - |
129 | - // binds the tech preference to the UI |
130 | - Binding { |
131 | - target: sim.radioSettings |
132 | - property: "technologyPreference" |
133 | - value: { |
134 | - var i = selector.selectedIndex; |
135 | - if (i > 0) { |
136 | - return selector.model[i] |
137 | - } else { |
138 | - // if the modem is off, disregard the selector |
139 | - return sim.radioSettings.technologyPreference; |
140 | - } |
141 | - } |
142 | - } |
143 | -} |
144 | |
145 | === renamed file 'plugins/cellular/Components/CellularMultiSim.qml' => 'plugins/cellular/Components/DataMultiSim.qml' |
146 | --- plugins/cellular/Components/CellularMultiSim.qml 2014-11-12 16:17:17 +0000 |
147 | +++ plugins/cellular/Components/DataMultiSim.qml 2014-11-18 20:15:26 +0000 |
148 | @@ -22,8 +22,6 @@ |
149 | import Ubuntu.Components.ListItems 0.1 as ListItem |
150 | |
151 | Column { |
152 | - id: root |
153 | - property var selector: selector |
154 | |
155 | function getNameFromIndex (index) { |
156 | if (index === 0) { |
157 | @@ -33,49 +31,11 @@ |
158 | } |
159 | } |
160 | |
161 | - function getOnlineSim () { |
162 | - if (state === "sim1Online") { |
163 | - return sims[0]; |
164 | - } else if (state === "sim2Online") { |
165 | - return sims[1]; |
166 | - } else { |
167 | - return null; |
168 | - } |
169 | - } |
170 | - |
171 | height: childrenRect.height |
172 | |
173 | - states: [ |
174 | - State { |
175 | - name: "sim1Online" |
176 | - when: sims[0].connMan.powered && !sims[1].connMan.powered |
177 | - StateChangeScript { script: { |
178 | - selector.selectedIndex = |
179 | - selector.model.indexOf( |
180 | - sims[0].radioSettings.technologyPreference) |
181 | - }} |
182 | - }, |
183 | - State { |
184 | - name: "sim2Online" |
185 | - when: sims[1].connMan.powered && !sims[0].connMan.powered |
186 | - StateChangeScript { script: { |
187 | - selector.selectedIndex = |
188 | - selector.model.indexOf( |
189 | - sims[1].radioSettings.technologyPreference) |
190 | - }} |
191 | - }, |
192 | - State { |
193 | - name: "bothOnline" |
194 | - when: sims[0].connMan.powered && sims[1].connMan.powered |
195 | - StateChangeScript { script: { |
196 | - sims[1].connMan.powered = false; |
197 | - }} |
198 | - } |
199 | - ] |
200 | - |
201 | ListItem.ItemSelector { |
202 | id: use |
203 | - objectName: "use" |
204 | + objectName: "data" |
205 | text: i18n.tr("Cellular data:") |
206 | expanded: true |
207 | model: { |
208 | @@ -92,6 +52,7 @@ |
209 | } |
210 | selectedIndex: [true, sims[0].connMan.powered, sims[1].connMan.powered] |
211 | .lastIndexOf(true) |
212 | + |
213 | onDelegateClicked: { |
214 | // power all sims on or off |
215 | sims.forEach(function (sim) { |
216 | @@ -100,95 +61,23 @@ |
217 | } |
218 | } |
219 | |
220 | - Connections { |
221 | - target: sims[0].connMan |
222 | - onPoweredChanged: { |
223 | - if (powered) { |
224 | - use.selectedIndex = 1; |
225 | - } |
226 | - } |
227 | - } |
228 | - |
229 | - Connections { |
230 | - target: sims[1].connMan |
231 | - onPoweredChanged: { |
232 | - if (powered) { |
233 | - use.selectedIndex = 2; |
234 | - } |
235 | - } |
236 | - } |
237 | - |
238 | - ListItem.ItemSelector { |
239 | - id: selector |
240 | - objectName: "technologyPreferenceSelector" |
241 | - expanded: true |
242 | - model: { |
243 | - var sim = getOnlineSim(); |
244 | - if (sim) { |
245 | - return sim.radioSettings.modemTechnologies; |
246 | - } else { |
247 | - return []; |
248 | - } |
249 | - } |
250 | - delegate: OptionSelectorDelegate { |
251 | - text: { |
252 | - return { |
253 | - 'gsm': i18n.tr("2G only (saves battery)"), |
254 | - 'umts': i18n.tr("2G/3G (faster)"), |
255 | - 'lte': i18n.tr("2G/3G/4G (faster)") |
256 | - }[modelData] |
257 | - } |
258 | - } |
259 | - visible: use.selectedIndex !== 0 |
260 | - onDelegateClicked: { |
261 | - var sim = getOnlineSim(); |
262 | - if (sim) { |
263 | - sim.radioSettings.technologyPreference = model[index]; |
264 | - } |
265 | - } |
266 | - } |
267 | - |
268 | - Binding { |
269 | - target: selector |
270 | - property: "enabled" |
271 | - value: getOnlineSim() && |
272 | - (getOnlineSim().radioSettings.technologyPreference !== "") |
273 | - when: getOnlineSim() |
274 | - } |
275 | - |
276 | - Connections { |
277 | - target: sims[0].radioSettings |
278 | - onTechnologyPreferenceChanged: { |
279 | - if (sims[0].connMan.powered) { |
280 | - selector.selectedIndex = selector.model.indexOf(preference); |
281 | - } |
282 | - } |
283 | - } |
284 | - |
285 | - Connections { |
286 | - target: sims[1].radioSettings |
287 | - onTechnologyPreferenceChanged: { |
288 | - if (sims[1].connMan.powered) { |
289 | - selector.selectedIndex = selector.model.indexOf(preference); |
290 | - } |
291 | - } |
292 | - } |
293 | - |
294 | ListItem.Standard { |
295 | id: dataRoamingItem |
296 | - objectName: "dataRoamingSwitch" |
297 | text: i18n.tr("Data roaming") |
298 | enabled: use.selectedIndex !== 0 |
299 | control: Switch { |
300 | id: dataRoamingControl |
301 | - property bool serverChecked: getOnlineSim() && getOnlineSim().connMan.roamingAllowed |
302 | + objectName: "roaming" |
303 | + |
304 | + property bool serverChecked: poweredSim && poweredSim.connMan.roamingAllowed |
305 | onServerCheckedChanged: checked = serverChecked |
306 | Component.onCompleted: checked = serverChecked |
307 | onTriggered: { |
308 | - if (getOnlineSim()) { |
309 | - getOnlineSim().connMan.roamingAllowed = checked; |
310 | + if (poweredSim) { |
311 | + poweredSim.connMan.roamingAllowed = checked; |
312 | } |
313 | } |
314 | } |
315 | + showDivider: false |
316 | } |
317 | } |
318 | |
319 | === modified file 'plugins/cellular/Components/MultiSim.qml' |
320 | --- plugins/cellular/Components/MultiSim.qml 2014-10-06 19:38:06 +0000 |
321 | +++ plugins/cellular/Components/MultiSim.qml 2014-11-18 20:15:26 +0000 |
322 | @@ -23,21 +23,26 @@ |
323 | import Ubuntu.Components.ListItems 0.1 as ListItem |
324 | |
325 | Column { |
326 | - |
327 | objectName: "multiSim" |
328 | |
329 | property var sims |
330 | + property var poweredSim: { |
331 | + var s = null; |
332 | + sims.forEach(function (sim) { |
333 | + if (sim.connMan.powered === true) { |
334 | + s = sim; |
335 | + } |
336 | + }); |
337 | + return s; |
338 | + } |
339 | property var modems |
340 | - |
341 | // make settings available to all children of root |
342 | property var settings: phoneSettings |
343 | |
344 | - CellularMultiSim { |
345 | - anchors { left: parent.left; right: parent.right } |
346 | + DataMultiSim { |
347 | + anchors {Â left: parent.left; right: parent.right } |
348 | } |
349 | |
350 | - ListItem.Divider {} |
351 | - |
352 | ListItem.SingleValue { |
353 | text : i18n.tr("Hotspot disabled because Wi-Fi is off.") |
354 | visible: showAllUI && !hotspotItem.visible |
355 | @@ -60,15 +65,14 @@ |
356 | visible: showAllUI |
357 | } |
358 | |
359 | - ListItem.Divider { |
360 | - visible: hotspotItem.visible || dataUsage.visible |
361 | - } |
362 | + ListItem.Divider {} |
363 | |
364 | ListItem.SingleValue { |
365 | text: i18n.tr("Carriers") |
366 | id: chooseCarrier |
367 | - objectName: "chooseCarrier" |
368 | + objectName: "carriers" |
369 | progression: enabled |
370 | + showDivider: false |
371 | onClicked: { |
372 | pageStack.push(Qt.resolvedUrl("../PageChooseCarriers.qml"), { |
373 | sims: sims |
374 | @@ -88,6 +92,44 @@ |
375 | anchors { left: parent.left; right: parent.right } |
376 | } |
377 | |
378 | + ListItem.Divider {} |
379 | + |
380 | + function techToString (tech) { |
381 | + return { |
382 | + 'gsm': i18n.tr("2G only (saves battery)"), |
383 | + 'umts': i18n.tr("2G/3G (faster)"), |
384 | + 'lte': i18n.tr("2G/3G/4G (faster)") |
385 | + }[tech] |
386 | + } |
387 | + |
388 | + ListItem.ItemSelector { |
389 | + id: radio |
390 | + expanded: true |
391 | + text: i18n.tr("Connection type:") |
392 | + model: poweredSim ? poweredSim.radioSettings.modemTechnologies : [] |
393 | + delegate: OptionSelectorDelegate { |
394 | + objectName: poweredSim.path + "_radio_" + modelData |
395 | + text: techToString(modelData) |
396 | + } |
397 | + enabled: poweredSim ? |
398 | + (poweredSim.radioSettings.technologyPreference !== "") : false |
399 | + visible: poweredSim |
400 | + selectedIndex: poweredSim ? |
401 | + model.indexOf(poweredSim.radioSettings.technologyPreference) : -1 |
402 | + onDelegateClicked: { |
403 | + poweredSim.radioSettings.technologyPreference = model[index]; |
404 | + } |
405 | + } |
406 | + |
407 | + Connections { |
408 | + target: poweredSim ? poweredSim.radioSettings : null |
409 | + onTechnologyPreferenceChanged: { |
410 | + radio.selectedIndex = |
411 | + poweredSim.radioSettings.modemTechnologies.indexOf(preference) |
412 | + } |
413 | + ignoreUnknownSignals: true |
414 | + } |
415 | + |
416 | GSettings { |
417 | id: phoneSettings |
418 | schema.id: "com.ubuntu.phone" |
419 | |
420 | === modified file 'plugins/cellular/Components/NoSim.qml' |
421 | --- plugins/cellular/Components/NoSim.qml 2014-08-19 10:58:01 +0000 |
422 | +++ plugins/cellular/Components/NoSim.qml 2014-11-18 20:15:26 +0000 |
423 | @@ -25,27 +25,20 @@ |
424 | |
425 | objectName: "noSim" |
426 | |
427 | - ListItem.ItemSelector { |
428 | + ListItem.Standard { |
429 | text: i18n.tr("Cellular data:") |
430 | - expanded: true |
431 | enabled: false |
432 | - model: [i18n.tr("Off"), i18n.tr("2G only (saves battery)"), i18n.tr("2G/3G/4G (faster)")] |
433 | - selectedIndex: -1 |
434 | + control: Switch { |
435 | + checked: false |
436 | + } |
437 | } |
438 | |
439 | ListItem.Standard { |
440 | text: i18n.tr("Data roaming") |
441 | enabled: false |
442 | + showDivider: false |
443 | control: Switch { |
444 | checked: false |
445 | } |
446 | } |
447 | - |
448 | - ListItem.Divider {} |
449 | - |
450 | - ListItem.SingleValue { |
451 | - text: i18n.tr("Carrier"); |
452 | - value: i18n.tr("N/A") |
453 | - enabled: false |
454 | - } |
455 | } |
456 | |
457 | === added file 'plugins/cellular/Components/RadioSingleSim.qml' |
458 | --- plugins/cellular/Components/RadioSingleSim.qml 1970-01-01 00:00:00 +0000 |
459 | +++ plugins/cellular/Components/RadioSingleSim.qml 2014-11-18 20:15:26 +0000 |
460 | @@ -0,0 +1,57 @@ |
461 | +/* |
462 | + * Copyright (C) 2014 Canonical Ltd |
463 | + * |
464 | + * This program is free software: you can redistribute it and/or modify |
465 | + * it under the terms of the GNU General Public License version 3 as |
466 | + * published by the Free Software Foundation. |
467 | + * |
468 | + * This program is distributed in the hope that it will be useful, |
469 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
470 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
471 | + * GNU General Public License for more details. |
472 | + * |
473 | + * You should have received a copy of the GNU General Public License |
474 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
475 | + * |
476 | + * Authors: |
477 | + * Jonas G. Drange <jonas.drange@canonical.com> |
478 | + * |
479 | +*/ |
480 | +import QtQuick 2.0 |
481 | +import Ubuntu.Components 0.1 |
482 | +import Ubuntu.Components.ListItems 0.1 as ListItem |
483 | + |
484 | +Column { |
485 | + height: childrenRect.height |
486 | + |
487 | + property alias selector: selector |
488 | + |
489 | + ListItem.ItemSelector { |
490 | + id: selector |
491 | + text: i18n.tr("Connection type:") |
492 | + showDivider: false |
493 | + expanded: true |
494 | + |
495 | + // an empty string is not a valid preference, which means |
496 | + // we disregard the interace and disable the selector |
497 | + enabled: sim.radioSettings.technologyPreference !== "" |
498 | + model: sim.radioSettings.modemTechnologies |
499 | + |
500 | + delegate: OptionSelectorDelegate { |
501 | + objectName: sim.path + "_radio_" + modelData |
502 | + text: { |
503 | + return { |
504 | + 'gsm': i18n.tr("2G only (saves battery)"), |
505 | + 'umts': i18n.tr("2G/3G (faster)"), |
506 | + 'lte': i18n.tr("2G/3G/4G (faster)") |
507 | + }[modelData] |
508 | + } |
509 | + showDivider: false |
510 | + } |
511 | + selectedIndex: model.indexOf(sim.radioSettings.technologyPreference) |
512 | + onDelegateClicked: { |
513 | + sim.radioSettings.technologyPreference = model[index]; |
514 | + } |
515 | + } |
516 | + |
517 | +} |
518 | |
519 | === modified file 'plugins/cellular/Components/SimEditor.qml' |
520 | --- plugins/cellular/Components/SimEditor.qml 2014-08-20 13:48:58 +0000 |
521 | +++ plugins/cellular/Components/SimEditor.qml 2014-11-18 20:15:26 +0000 |
522 | @@ -22,15 +22,9 @@ |
523 | import Ubuntu.Components.ListItems 0.1 as ListItem |
524 | |
525 | Column { |
526 | - |
527 | id: simList |
528 | objectName: "simEditor" |
529 | |
530 | - anchors { |
531 | - left: parent.left |
532 | - right: parent.right |
533 | - } |
534 | - |
535 | states: [ |
536 | State { |
537 | name: "editing" |
538 | @@ -73,7 +67,25 @@ |
539 | } |
540 | ] |
541 | |
542 | + NumberAnimation { |
543 | + id: scrollerAnimation |
544 | + duration: UbuntuAnimation.SnapDuration |
545 | + easing: UbuntuAnimation.StandardEasing |
546 | + target: root.flickable |
547 | + property: "contentY" |
548 | + } |
549 | + |
550 | + function openedEditor () { |
551 | + var flickable = scrollerAnimation.target; |
552 | + var maxFlick = Math.max(0, flickable.contentHeight - root.height); |
553 | + scrollerAnimation.from = flickable.contentY; |
554 | + scrollerAnimation.to = Math.min(y, maxFlick) - units.gu(9); // header |
555 | + scrollerAnimation.start(); |
556 | + nameField.forceActiveFocus(); |
557 | + } |
558 | + |
559 | ListItem.Standard { |
560 | + id: std |
561 | text: i18n.tr("Edit SIM Name") |
562 | } |
563 | |
564 | @@ -83,12 +95,14 @@ |
565 | right: parent.right |
566 | } |
567 | height: expandedItem ? |
568 | - childrenRect.height + editor.height : childrenRect.height |
569 | + expandedItem.expandedHeight : childrenRect.height |
570 | + |
571 | + boundsBehavior: Flickable.StopAtBounds |
572 | |
573 | ListItem.Expandable { |
574 | id: sim1Exp |
575 | expandedHeight: sim1Col.height |
576 | - objectName: "editSim1" |
577 | + objectName: "edit_name_" + sims[0].path |
578 | Column { |
579 | id: sim1Col |
580 | anchors { |
581 | @@ -102,7 +116,7 @@ |
582 | } |
583 | height: sim1Exp.collapsedHeight |
584 | Label { |
585 | - objectName: "simLabel1" |
586 | + objectName: "label_" + sims[0].path |
587 | anchors { |
588 | left: parent.left |
589 | right: parent.right |
590 | @@ -117,14 +131,15 @@ |
591 | } |
592 | onClicked: { |
593 | simList.state = "editingSim1"; |
594 | - nameField.forceActiveFocus(); |
595 | + simList.openedEditor(); |
596 | } |
597 | } |
598 | |
599 | ListItem.Expandable { |
600 | id: sim2Exp |
601 | expandedHeight: sim2Col.height |
602 | - objectName: "editSim2" |
603 | + objectName: "edit_name_" + sims[1].path |
604 | + showDivider: false |
605 | Column { |
606 | id: sim2Col |
607 | anchors { |
608 | @@ -138,7 +153,7 @@ |
609 | } |
610 | height: sim2Exp.collapsedHeight |
611 | Label { |
612 | - objectName: "simLabel2" |
613 | + objectName: "label_" + sims[1].path |
614 | anchors { |
615 | left: parent.left |
616 | right: parent.right |
617 | @@ -153,7 +168,7 @@ |
618 | } |
619 | onClicked: { |
620 | simList.state = "editingSim2"; |
621 | - nameField.forceActiveFocus(); |
622 | + simList.openedEditor(); |
623 | } |
624 | } |
625 | } |
626 | @@ -182,6 +197,8 @@ |
627 | |
628 | spacing: units.gu(2) |
629 | |
630 | + height: cancel.height + rename.height |
631 | + |
632 | Button { |
633 | id: cancel |
634 | objectName: "cancelRename" |
635 | @@ -204,7 +221,7 @@ |
636 | } |
637 | |
638 | Item { |
639 | - height: units.gu(1) |
640 | + height: units.gu(2) |
641 | width: parent.width |
642 | } |
643 | |
644 | |
645 | === modified file 'plugins/cellular/Components/SingleSim.qml' |
646 | --- plugins/cellular/Components/SingleSim.qml 2014-10-02 09:50:11 +0000 |
647 | +++ plugins/cellular/Components/SingleSim.qml 2014-11-18 20:15:26 +0000 |
648 | @@ -27,11 +27,29 @@ |
649 | |
650 | property var sim |
651 | |
652 | - CellularSingleSim { |
653 | - anchors { left: parent.left; right: parent.right } |
654 | + ListItem.Standard { |
655 | + id: selector |
656 | + text: i18n.tr("Cellular data:") |
657 | + control: Switch { |
658 | + id: dataControl |
659 | + objectName: 'data' |
660 | + checked: sim.connMan.powered |
661 | + onClicked: sim.connMan.powered = checked |
662 | + } |
663 | } |
664 | |
665 | - ListItem.Divider {} |
666 | + ListItem.Standard { |
667 | + id: dataRoamingItem |
668 | + text: i18n.tr("Data roaming") |
669 | + enabled: sim.connMan.powered |
670 | + showDivider: false |
671 | + control: Switch { |
672 | + id: dataRoamingControl |
673 | + objectName: "roaming" |
674 | + checked: sim.connMan.roamingAllowed |
675 | + onClicked: sim.connMan.roamingAllowed = checked |
676 | + } |
677 | + } |
678 | |
679 | ListItem.SingleValue { |
680 | text : i18n.tr("Hotspot disabled because Wi-Fi is off.") |
681 | @@ -54,10 +72,22 @@ |
682 | visible: showAllUI |
683 | } |
684 | |
685 | + ListItem.Divider { |
686 | + visible: radio.selector.model.length |
687 | + } |
688 | + |
689 | + RadioSingleSim { |
690 | + id: radio |
691 | + anchors {Â left: parent.left; right: parent.right } |
692 | + visible: radio.selector.model.length |
693 | + } |
694 | + |
695 | + ListItem.Divider {} |
696 | + |
697 | ListItem.SingleValue { |
698 | text: i18n.tr("Carrier"); |
699 | id: chooseCarrier |
700 | - objectName: "chooseCarrier" |
701 | + objectName: "carrier" |
702 | progression: enabled |
703 | value: sim.netReg.name || i18n.tr("N/A") |
704 | enabled: sim.netReg.status !== "" |
705 | |
706 | === modified file 'plugins/cellular/PageChooseCarrier.qml' |
707 | --- plugins/cellular/PageChooseCarrier.qml 2014-10-06 12:56:18 +0000 |
708 | +++ plugins/cellular/PageChooseCarrier.qml 2014-11-18 20:15:26 +0000 |
709 | @@ -149,7 +149,7 @@ |
710 | |
711 | ListItem.ItemSelector { |
712 | id: chooseCarrier |
713 | - objectName: "autoChooseCarrierSelector" |
714 | + objectName: "mode" |
715 | expanded: true |
716 | enabled: sim.netReg.mode !== "auto-only" |
717 | text: i18n.tr("Choose carrier:") |
718 | @@ -171,6 +171,7 @@ |
719 | } |
720 | } |
721 | } |
722 | + |
723 | ListItem.SingleControl { |
724 | enabled: chooseCarrier.selectedIndex === 1 |
725 | anchors { |
726 | @@ -198,7 +199,7 @@ |
727 | } |
728 | ListItem.ItemSelector { |
729 | id: carrierSelector |
730 | - objectName: "carrierSelector" |
731 | + objectName: "carriers" |
732 | expanded: true |
733 | enabled: sim.netReg.status !== "searching" && chooseCarrier.selectedIndex === 1 |
734 | // work around ItemSelector not having a visual change depending on being disabled |
735 | |
736 | === modified file 'plugins/cellular/PageChooseCarriers.qml' |
737 | --- plugins/cellular/PageChooseCarriers.qml 2014-10-06 19:38:06 +0000 |
738 | +++ plugins/cellular/PageChooseCarriers.qml 2014-11-18 20:15:26 +0000 |
739 | @@ -44,7 +44,7 @@ |
740 | } |
741 | |
742 | ListItem.SingleValue { |
743 | - objectName: "chooseCarrierSim1" |
744 | + objectName: sims[0].path + "_carriers" |
745 | value: sims[0].netReg.name ? sims[0].netReg.name : i18n.tr("N/A") |
746 | enabled: sims[0].netReg.status !== "" |
747 | progression: true |
748 | @@ -61,7 +61,7 @@ |
749 | } |
750 | |
751 | ListItem.SingleValue { |
752 | - objectName: "chooseCarrierSim2" |
753 | + objectName: sims[1].path + "_carriers" |
754 | value: sims[1].netReg.name ? sims[1].netReg.name : i18n.tr("N/A") |
755 | enabled: sims[1].netReg.status !== "" |
756 | progression: true |
757 | |
758 | === modified file 'plugins/cellular/PageComponent.qml' |
759 | --- plugins/cellular/PageComponent.qml 2014-10-17 14:57:17 +0000 |
760 | +++ plugins/cellular/PageComponent.qml 2014-11-18 20:15:26 +0000 |
761 | @@ -94,15 +94,15 @@ |
762 | start() |
763 | } |
764 | } |
765 | + |
766 | Flickable { |
767 | + id: flick |
768 | anchors.fill: parent |
769 | contentWidth: parent.width |
770 | contentHeight: contentItem.childrenRect.height |
771 | boundsBehavior: (contentHeight > root.height) ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds |
772 | - |
773 | Column { |
774 | anchors {Â left: parent.left; right: parent.right } |
775 | - |
776 | Loader { |
777 | id: loader |
778 | anchors {Â left: parent.left; right: parent.right } |
779 | |
780 | === modified file 'plugins/cellular/sims.js' |
781 | --- plugins/cellular/sims.js 2014-10-03 14:08:08 +0000 |
782 | +++ plugins/cellular/sims.js 2014-11-18 20:15:26 +0000 |
783 | @@ -17,6 +17,16 @@ |
784 | return getPresent()[0]; |
785 | } |
786 | |
787 | +function getFirstOnline () { |
788 | + var online = null; |
789 | + getPresent().forEach(function (sim) { |
790 | + if (sim.connMan.powered === true) { |
791 | + online = sim; |
792 | + } |
793 | + }); |
794 | + return online; |
795 | +} |
796 | + |
797 | function getCount () { |
798 | return getAll().length; |
799 | } |
800 | |
801 | === modified file 'tests/autopilot/ubuntu_system_settings/__init__.py' |
802 | --- tests/autopilot/ubuntu_system_settings/__init__.py 2014-09-26 12:52:31 +0000 |
803 | +++ tests/autopilot/ubuntu_system_settings/__init__.py 2014-11-18 20:15:26 +0000 |
804 | @@ -1,3 +1,4 @@ |
805 | + |
806 | # -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- |
807 | # |
808 | # Copyright (C) 2014 Canonical Ltd. |
809 | @@ -114,6 +115,10 @@ |
810 | def go_to_wifi_page(self): |
811 | return self._go_to_page('entryComponent-wifi', 'wifiPage') |
812 | |
813 | + @autopilot.logging.log_action(logger.debug) |
814 | + def go_to_cellular_page(self): |
815 | + return self._go_to_page('entryComponent-cellular', 'cellularPage') |
816 | + |
817 | def _go_to_page(self, item_object_name, page_object_name): |
818 | self.click_item(item_object_name) |
819 | page = self.wait_select_single(objectName=page_object_name) |
820 | @@ -202,7 +207,7 @@ |
821 | self._orientation_lock_switch.uncheck() |
822 | |
823 | |
824 | -class CelullarPage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
825 | +class CellularPage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
826 | |
827 | """Autopilot helper for the Sound page.""" |
828 | |
829 | @@ -214,6 +219,164 @@ |
830 | return True |
831 | return False |
832 | |
833 | + @autopilot.logging.log_action(logger.debug) |
834 | + def enable_data(self): |
835 | + self._set_data(True) |
836 | + |
837 | + @autopilot.logging.log_action(logger.debug) |
838 | + def disable_data(self): |
839 | + self._set_data(False) |
840 | + |
841 | + def disable_datas(self): |
842 | + self.select_sim_for_data('off') |
843 | + |
844 | + @autopilot.logging.log_action(logger.debug) |
845 | + def _set_data(self, data): |
846 | + chk = self.select_single(objectName='data') |
847 | + if data: |
848 | + chk.check() |
849 | + else: |
850 | + chk.uncheck() |
851 | + |
852 | + @autopilot.logging.log_action(logger.debug) |
853 | + def get_data(self): |
854 | + return self.select_single(objectName='data').checked |
855 | + |
856 | + @autopilot.logging.log_action(logger.debug) |
857 | + def enable_roaming(self, timeout=10): |
858 | + self._set_roaming(True, timeout=timeout) |
859 | + |
860 | + @autopilot.logging.log_action(logger.debug) |
861 | + def disable_roaming(self, timeout=10): |
862 | + self._set_roaming(False, timeout=timeout) |
863 | + |
864 | + @autopilot.logging.log_action(logger.debug) |
865 | + def _set_roaming(self, roaming, timeout): |
866 | + chk = self.select_single(objectName='roaming') |
867 | + if roaming: |
868 | + chk.check(timeout=timeout) |
869 | + else: |
870 | + chk.uncheck(timeout=timeout) |
871 | + |
872 | + @autopilot.logging.log_action(logger.debug) |
873 | + def set_connection_type(self, radio_type, sim='/ril_0', |
874 | + scroll_to_and_click=None): |
875 | + self._set_connection_type(radio_type, sim, scroll_to_and_click) |
876 | + |
877 | + @autopilot.logging.log_action(logger.debug) |
878 | + def _set_connection_type(self, radio_type, sim, scroll_to_and_click): |
879 | + t = self.wait_select_single( |
880 | + 'OptionSelectorDelegate', |
881 | + objectName='%s_radio_%s' % (sim, radio_type)) |
882 | + if scroll_to_and_click: |
883 | + scroll_to_and_click(t) |
884 | + else: |
885 | + t.swipe_into_view() |
886 | + |
887 | + self.pointing_device.click_object(t) |
888 | + |
889 | + @autopilot.logging.log_action(logger.debug) |
890 | + def change_carrier(self, carrier, sim=None): |
891 | + if sim: |
892 | + carriersPage = self._click_carriers() |
893 | + carrierPage = carriersPage.select_sim(sim) |
894 | + else: |
895 | + carrierPage = self._click_carrier() |
896 | + |
897 | + carrierPage.set_manual() |
898 | + carrierPage.set_carrier(carrier) |
899 | + |
900 | + @autopilot.logging.log_action(logger.debug) |
901 | + def _click_carrier(self): |
902 | + item = self.select_single(objectName='carrier') |
903 | + self.pointing_device.click_object(item) |
904 | + return self.get_root_instance().wait_select_single( |
905 | + objectName='chooseCarrierPage') |
906 | + |
907 | + @autopilot.logging.log_action(logger.debug) |
908 | + def _click_carriers(self): |
909 | + item = self.select_single(objectName='carriers') |
910 | + self.pointing_device.click_object(item) |
911 | + return self.get_root_instance().wait_select_single( |
912 | + objectName='chooseCarriersPage') |
913 | + |
914 | + @autopilot.logging.log_action(logger.debug) |
915 | + def select_sim_for_data(self, sim): |
916 | + self._select_sim_for_data(sim) |
917 | + |
918 | + @autopilot.logging.log_action(logger.debug) |
919 | + def _select_sim_for_data(self, sim): |
920 | + item = self.select_single(objectName='use%s' % sim) |
921 | + self.pointing_device.click_object(item) |
922 | + |
923 | + @autopilot.logging.log_action(logger.debug) |
924 | + def select_sim_for_calls(self, sim): |
925 | + pass |
926 | + |
927 | + @autopilot.logging.log_action(logger.debug) |
928 | + def select_sim_for_messages(self): |
929 | + pass |
930 | + |
931 | + @autopilot.logging.log_action(logger.debug) |
932 | + def set_name(self, sim, name): |
933 | + self._set_name(sim, name) |
934 | + |
935 | + def get_name(self, sim): |
936 | + obj = self.select_single( |
937 | + objectName="label_%s" % sim) |
938 | + return obj.text |
939 | + |
940 | + def _set_name(self, sim, name): |
941 | + obj = self.select_single( |
942 | + objectName="edit_name_%s" % sim) |
943 | + self.pointing_device.click_object(obj) |
944 | + |
945 | + # wait for animation |
946 | + sleep(1) |
947 | + ok = self.select_single('Button', objectName="doRename") |
948 | + |
949 | + field = self.select_single('TextField', objectName="nameField") |
950 | + field.write(name) |
951 | + self.pointing_device.click_object(ok) |
952 | + |
953 | + |
954 | +class PageChooseCarriers(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
955 | + |
956 | + """Autopilot helper for carrier selection page (multisim).""" |
957 | + |
958 | + @autopilot.logging.log_action(logger.debug) |
959 | + def select_sim(self, sim): |
960 | + return self._select_sim(sim) |
961 | + |
962 | + @autopilot.logging.log_action(logger.debug) |
963 | + def _select_sim(self, sim): |
964 | + item = self.select_single(objectName='%s_carriers' % sim) |
965 | + self.pointing_device.click_object(item) |
966 | + return self.get_root_instance().wait_select_single( |
967 | + objectName='chooseCarrierPage') |
968 | + |
969 | + |
970 | +class PageChooseCarrier(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
971 | + |
972 | + """Autopilot helper for carrier selection page (singlesim).""" |
973 | + |
974 | + @autopilot.logging.log_action(logger.debug) |
975 | + def set_manual(self): |
976 | + item = self.select_single(text='Manually') |
977 | + self.pointing_device.click_object(item) |
978 | + |
979 | + @autopilot.logging.log_action(logger.debug) |
980 | + def set_automatic(self): |
981 | + item = self.select_single(text='Automatically') |
982 | + self.pointing_device.click_object(item) |
983 | + |
984 | + def set_carrier(self, carrier): |
985 | + # wait for animation, since page.animationRunning.wait_for(False) |
986 | + # does not work? |
987 | + sleep(0.5) |
988 | + item = self.select_single(text=carrier) |
989 | + self.pointing_device.click_object(item) |
990 | + |
991 | |
992 | class TimeAndDatePage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
993 | |
994 | |
995 | === modified file 'tests/autopilot/ubuntu_system_settings/tests/__init__.py' |
996 | --- tests/autopilot/ubuntu_system_settings/tests/__init__.py 2014-10-22 21:34:08 +0000 |
997 | +++ tests/autopilot/ubuntu_system_settings/tests/__init__.py 2014-11-18 20:15:26 +0000 |
998 | @@ -33,6 +33,7 @@ |
999 | RDO_IFACE = 'org.ofono.RadioSettings' |
1000 | SIM_IFACE = 'org.ofono.SimManager' |
1001 | NETREG_IFACE = 'org.ofono.NetworkRegistration' |
1002 | +NETOP_IFACE = 'org.ofono.NetworkOperator' |
1003 | CALL_FWD_IFACE = 'org.ofono.CallForwarding' |
1004 | CALL_SETTINGS_IFACE = 'org.ofono.CallSettings' |
1005 | SYSTEM_IFACE = 'com.canonical.SystemImage' |
1006 | @@ -150,7 +151,7 @@ |
1007 | def mock_carriers(self, name): |
1008 | self.dbusmock.AddObject( |
1009 | '/%s/operator/op2' % name, |
1010 | - 'org.ofono.NetworkOperator', |
1011 | + NETOP_IFACE, |
1012 | { |
1013 | 'Name': 'my.cool.telco', |
1014 | 'Status': 'available', |
1015 | @@ -167,7 +168,7 @@ |
1016 | # Add a forbidden carrier |
1017 | self.dbusmock.AddObject( |
1018 | '/%s/operator/op3' % name, |
1019 | - 'org.ofono.NetworkOperator', |
1020 | + NETOP_IFACE, |
1021 | { |
1022 | 'Name': 'my.bad.telco', |
1023 | 'Status': 'forbidden', |
1024 | @@ -311,9 +312,12 @@ |
1025 | |
1026 | |
1027 | class CellularBaseTestCase(UbuntuSystemSettingsOfonoTestCase): |
1028 | + |
1029 | def setUp(self): |
1030 | """ Go to Cellular page """ |
1031 | - super(CellularBaseTestCase, self).setUp('cellular') |
1032 | + super(CellularBaseTestCase, self).setUp() |
1033 | + self.cellular_page = self.system_settings.\ |
1034 | + main_view.go_to_cellular_page() |
1035 | |
1036 | |
1037 | class PhoneOfonoBaseTestCase(UbuntuSystemSettingsOfonoTestCase): |
1038 | |
1039 | === modified file 'tests/autopilot/ubuntu_system_settings/tests/test_cellular.py' |
1040 | --- tests/autopilot/ubuntu_system_settings/tests/test_cellular.py 2014-10-09 14:09:38 +0000 |
1041 | +++ tests/autopilot/ubuntu_system_settings/tests/test_cellular.py 2014-11-18 20:15:26 +0000 |
1042 | @@ -5,537 +5,217 @@ |
1043 | # under the terms of the GNU General Public License version 3, as published |
1044 | # by the Free Software Foundation. |
1045 | |
1046 | -import dbus |
1047 | from gi.repository import Gio, GLib |
1048 | from time import sleep |
1049 | |
1050 | from autopilot.introspection.dbus import StateNotFoundError |
1051 | from autopilot.matchers import Eventually |
1052 | -from testtools.matchers import Equals, NotEquals, raises |
1053 | -from unittest import skip |
1054 | +from testtools.matchers import Equals, raises, StartsWith |
1055 | |
1056 | from ubuntu_system_settings.tests import ( |
1057 | - CellularBaseTestCase, CONNMAN_IFACE, RDO_IFACE, SIM_IFACE) |
1058 | -from ubuntu_system_settings.utils.i18n import ugettext as _ |
1059 | - |
1060 | -from ubuntuuitoolkit import emulators as toolkit_emulators |
1061 | - |
1062 | - |
1063 | -PREFERENCE_2G = '2G only (saves battery)' |
1064 | -PREFERENCE_UMTS = '2G/3G (faster)' |
1065 | -PREFERENCE_LTE = '2G/3G/4G (faster)' |
1066 | -PREFERENCE_OFF = 'Off' |
1067 | -USE_OFF = "useoff" |
1068 | -USE_SIM_1 = "use/ril_0" |
1069 | -USE_SIM_2 = "use/ril_1" |
1070 | + CellularBaseTestCase, CONNMAN_IFACE, RDO_IFACE, NETREG_IFACE) |
1071 | |
1072 | |
1073 | class CellularTestCase(CellularBaseTestCase): |
1074 | - """ Tests for cellular Page """ |
1075 | - |
1076 | - """Caches the technology preference selector""" |
1077 | - _pref_selector = None |
1078 | - |
1079 | - @property |
1080 | - def data_preference_selector(self): |
1081 | - """Return data_preference_selector""" |
1082 | - try: |
1083 | - self._pref_selector.get_properties() |
1084 | - except: |
1085 | - self._pref_selector = \ |
1086 | - self.system_settings.main_view.cellular_page.select_single( |
1087 | - toolkit_emulators.ItemSelector, |
1088 | - objectName="technologyPreferenceSelector" |
1089 | - ) |
1090 | - return self._pref_selector |
1091 | - |
1092 | - def select_preference(self, label): |
1093 | - """Helper method to click a preference which matches provided label""" |
1094 | - pref = self.data_preference_selector.select_single('Label', text=label) |
1095 | - self.system_settings.main_view.pointing_device.click_object(pref) |
1096 | - |
1097 | - def assert_selected_preference(self, index): |
1098 | - """Helper method asserting that the selected data technology preference |
1099 | - is that of index""" |
1100 | - self.assertThat(self.data_preference_selector.selectedIndex, |
1101 | - Eventually(Equals(index))) |
1102 | - |
1103 | - def navigate_to_carrier_page(self): |
1104 | - selector = self.system_settings.main_view.cellular_page.select_single( |
1105 | - objectName="chooseCarrier" |
1106 | - ) |
1107 | - self.system_settings.main_view.scroll_to_and_click(selector) |
1108 | - |
1109 | - def navigate_to_manual(self): |
1110 | - selector = self.choose_carrier_page.select_single( |
1111 | - toolkit_emulators.ItemSelector, |
1112 | - objectName="autoChooseCarrierSelector" |
1113 | - ) |
1114 | - manual = selector.select_single('Label', text=_("Manually")) |
1115 | - self.system_settings.main_view.pointing_device.click_object(manual) |
1116 | - choosecarrier = self.system_settings.main_view.cellular_page.\ |
1117 | - select_single(objectName="chooseCarrier") |
1118 | - self.system_settings.main_view.pointing_device.click_object( |
1119 | - choosecarrier) |
1120 | - self.assertThat( |
1121 | - self.system_settings.main_view.choose_page.title, |
1122 | - Equals(_("Carrier")) |
1123 | - ) |
1124 | - |
1125 | - def test_cellular_page(self): |
1126 | - """ Checks whether Cellular page is available """ |
1127 | - self.assertThat( |
1128 | - self.system_settings.main_view.cellular_page, |
1129 | - NotEquals(None) |
1130 | - ) |
1131 | - self.assertThat( |
1132 | - self.system_settings.main_view.cellular_page.title, |
1133 | - Equals(_('Cellular')) |
1134 | - ) |
1135 | - |
1136 | - def test_single_sim_layout(self): |
1137 | - self.system_settings.main_view.cellular_page.\ |
1138 | - select_single(objectName="singleSim") |
1139 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
1140 | - objectName='multiSim'), raises(StateNotFoundError)) |
1141 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
1142 | - objectName='noSim'), raises(StateNotFoundError)) |
1143 | - |
1144 | - def test_current_network(self): |
1145 | - """ Tests whether the current network is visible and selected """ |
1146 | - self.navigate_to_carrier_page() |
1147 | - self.navigate_to_manual() |
1148 | - carriers = self.system_settings.main_view.choose_page.select_single( |
1149 | - toolkit_emulators.ItemSelector, |
1150 | - objectName="carrierSelector" |
1151 | - ) |
1152 | - # TODO: Once there is a proper ItemSelector emulator, get the items |
1153 | - # from it and check 'fake.tel' is the selected one. |
1154 | - selected_delegate = carriers.select_single( |
1155 | - 'OptionSelectorDelegate', selected=True) |
1156 | - selected_delegate.select_single('Label', text="fake.tel") |
1157 | - |
1158 | - def test_alt_network(self): |
1159 | - """ Tests whether an alternative available network is displayed """ |
1160 | - self.navigate_to_carrier_page() |
1161 | - self.navigate_to_manual() |
1162 | - carriers = self.system_settings.main_view.choose_page.select_single( |
1163 | - toolkit_emulators.ItemSelector, |
1164 | - objectName="carrierSelector" |
1165 | - ) |
1166 | - manual = carriers.select_single('Label', text="my.cool.telco") |
1167 | - self.assertThat(manual, NotEquals(None)) |
1168 | + |
1169 | + def test_enable_data(self): |
1170 | + self.cellular_page.enable_data() |
1171 | + self.assertThat( |
1172 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
1173 | + Eventually(Equals(True)) |
1174 | + ) |
1175 | + |
1176 | + def test_disable_data(self): |
1177 | + self.cellular_page.disable_data() |
1178 | + self.assertThat( |
1179 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
1180 | + Eventually(Equals(False)) |
1181 | + ) |
1182 | + |
1183 | + def test_remote_manipulation_of_data(self): |
1184 | + self.modem_0.EmitSignal( |
1185 | + CONNMAN_IFACE, |
1186 | + 'PropertyChanged', |
1187 | + 'sv', |
1188 | + ['Powered', 'true']) |
1189 | + |
1190 | + self.assertThat(lambda: self.cellular_page.get_data(), |
1191 | + Eventually(Equals(True))) |
1192 | + |
1193 | + self.modem_0.EmitSignal( |
1194 | + CONNMAN_IFACE, |
1195 | + 'PropertyChanged', |
1196 | + 'sv', |
1197 | + ['Powered', 'false']) |
1198 | + |
1199 | + self.assertThat(lambda: self.cellular_page.get_data(), |
1200 | + Eventually(Equals(False))) |
1201 | + |
1202 | + def test_enable_roaming(self): |
1203 | + self.cellular_page.enable_roaming() |
1204 | + self.assertThat( |
1205 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'), |
1206 | + Eventually(Equals(True)) |
1207 | + ) |
1208 | + |
1209 | + def test_disable_roaming(self): |
1210 | + self.cellular_page.disable_roaming() |
1211 | + self.assertThat( |
1212 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'), |
1213 | + Eventually(Equals(False)) |
1214 | + ) |
1215 | + |
1216 | + def test_connection_type(self): |
1217 | + get_pref = lambda: self.modem_0.Get(RDO_IFACE, 'TechnologyPreference') |
1218 | + for pref in ['lte', 'umts', 'gsm']: |
1219 | + self.cellular_page.set_connection_type(pref) |
1220 | + self.assertThat(get_pref, Eventually(Equals(pref))) |
1221 | + |
1222 | + def test_current_carrier(self): |
1223 | + self.assertThat(lambda: self.modem_0.Get(NETREG_IFACE, 'Name'), |
1224 | + Eventually(Equals('fake.tel'))) |
1225 | + |
1226 | + def test_change_carrier(self): |
1227 | + self.cellular_page.change_carrier('my.cool.telco') |
1228 | |
1229 | def test_no_forbidden_network(self): |
1230 | """ Ensures that a forbidden network is not shown """ |
1231 | - self.navigate_to_carrier_page() |
1232 | - self.navigate_to_manual() |
1233 | - carriers = self.system_settings.main_view.choose_page.select_single( |
1234 | - toolkit_emulators.ItemSelector, |
1235 | - objectName="carrierSelector" |
1236 | - ) |
1237 | self.assertThat( |
1238 | - lambda: carriers.select_single('Label', text="my.bad.telco"), |
1239 | + lambda: self.cellular_page.change_carrier('my.bad.telco'), |
1240 | raises(StateNotFoundError) |
1241 | ) |
1242 | |
1243 | - def test_set_sim_offline(self): |
1244 | - self.select_preference(PREFERENCE_OFF) |
1245 | - |
1246 | - sleep(0.7) |
1247 | - |
1248 | - self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
1249 | - |
1250 | - def test_set_sim_online(self): |
1251 | - self.select_preference(PREFERENCE_OFF) |
1252 | - sleep(0.7) |
1253 | - self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
1254 | - |
1255 | - self.select_preference(PREFERENCE_UMTS) |
1256 | - sleep(0.7) |
1257 | - self.assertEqual(True, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
1258 | - |
1259 | - def test_roaming_switch(self): |
1260 | - """Test that switching off cellular data disables roaming switch""" |
1261 | - roaming_switch = self.system_settings.main_view.select_single( |
1262 | - objectName="dataRoamingSwitch" |
1263 | - ) |
1264 | - # select 2G only |
1265 | - self.select_preference(PREFERENCE_2G) |
1266 | - |
1267 | - # assert that roaming_switch is enabled |
1268 | - self.assertThat( |
1269 | - roaming_switch.get_properties()['enabled'], |
1270 | - Eventually(Equals(True))) |
1271 | - |
1272 | - # click off |
1273 | - self.select_preference(PREFERENCE_OFF) |
1274 | - # assert roaming_switch is disabled |
1275 | - self.assertThat( |
1276 | - roaming_switch.get_properties()['enabled'], |
1277 | - Eventually(Equals(False))) |
1278 | - |
1279 | - def test_allow_roaming(self): |
1280 | - roaming_switch = self.system_settings.main_view.select_single( |
1281 | - objectName="dataRoamingSwitch" |
1282 | - ) |
1283 | - self.system_settings.main_view.scroll_to_and_click(roaming_switch) |
1284 | - sleep(1.5) |
1285 | - self.assertEqual( |
1286 | - True, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
1287 | - |
1288 | - def test_change_data_preference(self): |
1289 | - self.select_preference(PREFERENCE_2G) |
1290 | - sleep(0.7) |
1291 | - self.assertEqual('gsm', self.modem_0.Get(RDO_IFACE, |
1292 | - 'TechnologyPreference')) |
1293 | - self.select_preference(PREFERENCE_UMTS) |
1294 | - sleep(0.7) |
1295 | - self.assertEqual('umts', self.modem_0.Get(RDO_IFACE, |
1296 | - 'TechnologyPreference')) |
1297 | - |
1298 | - def test_sim_online_status_insensitive_to_radio_preference(self): |
1299 | - # turn off cellular data |
1300 | - self.select_preference(PREFERENCE_OFF) |
1301 | - |
1302 | - # fake dbus signal, changing to umts |
1303 | - self.modem_0.EmitSignal( |
1304 | - 'org.ofono.RadioSettings', |
1305 | - 'PropertyChanged', |
1306 | - 'sv', |
1307 | - ['TechnologyPreference', dbus.String('umts', variant_level=1)]) |
1308 | - |
1309 | - # assert that "Off" has not changed |
1310 | - self.assert_selected_preference(0) |
1311 | - |
1312 | - def test_ui_reacts_to_sim_set_coming_online(self): |
1313 | - self.select_preference(PREFERENCE_2G) |
1314 | - self.select_preference(PREFERENCE_OFF) |
1315 | - |
1316 | - sleep(0.7) |
1317 | - |
1318 | - self.modem_0.EmitSignal( |
1319 | - CONNMAN_IFACE, |
1320 | - 'PropertyChanged', |
1321 | - 'sv', |
1322 | - ['Powered', 'true']) |
1323 | - |
1324 | - # assert that 2G is selected |
1325 | - self.assert_selected_preference(1) |
1326 | - |
1327 | - def test_unlocking_sim(self): |
1328 | - '''Like it would if the sim was locked, e.g.''' |
1329 | - self.modem_0.Set(RDO_IFACE, 'TechnologyPreference', |
1330 | - dbus.String('', variant_level=1)) |
1331 | - |
1332 | - self.system_settings.main_view.go_back() |
1333 | - |
1334 | - self.system_settings.main_view.pointing_device.click_object( |
1335 | - self.system_settings.main_view.select_single( |
1336 | - objectName='entryComponent-cellular')) |
1337 | - |
1338 | - self.assert_selected_preference(-1) |
1339 | - self.assertFalse(self.data_preference_selector.enabled) |
1340 | - |
1341 | - self.modem_0.EmitSignal( |
1342 | - 'org.ofono.RadioSettings', |
1343 | - 'PropertyChanged', |
1344 | - 'sv', |
1345 | - ['TechnologyPreference', dbus.String('lte', variant_level=1)]) |
1346 | - |
1347 | - self.assert_selected_preference(3) |
1348 | - |
1349 | |
1350 | class DualSimCellularTestCase(CellularBaseTestCase): |
1351 | |
1352 | use_sims = 2 |
1353 | |
1354 | - def navigate_to_carriers_page(self): |
1355 | - selector = self.system_settings.main_view.cellular_page.select_single( |
1356 | - objectName="chooseCarrier" |
1357 | - ) |
1358 | - self.system_settings.main_view.scroll_to_and_click(selector) |
1359 | - |
1360 | - def navigate_to_carrier_page_for_sim(self, n): |
1361 | - selector = self.choose_carriers_page.select_single( |
1362 | - objectName="chooseCarrierSim%d" % n |
1363 | - ) |
1364 | - self.system_settings.main_view.scroll_to_and_click(selector) |
1365 | - |
1366 | - def navigate_to_manual(self): |
1367 | - selector = self.choose_carrier_page.select_single( |
1368 | - toolkit_emulators.ItemSelector, |
1369 | - objectName="autoChooseCarrierSelector" |
1370 | - ) |
1371 | - manual = selector.select_single('Label', text=_("Manually")) |
1372 | - self.system_settings.main_view.scroll_to_and_click(manual) |
1373 | - choosecarrier = self.system_settings.main_view.cellular_page.\ |
1374 | - select_single(objectName="chooseCarrier") |
1375 | - self.system_settings.main_view.scroll_to_and_click(choosecarrier) |
1376 | - self.assertThat( |
1377 | - self.system_settings.main_view.choose_page.title, |
1378 | - Equals(_("Carrier")) |
1379 | - ) |
1380 | - |
1381 | - @property |
1382 | - def data_preference_selector(self): |
1383 | - """Return data_preference_selector""" |
1384 | + def test_data_off(self): |
1385 | + self.cellular_page.disable_datas() |
1386 | + self.assertThat( |
1387 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
1388 | + Eventually(Equals(False)) |
1389 | + ) |
1390 | + self.assertThat( |
1391 | + lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'), |
1392 | + Eventually(Equals(False)) |
1393 | + ) |
1394 | + |
1395 | + def test_sim1_online(self): |
1396 | + self.cellular_page.select_sim_for_data('/ril_0') |
1397 | + self.assertThat( |
1398 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
1399 | + Eventually(Equals(True)) |
1400 | + ) |
1401 | + self.assertThat( |
1402 | + lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'), |
1403 | + Eventually(Equals(False)) |
1404 | + ) |
1405 | + |
1406 | + def test_sim2_online(self): |
1407 | + self.cellular_page.select_sim_for_data('/ril_1') |
1408 | + self.assertThat( |
1409 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
1410 | + Eventually(Equals(False)) |
1411 | + ) |
1412 | + self.assertThat( |
1413 | + lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'), |
1414 | + Eventually(Equals(True)) |
1415 | + ) |
1416 | + |
1417 | + def test_connection_type_on_sim1(self): |
1418 | + sim = '/ril_0' |
1419 | + stac = self.system_settings.main_view.scroll_to_and_click |
1420 | + self.cellular_page.select_sim_for_data(sim) |
1421 | + get_pref = lambda: self.modem_0.Get(RDO_IFACE, 'TechnologyPreference') |
1422 | + for pref in ['lte', 'umts', 'gsm']: |
1423 | + self.cellular_page.set_connection_type( |
1424 | + pref, sim=sim, scroll_to_and_click=stac) |
1425 | + self.assertThat(get_pref, Eventually(Equals(pref))) |
1426 | + |
1427 | + def test_connection_type_on_sim2(self): |
1428 | + sim = '/ril_1' |
1429 | + stac = self.system_settings.main_view.scroll_to_and_click |
1430 | + self.cellular_page.select_sim_for_data(sim) |
1431 | + get_pref = lambda: self.modem_1.Get(RDO_IFACE, 'TechnologyPreference') |
1432 | + for pref in ['gsm']: |
1433 | + self.cellular_page.set_connection_type( |
1434 | + pref, sim=sim, scroll_to_and_click=stac) |
1435 | + self.assertThat(get_pref, Eventually(Equals(pref))) |
1436 | + |
1437 | + def test_current_carrier_sim1(self): |
1438 | + self.assertThat(lambda: self.modem_0.Get(NETREG_IFACE, 'Name'), |
1439 | + Eventually(Equals('fake.tel'))) |
1440 | + |
1441 | + def test_change_carrier_sim1(self): |
1442 | + sim = '/ril_0' |
1443 | + self.cellular_page.change_carrier('my.cool.telco', sim=sim) |
1444 | + |
1445 | + def test_current_carrier_sim2(self): |
1446 | + self.assertThat(lambda: self.modem_1.Get(NETREG_IFACE, 'Name'), |
1447 | + Eventually(Equals('fake.tel'))) |
1448 | + |
1449 | + def test_change_carrier_sim2(self): |
1450 | + sim = '/ril_1' |
1451 | + self.cellular_page.change_carrier('my.cool.telco', sim=sim) |
1452 | + |
1453 | + def test_change_sim1_name(self): |
1454 | + gsettings = Gio.Settings.new('com.ubuntu.phone') |
1455 | + sim = '/ril_0' |
1456 | try: |
1457 | - self._pref_selector.get_properties() |
1458 | + old_name = gsettings.get_value('sim-names')[sim] |
1459 | except: |
1460 | - self._pref_selector = \ |
1461 | - self.system_settings.main_view.cellular_page.select_single( |
1462 | - toolkit_emulators.ItemSelector, |
1463 | - objectName="technologyPreferenceSelector" |
1464 | - ) |
1465 | - return self._pref_selector |
1466 | - |
1467 | - def select_preference(self, label): |
1468 | - """Helper method that clicks a preference |
1469 | - that matches provided label""" |
1470 | - pref = self.data_preference_selector.select_single('Label', text=label) |
1471 | - self.system_settings.main_view.scroll_to_and_click(pref) |
1472 | - |
1473 | - def assert_selected_preference(self, index): |
1474 | - """Helper method asserting that the selected |
1475 | - data technology preference is that of index""" |
1476 | - self.assertThat( |
1477 | - self.data_preference_selector.selectedIndex, |
1478 | - Eventually(Equals(index))) |
1479 | - |
1480 | - def use_selector(self, label): |
1481 | - obj = self.system_settings.main_view.cellular_page.select_single( |
1482 | - objectName="use" |
1483 | - ).select_single(objectName=label) |
1484 | - self.system_settings.main_view.scroll_to_and_click(obj) |
1485 | - |
1486 | - def assert_used(self, index): |
1487 | - obj = self.system_settings.main_view.cellular_page.select_single( |
1488 | - objectName="use" |
1489 | - ) |
1490 | - self.assertThat( |
1491 | - obj.selectedIndex, Eventually(Equals(index))) |
1492 | - |
1493 | - def get_sim_name(self, num): |
1494 | - obj = self.system_settings.main_view.cellular_page.select_single( |
1495 | - objectName="simLabel%d" % num) |
1496 | - return obj.get_properties()['text'] |
1497 | - |
1498 | - def rename_sim(self, num, new_name): |
1499 | - obj = self.system_settings.main_view.cellular_page.select_single( |
1500 | - objectName="simEditor" |
1501 | - ).select_single(objectName="editSim%d" % num) |
1502 | - self.system_settings.main_view.scroll_to_and_click(obj) |
1503 | - field = self.system_settings.main_view.cellular_page.select_single( |
1504 | - objectName="nameField" |
1505 | - ) |
1506 | - self.system_settings.main_view.scroll_to_and_click(field) |
1507 | - self.system_settings.main_view.scroll_to_and_click( |
1508 | - field.select_single(objectName="clear_button")) |
1509 | - self.keyboard.type(new_name) |
1510 | - self.system_settings.main_view.scroll_to_and_click( |
1511 | - self.system_settings.main_view.cellular_page.select_single( |
1512 | - objectName="doRename")) |
1513 | - |
1514 | - def test_use_sim_1(self): |
1515 | - self.use_selector(USE_OFF) |
1516 | - self.use_selector(USE_SIM_1) |
1517 | - sleep(0.7) |
1518 | - self.assertEqual(True, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
1519 | - self.assertEqual(False, self.modem_1.Get(CONNMAN_IFACE, 'Powered')) |
1520 | - |
1521 | - def test_use_sim_2(self): |
1522 | - self.use_selector(USE_OFF) |
1523 | - self.use_selector(USE_SIM_2) |
1524 | - sleep(0.7) |
1525 | - self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
1526 | - self.assertEqual(True, self.modem_1.Get(CONNMAN_IFACE, 'Powered')) |
1527 | - |
1528 | - def test_turn_off_both_sims(self): |
1529 | - self.use_selector(USE_OFF) |
1530 | - sleep(0.7) |
1531 | - self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
1532 | - self.assertEqual(False, self.modem_1.Get(CONNMAN_IFACE, 'Powered')) |
1533 | - |
1534 | - def test_use_gsm_for_sim_1(self): |
1535 | - self.use_selector(USE_SIM_1) |
1536 | - self.select_preference(PREFERENCE_2G) |
1537 | - sleep(0.7) |
1538 | - self.assertEqual( |
1539 | - 'gsm', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')) |
1540 | - |
1541 | - def test_use_umts_for_sim_1(self): |
1542 | - self.use_selector(USE_SIM_1) |
1543 | - self.select_preference(PREFERENCE_UMTS) |
1544 | - sleep(0.7) |
1545 | - self.assertEqual( |
1546 | - 'umts', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')) |
1547 | - |
1548 | - def test_use_gsm_for_sim_2(self): |
1549 | - self.use_selector(USE_SIM_1) |
1550 | - self.select_preference(PREFERENCE_2G) |
1551 | - sleep(0.7) |
1552 | - self.assertEqual( |
1553 | - 'gsm', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')) |
1554 | - |
1555 | - def test_when_sim_1_comes_online_ui_is_correct(self): |
1556 | - self.use_selector(USE_SIM_1) |
1557 | - self.select_preference(PREFERENCE_UMTS) |
1558 | - self.use_selector(USE_OFF) |
1559 | - sleep(0.7) |
1560 | - self.modem_0.Set(CONNMAN_IFACE, 'Powered', True) |
1561 | - self.modem_0.EmitSignal( |
1562 | - CONNMAN_IFACE, |
1563 | - 'PropertyChanged', |
1564 | - 'sv', |
1565 | - ['Powered', 'true']) |
1566 | - |
1567 | - self.assertEqual( |
1568 | - 'umts', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')) |
1569 | - self.assert_used(1) |
1570 | - self.assert_selected_preference(1) |
1571 | - |
1572 | - def test_when_sim_2_comes_online_ui_is_correct(self): |
1573 | - self.use_selector(USE_SIM_2) |
1574 | - self.select_preference(PREFERENCE_2G) |
1575 | - self.use_selector(USE_OFF) |
1576 | - sleep(2) |
1577 | - self.modem_1.Set(CONNMAN_IFACE, 'Powered', True) |
1578 | - self.modem_1.EmitSignal( |
1579 | - CONNMAN_IFACE, |
1580 | - 'PropertyChanged', |
1581 | - 'sv', |
1582 | - ['Powered', 'true']) |
1583 | - |
1584 | - self.assertEqual( |
1585 | - 'gsm', self.modem_1.Get(RDO_IFACE, 'TechnologyPreference')) |
1586 | - self.assert_used(2) |
1587 | - self.assert_selected_preference(0) |
1588 | - |
1589 | - def test_roaming_switch(self): |
1590 | - roaming_switch = self.system_settings.main_view.select_single( |
1591 | - objectName="dataRoamingSwitch" |
1592 | - ) |
1593 | - # assert that roaming_switch is enabled |
1594 | - self.assertTrue(roaming_switch.get_properties()['enabled']) |
1595 | - |
1596 | - # click off |
1597 | - self.use_selector(USE_OFF) |
1598 | - |
1599 | - # assert roaming_switch is disabled |
1600 | - self.assertThat( |
1601 | - roaming_switch.get_properties()['enabled'], |
1602 | - Eventually(Equals(False))) |
1603 | - |
1604 | - def test_allow_roaming(self): |
1605 | - self.use_selector(USE_SIM_1) |
1606 | - self.assertEqual( |
1607 | - False, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
1608 | - roaming_switch = self.system_settings.main_view.select_single( |
1609 | - objectName="dataRoamingSwitch" |
1610 | - ) |
1611 | - self.system_settings.main_view.scroll_to_and_click(roaming_switch) |
1612 | - sleep(1.5) |
1613 | - self.assertEqual( |
1614 | - True, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
1615 | - |
1616 | - def test_no_radio_preference(self): |
1617 | - self.select_preference(PREFERENCE_UMTS) |
1618 | - self.use_selector(USE_OFF) |
1619 | - |
1620 | - self.modem_0.Set(RDO_IFACE, 'TechnologyPreference', '') |
1621 | - self.modem_0.EmitSignal( |
1622 | - CONNMAN_IFACE, |
1623 | - 'PropertyChanged', |
1624 | - 'sv', |
1625 | - ['TechnologyPreference', '']) |
1626 | - |
1627 | - self.assertThat( |
1628 | - self.data_preference_selector.get_properties()['visible'], |
1629 | - Eventually(Equals(False))) |
1630 | - |
1631 | - # see |
1632 | - # https://gitorious.org/python-dbusmock/python-dbusmock/merge_requests/3 |
1633 | - @skip('skipped due to bug in dbusmock') |
1634 | - def test_change_op_sim_1(self): |
1635 | - self.navigate_to_carriers_page() |
1636 | - self.navigate_to_carrier_page_for_sim(1) |
1637 | - carriers = self.system_settings.main_view.choose_page.select_single( |
1638 | - toolkit_emulators.ItemSelector, objectName="carrierSelector") |
1639 | - manual = carriers.select_single('Label', text="my.cool.telco") |
1640 | - self.assertThat(manual, NotEquals(None)) |
1641 | - |
1642 | - # see |
1643 | - # https://gitorious.org/python-dbusmock/python-dbusmock/merge_requests/3 |
1644 | - @skip('skipped due to bug in dbusmock') |
1645 | - def test_change_op_sim_2(self): |
1646 | - self.navigate_to_carriers_page() |
1647 | - self.navigate_to_carrier_page_for_sim(2) |
1648 | - carriers = self.system_settings.main_view.choose_page.select_single( |
1649 | - toolkit_emulators.ItemSelector, objectName="carrierSelector") |
1650 | - manual = carriers.select_single('Label', text="my.cool.telco") |
1651 | - self.assertThat(manual, NotEquals(None)) |
1652 | - |
1653 | - def test_radio_preference_changes(self): |
1654 | - self.use_selector(USE_SIM_1) |
1655 | - |
1656 | - self.modem_0.Set(RDO_IFACE, 'TechnologyPreference', 'umts') |
1657 | - self.modem_0.EmitSignal( |
1658 | - RDO_IFACE, |
1659 | - 'PropertyChanged', |
1660 | - 'sv', |
1661 | - ['TechnologyPreference', 'umts']) |
1662 | - |
1663 | - self.assert_selected_preference(1) |
1664 | - |
1665 | - def test_changing_sim1_name(self): |
1666 | - gsettings = Gio.Settings.new('com.ubuntu.phone') |
1667 | - old_name = gsettings.get_value('sim-names')['/ril_0'] |
1668 | + old_name = 'SIM 1' |
1669 | new_name = 'FOO BAR' |
1670 | - self.rename_sim(1, new_name) |
1671 | + self.cellular_page.set_name(sim, new_name) |
1672 | |
1673 | - # wait for gsettings |
1674 | - sleep(1) |
1675 | try: |
1676 | - self.assertEqual( |
1677 | - new_name, gsettings.get_value('sim-names')['/ril_0']) |
1678 | + self.assertThat( |
1679 | + lambda: gsettings.get_value('sim-names')[sim], |
1680 | + Eventually(Equals(new_name))) |
1681 | except Exception as e: |
1682 | raise e |
1683 | finally: |
1684 | - self.rename_sim(1, old_name) |
1685 | + self.cellular_page.set_name(sim, old_name) |
1686 | + # wait for gsettings |
1687 | sleep(1) |
1688 | |
1689 | - def test_changing_sim2_name(self): |
1690 | + def test_change_sim2_name(self): |
1691 | gsettings = Gio.Settings.new('com.ubuntu.phone') |
1692 | - old_name = gsettings.get_value('sim-names')['/ril_1'] |
1693 | + sim = '/ril_1' |
1694 | + |
1695 | + try: |
1696 | + old_name = gsettings.get_value('sim-names')[sim] |
1697 | + except: |
1698 | + old_name = 'SIM 2' |
1699 | + |
1700 | new_name = 'BAR BAZ' |
1701 | - self.rename_sim(2, new_name) |
1702 | + self.cellular_page.set_name(sim, new_name) |
1703 | |
1704 | - # wait for gsettings |
1705 | - sleep(1) |
1706 | try: |
1707 | - self.assertEqual( |
1708 | - new_name, gsettings.get_value('sim-names')['/ril_1']) |
1709 | + self.assertThat( |
1710 | + lambda: gsettings.get_value('sim-names')[sim], |
1711 | + Eventually(Equals(new_name))) |
1712 | except Exception as e: |
1713 | raise e |
1714 | finally: |
1715 | - self.rename_sim(2, old_name) |
1716 | + self.cellular_page.set_name(sim, old_name) |
1717 | # wait for gsettings |
1718 | sleep(1) |
1719 | |
1720 | - def test_changes_to_sim_names_in_gsettings_are_reflected_in_ui(self): |
1721 | + def test_remote_manipulation_of_name(self): |
1722 | gsettings = Gio.Settings.new('com.ubuntu.phone') |
1723 | old_names = gsettings.get_value('sim-names') |
1724 | - |
1725 | + sim = '/ril_0' |
1726 | + name = 'BAS QUX' |
1727 | new_names = old_names.unpack() |
1728 | - new_names['/ril_0'] = 'BAS QUX' |
1729 | + new_names[sim] = name |
1730 | new_names = GLib.Variant('a{ss}', new_names) |
1731 | gsettings.set_value('sim-names', new_names) |
1732 | - |
1733 | - # wait for gsettings |
1734 | - sleep(1) |
1735 | try: |
1736 | - self.assertIn(new_names['/ril_0'], self.get_sim_name(1)) |
1737 | + self.assertThat( |
1738 | + lambda: self.cellular_page.get_name(sim), |
1739 | + Eventually(StartsWith(name))) |
1740 | except Exception as e: |
1741 | raise e |
1742 | finally: |
1743 | @@ -543,6 +223,36 @@ |
1744 | # wait for gsettings |
1745 | sleep(1) |
1746 | |
1747 | + def test_roaming_switch(self): |
1748 | + self.cellular_page.disable_datas() |
1749 | + # assert roaming_switch is disabled |
1750 | + self.assertThat( |
1751 | + lambda: self.cellular_page.enable_roaming(timeout=1), |
1752 | + raises(AssertionError) |
1753 | + ) |
1754 | + |
1755 | + def test_allow_roaming_sim_1(self): |
1756 | + sim = '/ril_0' |
1757 | + self.cellular_page.select_sim_for_data(sim) |
1758 | + |
1759 | + self.assertEqual( |
1760 | + False, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
1761 | + self.cellular_page.enable_roaming() |
1762 | + self.assertThat( |
1763 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'), |
1764 | + Eventually(Equals(True))) |
1765 | + |
1766 | + def test_allow_roaming_sim_2(self): |
1767 | + sim = '/ril_1' |
1768 | + self.cellular_page.select_sim_for_data(sim) |
1769 | + |
1770 | + self.assertEqual( |
1771 | + False, self.modem_1.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
1772 | + self.cellular_page.enable_roaming() |
1773 | + self.assertThat( |
1774 | + lambda: self.modem_1.Get(CONNMAN_IFACE, 'RoamingAllowed'), |
1775 | + Eventually(Equals(True))) |
1776 | + |
1777 | def test_changing_default_sim_for_calls(self): |
1778 | gsettings = Gio.Settings.new('com.ubuntu.phone') |
1779 | default = gsettings.get_value('default-sim-for-calls') |
1780 | @@ -556,11 +266,10 @@ |
1781 | # click first sim |
1782 | self.system_settings.main_view.scroll_to_and_click( |
1783 | self.get_default_sim_for_calls_selector('/ril_0')) |
1784 | - # wait for gsettings |
1785 | - sleep(1) |
1786 | - self.assertEqual( |
1787 | - gsettings.get_value('default-sim-for-calls').get_string(), |
1788 | - '/ril_0') |
1789 | + |
1790 | + self.assertThat( |
1791 | + lambda: gsettings.get_value('default-sim-for-calls').get_string(), |
1792 | + Eventually(Equals('/ril_0'))) |
1793 | |
1794 | def test_changing_default_sim_for_messages(self): |
1795 | gsettings = Gio.Settings.new('com.ubuntu.phone') |
1796 | @@ -574,108 +283,8 @@ |
1797 | # click second sim |
1798 | self.system_settings.main_view.scroll_to_and_click( |
1799 | self.get_default_sim_for_messages_selector('/ril_1')) |
1800 | - # wait for gsettings |
1801 | - sleep(1) |
1802 | - self.assertEqual( |
1803 | - gsettings.get_value('default-sim-for-messages').get_string(), |
1804 | - '/ril_1') |
1805 | - |
1806 | - def test_multi_sim_layout(self): |
1807 | - self.system_settings.main_view.cellular_page.\ |
1808 | - select_single(objectName="multiSim") |
1809 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
1810 | - objectName='singleSim'), raises(StateNotFoundError)) |
1811 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
1812 | - objectName='noSim'), raises(StateNotFoundError)) |
1813 | - |
1814 | - def test_remove_one_sim(self): |
1815 | - self.modem_0.EmitSignal( |
1816 | - SIM_IFACE, |
1817 | - 'PropertyChanged', |
1818 | - 'sv', |
1819 | - ['Present', 'False']) |
1820 | - |
1821 | - self.system_settings.main_view.cellular_page.\ |
1822 | - select_single(objectName="singleSim") |
1823 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
1824 | - objectName='multiSim'), raises(StateNotFoundError)) |
1825 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
1826 | - objectName='noSim'), raises(StateNotFoundError)) |
1827 | - |
1828 | - def test_remove_two_sims(self): |
1829 | - self.modem_0.EmitSignal( |
1830 | - SIM_IFACE, |
1831 | - 'PropertyChanged', |
1832 | - 'sv', |
1833 | - ['Present', 'False']) |
1834 | - |
1835 | - self.modem_1.EmitSignal( |
1836 | - SIM_IFACE, |
1837 | - 'PropertyChanged', |
1838 | - 'sv', |
1839 | - ['Present', 'False']) |
1840 | - |
1841 | - self.system_settings.main_view.cellular_page.\ |
1842 | - wait_select_single(objectName="noSim") |
1843 | - self.assertThat( |
1844 | - lambda: self.system_settings.main_view.select_single( |
1845 | - objectName='multiSim'), raises(StateNotFoundError)) |
1846 | - self.assertThat( |
1847 | - lambda: self.system_settings.main_view.select_single( |
1848 | - objectName='singleSim'), raises(StateNotFoundError)) |
1849 | - |
1850 | - def test_remove_and_insert_sims(self): |
1851 | - self.modem_0.EmitSignal( |
1852 | - SIM_IFACE, |
1853 | - 'PropertyChanged', |
1854 | - 'sv', |
1855 | - ['Present', 'False']) |
1856 | - |
1857 | - self.modem_1.EmitSignal( |
1858 | - SIM_IFACE, |
1859 | - 'PropertyChanged', |
1860 | - 'sv', |
1861 | - ['Present', 'False']) |
1862 | - |
1863 | - self.system_settings.main_view.cellular_page.\ |
1864 | - wait_select_single(objectName="noSim") |
1865 | - self.assertThat( |
1866 | - lambda: self.system_settings.main_view.select_single( |
1867 | - objectName='multiSim'), raises(StateNotFoundError)) |
1868 | - self.assertThat( |
1869 | - lambda: self.system_settings.main_view.select_single( |
1870 | - objectName='singleSim'), raises(StateNotFoundError)) |
1871 | - |
1872 | - self.modem_0.EmitSignal( |
1873 | - SIM_IFACE, |
1874 | - 'PropertyChanged', |
1875 | - 'sv', |
1876 | - ['Present', 'True']) |
1877 | - |
1878 | - self.modem_1.EmitSignal( |
1879 | - SIM_IFACE, |
1880 | - 'PropertyChanged', |
1881 | - 'sv', |
1882 | - ['Present', 'True']) |
1883 | - |
1884 | - self.system_settings.main_view.cellular_page.\ |
1885 | - wait_select_single(objectName="multiSim") |
1886 | - self.assertThat( |
1887 | - lambda: self.system_settings.main_view.select_single( |
1888 | - objectName='noSim'), raises(StateNotFoundError)) |
1889 | - self.assertThat( |
1890 | - lambda: self.system_settings.main_view.select_single( |
1891 | - objectName='singleSim'), raises(StateNotFoundError)) |
1892 | - |
1893 | - # regression test for 1375832 |
1894 | - # tests that the second slot only exposes gsm, which |
1895 | - # the testdata indicates |
1896 | - def test_slot_two(self): |
1897 | - self.modem_0.EmitSignal( |
1898 | - SIM_IFACE, |
1899 | - 'PropertyChanged', |
1900 | - 'sv', |
1901 | - ['Present', 'False']) |
1902 | - self.select_preference(PREFERENCE_2G) |
1903 | - self.assertRaises(StateNotFoundError, |
1904 | - self.select_preference, PREFERENCE_UMTS) |
1905 | + |
1906 | + self.assertThat( |
1907 | + lambda: |
1908 | + gsettings.get_value('default-sim-for-messages').get_string(), |
1909 | + Eventually(Equals('/ril_1'))) |
WFM, thanks!
Ran through test plan as well as functional testing on desktop.