Memory usage and load time of new tab view on mobile is proportional to number of bookmarks
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical System Image |
In Progress
|
Medium
|
Bill Filler | ||
webbrowser-app (Ubuntu) |
In Progress
|
Medium
|
Ugo Riboni |
Bug Description
In the mobile version of the new tab view, when the "more" button is activated, a view of all the bookmark folders is revealed.
Each bookmark folder is implemented as a Column with a Repeater inside, creating one Loader item for each bookmark in the folder.
Even if most of the Loaders remain inactive they still have a memory and initialization time cost, therefore the memory usage and initialization time of this view raises proportionally to the number of bookmarks in the database.
If the entire view could use instead a single ListView with one section per bookmark, then these costs would be avoided since the ListView maintains only delegates for the items that are visible at the moment.
This would likely require empty folders to be hidden, since the ListView can only create sections when there is at least one item in that section.
Related branches
- system-apps-ci-bot: Needs Fixing (continuous-integration)
- PS Jenkins bot: Approve (continuous-integration)
- Ubuntu Phablet Team: Pending requested
-
Diff: 2398 lines (+1610/-331)20 files modifiedsrc/app/webbrowser/BookmarksFoldersView.qml (+92/-156)
src/app/webbrowser/BookmarksView.qml (+3/-3)
src/app/webbrowser/CMakeLists.txt (+1/-0)
src/app/webbrowser/NewTabView.qml (+9/-7)
src/app/webbrowser/bookmarks-model.cpp (+1/-1)
src/app/webbrowser/collapsible-bookmarks-model.cpp (+572/-0)
src/app/webbrowser/collapsible-bookmarks-model.h (+98/-0)
src/app/webbrowser/webbrowser-app.cpp (+2/-0)
tests/autopilot/webbrowser_app/emulators/browser.py (+83/-43)
tests/autopilot/webbrowser_app/tests/__init__.py (+1/-6)
tests/autopilot/webbrowser_app/tests/test_bookmark_options.py (+33/-29)
tests/autopilot/webbrowser_app/tests/test_new_tab_view.py (+43/-77)
tests/autopilot/webbrowser_app/tests/test_private.py (+4/-2)
tests/autopilot/webbrowser_app/tests/test_site_previews.py (+1/-1)
tests/unittests/CMakeLists.txt (+1/-0)
tests/unittests/collapsible-bookmarks-model/CMakeLists.txt (+13/-0)
tests/unittests/collapsible-bookmarks-model/tst_CollapsibleBookmarksModelTests.cpp (+645/-0)
tests/unittests/qml/CMakeLists.txt (+1/-0)
tests/unittests/qml/tst_BookmarksView.qml (+5/-6)
tests/unittests/qml/tst_QmlTests.cpp (+2/-0)
Changed in webbrowser-app (Ubuntu): | |
assignee: | nobody → Ugo Riboni (uriboni) |
Changed in canonical-devices-system-image: | |
milestone: | none → ww46-2015 |
assignee: | nobody → Bill Filler (bfiller) |
importance: | Undecided → High |
description: | updated |
Changed in webbrowser-app (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in canonical-devices-system-image: | |
status: | New → Confirmed |
Changed in canonical-devices-system-image: | |
importance: | High → Medium |
Changed in webbrowser-app (Ubuntu): | |
status: | Triaged → In Progress |
Changed in canonical-devices-system-image: | |
milestone: | ww46-2015 → ww02-2016 |
Changed in canonical-devices-system-image: | |
status: | Confirmed → In Progress |
Changed in canonical-devices-system-image: | |
milestone: | ww02-2016 → ww08-2016 |
Changed in canonical-devices-system-image: | |
milestone: | ww08-2016 → backlog |