Merge lp:~dandrader/unity8/runningApps_lp1193419 into lp:unity8

Proposed by Daniel d'Andrada
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
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.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Approve (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Michael Zanetti (mzanetti) wrote :

lgtm

review: Approve
Revision history for this message
Michael Zanetti (mzanetti) wrote :

has conflicts tho...

review: Needs Fixing
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

> has conflicts tho...

Updated.

Revision history for this message
Michael Zanetti (mzanetti) wrote :

lgtm

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Francis Ginther (fginther) wrote :

Re-approving to get a clean run after today's jenkins issues.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)
Revision history for this message
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?

review: Needs Fixing
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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();

Subscribers

People subscribed via source and target branches