Closed
Bug 1306294
Opened 8 years ago
Closed 8 years ago
Restarting browser while Simplify Page mode on, restores 2 new empty tabs
Categories
(Toolkit :: Printing, defect, P3)
Toolkit
Printing
Tracking
()
VERIFIED
FIXED
mozilla53
Tracking | Status | |
---|---|---|
firefox49 | --- | unaffected |
firefox50 | --- | wontfix |
firefox51 | --- | wontfix |
firefox52 | --- | wontfix |
firefox53 | --- | verified |
People
(Reporter: bmaris, Assigned: mlongaray)
References
Details
Attachments
(1 file, 13 obsolete files)
15.73 KB,
patch
|
mikedeboer
:
review+
|
Details | Diff | Splinter Review |
[Affected versions]:
- Latest Nightly 52.0a1 (2016-09-28)
- Latest Aurora 51.0a2 (2016-09-29)
- Firefox 50.0b2
[Affected platforms]:
- Windows 10 Pro x64
- Windows 7 x64
- Ubuntu 16.04 LTS x64 / x32
[Steps to reproduce]:
1. Start Firefox
2. Visit a page with Reader View (ex: wikipedia.org)
3. Go to File -> Print Preview
4. Click on "Simplify Page" checkbox
5. Restart browser (Shift + F2)
[Expected result]:
- Previous session is restored properly.
[Actual result]:
- “Simplify Page” mode is off and two new empty tabs are restored (one of them has the title of the tab where the “Simplify Page” mode was on).
[Regression range]:
- This is not a regression since the behavior reproduces on Nightly build (2016-06-06), when it first landed.
[Additional notes]:
- When clicking the new empty tab which has the title of the tab where the “Simplify Page” mode was on, that title is no more displayed.
- Only one new empty tab will be displayed when restarting from Print Preview.
Reporter | ||
Comment 1•8 years ago
|
||
And here is a screencast with the issue: https://goo.gl/0y7XGw (was to large to upload it directly to bugzilla).
Updated•8 years ago
|
Priority: -- → P3
Comment 2•8 years ago
|
||
We shouldn't be persisting these tabs.
We should be returning false here: http://searchfox.org/mozilla-central/rev/fd672b97f13aa83af5f04caa7b61bd443fb623e9/browser/components/sessionstore/SessionStore.jsm#3892
Which should make sure that the tab is not persisted to the session store. mlongaray, if you have a second, do you think you could see what's going on here? Are we returning true for this SessionStore method when we should be returning false? If so, why?
Flags: needinfo?(mlongaray)
Assignee | ||
Comment 3•8 years ago
|
||
Hey Mike, I managed to debug SessionStore.jsm and could confirm the following.
This method (http://searchfox.org/mozilla-central/source/browser/components/sessionstore/SessionStore.jsm#3892) does return false indeed when print-preview-related-tabs are closed. However, this method is only called when there is a 'close' event. If the browser closes abruptly, this method does not get called.
When the browser starts up again, it will end up on this piece of code (http://searchfox.org/mozilla-central/source/browser/components/sessionstore/SessionStore.jsm#1192) in which inits a Session with, what I presumed to be, all windows/tabs that were open prior crashing.
initSession() checks if the previous session crashed, so it can show the about:sessionrestore page (http://searchfox.org/mozilla-central/source/browser/components/sessionstore/SessionStore.jsm#548).
What do you recommend for us to do? Should we remove unwanted tabs from the initial state? (http://searchfox.org/mozilla-central/source/browser/components/sessionstore/SessionStore.jsm#523)
Flags: needinfo?(mlongaray) → needinfo?(mconley)
I was able to repro this and I think we should consider fixing this in 51 and perhaps uplifting to 50 if the fix is simple enough. Not sure if P3 is appropriate here, seems more like a P2 to me i.e. fix in the next cycle like 51.
Comment 5•8 years ago
|
||
Hey mlongaray - you pinged me in IRC saying that you had a patch. Can I see it?
Assignee: nobody → mlongaray
Flags: needinfo?(mconley) → needinfo?(mlongaray)
Assignee | ||
Comment 6•8 years ago
|
||
When recovering from a crash, we restore all windows and tabs from last session. This patch filters out not worth-saving tabs, i.e., tabs that only have a transient about: entry, no other session history, and no userTypedValue.
Flags: needinfo?(mlongaray)
Attachment #8800792 -
Flags: feedback?(mconley)
We've made a decision to turn off "Simplify Page" feature on Fx50. This is now a wontfix for that version.
Comment 8•8 years ago
|
||
Comment on attachment 8800792 [details] [diff] [review]
WIP1: Remove not worth-saving tabs when restoring a crashed session
Review of attachment 8800792 [details] [diff] [review]:
-----------------------------------------------------------------
Hm. This kinda seems like wallpapering over a problem. Why are we even storing the state if the state would be uninteresting if the tab or window closed?
Hey mikedeboer, do you know of a good reason why we only compute _shouldSaveTabState on window or tab close, and not when we're otherwise getting tab or window state?
Like, in _collectWindowData, we go ahead and collect each tab's state, regardless of _shouldSaveTabState... should we perhaps do a _shouldSaveTabState there as well? I think that'd be preferable over filtering out things that we don't want to persist after having already reloaded it off the disk.
Attachment #8800792 -
Flags: feedback?(mconley) → feedback-
Comment 9•8 years ago
|
||
ni? to mikedeboer for comment 8. It's cool if you're not sure - I know _shouldSaveTabState is from before you were module owner. We might be able to redirect to ttaubert, but thought I'd check with you first.
Flags: needinfo?(mdeboer)
Comment 10•8 years ago
|
||
Yes, I'd say that `_shouldSaveTabState` can/ should be used in `_collectWindowData` too, but I'd like to learn from Tim why that's not the case currently.
Flags: needinfo?(mdeboer) → needinfo?(ttaubert)
Comment 11•8 years ago
|
||
I think this is mainly due to the semantic difference between collecting window data and saving it. The function is called `_shouldSaveTabState()` because it tells you whether we deem that tab's data worth saving, although of course we also use it to determine whether it will show up in the list of closed tabs for a window, or a window will go into the list of closed windows.
`SessionStore.getBrowserState()` or `.getWindowState()` returns the in-memory state, and doesn't filter tabs. Whether that's important I don't know, but there of course might be add-ons that depend on this. There won't be WebExtensions depending on this though, but maybe there are other consumers inside Firefox.
So either you can change `_collectWindowData()`, or you can filter with `_shouldSaveTabState()` again in `SessionSaver._saveState()`.
Flags: needinfo?(ttaubert)
Assignee | ||
Comment 12•8 years ago
|
||
This patch moves filtering of not worth-saving tabs to SessionSaver._saveState()
Attachment #8800792 -
Attachment is obsolete: true
Attachment #8803865 -
Flags: feedback?(mconley)
Comment 13•8 years ago
|
||
Comment on attachment 8803865 [details] [diff] [review]
WIP2: Move filtering to SessionSaver._saveState()
The general idea looks okay to me. I think you'll want mikedeboer to review it though.
Thanks!
Attachment #8803865 -
Flags: feedback?(mconley) → feedback+
Assignee | ||
Comment 14•8 years ago
|
||
Comment on attachment 8803865 [details] [diff] [review]
WIP2: Move filtering to SessionSaver._saveState()
Asking for review from mikedeboer after mconley granted feedback.
Attachment #8803865 -
Flags: review?(mdeboer)
Comment 15•8 years ago
|
||
Comment on attachment 8803865 [details] [diff] [review]
WIP2: Move filtering to SessionSaver._saveState()
Review of attachment 8803865 [details] [diff] [review]:
-----------------------------------------------------------------
I'm sorry, but if it's at all possible, I'd like the change to happen in `_collectWindowData()`.
Essentially, from this:
```js
// update the internal state data for this window
for (let tab of tabs) {
let tabData = TabState.collect(tab);
tabMap.set(tab, tabData);
tabsData.push(tabData);
}
```
to:
```js
// Update the internal state data for this window.
for (let tab of tabs) {
let tabData = TabState.collect(tab);
if (!this._shouldSaveTabState(tabData))
continue;
tabMap.set(tab, tabData);
tabsData.push(tabData);
}
```
This might seem scary, but hey, those are the changes most fun to work on!
When you push this change to try - after you've confirmed that it fixes this bug too - you'll find out quickly enough whether works across the board.
Attachment #8803865 -
Flags: review?(mdeboer) → review-
Comment 16•8 years ago
|
||
BTW, I'm here to help - you can find me on IRC in #developers or #fx-team to discuss things!
Assignee | ||
Comment 17•8 years ago
|
||
This patch moves filtering of not worth-saving tabs to SessionStoreInternal._collectWindowData()
Attachment #8803865 -
Attachment is obsolete: true
Attachment #8805535 -
Flags: review?(mdeboer)
Comment 18•8 years ago
|
||
Comment 19•8 years ago
|
||
According to that try run we have work to do! So what I'll do asap is analyze the results and see if we can fix the tests that are failing right now. 'browser_urlbarAboutHomeLoading.js' is making me a bit worried, because that's a behavior regression test.
I think that's something you'll want me to do, am I right?
There are two scenarios:
1) I can find simple fixes for all the tests
2) I can't and we can use your previous patch that'll filter the state dictionary.
Flags: needinfo?(mdeboer)
Comment 20•8 years ago
|
||
Comment on attachment 8805535 [details] [diff] [review]
WIP3: Move filtering to _collectWindowData()
Please re-request review when you've got a new patch ready for me to look at. Thanks!
Flags: needinfo?(mdeboer)
Attachment #8805535 -
Flags: review?(mdeboer)
Assignee | ||
Updated•8 years ago
|
Flags: needinfo?(mdeboer)
Assignee | ||
Comment 21•8 years ago
|
||
As discussed on IRC with mikedeboer, we have decided to go back to this approach given its a lot less invasive. This patch moves filtering of not worth-saving tabs to SessionSaver._saveState().
Attachment #8805535 -
Attachment is obsolete: true
Attachment #8807243 -
Flags: review?(mdeboer)
Comment 22•8 years ago
|
||
Assignee | ||
Updated•8 years ago
|
Flags: needinfo?(mdeboer)
Attachment #8807243 -
Flags: review?(mdeboer)
Assignee | ||
Comment 23•8 years ago
|
||
This patch addresses concerns raised about selectedWindow and selected attributes if we happen to remove a not-worthy tab that is currently selected. Since we will get rid of not-worthy tabs from our session state, this patch also adjusts a few tests as needed.
Attachment #8807243 -
Attachment is obsolete: true
Attachment #8808591 -
Flags: feedback?(mdeboer)
Comment 24•8 years ago
|
||
Comment 25•8 years ago
|
||
Comment on attachment 8808591 [details] [diff] [review]
WIP5: Make selectedWindow attribute concise and adjust session restore tests
Review of attachment 8808591 [details] [diff] [review]:
-----------------------------------------------------------------
Pending a green try run, r=me!
::: browser/components/sessionstore/SessionSaver.jsm
@@ +185,5 @@
> stopWatchStart("COLLECT_DATA_MS", "COLLECT_DATA_LONGEST_OP_MS");
> let state = SessionStore.getCurrentState(forceUpdateAllWindows);
> PrivacyFilter.filterPrivateWindowsAndTabs(state);
>
> + // Make sure we only write worth saving tabs to disk
nit: missing dot.
Attachment #8808591 -
Flags: feedback?(mdeboer) → review+
Assignee | ||
Comment 26•8 years ago
|
||
This patch addresses missing dot.
Attachment #8808591 -
Attachment is obsolete: true
Assignee | ||
Comment 27•8 years ago
|
||
Status:
Last try run is showing that browser/components/sessionstore/test/browser_819510_perwindowpb.js is failing on Linux. However, this test is passing when I run it locally and it does makes sense to pass. This same test fails on the other platforms.
browser/components/sessionstore/test/browser_newtab_userTypedValue.js is failing on OS X, and when I run it locally on Linux, sometimes it works as expected, sometimes it does not (after different builds without any code change on the test). Maybe a timing issue?
Flags: needinfo?(mdeboer)
Assignee | ||
Comment 28•8 years ago
|
||
This patch fixes an issue with browser_819510_perwindowpb.js test.
Attachment #8808983 -
Attachment is obsolete: true
Flags: needinfo?(mdeboer)
Attachment #8809930 -
Flags: review?(mdeboer)
Comment 29•8 years ago
|
||
Comment 30•8 years ago
|
||
Comment on attachment 8809930 [details] [diff] [review]
WIP7: Fix browser_819510_perwindowpb.js
Review of attachment 8809930 [details] [diff] [review]:
-----------------------------------------------------------------
Matheus, doesn't seem like the changes you made are quite enough yet! :(
On OSX, we've got a failing browser/components/sessionstore/test/browser_scrollPositions.js (non-e10s) and a failing browser/components/sessionstore/test/browser_newtab_userTypedValue.js (e10s).
On Windows we've got a failing browser/components/sessionstore/test/browser_scrollPositionsReaderMode.js and browser/components/sessionstore/test/browser_scrollPositions.js (non-e10s) and a failing browser/components/sessionstore/test/browser_newtab_userTypedValue.js (e10s).
I'm r- the patch just because of this, so once you've got everything green, this'll automatically turn into an r+.
Attachment #8809930 -
Flags: review?(mdeboer) → review-
Assignee | ||
Comment 31•8 years ago
|
||
Attachment #8809930 -
Attachment is obsolete: true
Comment 32•8 years ago
|
||
Assignee | ||
Comment 33•8 years ago
|
||
Attachment #8811352 -
Attachment is obsolete: true
Comment 34•8 years ago
|
||
Assignee | ||
Comment 35•8 years ago
|
||
Following is the progress for WIP10 build on Treeherder.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=57cdf373a4939647b997749f8c9549665bf9c9cc&selectedJob=31469395
If you have the time, could you take a look at these results - Mike? I believe we would only have browser_newtab_userTypedValue.js test pending to fix.
Attachment #8811467 -
Attachment is obsolete: true
Flags: needinfo?(mdeboer)
Comment 36•8 years ago
|
||
These results are looking good to, but I don't understand why browser_newtab_userTypedValue.js is failing, because it's passing just fine for me locally (OSX 10.12 debug build), so I'm not sure what's up there...
With that try push I'm also not seeing the commit(s) you pushed to try, so I'm curious what you were running there.
Flags: needinfo?(mdeboer)
Assignee | ||
Comment 37•8 years ago
|
||
(In reply to Mike de Boer [:mikedeboer] from comment #36)
> These results are looking good to, but I don't understand why
> browser_newtab_userTypedValue.js is failing, because it's passing just fine
> for me locally (OSX 10.12 debug build), so I'm not sure what's up there...
Yes, same for me. browser_newtab_userTypedValue.js is failing locally for me but passing on try.
> With that try push I'm also not seeing the commit(s) you pushed to try, so
> I'm curious what you were running there.
Here's what I pushed: https://hg.mozilla.org/try/rev/be22a9cfa9af
Assignee | ||
Comment 38•8 years ago
|
||
Following is the progress for WIP11 build on Treeherder.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=9dbf1b23473e63e696eb0dfe20599cdda665c45b
Attachment #8812340 -
Attachment is obsolete: true
Assignee | ||
Comment 39•8 years ago
|
||
Comment on attachment 8812845 [details] [diff] [review]
WIP11: Fix browser_newtab_userTypedValue.js
Bug 1306294 - Filters out not worth-saving tabs from session state. r=mikedeboer
Attachment #8812845 -
Flags: review?(mdeboer)
Comment 40•8 years ago
|
||
Comment on attachment 8812845 [details] [diff] [review]
WIP11: Fix browser_newtab_userTypedValue.js
Review of attachment 8812845 [details] [diff] [review]:
-----------------------------------------------------------------
::: browser/components/sessionstore/test/browser_scrollPositions.js
@@ +112,5 @@
> add_task(function test_scroll_background_tabs() {
> pushPrefs(["browser.sessionstore.restore_on_demand", true]);
>
> let newWin = yield BrowserTestUtils.openNewBrowserWindow();
> + BrowserTestUtils.loadURI(newWin.gBrowser, "http://www.example.com/");
Why did you put this change here and why did it help?
(This is not correct, because you're passing in `gBrowser` and not a xul:browser instance that's attached to a tab.)
::: browser/components/sessionstore/test/browser_scrollPositionsReaderMode.js
@@ +20,5 @@
> add_task(function test_scroll_background_about_reader_tabs() {
> pushPrefs(["browser.sessionstore.restore_on_demand", true]);
>
> let newWin = yield BrowserTestUtils.openNewBrowserWindow();
> + BrowserTestUtils.loadURI(newWin.gBrowser, "http://www.example.com/");
Same here.
Attachment #8812845 -
Flags: review?(mdeboer)
Assignee | ||
Comment 41•8 years ago
|
||
Bug 1306294 - Filters out not worth-saving tabs from session state. r=mikedeboer
Following is the progress for WIP12 build on Treeherder.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=9dbf1b23473e63e696eb0dfe20599cdda665c45b
Attachment #8812845 -
Attachment is obsolete: true
Attachment #8813186 -
Flags: review?(mdeboer)
Comment 42•8 years ago
|
||
Comment 43•8 years ago
|
||
Comment on attachment 8813186 [details] [diff] [review]
WIP12: Change browser_scrollPositions.js and browser_scrollPositionsReaderMode.js test
Review of attachment 8813186 [details] [diff] [review]:
-----------------------------------------------------------------
r=me! \o/ Great job, Matheus, persevering and pulling this through the end!
I hope it'll stick when it lands. Fingers crossed.
I'm looking forward to seeing more of your work!
Attachment #8813186 -
Flags: review?(mdeboer) → review+
Updated•8 years ago
|
Keywords: checkin-needed
Comment 44•8 years ago
|
||
Pushed by ihsiao@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/4b75d4672954
"Restarting browser while Simplify Page mode on, restores 2 new empty tabs". r=mdeboer
Keywords: checkin-needed
Comment 45•8 years ago
|
||
sorry had to back this out for new test failures like https://treeherder.mozilla.org/logviewer.html#?job_id=39706918&repo=mozilla-inbound
Flags: needinfo?(mlongaray)
Comment 46•8 years ago
|
||
Backout by cbook@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/4772a0f4bed2
Backed out changeset 4b75d4672954 for bc5 test failures
Assignee | ||
Comment 47•8 years ago
|
||
(In reply to Carsten Book [:Tomcat] from comment #45)
> sorry had to back this out for new test failures like
> https://treeherder.mozilla.org/logviewer.html#?job_id=39706918&repo=mozilla-
> inbound
No worries! Let's see if we can find out what's going on there. Thanks for letting us know.
Flags: needinfo?(mlongaray)
Assignee | ||
Comment 48•8 years ago
|
||
Commit message: Bug 1306294 - Filters out not worth-saving tabs from session state. r=mikedeboer
Our last patch set had to be backed out due some bc test failures (browser_newtab_userTypedValue.js & browser_urlbarAboutHomeLoading.js)
Following is the progress for WIP13 build on Treeherder. I re-triggered the respective bc test suites 10 times more for all platforms. No failures this time.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=3b35b53b5eee412065071a401c54ccdc8b7d335a&group_state=expanded
Attachment #8813186 -
Attachment is obsolete: true
Attachment #8816973 -
Flags: review?(mdeboer)
Updated•8 years ago
|
Attachment #8816973 -
Flags: review?(mdeboer) → review+
Assignee | ||
Updated•8 years ago
|
Keywords: checkin-needed
Assignee | ||
Comment 49•8 years ago
|
||
Comment on attachment 8816973 [details] [diff] [review]
WIP13: Fix browser_newtab_userTypedValue.js and browser_urlbarAboutHomeLoading.js
Commit message: Bug 1306294 - Filters out not worth-saving tabs from session state. r=mikedeboer
Comment 50•8 years ago
|
||
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/cbe1b40baf57
Filters out not worth-saving tabs from session state. r=mikedeboer
Keywords: checkin-needed
Comment 51•8 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox53:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
Assignee | ||
Comment 52•8 years ago
|
||
As discussed on bug 1323987, we are not allowed to remove "about:blank" and "about:newtab" tabs from our session state when saving it to disk - these tabs should be persisted.
Since preview opens up "about:blank" tab in background to put the document into print preview mode, we are adding a new entry in our about: redirector called "about:printpreview". In this way, when we are print previewing and session store kicks in to save our opened tabs to disk, session store will discard this kind of tab - not saving it to disk.
This patch updates our browser code to use about:printpreview and makes expected changes to SessionStore. It also updates the internal notion of nsDocShell to manually set our document's URI when creating a blank document for print preview content viewer.
Attachment #8821283 -
Flags: review?(mdeboer)
Attachment #8821283 -
Flags: review?(mconley)
Assignee | ||
Comment 53•8 years ago
|
||
Comment on attachment 8821283 [details] [diff] [review]
WIP14: Add about:printpreview redirector
On -175,17 +180,19 @@ AboutRedirector::NewChannel(nsIURI* aURI:
I tested URI_NORELATIVE flag (protocol doesn't support relative URIs, e.g., about and javascript) instead and it happens to work in our case. What I'm not sure is that if we are going to be causing repercussions using this flag - other than about:printpreview. See more at https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProtocolHandler.
Comment 54•8 years ago
|
||
Comment on attachment 8821283 [details] [diff] [review]
WIP14: Add about:printpreview redirector
Matheus,
Overall this patch looks like it's going in the right direction, but it doesn't belong to this bug.
Can you attach it to bug 1323987 instead?
Can you also put a treeherder link to the try job you pushed or are about to push?
Thanks!
Flags: needinfo?(mlongaray)
Attachment #8821283 -
Flags: review?(mdeboer)
Attachment #8821283 -
Flags: review?(mconley)
Assignee | ||
Comment 55•8 years ago
|
||
Sorry, Mike - my mistake. I'll move this patch to bug 1323987 as well as post the treeherder link.
Flags: needinfo?(mlongaray)
Assignee | ||
Updated•8 years ago
|
Attachment #8821283 -
Attachment is obsolete: true
Comment 56•8 years ago
|
||
We've built 51 RC and it's too late for 51. Mark 51 won't fix.
Comment 57•8 years ago
|
||
In the release for several versions, we should just let it ride the train.
Comment 58•8 years ago
|
||
Bug 1342849 is caused this.
Could you back out this from Aurora53.0a2 before merge to beta.
Flags: needinfo?(mlongaray)
Comment 59•8 years ago
|
||
Bug 1343056 is also caused by this.
Could you back out
Mike, it seems like there are several issues (bug 1342849, bug 1343056) with this, but it's not clear to me if anyone's watching this bug.
Who can decide if we need to take action here?
Flags: needinfo?(mdeboer)
Assignee | ||
Comment 61•8 years ago
|
||
Clearing out need info request - currently working on bug 1343056 and bug 1342849.
Flags: needinfo?(mlongaray)
Comment 62•8 years ago
|
||
(In reply to J. Ryan Stinnett [:jryans] (use ni?) from comment #60)
> Mike, it seems like there are several issues (bug 1342849, bug 1343056) with
> this, but it's not clear to me if anyone's watching this bug.
>
> Who can decide if we need to take action here?
Just an update here; we found out that bug 1342849 is regressed by a different bug. We suspect we can do a simple fix for bug 1343056, and mlongaray is working on that.
Updated•8 years ago
|
Flags: needinfo?(mdeboer)
Updated•8 years ago
|
Flags: qe-verify+
Comment 63•8 years ago
|
||
I reproduced this bug using Fx 52.0a1, build ID: 20160928030201, on Windows 10 x64.
I can confirm this issue is fixed, I verified using Fx 53.0b1, build ID: 20170307064827, on Windows 10 x64.
Cheers!
Updated•3 years ago
|
You need to log in
before you can comment on or make changes to this bug.
Description
•