on xenial help sign in
Fix qmluitests
710f892Michael Terry
qml/Greeter/Greeter.qml+52−53
@@ -60,6 +60,58 @@ Showable {
60 onRunningChanged: if (!__rightHideAnimation.running) greeter.hideAnimation = __leftHideAnimation
60 onRunningChanged: if (!__rightHideAnimation.running) greeter.hideAnimation = __leftHideAnimation
61 }
61 }
62
62
63+ // Bi-directional revealer
64+ DraggingArea {
65+ id: dragHandle
66+ anchors.fill: parent
67+ enabled: greeter.narrowMode || !greeter.locked
68+ orientation: Qt.Horizontal
69+ propagateComposedEvents: true
70+
71+ Component.onCompleted: {
72+ // set evaluators to baseline of dragValue == 0
73+ leftEvaluator.reset()
74+ rightEvaluator.reset()
75+ }
76+
77+ function maybeTease() {
78+ if (!greeter.locked || greeter.narrowMode)
79+ greeter.tease();
80+ }
81+
82+ onClicked: maybeTease()
83+ onDragStart: maybeTease()
84+ onPressAndHold: {} // eat event, but no need to tease, as drag will cover it
85+
86+ onDragEnd: {
87+ if (rightEvaluator.shouldAutoComplete())
88+ greeter.hideRight()
89+ else if (leftEvaluator.shouldAutoComplete())
90+ greeter.hide();
91+ else
92+ greeter.show(); // undo drag
93+ }
94+
95+ onDragValueChanged: {
96+ // dragValue is kept as a "step" value since we do this x adjusting on the fly
97+ greeter.x += dragValue
98+ }
99+
100+ EdgeDragEvaluator {
101+ id: rightEvaluator
102+ trackedPosition: dragHandle.dragValue + greeter.x
103+ maxDragDistance: parent.width
104+ direction: Direction.Rightwards
105+ }
106+
107+ EdgeDragEvaluator {
108+ id: leftEvaluator
109+ trackedPosition: dragHandle.dragValue + greeter.x
110+ maxDragDistance: parent.width
111+ direction: Direction.Leftwards
112+ }
113+ }
114+
63 Loader {
115 Loader {
64 id: greeterContentLoader
116 id: greeterContentLoader
65 objectName: "greeterContentLoader"
117 objectName: "greeterContentLoader"
@@ -117,59 +169,6 @@ Showable {
117 duration: UbuntuAnimation.SleepyDuration
169 duration: UbuntuAnimation.SleepyDuration
118 }
170 }
119 }
171 }
120−
121− }
122−
123− // Bi-directional revealer
124− DraggingArea {
125− id: dragHandle
126− anchors.fill: greeterContentLoader
127− enabled: greeter.narrowMode || !greeter.locked
128− orientation: Qt.Horizontal
129− propagateComposedEvents: true
130−
131− Component.onCompleted: {
132− // set evaluators to baseline of dragValue == 0
133− leftEvaluator.reset()
134− rightEvaluator.reset()
135− }
136−
137− function maybeTease() {
138− if (!greeter.locked || greeter.narrowMode)
139− greeter.tease();
140− }
141−
142− onClicked: maybeTease()
143− onDragStart: maybeTease()
144− onPressAndHold: {} // eat event, but no need to tease, as drag will cover it
145−
146− onDragEnd: {
147− if (rightEvaluator.shouldAutoComplete())
148− greeter.hideRight()
149− else if (leftEvaluator.shouldAutoComplete())
150− greeter.hide();
151− else
152− greeter.show(); // undo drag
153− }
154−
155− onDragValueChanged: {
156− // dragValue is kept as a "step" value since we do this x adjusting on the fly
157− greeter.x += dragValue
158− }
159−
160− EdgeDragEvaluator {
161− id: rightEvaluator
162− trackedPosition: dragHandle.dragValue + greeter.x
163− maxDragDistance: parent.width
164− direction: Direction.Rightwards
165− }
166−
167− EdgeDragEvaluator {
168− id: leftEvaluator
169− trackedPosition: dragHandle.dragValue + greeter.x
170− maxDragDistance: parent.width
171− direction: Direction.Leftwards
172− }
173 }
172 }
174
173
175 // right side shadow
174 // right side shadow
qml/Greeter/GreeterContent.qml+1−1
@@ -20,7 +20,7 @@ import Ubuntu.Components 0.1
20import LightDM 0.1 as LightDM
20import LightDM 0.1 as LightDM
21import "../Components"
21import "../Components"
22
22
23−MouseArea {
23+Item {
24 id: root
24 id: root
25 anchors.fill: parent
25 anchors.fill: parent
26
26
qml/Greeter/Infographics.qml+3
@@ -457,5 +457,8 @@ Item {
457 !circleGrowAnimTimer.running)
457 !circleGrowAnimTimer.running)
458 infographic.model.nextDataSource()
458 infographic.model.nextDataSource()
459 }
459 }
460+
461+ onClicked: mouse.accepted = false
462+ onPressed: mouse.accepted = false
460 }
463 }
461}
464}
qml/Shell.qml+2−2
@@ -195,8 +195,8 @@ FocusScope {
195
195
196 available: !greeter.shown && !lockscreen.shown
196 available: !greeter.shown && !lockscreen.shown
197 hides: [stages, launcher, panel.indicators]
197 hides: [stages, launcher, panel.indicators]
198− shown: disappearingAnimationProgress !== 1.0
198+ shown: disappearingAnimationProgress !== 1.0 && greeter.showProgress !== 1.0
199− enabled: disappearingAnimationProgress === 0.0 && edgeDemo.dashEnabled
199+ enabled: disappearingAnimationProgress === 0.0 && greeter.showProgress === 0.0 && edgeDemo.dashEnabled
200 // FIXME: unfocus all applications when going back to the dash
200 // FIXME: unfocus all applications when going back to the dash
201 onEnabledChanged: {
201 onEnabledChanged: {
202 if (enabled) {
202 if (enabled) {
tests/qmltests/Greeter/tst_Phone.qml+10−50
@@ -61,6 +61,12 @@ Item {
61 signalName: "unlocked"
61 signalName: "unlocked"
62 }
62 }
63
63
64+ SignalSpy {
65+ id: teaseSpy
66+ target: greeter
67+ signalName: "tease"
68+ }
69+
64 UT.UnityTestCase {
70 UT.UnityTestCase {
65 name: "Greeter"
71 name: "Greeter"
66 when: windowShown
72 when: windowShown
@@ -82,56 +88,10 @@ Item {
82 }
88 }
83
89
84 function test_teasingArea(data) {
90 function test_teasingArea(data) {
85− tryCompare(greeter, "leftTeaserPressed", false)
91+ teaseSpy.clear()
86− tryCompare(greeter, "rightTeaserPressed", false)
87− mousePress(greeter, data.posX, greeter.height - units.gu(1))
88− tryCompare(greeter, "leftTeaserPressed", data.leftPressed)
89− tryCompare(greeter, "rightTeaserPressed", data.rightPressed)
90− mouseRelease(greeter, data.posX, greeter.height - units.gu(1))
91− tryCompare(greeter, "leftTeaserPressed", false)
92− tryCompare(greeter, "rightTeaserPressed", false)
93− }
94−
95− function test_teaseLockedUnlocked_data() {
96− return [
97− {tag: "unlocked", locked: false, moved: false},
98− {tag: "locked", locked: true, moved: false},
99− {tag: "moved", locked: false, moved: true}
100− ];
101− }
102−
103− function test_teaseLockedUnlocked(data) {
104− tryCompare(greeter, "rightTeaserPressed", false);
105− tryCompare(greeter, "x", 0);
106− greeter.locked = data.locked;
107−
108− // simulate greeter being in the middle of a swipe
109− if (data.moved) {
110− greeter.x = -units.gu(4);
111− tryCompare(greeter, "x", -units.gu(4));
112− }
113−
114− mouseClick(greeter, greeter.width - units.gu(5), greeter.height - units.gu(1));
92+ mouseClick(greeter, data.posX, greeter.height - units.gu(1))
115− greeter.minX = 0; // This is needed because the transition actually makes x jump once before animating
116−
117− if (!data.moved) {
118− // Check if it has been moved over by 2 GUs. Give it a 2 pixel grace area
119− // because animation duration and teaseTimer are the same duration and
120− // might cause slight offsets
121− tryCompareFunction(function() { return greeter.minX <= -units.gu(2) + 2}, true);
122− } else {
123− // waiting 100ms to make sure nothing moves
124− wait(100);
93+ teaseSpy.wait()
125− compare(greeter.minX, 0, "Greeter teasing not disabled even though it's locked or moving.");
94+ tryCompare(teaseSpy, "count", 1)
126− }
127−
128− // Restore position in case we moved it for the test
129− if (data.moved) {
130− greeter.x = 0;
131− }
132−
133− // Wait until we're back to 0
134− tryCompareFunction(function() { return greeter.x;}, 0);
135 }
95 }
136
96
137 function test_statsWelcomeScreen() {
97 function test_statsWelcomeScreen() {
tests/qmltests/Greeter/tst_Tablet.qml+36−8
@@ -54,6 +54,12 @@ Item {
54 signalName: "selected"
54 signalName: "selected"
55 }
55 }
56
56
57+ SignalSpy {
58+ id: teaseSpy
59+ target: greeter
60+ signalName: "tease"
61+ }
62+
57 UT.UnityTestCase {
63 UT.UnityTestCase {
58 name: "Greeter"
64 name: "Greeter"
59 when: windowShown
65 when: windowShown
@@ -325,14 +331,36 @@ Item {
325 }
331 }
326
332
327 function test_teasingArea(data) {
333 function test_teasingArea(data) {
328− tryCompare(greeter, "leftTeaserPressed", false)
334+ teaseSpy.clear()
329− tryCompare(greeter, "rightTeaserPressed", false)
330− mousePress(greeter, data.posX, greeter.height - units.gu(1))
335+ mouseClick(greeter, data.posX, greeter.height - units.gu(1))
331− tryCompare(greeter, "leftTeaserPressed", data.leftPressed)
336+ teaseSpy.wait()
332− tryCompare(greeter, "rightTeaserPressed", data.rightPressed)
337+ tryCompare(teaseSpy, "count", 1)
338+ }
339+
340+ function test_teaseLockedUnlocked_data() {
341+ return [
342+ {tag: "unlocked", locked: false, narrow: false},
343+ {tag: "locked", locked: true, narrow: false},
344+ ];
345+ }
346+
347+ function test_teaseLockedUnlocked(data) {
348+ teaseSpy.clear()
349+ greeter.locked = data.locked;
350+
333− mouseRelease(greeter, data.posX, greeter.height - units.gu(1))
351+ mouseClick(greeter, greeter.width - units.gu(5), greeter.height - units.gu(1));
334− tryCompare(greeter, "leftTeaserPressed", false)
352+
335− tryCompare(greeter, "rightTeaserPressed", false)
353+ if (!data.locked || data.narrow) {
354+ teaseSpy.wait()
355+ tryCompare(teaseSpy, "count", 1);
356+ } else {
357+ // waiting 100ms to make sure nothing happens
358+ wait(100);
359+ compare(teaseSpy.count, 0, "Greeter teasing not disabled even though it's locked.");
360+ }
361+
362+ // Reset value
363+ greeter.locked = false;
336 }
364 }
337
365
338 function test_dbus_set_active_entry() {
366 function test_dbus_set_active_entry() {