Print -> "Loading preview" takes forever, "Print using system dialog" too, whole browser stops responding
Reported by
teo8...@gmail.com,
Aug 13 2016
|
||||||
Issue descriptionUserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 Steps to reproduce the problem: Note that this is systematically reproducible with gmail and with some specific emails, but it isn't a Gmail issue, it's a browser issue (even if it may be triggered by something specific in Gmail) 1. I opened an email from Vueling Airlines with a reservation confirmation (not a pdf attachment, the email itself was the confirmation) 2. I clicked Gmail's print icon, which does two things: (i) open a new tab with a printer-friendly version of the page, and (ii) open the printing dialog => Chrome's fancy special printing page shows up 3. waited several MINUTES until the print preview loaded (see "what went wrong" below) 4. clicked on "print with system dialog" (or whatever it is called) 5. waited an unacceptably long time again 6. hit the Print button to actually print What is the expected behavior? At step (3), it shouldn't take long to load the preview. If there is any good reason for it to take long (e.g. the contents are very complex), the browser should never, ever become generally unresponsive. For fuck's sake do I need to tell you this!? The UI must always remain responsive no matter what. If I hit the "print with system dialog" link while the preview is still loading, the preview building should be cancelled and the system dialog should be opened immediately. At step 4, if there is a good reason for the system print dialog to take long to open, and I doubt it, then a waiting animation should show up, or some sort of feedback that the operation is in progress, and a button allowing you to cancel it. Again, in no case should the general UI ever become unresponsive. At step 6, if there is any good reason why it takes long from the moment when you finally hit Print to when the printer starts printing, you should have some sort of feedback that the operation is in progress What went wrong? At step 3 it took MINUTES until the preview was loaded, during which the browser was unresponsive. Even Cancel wouldn't work. In one instance I had to close the browser. If I hit the "print with system dialog" link while the preview was still loading, the preview loading wouldn't cancel, and everything became even more unresponsive. At step 4, there was no indication that some preparation for opening the system dialog was happening and taking long: no waiting animation, no possibility to cancel, nothing. I might even have doubted whether I had actually clicked. Everything in the tab was unresponsive. At step 6, again it took a very long time to finally print the document, and nothing happened in the meantime, with no indication that I had to wait. The general slowness is almost certainly unjustified in the first place, as there doesn't seem to be anything particularly complex in the page I was printing. Anyway, if there was something justifying it taking long, the general user interface and user experience seems to be designed under the assumption that this would never happen (that is, that you would never have to wait at any step), which is always, always, an idiotic assumption. The general UX is crappy. Did this work before? N/A Chrome version: 52.0.2743.82 Channel: n/a OS Version: Flash Version: Shockwave Flash 22.0 r0
,
Nov 7 2016
Unable to reproduce the issue on Linux chrome version 54.0.2840.90 and dev 56.0.2906.0 - Printed successfully dandv@, Could you please recheck the same and update the thread.
,
Nov 7 2016
Original bug reporter: This might be bug 487026 or bug 640187. Please try 56.0.2906.0 or newer and see if the situation has improved. If not, mstensho can help you out if you share the email in question with them privately. re: comment 1- Please file a new bug. In your case, the print preview never finishes, which is a different bug altogether.
,
Nov 7 2016
Regarding the slowness - Printing dialogs, whether it be print preview or the system dialog, needs to know how many pages of paper a webpage would print to. Otherwise the printing dialogs cannot verify is the user's page range input is valid or not. In this bug, and some of the bugs I referred to, the webpage layout is unfortunately extremely slow. Out of curiosity, when the print preview took minutes, what kind of computer did this take place on? Was the CPU a Core 2 Duo or something like that?
,
Nov 7 2016
One thing is the excessive slowness in rendering the preview and/or calculating the number of pages, another thing is freezing the whole browser because something is taking long. Correct me if I'm wrong: the bugs you mention, of which one is fixed, only address the first kind of issue. Even if all bugs making the computation slower than it should were fixed, a page may still legittimately take long to render if, for example, it's content is hugely complex. So responsiveness of the UI, visual feedback about ongoing progress (not necessarily a percentage or completion or estimated time but at least the *fact* that it is in progress) and possibility to interrupt and cancel it immediately, are a MUST. > Out of curiosity, when the print preview took minutes, what kind of computer > did this take place on? Was the CPU a Core 2 Duo or something like that? An i7
,
Nov 9 2016
Sure, we can certainly assume the rendering is slow and try to make the UI more responsive, or rather, not let it get stuck.
,
Nov 9 2016
Bug 487026 can be simulated by putting a long sleep() right before the printBegin() call in PrepareFrameAndViewForPrint. One can actually cancel out of print preview by pressing Esc. (Assuming the keyboard has such a key. ;)) Though there's no way to do it by clicking. However, even if we do that, the renderer is still stuck doing whatever its doing. So the experience the user sees once they exit print preview is still poor because the renderer is stuck in Blink and cannot get out until it finishes. There needs to be some way of signaling to Blink (or have Blink periodically call a callback to check) that it is time to stop printing and get on with things... and have it then successfully bail out.
,
Nov 9 2016
i.e. making the Print Preview cancel button stay enabled and act as Esc is easy. Getting Blink to stop what it is doing is harder. We need someone who actually understands Blink for input on whether that is a good idea / is feasible.
,
Nov 9 2016
> One can actually cancel out of print preview by pressing Esc
I think you missed the point.
If you follow my steps 1-4 skipping step 3, that is, you click on "print with system dialog" while Google Chrome's Fancy Print Preview is still rendering, then a series of things are completely screwed up:
i. This should abort rendering the print preview in the first place, and it doesn't
ii. I am not supposed to know that hitting the Esc key will do anything
iii. What the Esc key does in this case is completely screwed up: it looks like it aborts the "print with system dialog", it ALSO exits the print preview completely (which is unexpected), but then, at a later time, the system printing window pops up when you thought you had given up printing minutes ago and completely forgot about it.
> Sure, we can certainly assume the rendering is slow and try to make the
> UI more responsive, or rather, not let it get stuck.
Not sure what you mean. If by "not let it get stuck" you mean not let the UI get stuck because a given task is slow, then that is the same as "assume the rendering is slow and try to make the UI more responsive", that is, fix the bug I'm talking about.
If, otoh, by "not let it get stuck" you mean "not let the rendering get stuck", i.e. "not let it be insanely slow", then sure, you have to do that, but that's not enough. No matter how fast the rendering is, you can never, ever assume it to be always instantaneous ("instantaneous" meaning something below a perceivable duration, that is, in practice, a few milliseconds or less), that is, you HAVE to acknowledge that there can be cases where it will take long (again, even if "long" means more than a few milliseconds), and you mustn't let that cause the UI to become unresponsive.
In other words:
"we can certainly assume the rendering is slow and try to make the UI more responsive, or rather, not let it get stuck."
Either both mean the same thing, or you have to do both.
,
Nov 9 2016
I don't think I missed the point. Please stop assuming the worst. i. That's exactly what I'm talking about. Blink is still rendering the print preview. There's no mechanism to abort right now. ii. I acknowledged this. To repeat: "Though there's no way to do it by clicking." iii. Ah, I didn't wait long around long enough to see that happen. Will keep that in mind. By "not let it get stuck" I mean what you want it to mean. Note I said to simulate slowless by putting in a long sleep(). That means I'm artificially creating renderer slowness.
,
Nov 13 2016
Attaching a trace (https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) would be helpful so that we can understand where the slowness comes from.
,
Jan 17 2017
No feedback in three months, closing issue. Please comment to reopen. |
||||||
►
Sign in to add a comment |
||||||
Comment 1 by dandv@google.com
, Nov 3 201669.6 KB
69.6 KB View Download