Merge lp:~dandrader/unity8/runningApps_lp1193419 into lp:unity8
- runningApps_lp1193419
- Merge into trunk
Status: | Rejected |
---|---|
Rejected by: | Daniel d'Andrada |
Proposed branch: | lp:~dandrader/unity8/runningApps_lp1193419 |
Merge into: | lp:unity8 |
Prerequisite: | lp:~dandrader/unity8/lp1116207 |
Diff against target: |
160 lines (+81/-1) 6 files modified
Dash/DashApps.qml (+1/-0) Dash/DashContent.qml (+1/-0) Dash/GenericScopeView.qml (+3/-0) Shell.qml (+1/-1) tests/mocks/Unity/fake_applications_scope.cpp (+7/-0) tests/qmltests/tst_Shell.qml (+68/-0) |
To merge this branch: | bzr merge lp:~dandrader/unity8/runningApps_lp1193419 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Michael Zanetti (community) | Needs Fixing | ||
PS Jenkins bot (community) | continuous-integration | Approve | |
Review via email: mp+177630@code.launchpad.net |
This proposal supersedes a proposal from 2013-07-19.
Commit message
Reset apps scope when returning from app to dash (LP #1193419)
If an app is on foreground and you perform a long left-edge swipe to minimize it,
and therefore return to the dash, the dash should be in the Applications scope
and showing the running/recents applications.
Description of the change
Fixes bug #1193419.
The fix is a single line change. All the rest is about its regression test.
And no, it should not be an autopilot test. There's no need to have a fully-fledged, live, system to test this bug.
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:130
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:130
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:135
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:135
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:136
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
UNSTABLE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
PASSED: Continuous integration, rev:136
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:137
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
UNSTABLE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:136
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:136
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:136
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:136
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:137
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:137
http://
Executed test runs:
FAILURE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:137
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:137
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:137
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:137
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
Michael Zanetti (mzanetti) wrote : | # |
has conflicts tho...
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:137
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
Daniel d'Andrada (dandrader) wrote : | # |
> has conflicts tho...
Updated.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:302
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Francis Ginther (fginther) wrote : | # |
Re-approving to get a clean run after today's jenkins issues.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:308
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) : | # |
Michael Zanetti (mzanetti) wrote : | # |
Merge has been reverted as it introduces a crash:
Launch an app and minimize it by swiping from the left edge to reproduce.
Also, as this crash only happens when NOT running with --fake, it did not get caught by our tests. Should we add an autopilot test for this?
Daniel d'Andrada (dandrader) wrote : | # |
Unmerged revisions
Preview Diff
1 | === modified file 'Dash/DashApps.qml' |
2 | --- Dash/DashApps.qml 2013-08-19 09:54:10 +0000 |
3 | +++ Dash/DashApps.qml 2013-09-09 14:42:27 +0000 |
4 | @@ -24,6 +24,7 @@ |
5 | |
6 | GenericScopeView { |
7 | id: scopeView |
8 | + objectName: "DashApps" |
9 | |
10 | // FIXME: a way to aggregate these models would be ideal |
11 | property var mainStageApplicationsModel: shell.applicationManager.mainStageApplications |
12 | |
13 | === modified file 'Dash/DashContent.qml' |
14 | --- Dash/DashContent.qml 2013-07-23 09:28:14 +0000 |
15 | +++ Dash/DashContent.qml 2013-09-09 14:42:27 +0000 |
16 | @@ -114,6 +114,7 @@ |
17 | height: ListView.view.height |
18 | asynchronous: true |
19 | source: scopeMapper.map(scope.id) |
20 | + objectName: scope.id + " loader" |
21 | |
22 | // these are needed for autopilot tests |
23 | readonly property string scopeId: scope.id |
24 | |
25 | === modified file 'Dash/GenericScopeView.qml' |
26 | --- Dash/GenericScopeView.qml 2013-09-06 09:36:53 +0000 |
27 | +++ Dash/GenericScopeView.qml 2013-09-09 14:42:27 +0000 |
28 | @@ -29,6 +29,8 @@ |
29 | |
30 | onMovementStarted: categoryView.showHeader() |
31 | |
32 | + onPositionedAtBeginning: categoryView.positionAtBeginning() |
33 | + |
34 | Binding { |
35 | target: scopeView.scope |
36 | property: "searchQuery" |
37 | @@ -45,6 +47,7 @@ |
38 | |
39 | ScopeListView { |
40 | id: categoryView |
41 | + objectName: "categoryListView" |
42 | anchors.fill: parent |
43 | model: scopeView.categories |
44 | forceNoClip: previewLoader.onScreen |
45 | |
46 | === modified file 'Shell.qml' |
47 | --- Shell.qml 2013-09-05 17:36:18 +0000 |
48 | +++ Shell.qml 2013-09-09 14:42:27 +0000 |
49 | @@ -640,7 +640,7 @@ |
50 | } |
51 | onDash: { |
52 | if (stages.shown) { |
53 | - dash.setCurrentScope("applications.scope", true, false) |
54 | + dash.setCurrentScope("applications.scope", true /* animate */, true /* reset */) |
55 | stages.hide(); |
56 | launcher.hide(); |
57 | } |
58 | |
59 | === modified file 'tests/mocks/Unity/fake_applications_scope.cpp' |
60 | --- tests/mocks/Unity/fake_applications_scope.cpp 2013-09-02 20:34:05 +0000 |
61 | +++ tests/mocks/Unity/fake_applications_scope.cpp 2013-09-09 14:42:27 +0000 |
62 | @@ -64,5 +64,12 @@ |
63 | "grid", |
64 | hints); |
65 | |
66 | + dee_model_append(category_model, |
67 | + "outdated", |
68 | + "Outdaded", |
69 | + "gtk-apply", |
70 | + "grid", |
71 | + hints); |
72 | + |
73 | return category_model; |
74 | } |
75 | |
76 | === modified file 'tests/qmltests/tst_Shell.qml' |
77 | --- tests/qmltests/tst_Shell.qml 2013-08-20 22:43:13 +0000 |
78 | +++ tests/qmltests/tst_Shell.qml 2013-09-09 14:42:27 +0000 |
79 | @@ -56,6 +56,18 @@ |
80 | |
81 | function initTestCase() { |
82 | swipeAwayGreeter(); |
83 | + |
84 | + // Ensure DashHome is loaded before continuing |
85 | + var dashContentList = findChild(shell, "dashContentList"); |
86 | + waitForRendering(dashContentList); |
87 | + var homeLoader = findChild(dashContentList, "home.scope loader"); |
88 | + verify(homeLoader); |
89 | + tryCompareFunction(function() {return homeLoader.item !== undefined;}, true); |
90 | + |
91 | + // FIXME: Desperate measure to ensure Jenkins has the scene graph fully loaded |
92 | + // before it calls the test functions (otherwise findChild calls will fail). |
93 | + // The code above just didn't solve it. |
94 | + wait(2000); |
95 | } |
96 | |
97 | function cleanup() { |
98 | @@ -213,6 +225,62 @@ |
99 | tryCompare(dash, "visible", false); |
100 | } |
101 | |
102 | + /* |
103 | + Regression test for bug https://bugs.launchpad.net/touch-preview-images/+bug/1193419 |
104 | + |
105 | + When the user minimizes an application (left-edge swipe) he should always end up in the "Running Apps" |
106 | + category of the "Applications" scope view. |
107 | + |
108 | + Steps: |
109 | + - go to apps lens |
110 | + - scroll to the bottom |
111 | + - reveal launcher and launch an app |
112 | + - perform long left edge swipe to go minimize the app and go back to the dash. |
113 | + |
114 | + Expected Results |
115 | + - apps lens shown and Running Apps visible on screen |
116 | + */ |
117 | + function test_minimizingAppTakesToRunningApps() { |
118 | + var dashApps = findChild(shell, "DashApps"); |
119 | + |
120 | + swipeUntilScopeViewIsReached(dashApps); |
121 | + |
122 | + // swipe finger up until the running/recent apps section (which we assume |
123 | + // it's the first one) is as far from view as possible. |
124 | + // We also assume that DashApps is tall enough that it's scrollable |
125 | + var appsCategoryListView = findChild(dashApps, "categoryListView"); |
126 | + while (!appsCategoryListView.atYEnd) { |
127 | + swipeUpFromCenter(); |
128 | + tryCompare(appsCategoryListView, "moving", false); |
129 | + } |
130 | + |
131 | + // Switch away from the Applications scope. |
132 | + swipeRightFromCenter(); |
133 | + waitUntilItemStopsMoving(dashApps); |
134 | + verify(!itemIsOnScreen(dashApps)); |
135 | + |
136 | + dragLauncherIntoView(); |
137 | + |
138 | + // Launch an app from the launcher |
139 | + tapOnAppIconInLauncher(); |
140 | + |
141 | + waitUntilApplicationWindowIsFullyVisible(); |
142 | + |
143 | + // Minimize the application we just launched |
144 | + swipeFromLeftEdge(); |
145 | + |
146 | + // Wait for the whole UI to settle down |
147 | + waitUntilApplicationWindowIsFullyHidden(); |
148 | + waitUntilItemStopsMoving(dashApps); |
149 | + tryCompare(appsCategoryListView, "moving", false); |
150 | + |
151 | + verify(itemIsOnScreen(dashApps)); |
152 | + |
153 | + var runningApplicationsGrid = findChild(appsCategoryListView, "recent"); |
154 | + verify(runningApplicationsGrid); |
155 | + verify(itemIsOnScreen(runningApplicationsGrid)); |
156 | + } |
157 | + |
158 | // Wait for the whole UI to settle down |
159 | function waitForUIToSettle() { |
160 | waitUntilApplicationWindowIsFullyHidden(); |
FAILED: Continuous integration, rev:130 jenkins. qa.ubuntu. com/job/ unity8- ci/342/ jenkins. qa.ubuntu. com/job/ generic- mediumtests- saucy/1349/ console jenkins. qa.ubuntu. com/job/ unity-phablet- qmluitests- saucy/711/ console jenkins. qa.ubuntu. com/job/ unity8- saucy-armhf- ci/342/ console jenkins. qa.ubuntu. com/job/ unity8- saucy-i386- ci/342/ console jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- saucy/1353/ console
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild: s-jenkins: 8080/job/ unity8- ci/342/ rebuild
http://