Commit Graph

1472 Commits

Author SHA1 Message Date
Emilio Cobos Alvarez
28d2fce338 Bug 1663426 - Add a null-check to SetDocumentInternal. r=bobowen
This shouldn't generally happen, but seems it can under some circumstances and
even though I've fixed the error condition that triggers this a null-check here is harmless.

Differential Revision: https://phabricator.services.mozilla.com/D89453
2020-09-08 12:32:15 +00:00
Emilio Cobos Álvarez
bb845a8fba Bug 1661838 - Fix builds with --disable-printing. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D89166
2020-09-02 16:13:01 +00:00
Jonathan Watt
e6296b4513 Bug 1657220. Add telemetry for new print UI. r=bobowen,mbalfanz
Differential Revision: https://phabricator.services.mozilla.com/D87303
2020-09-01 18:47:15 +00:00
Jonathan Watt
2e793fcf9a Bug 1653340. Add new FrameLoader.printPreview() API. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D88703
2020-09-01 11:00:36 +00:00
Emilio Cobos Álvarez
2042d6df12 Bug 1662204 - Prevent all printed documents, not just print preview, from getting a regular non-print presentation. r=jwatt
Before bug 1636728 this couldn't happen because print documents weren't
hosted in an <browser>. The presentation of documents that are being
printed should be managed by the print job.

We should, in fact, probably just make mDocument->IsStaticDocument() the
condition, or such.

Differential Revision: https://phabricator.services.mozilla.com/D88901
2020-08-31 20:16:11 +00:00
Emilio Cobos Álvarez
2464675b6e Bug 1636728 - Make calling window.print() before load keep deferring the actual printing and closing the window until load. r=smaug
Other engines also do this, but with my previous patch breaks it
(because we only hit print() on the print-content-viewer _after_ doing
the clone).

So move it before triggering all the machinery, and only for
window.print().  Given we didn't check this for print preview etc, I
think it's fine to carry on for user-triggered loads.

Trivial test-case (which I'm not quite sure how to turn into an
automated test...)

    <!doctype html>
    <h1>I do get printed but...</h1>

    <script>
      window.print();
    </script>

    <h2>Do I?</h2>

Note that this is broken with the new print preview UI already, this
fixes it.

Differential Revision: https://phabricator.services.mozilla.com/D87898
2020-08-25 17:45:24 +00:00
Emilio Cobos Álvarez
2c0dea8fd4 Bug 1636728 - Centralize printing entry points in nsGlobalWindowOuter, and move cloning out of nsPrintJob. r=jwatt,geckoview-reviewers,smaug,agi
This centralizes our print and preview setup in nsGlobalWindowOuter so
that we never re-clone a clone, and so that we reuse the window.open()
codepath to create the browsing context to clone into.

For window.print, for both old print dialog / silent printing and new
print preview UI, we now create a hidden browser (as in with visibility:
collapse, which takes no space but still gets a layout box).

 * In the modern UI case, this browser is swapped with the actual print
   preview clone, and the UI takes care of removing the browser.

 * In the print dialog / silent printing case, the printing code calls
   window.close() from nsDocumentViewer::OnDonePrinting().

 * We don't need to care about the old print preview UI for this case
   because it can't be open from window.print().

We need to fall back to an actual window when there's no
nsIBrowserDOMWindow around for WPT print tests and the like, which don't
have one. That seems fine, we could special-case this code path more if
needed but it doesn't seem worth it.

Differential Revision: https://phabricator.services.mozilla.com/D87063
2020-08-25 17:45:12 +00:00
Daniel Holbert
2a2243433a Bug 1660502 part 1: Give nsIWebBrowserPrint a "rawNumPages" attribute. r=TYLin
This is backed by an existing nsPageSequenceFrame API, which this patch also
renames to use the word "Raw" for consistency across the full callstack.

Differential Revision: https://phabricator.services.mozilla.com/D87886
2020-08-24 23:53:11 +00:00
Hiroyuki Ikezoe
aa0344455a Bug 1660213 - Fixed an used variable error in nsDocumentViewer::GetCurrentSheetFrameAndPageNumber. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D87806
2020-08-20 22:02:54 +00:00
Hiroyuki Ikezoe
fb4a56c1e9 Bug 1657550 - Rewrite nsDocumentViewer::PrintPreviewScrollToPage. r=emilio
This change consists of;

1) Use switch statement for the given PrintPreview Navigation type.
2) Simply iterate over the children of nsPageSequenceFrame for
   PRINTPREVIEW_GOTO_PAGENUM
3) Use GetCurrentSheetFrameAndPageNumber for PRINTPREVIEW_PREV_PAGE and
   PRINTPREVIEW_NEXT_PAGE so that it should now match
   printPreviewCurrentPageNumber
   (that means the edge case where the current scroll position is in
    the gap between pages has been fixed by this change)
4) Scroll to the position where the target frame is positioned at the center of
   the print preview scroll port in the cases of PRINTPREVIEW_PREV_PAGE,
   PRINTPREVIEW_NEXT_PAGE and PRINTPREVIEW_GOTO_PAGENUM

4) is a bit debatable but it can be now easily modified by changing
ComputeScrollPositionFrameAtCenter later if it turns out the current way is not
reasonable.

Differential Revision: https://phabricator.services.mozilla.com/D87548
2020-08-19 22:50:54 +00:00
Hiroyuki Ikezoe
39d06a60e1 Bug 1657550 - Make GetCurrentPageNumberInPrintPreview return the current sheet frame along with the current page. r=emilio
We need the current sheet frame for PRINTPREVIEW_NEXT_PAGE and
PRINTPREVIEW_PREV_PAGE cases.

Differential Revision: https://phabricator.services.mozilla.com/D87547
2020-08-19 22:50:39 +00:00
Hiroyuki Ikezoe
6d12e36241 Bug 1657550 - Factor out the function to get the current page number in the print preview. r=emilio
We have to use the logic in the function for
nsDocumentViewer::PrintPreviewScrollToPage in subsequent changes.

Differential Revision: https://phabricator.services.mozilla.com/D87546
2020-08-19 22:50:29 +00:00
Hiroyuki Ikezoe
a6b0a02678 Bug 1657550 - Preserve x-axis scroll position on printPreviewScrollToPage call in any cases. r=emilio
That's what we've done for PRINTPREVIEW_PREV_PAGE, PRINTPREVIEW_NEXT_PAGE
and PRINTPREVIEW_GOTO_PAGENUM.

Differential Revision: https://phabricator.services.mozilla.com/D87545
2020-08-19 22:50:15 +00:00
Hiroyuki Ikezoe
4027cabdc4 Bug 1657550 - Use scrollTopMax position for PRINTPREVIEW_END. r=emilio
I suppose PRINTPREVIEW_END doesn't mean the last page.

Differential Revision: https://phabricator.services.mozilla.com/D87544
2020-08-19 22:50:05 +00:00
Hiroyuki Ikezoe
5adf475ada Bug 1657550 - Copy nsDocumentViewer::PrintPreviewScrollToPage for the old print preview UI. r=emilio
So that we can keep using the logic in the old print preview UI.

For the new print preview UI, the original PrintPreviewScrollToPage will be
modified gradually in subsequent changes.

Differential Revision: https://phabricator.services.mozilla.com/D87543
2020-08-19 22:51:07 +00:00
Jonathan Watt
9343bc2e26 Bug 1659489. Rename nsPrintJob's mIsDoingPrintPreview to mCreatedForPrintPreview. r=bobowen
Differential Revision: https://phabricator.services.mozilla.com/D87296
2020-08-17 21:27:00 +00:00
Emilio Cobos Álvarez
f196215976 Bug 1659432 - Don't reuse the existing print job when restarting print preview. r=bobowen
Differential Revision: https://phabricator.services.mozilla.com/D87417
2020-08-18 12:03:38 +00:00
Hiroyuki Ikezoe
9fb494d150 Bug 1657763 - Choose the closest page to the center of the scroll port as the "current" page. r=emilio
Unfortunately there is no particular way to write automated tests without
exposing a bunch of metrics in the print preview window, such as each
PrintedSheetFrame height, the gap length between the sheets, print preview
scale, the scroll port rect, the current scroll position, etc. etc. So I just
tested this change with the frontend change to show the current page number
there by :mstriemer. [1]

[1] https://phabricator.services.mozilla.com/D86427

Differential Revision: https://phabricator.services.mozilla.com/D87203
2020-08-17 20:54:06 +00:00
Emilio Cobos Álvarez
a7cfa4a572 Bug 1658903 - Remove nsPrintJob::TurnScriptingOn. r=jwatt
This code was there to prevent stuff like bug 424377, but nowadays clone
documents are data documents to begin with, so they can't load scripts.

Differential Revision: https://phabricator.services.mozilla.com/D86948
2020-08-13 12:22:56 +00:00
Mihai Alexandru Michis
5d098d0387 Bug 1657515 - Fix bustages regarding nsDocumentViewer.cpp and 'pageCount'. a=bustage-fix
CLOSED TREE
2020-08-07 07:37:28 +03:00
Hiroyuki Ikezoe
3011a6101c Bug 1657515 - Add nsIWebBrowserPrint.printPreviewCurrentPageNumber. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D86151
2020-08-06 22:54:16 +00:00
Hiroyuki Ikezoe
f9adc8812e Bug 1657515 - Constify some nsIDocumentViewerPrint methods. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D86149
2020-08-06 22:54:16 +00:00
Hiroyuki Ikezoe
dd95e33e05 Bug 1657515 - Rename pageFrame to sheetFrame in PrintPreviewScrollToPage. r=TYLin
Since bug 1652278, it's not a page frame.

Differential Revision: https://phabricator.services.mozilla.com/D86148
2020-08-06 22:57:24 +00:00
Hiroyuki Ikezoe
70e61e9dd4 Bug 1657515 - Rename pt to currentScrollPosition in PrintPreviewScrollToPage. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D86147
2020-08-06 22:22:56 +00:00
Kashav Madan
6224c3c4e7 Bug 1655521 - Remove unnecessary code from nsDocumentViewer::ExitPrintPreview, r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D85343
2020-08-04 16:41:52 +00:00
Bob Owen
130e64ff00 Bug 1653334 part 1: Remove unused isRangeSelection and isIFrameSelected. r=jwatt
These unused members are removed from nsIWebBrowserPrint and PPrintingTypes
along with their supporting functions.

Differential Revision: https://phabricator.services.mozilla.com/D85007
2020-08-03 14:23:27 +00:00
Butkovits Atila
87642692f3 Backed out 2 changesets (bug 1653334) for reftest failures at test-print-selection.html. CLOSED TREE
Backed out changeset 6cc6bbaa91f0 (bug 1653334)
Backed out changeset 75a5873f02a4 (bug 1653334)
2020-08-03 15:35:37 +03:00
Bob Owen
cd8f4e508b Bug 1653334 part 1: Remove unused isRangeSelection and isIFrameSelected. r=jwatt
These unused members are removed from nsIWebBrowserPrint and PPrintingTypes
along with their supporting functions.

Differential Revision: https://phabricator.services.mozilla.com/D85007
2020-08-03 08:53:44 +00:00
Olli Pettay
c0a4310e33 Bug 1647229 - Synchronize layouthistorystate to parent process, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D81753
2020-07-23 19:35:29 +00:00
Emilio Cobos Álvarez
f9a539a6ab Bug 1651947 - Scale the page sequence in print preview so that pages don't overflow the viewport horizontally. r=dholbert
This is going to be useful for the new print preview UI, which is in a
doorhanger and thus much more likely to be less than the page size.

We (ab)use the existing print preview scaling mechanism. We only need it
after reflowing all pages, so this works.

This whole scaling mechanism is all-in-all not amazing, but the patch is
less gross than I initially thought. It's nice, actually.

We could put the new behavior behind a pref trivially, if that's wanted,
but I honestly thing this behavior is better even without the doorhanger
ui.

Differential Revision: https://phabricator.services.mozilla.com/D83309
2020-07-15 11:16:43 +00:00
Jonathan Watt
384c7fa790 Bug 1652368. Clean up nsDocumentViewer::Print. r=bobowen
Differential Revision: https://phabricator.services.mozilla.com/D83276
2020-07-13 07:25:13 +00:00
Jonathan Watt
ea23bf77cd Bug 1652344 p3. Stop creating an nsIPrintSettings in nsGlobalWindowOuter::PrintOuter. r=bobowen
The fallback code in nsPrintJob::DoCommonPrint to create an nsIPrintSettings if
none is passed in is never used, since all callers pass a settings object.
However, to simplify future changes I'd like nsGlobalWindowOuter::PrintOuter to
stop creating and passing in its own default valued nsIPrintSettings object.

This patch makes the fallback code that DoCommonPrint calls do what
nsGlobalWindowOuter::PrintOuter does, and makes the latter stop passing in a
settings object.

This patch also removes nsIWebBrowserPrint.globalPrintSettings since
nsGlobalWindowOuter::PrintOuter was its only consumer.

Differential Revision: https://phabricator.services.mozilla.com/D83268
2020-07-13 00:22:28 +00:00
Mihai Alexandru Michis
605e60e31b Backed out 2 changesets (bug 1652344) for causing failures in test_printpreview.xhtml
CLOSED TREE

Backed out changeset d2b66d810ab5 (bug 1652344)
Backed out changeset 075903436ef2 (bug 1652344)
2020-07-13 01:21:28 +03:00
Jonathan Watt
fccd18873d Bug 1652344 p2. Stop creating an nsIPrintSettings in nsGlobalWindowOuter::PrintOuter. r=bobowen
The fallback code in nsPrintJob::DoCommonPrint to create an nsIPrintSettings if
none is passed in is never used, since all callers pass a settings object.
However, to simplify future changes I'd like nsGlobalWindowOuter::PrintOuter to
stop creating and passing in its own default valued nsIPrintSettings object.

This patch makes the fallback code that DoCommonPrint calls do what
nsGlobalWindowOuter::PrintOuter does, and makes the latter stop passing in a
settings object.

This patch also removes nsIWebBrowserPrint.globalPrintSettings since
nsGlobalWindowOuter::PrintOuter was its only consumer.

Differential Revision: https://phabricator.services.mozilla.com/D83268
2020-07-12 19:33:49 +00:00
Jonathan Watt
67e46f1e9e Bug 1557983. Significantly simplify and fix the 'beforeprint'/'afterprint' dispatching code.
This fixes two issue.

First, the code shouldn't be dispatching these events every time it gets a new
Print or PrintPreview call.  It only needs to dispatch the events to the
original document that we're going to clone from.  When cloning from existing
static clones any changes made by 'beforeprint' will be present in the existing
static clone.

Second, the code tries to delay the 'afterprint' event until after
mozPrintCallback callbacks have been invoked, but those callbacks are invoked
in the cloned document, whereas the events are sent to the original document!
So there is no reason to do this.

Differential Revision: https://phabricator.services.mozilla.com/D34280
2020-07-11 14:14:03 +00:00
Butkovits Atila
216c637c91 Backed out 2 changesets (bug 1557983) for failures at table-background-print.html. CLOSED TREE
Backed out changeset 249eede42e9f (bug 1557983)
Backed out changeset dfbaf61ce16a (bug 1557983)
2020-07-11 13:14:13 +03:00
Jonathan Watt
6f2e71b62f Bug 1557983. Significantly simplify and fix the 'beforeprint'/'afterprint' dispatching code.
This fixes two issue.

First, the code shouldn't be dispatching these events every time it gets a new
Print or PrintPreview call.  It only needs to dispatch the events to the
original document that we're going to clone from.  When cloning from existing
static clones any changes made by 'beforeprint' will be present in the existing
static clone.

Second, the code tries to delay the 'afterprint' event until after
mozPrintCallback callbacks have been invoked, but those callbacks are invoked
in the cloned document, whereas the events are sent to the original document!
So there is no reason to do this.

Differential Revision: https://phabricator.services.mozilla.com/D34280
2020-07-11 09:06:25 +00:00
Henri Sivonen
695d6eb24c Bug 1647301 - Remove forceCharset from nsIContentViewer. r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D80470
2020-07-02 06:23:24 +00:00
Simon Giesecke
a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Emilio Cobos Álvarez
918f5020bd Bug 1643656 - Remove prefers-color-scheme: no-preference. r=gl,remote-protocol-reviewers,hiro,whimboo
It was removed from the spec.

Differential Revision: https://phabricator.services.mozilla.com/D78834
2020-06-14 23:26:04 +00:00
Kartikaya Gupta
d49af0a134 Bug 1531971 - Make the test wait for the second page to actually paint before attempting to restore the first page from bfcache. r=smaug
The first page's content viewer is only saved in the bfcache when the second
page is painted. This can happen after the load event is fired, and in that
scenario, attempting to go back to the first page will reload it rather than
restore it from the bfcache. So for the test to work properly it needs to
wait until the second page is actually painted before it attempts go back.

Differential Revision: https://phabricator.services.mozilla.com/D79347
2020-06-11 21:19:10 +00:00
Razvan Maries
d97b97fb7d Backed out changeset bca9f7459a16 (bug 1643656) for reftests perma failures. CLOSED TREE 2020-06-09 18:24:48 +03:00
Emilio Cobos Álvarez
4a08f8413d Bug 1643656 - Remove prefers-color-scheme: no-preference. r=gl,remote-protocol-reviewers,hiro,whimboo
It was removed from the spec. Bug 1643934 updates the WPT tests.

Differential Revision: https://phabricator.services.mozilla.com/D78834
2020-06-09 13:21:54 +00:00
Jonathan Watt
13380a63be Bug 1600623. Add telemetry probes for print dialog/preview opens/cancels and print target type. r=bobowen,mbalfanz
The probes collect counts for:

 - print preview open, and exit without print
 - print dialog opened from print preview, and cancelled
 - print dialog opened without print preview, and cancelled
 - silent prints
 - print target
   - PDF file
   - XPS file
   - other (probably print to physical printer, but we can never be sure)

There is some overlap with the existing PRINT_* probes, but I think we should
keep those in place temporarily until we confirm that the new probes produce
numbers that are consistent with the old probes.

This patch only adds 'print target' probes for Windows and macOS.

I use nsDeviceContextSpec*::Init() to collect the 'print target' telemetry
because the way we initialize settings from prefs (and the way macOS works in
particular) make it difficult to reliably determine the target type earlier in
the print process for all possible entry points into the printing code.

Differential Revision: https://phabricator.services.mozilla.com/D78033
2020-06-03 21:21:14 +00:00
Matt Woodrow
d0c7c2b76c Bug 1620679 - Don't fire load event from within Stop(). r=smaug
This matches what the spec says, and what blink does.

Differential Revision: https://phabricator.services.mozilla.com/D73994
2020-05-30 17:19:54 +00:00
Emilio Cobos Álvarez
6350eead9d Bug 1640917 - Remove XBL mentions in layout. r=mats
Differential Revision: https://phabricator.services.mozilla.com/D76846
2020-05-26 16:16:32 +00:00
Butkovits Atila
71f1bc22dd Backed out 2 changesets (bug 1620679) for perma Reftest failure. CLOSED TREE
Backed out changeset 8190c67514cc (bug 1620679)
Backed out changeset 4ca2912d7421 (bug 1620679)
2020-05-26 10:58:42 +03:00
Matt Woodrow
ce37f05fc7 Bug 1620679 - Don't fire load event from within Stop(). r=smaug
This matches what the spec says, and what blink does.

Differential Revision: https://phabricator.services.mozilla.com/D73994
2020-05-26 03:08:40 +00:00
Agi Sferro
8b01929dd5 Bug 1629113 - Use specific prompt for onbeforeunload. r=johannh,jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D72721
2020-05-22 16:24:12 +00:00
Mihai Alexandru Michis
c01502eb93 Backed out 2 changesets (bug 1620679) for causing failures in nsDocShell.cpp
CLOSED TREE

Backed out changeset 2957142243c5 (bug 1620679)
Backed out changeset 60df74b03f34 (bug 1620679)
2020-05-18 14:47:37 +03:00