When upgrading to oxide 1.19, tabs from saved session are not restored
Bug #1649861 reported by
Olivier Tilloy
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Oxide |
Fix Released
|
High
|
Olivier Tilloy | ||
1.19 |
Fix Released
|
Critical
|
Olivier Tilloy | ||
1.20 |
Fix Released
|
High
|
Olivier Tilloy | ||
webbrowser-app (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
When upgrading to oxide 1.19, tabs from a session saved with oxide 1.18 are not restored. I’m seeing the following in the browser’s log:
Failed to read initial state: invalid data
It appears sessions:
Related branches
~osomon/oxide:fix-1649861-serialized-navigation-entries
- Chris Coulson: Approve
-
Diff: 341 lines (+245/-14)5 files modifiedqt/core/browser/oxide_qt_web_view.cc (+148/-14)
qt/tests/qmltests/api/tst_WebView_save_restore_entry1.html (+5/-0)
qt/tests/qmltests/api/tst_WebView_save_restore_entry2.html (+5/-0)
qt/tests/qmltests/api/tst_WebView_save_restore_entry3.html (+5/-0)
qt/tests/qmltests/api/tst_WebView_save_restore_state.qml (+82/-0)
summary: |
- With oxide 1.19, tabs from saved session are not restored + When upgrading to oxide 1.19, tabs from saved session are not restored |
Changed in oxide: | |
milestone: | branch-1.20 → branch-1.21 |
Changed in oxide: | |
status: | Confirmed → In Progress |
Changed in oxide: | |
status: | In Progress → Fix Released |
To post a comment you must log in.
I confirm that https:/ /chromium. googlesource. com/chromium/ src/+/f62ca6f9d 33e93733fccb3f3 815d9554429dbb3 8 introduced the regression: serialized navigation entries are pickled one after the other, and the size of the resulting data is not stored anywhere. As a result, the new implementation of SerializedNavig ationEntry: :ReadFromPickle () starts reading from the beginning of the next entry looking for extended info.
It is unfortunate that navigation entries are serialized this way. To prevent this from happening again in the future when additional data is added to serialized navigation entries, we should pickle them separately, and for each entry store the size followed by the raw data.