Merge lp:~artmello/gallery-app/gallery-app-remove_album_transition into lp:gallery-app
- gallery-app-remove_album_transition
- Merge into trunk
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 995 | ||||
Proposed branch: | lp:~artmello/gallery-app/gallery-app-remove_album_transition | ||||
Merge into: | lp:gallery-app | ||||
Diff against target: |
523 lines (+86/-157) 9 files modified
rc/qml/AlbumEditor/AlbumEditor.qml (+5/-1) rc/qml/AlbumViewer/AlbumViewer.qml (+29/-87) rc/qml/AlbumViewer/AlbumViewerAnimated.qml (+10/-27) rc/qml/AlbumsOverview.qml (+31/-2) rc/qml/MainScreen.qml (+3/-2) rc/qml/MediaViewer/PopupPhotoViewer.qml (+2/-33) tests/autopilot/gallery_app/emulators/album_view.py (+5/-0) tests/autopilot/gallery_app/tests/__init__.py (+0/-4) tests/autopilot/gallery_app/tests/test_album_editor.py (+1/-1) |
||||
To merge this branch: | bzr merge lp:~artmello/gallery-app/gallery-app-remove_album_transition | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot | continuous-integration | Approve | |
Ubuntu Phablet Team | Pending | ||
Review via email:
|
Commit message
Remove album opening/closing transition to reduce load timer on devices.
Description of the change
Remove album opening/closing transition to reduce load timer on devices.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
- 1000. By Arthur Mello
-
Fix AP test check for AlbumViewer fully open
- 1001. By Arthur Mello
-
Fix AP test changing check for AlbumViewerAnimated close by AlbumViewer close
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:1001
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Arthur Mello (artmello) wrote : | # |
Are there any related MPs required for this MP to build/function as expected? Please list: No
Is your branch in sync with latest trunk (e.g. bzr pull lp:trunk -> no changes): Yes
Did you perform an exploratory manual test run of your code change and any related functionality on device or emulator?: Yes
Did you successfully run all tests found in your component's Test Plan (https:/
If you changed the UI, was the change specified/approved by design? No UI changes.
If you changed the packaging (debian), did you subscribe a core-dev to this MP? No packaging changes.
Preview Diff
1 | === modified file 'rc/qml/AlbumEditor/AlbumEditor.qml' |
2 | --- rc/qml/AlbumEditor/AlbumEditor.qml 2014-05-20 09:34:10 +0000 |
3 | +++ rc/qml/AlbumEditor/AlbumEditor.qml 2014-06-10 19:01:57 +0000 |
4 | @@ -205,7 +205,11 @@ |
5 | coverMenu.hide(); |
6 | } |
7 | |
8 | - onAddPhotos: overview.pushPage(mediaSelectorComponent); |
9 | + onAddPhotos: { |
10 | + if (isTextEditing) |
11 | + cover.editingDone(); |
12 | + overview.pushPage(mediaSelectorComponent); |
13 | + } |
14 | } |
15 | } |
16 | |
17 | |
18 | === modified file 'rc/qml/AlbumViewer/AlbumViewer.qml' |
19 | --- rc/qml/AlbumViewer/AlbumViewer.qml 2014-05-22 07:35:58 +0000 |
20 | +++ rc/qml/AlbumViewer/AlbumViewer.qml 2014-06-10 19:01:57 +0000 |
21 | @@ -45,13 +45,20 @@ |
22 | /*! |
23 | */ |
24 | property bool animationRunning: albumSpreadViewer.isFlipping || |
25 | - removeCrossfadeAnimation.running || |
26 | - albumSpreadViewerForTransition.freeze || |
27 | photoViewerLoader.animationRunning |
28 | |
29 | property string mediaCurrentlyInView |
30 | StateSaver.properties: "mediaCurrentlyInView" |
31 | |
32 | + /// Indicates if this view is open |
33 | + property bool isOpen: false |
34 | + /// Origin (rectangle) where this view is animated from when calling open() |
35 | + /// And where it is animated to when this view is closed |
36 | + property variant origin |
37 | + /// The preview item that was used to open the view, or null, if it was opend another way |
38 | + /// This item will be hidden when this view is opened. And shown again after closing this view |
39 | + property Item previewItem: null |
40 | + |
41 | function reopenPicture() { |
42 | if (album && albumViewer.mediaCurrentlyInView !== "") { |
43 | for (var i in album.allMediaSources) { |
44 | @@ -82,6 +89,25 @@ |
45 | } |
46 | } |
47 | |
48 | + onCloseRequested: { |
49 | + if (origin) { |
50 | + if (album) |
51 | + album.closed = !stayOpen || (viewingPage == 0); |
52 | + if (previewItem) |
53 | + previewItem.visible = true |
54 | + } |
55 | + visible = false |
56 | + overview.popPage(); |
57 | + isOpen = false |
58 | + } |
59 | + onQuickCloseRequested: { |
60 | + visible = false |
61 | + overview.popPage(); |
62 | + isOpen = false |
63 | + if (previewItem) |
64 | + previewItem.visible = true; |
65 | + } |
66 | + |
67 | // When the user clicks the back button or pages back to the cover. |
68 | signal closeRequested(bool stayOpen, int viewingPage) |
69 | // When the user clicks the back button or pages back to the cover. |
70 | @@ -94,15 +120,6 @@ |
71 | source: "../../img/background-paper.png" |
72 | } |
73 | |
74 | - function crossfadeRemove() { |
75 | - removeCrossfadeAnimation.restart(); |
76 | - } |
77 | - |
78 | - function fadeOutAndFlipRemove(flipToPage) { |
79 | - fadeOutAnimation.flipToPage = flipToPage; |
80 | - fadeOutAnimation.restart(); |
81 | - } |
82 | - |
83 | /// Closes the view as stores the page number the page number currently viewed |
84 | function __close() { |
85 | closeRequested(album.containedCount > 0, albumSpreadViewer.viewingPage) |
86 | @@ -113,51 +130,6 @@ |
87 | quickCloseRequested() |
88 | } |
89 | |
90 | - FadeOutAnimation { |
91 | - id: fadeOutAnimation |
92 | - |
93 | - property int flipToPage: 0 |
94 | - |
95 | - target: isPortrait ? albumSpreadViewerForTransition.rightPageComponent : |
96 | - albumSpreadViewerForTransition.leftPageComponent |
97 | - duration: 200 |
98 | - easingType: Easing.Linear |
99 | - |
100 | - onRunningChanged: { |
101 | - if (running) |
102 | - return; |
103 | - |
104 | - flipTimer.restart() |
105 | - |
106 | - albumSpreadViewerForTransition.flipTo(flipToPage); |
107 | - albumSpreadViewer.flipTo(flipToPage); |
108 | - } |
109 | - } |
110 | - |
111 | - Timer { |
112 | - id: flipTimer |
113 | - |
114 | - interval: albumSpreadViewer.duration |
115 | - |
116 | - onTriggered: albumSpreadViewerForTransition.freeze = false |
117 | - } |
118 | - |
119 | - DissolveAnimation { |
120 | - id: removeCrossfadeAnimation |
121 | - |
122 | - duration: 200 |
123 | - fadeOutTarget: albumSpreadViewerForTransition |
124 | - fadeInTarget: albumSpreadViewer |
125 | - easingType: Easing.Linear |
126 | - |
127 | - onRunningChanged: { |
128 | - if (running) |
129 | - return; |
130 | - |
131 | - albumSpreadViewerForTransition.freeze = false; |
132 | - } |
133 | - } |
134 | - |
135 | function resetView(album) { |
136 | albumViewer.album = album; |
137 | |
138 | @@ -172,31 +144,6 @@ |
139 | overview.pushPage(component_mediaSelector); |
140 | } |
141 | |
142 | - // Used for the cross-fade transition. |
143 | - AlbumSpreadViewer { |
144 | - id: albumSpreadViewerForTransition |
145 | - |
146 | - anchors.fill: parent |
147 | - album: albumViewer.album |
148 | - z: 100 |
149 | - visible: freeze |
150 | - load: parent.visible && freeze |
151 | - |
152 | - Connections { |
153 | - target: albumSpreadViewer |
154 | - |
155 | - onViewingPageChanged: { |
156 | - if (!albumSpreadViewerForTransition.freeze) |
157 | - albumSpreadViewerForTransition.flipTo(albumSpreadViewer.viewingPage); |
158 | - } |
159 | - } |
160 | - |
161 | - onFreezeChanged: { |
162 | - if (!freeze) |
163 | - flipTo(albumSpreadViewer.viewingPage); |
164 | - } |
165 | - } |
166 | - |
167 | AlbumSpreadViewer { |
168 | id: albumSpreadViewer |
169 | objectName: "spreadViewer" |
170 | @@ -209,7 +156,7 @@ |
171 | // Keyboard focus while visible and viewer is not visible |
172 | focus: visible |
173 | |
174 | - showCover: !albumSpreadViewerForTransition.freeze |
175 | + showCover: true |
176 | |
177 | Keys.onPressed: { |
178 | if (event.key !== Qt.Key_Left && event.key !== Qt.Key_Right) |
179 | @@ -223,8 +170,6 @@ |
180 | albumSpreadViewer.isPopulatedContentPage(destination)) { |
181 | chrome.hide(true); |
182 | |
183 | - albumSpreadViewerForTransition.flipTo(destination); |
184 | - |
185 | event.accepted = true; |
186 | } |
187 | } |
188 | @@ -366,7 +311,6 @@ |
189 | |
190 | onOpened: { |
191 | overview.pushPage(target); |
192 | - albumSpreadViewer.visible = false; |
193 | } |
194 | onCloseRequested: { |
195 | albumViewer.mediaCurrentlyInView = ""; |
196 | @@ -376,12 +320,10 @@ |
197 | albumSpreadViewer.viewingPage = isPortrait? page : albumViewer.album.currentPage; |
198 | } |
199 | |
200 | - albumSpreadViewer.visible = true; |
201 | photoViewerLoader.item.fadeClosed(); |
202 | } |
203 | onClosed: { |
204 | overview.popPage(); |
205 | - source = ""; |
206 | } |
207 | |
208 | } |
209 | |
210 | === modified file 'rc/qml/AlbumViewer/AlbumViewerAnimated.qml' |
211 | --- rc/qml/AlbumViewer/AlbumViewerAnimated.qml 2014-05-20 15:19:35 +0000 |
212 | +++ rc/qml/AlbumViewer/AlbumViewerAnimated.qml 2014-06-10 19:01:57 +0000 |
213 | @@ -36,10 +36,7 @@ |
214 | /// This item will be hidden when this view is opened. And shown again after closing this view |
215 | property Item previewItem: null |
216 | /// Is true if the opne or close animation is running |
217 | - property bool animationRunning: loader_albumViewer.status === Loader.Ready ? |
218 | - loader_albumViewer.item.albumViewerTransition.animationRunning || |
219 | - loader_albumViewer.item.albumViewer.animationRunning |
220 | - : false |
221 | + property bool animationRunning: false |
222 | /// Indicates if this view is open |
223 | property bool isOpen: false |
224 | |
225 | @@ -49,8 +46,10 @@ |
226 | if (album.currentPage < 0) |
227 | album.currentPage = 1 |
228 | loader_albumViewer.item.albumViewer.album = album |
229 | - if (root.origin) |
230 | - loader_albumViewer.item.albumViewerTransition.transitionToAlbumViewer(root.album, root.origin); |
231 | + if (root.origin) { |
232 | + loader_albumViewer.item.albumViewer.visible = true |
233 | + overview.pushPage(loader_albumViewer.item.albumViewer); |
234 | + } |
235 | else |
236 | loader_albumViewer.item.albumViewer.visible = true |
237 | if (previewItem) |
238 | @@ -62,7 +61,6 @@ |
239 | Item { |
240 | id: viewerItem |
241 | property alias albumViewer: inner_albumViewer |
242 | - property alias albumViewerTransition: inner_albumViewerTransition |
243 | |
244 | Rectangle { |
245 | id: overviewGlass |
246 | @@ -80,8 +78,11 @@ |
247 | |
248 | onCloseRequested: { |
249 | if (root.origin) { |
250 | - inner_albumViewerTransition.transitionFromAlbumViewer( |
251 | - album, root.origin, stayOpen, viewingPage); |
252 | + if (album) |
253 | + album.closed = !stayOpen || (viewingPage == 0); |
254 | + if (previewItem) |
255 | + previewItem.visible = true |
256 | + loader_albumViewer.unload() |
257 | } |
258 | inner_albumViewer.visible = false |
259 | overview.popPage(); |
260 | @@ -96,24 +97,6 @@ |
261 | loader_albumViewer.unload(); |
262 | } |
263 | } |
264 | - |
265 | - AlbumViewerTransition { |
266 | - id: inner_albumViewerTransition |
267 | - |
268 | - anchors.fill: inner_albumViewer |
269 | - backgroundGlass: overviewGlass |
270 | - isPortrait: application.isPortrait |
271 | - |
272 | - onTransitionToAlbumViewerCompleted: { |
273 | - inner_albumViewer.visible = true |
274 | - overview.pushPage(inner_albumViewer); |
275 | - } |
276 | - onTransitionFromAlbumViewerCompleted: { |
277 | - if (previewItem) |
278 | - previewItem.visible = true |
279 | - loader_albumViewer.unload() |
280 | - } |
281 | - } |
282 | } |
283 | } |
284 | Loader { |
285 | |
286 | === modified file 'rc/qml/AlbumsOverview.qml' |
287 | --- rc/qml/AlbumsOverview.qml 2014-05-20 12:15:41 +0000 |
288 | +++ rc/qml/AlbumsOverview.qml 2014-06-10 19:01:57 +0000 |
289 | @@ -32,16 +32,31 @@ |
290 | StateSaver.properties: "albumCurrentlyInView" |
291 | |
292 | Component.onCompleted: { |
293 | + /* FIXME: Does not working after PageStack |
294 | if (albumCurrentlyInView != -1) { |
295 | for (var i = 0; i < albumCollectionModel.count; i++) { |
296 | if (albumCollectionModel.getAt(i).id == albumCurrentlyInView) { |
297 | + if (albumCollectionModel.getAt(i).currentPage < 0) |
298 | + albumCollectionModel.getAt(i).currentPage = 1 |
299 | + |
300 | albumViewer.album = albumCollectionModel.getAt(i); |
301 | root.visible = false; |
302 | - albumViewer.open(); |
303 | + |
304 | + if (albumViewer.origin) { |
305 | + albumViewer.visible = true |
306 | + overview.pushPage(albumViewer); |
307 | + } |
308 | + else |
309 | + albumViewer.visible = true |
310 | + |
311 | + if (albumViewer.previewItem) |
312 | + albumViewer.previewItem.visible = false |
313 | + |
314 | return; |
315 | } |
316 | } |
317 | } |
318 | + */ |
319 | } |
320 | |
321 | onActiveChanged: { |
322 | @@ -144,12 +159,26 @@ |
323 | } |
324 | |
325 | onActivated: { |
326 | + if (object.currentPage < 0) |
327 | + object.currentPage = 1 |
328 | + |
329 | albumCurrentlyInView = object.id |
330 | albumViewer.album = object |
331 | albumViewer.origin = root.getRectOfAlbumPreview(object, albumViewer) |
332 | albumViewer.previewItem = activatingItem |
333 | root.visible = false; |
334 | - albumViewer.open() |
335 | + |
336 | + if (albumViewer.origin) { |
337 | + if (header.visible) |
338 | + header.visible = false; |
339 | + albumViewer.visible = true; |
340 | + overview.pushPage(albumViewer); |
341 | + } |
342 | + else |
343 | + albumViewer.visible = true |
344 | + |
345 | + if (albumViewer.previewItem) |
346 | + albumViewer.previewItem.visible = false |
347 | } |
348 | |
349 | Rectangle { |
350 | |
351 | === modified file 'rc/qml/MainScreen.qml' |
352 | --- rc/qml/MainScreen.qml 2014-05-19 12:33:10 +0000 |
353 | +++ rc/qml/MainScreen.qml 2014-06-10 19:01:57 +0000 |
354 | @@ -184,10 +184,11 @@ |
355 | } |
356 | } |
357 | |
358 | - AlbumViewerAnimated { |
359 | + AlbumViewer { |
360 | id: albumViewer |
361 | - objectName: "albumViewerAnimated" |
362 | + objectName: "albumViewer" |
363 | anchors.fill: parent |
364 | + visible: false |
365 | onIsOpenChanged: if (!isOpen) albumsCheckerboardLoader.item.albumCurrentlyInView = -1 |
366 | } |
367 | |
368 | |
369 | === modified file 'rc/qml/MediaViewer/PopupPhotoViewer.qml' |
370 | --- rc/qml/MediaViewer/PopupPhotoViewer.qml 2014-05-19 12:33:10 +0000 |
371 | +++ rc/qml/MediaViewer/PopupPhotoViewer.qml 2014-06-10 19:01:57 +0000 |
372 | @@ -26,15 +26,9 @@ |
373 | id: popupPhotoViewer |
374 | |
375 | anchors.fill: parent |
376 | - /*! |
377 | - */ |
378 | property alias model: viewer.model |
379 | |
380 | - /*! |
381 | - */ |
382 | property alias photo: viewer.media |
383 | - /*! |
384 | - */ |
385 | property alias index: viewer.index |
386 | |
387 | // Optional: set this when launching from an album view |
388 | @@ -43,8 +37,6 @@ |
389 | // Read-only |
390 | property bool animationRunning: transition.animationRunning || |
391 | fadeIn.running || fadeOut.running |
392 | - /*! |
393 | - */ |
394 | property bool isPoppedUp: popupPhotoViewer.visible && viewer.visible && !animationRunning |
395 | |
396 | // updating active will automatically set the tools of the toolbar when activating. |
397 | @@ -63,71 +55,48 @@ |
398 | |
399 | title: i18n.tr("Gallery") |
400 | |
401 | - /*! |
402 | - */ |
403 | function setCurrentPhoto(photo) { |
404 | viewer.setCurrentPhoto(photo); |
405 | } |
406 | |
407 | - /*! |
408 | - */ |
409 | function setCurrentIndex(index) { |
410 | viewer.setCurrentIndex(index); |
411 | } |
412 | |
413 | - /*! |
414 | - */ |
415 | signal opening() |
416 | - /*! |
417 | - */ |
418 | signal opened() // The photo viewer's opening animation is finished. |
419 | - /*! |
420 | - */ |
421 | signal closeRequested() // The user pressed the back button. Call animateClosed() or close(). |
422 | - /*! |
423 | - */ |
424 | signal closed() // The photo viewer's closing animation is finished. |
425 | - /*! |
426 | - */ |
427 | signal editRequested(variant photo) // The user wants to edit this photo. |
428 | |
429 | - /*! |
430 | - */ |
431 | function animateOpen(photo, thumbnailRect) { |
432 | opening(); |
433 | viewer.openCompleted = false; |
434 | transition.transitionToPhotoViewer(photo, thumbnailRect); |
435 | } |
436 | |
437 | - /*! |
438 | - */ |
439 | function animateClosed(thumbnailRect) { |
440 | transition.transitionFromPhotoViewer(photo, thumbnailRect); |
441 | viewer.visible = false; |
442 | } |
443 | |
444 | - /*! |
445 | - */ |
446 | function fadeOpen(photo) { |
447 | opening(); |
448 | viewer.setCurrentPhoto(photo); |
449 | fadeIn.restart(); |
450 | } |
451 | |
452 | - /*! |
453 | - */ |
454 | function fadeClosed() { |
455 | fadeOut.restart(); |
456 | } |
457 | |
458 | - /*! |
459 | - */ |
460 | function close() { |
461 | viewer.visible = false; |
462 | closed(); |
463 | } |
464 | |
465 | tools: viewer.tools |
466 | + |
467 | MediaViewer { |
468 | id: viewer |
469 | |
470 | @@ -163,8 +132,8 @@ |
471 | onTransitionToPhotoViewerCompleted: { |
472 | setCurrentPhoto(forMediaSource); |
473 | viewer.openCompleted = true; |
474 | - opened(); |
475 | overview.pushPage(popupPhotoViewer); |
476 | + opened(); |
477 | viewer.playVideo(); |
478 | } |
479 | |
480 | |
481 | === modified file 'tests/autopilot/gallery_app/emulators/album_view.py' |
482 | --- tests/autopilot/gallery_app/emulators/album_view.py 2014-05-01 15:27:13 +0000 |
483 | +++ tests/autopilot/gallery_app/emulators/album_view.py 2014-06-10 19:01:57 +0000 |
484 | @@ -73,6 +73,11 @@ |
485 | animated_viewer.isOpen.wait_for(False) |
486 | animated_viewer.animationRunning.wait_for(False) |
487 | |
488 | + def ensure_album_view_fully_closed(self): |
489 | + """Ensure the album view is fully closed""" |
490 | + view = self.get_album_view() |
491 | + view.visible.wait_for(False) |
492 | + |
493 | def ensure_media_selector_is_fully_closed(self): |
494 | """Ensure media selector is fully closed""" |
495 | loader = self.media_selector_loader() |
496 | |
497 | === modified file 'tests/autopilot/gallery_app/tests/__init__.py' |
498 | --- tests/autopilot/gallery_app/tests/__init__.py 2014-05-20 15:19:35 +0000 |
499 | +++ tests/autopilot/gallery_app/tests/__init__.py 2014-06-10 19:01:57 +0000 |
500 | @@ -271,10 +271,6 @@ |
501 | self.open_album_at(-1) |
502 | |
503 | def ensure_view_is_fully_open(self): |
504 | - animated_view = self.album_view.get_animated_album_view() |
505 | - self.assertThat(animated_view.isOpen, Eventually(Equals(True))) |
506 | - self.assertThat(animated_view.animationRunning, |
507 | - Eventually(Equals(False))) |
508 | view = self.album_view.get_album_view() |
509 | self.assertThat(view.visible, Eventually(Equals(True))) |
510 | |
511 | |
512 | === modified file 'tests/autopilot/gallery_app/tests/test_album_editor.py' |
513 | --- tests/autopilot/gallery_app/tests/test_album_editor.py 2014-05-21 06:38:11 +0000 |
514 | +++ tests/autopilot/gallery_app/tests/test_album_editor.py 2014-06-10 19:01:57 +0000 |
515 | @@ -95,7 +95,7 @@ |
516 | num_photos_start = self.album_view.number_of_photos() |
517 | self.assertThat(num_photos_start, Equals(1)) |
518 | self.main_view.open_toolbar().click_button("backButton") |
519 | - self.album_view.ensure_animated_fully_closed() |
520 | + self.album_view.ensure_album_view_fully_closed() |
521 | |
522 | # now open to add a photo |
523 | self.main_view.close_toolbar() |
FAILED: Continuous integration, rev:999 jenkins. qa.ubuntu. com/job/ gallery- app-ci/ 862/ jenkins. qa.ubuntu. com/job/ gallery- app-utopic- amd64-ci/ 37 jenkins. qa.ubuntu. com/job/ gallery- app-utopic- armhf-ci/ 37 jenkins. qa.ubuntu. com/job/ gallery- app-utopic- armhf-ci/ 37/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ gallery- app-utopic- i386-ci/ 37 jenkins. qa.ubuntu. com/job/ generic- click-autopilot -utopic- touch/76 jenkins. qa.ubuntu. com/job/ generic- mediumtests- utopic/ 726 jenkins. qa.ubuntu. com/job/ generic- click-autopilot -runner- mako/228 jenkins. qa.ubuntu. com/job/ generic- click-builder- utopic- armhf/110 s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 8291 jenkins. qa.ubuntu. com/job/ autopilot- testrunner- otto-utopic/ 648 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- amd64/865 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- amd64/865/ artifact/ work/output/ *zip*/output. zip
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/gallery- app-ci/ 862/rebuild
http://