Implement overflow media queries

RESOLVED FIXED in Firefox 66

Status

()

enhancement
P3
normal
RESOLVED FIXED
2 years ago
3 months ago

People

(Reporter: florian, Assigned: quasicomputational)

Tracking

(Blocks 1 bug, {dev-doc-complete})

unspecified
mozilla66
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox66 fixed)

Details

Attachments

(2 attachments, 5 obsolete attachments)

Reporter

Description

2 years ago
The overflow-block and overflow-inline media queries from Media queries level 4 let people tell apart media that paginate vs media that scroll or media that clip using media features instead of media types.

That way, you can do

@media (overflow-block: paged) {
  /* do something smart for pagination */
}

and that will do the right thing when printing AND in ebook readers that paginate instead of scrolling, instead of 

@media print {
  /* do something smart for pagination */
}

which would work on print but fail in ebook readers.

The specification is over here:
https://drafts.csswg.org/mediaqueries-4/#mf-overflow-block
https://drafts.csswg.org/mediaqueries-4/#mf-overflow-inline
Reporter

Comment 1

2 years ago
This should be marked as blocking https://bugzilla.mozilla.org/show_bug.cgi?id=1312621

Updated

2 years ago
Severity: normal → enhancement
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P3
Assignee

Comment 2

5 months ago
Attachment #9032976 - Flags: review?(emilio)
Assignee

Comment 3

5 months ago
Attachment #9032977 - Flags: review?(emilio)
Assignee

Comment 4

5 months ago
Hello! First patch submission to Firefox. I have asked Emilio to review because he had a look at the patch at bug 1494034, which is so similar that I used it as a template for this one.
Attachment #9032979 - Flags: review?(emilio)
Oh hey! Nice, thanks for the patches! I'll try to look at them shortly.

For future reference, the official way of submitting patches these days is Phabricator[1], but no worries, I'm happy to review patches in bugzilla instead :)

[1]: https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html
Comment on attachment 9032976 [details] [diff] [review]
1/3 - Expose an 'is this document scrolling or paged?' flag.

Review of attachment 9032976 [details] [diff] [review]:
-----------------------------------------------------------------

So, more of a question to understand the patch rather than a review...

Why is this doing something different than @media print? Is it intentional?

If it is, then it's worth documenting why on the commit message, but otherwise I think they should match. You can test it with something like `device.media_type() == MediaType::print()`.

If they should _not_ match, then it's worth adding a test that tests the difference. Gecko understands four types of presentation you'd want to distinguish between them: https://searchfox.org/mozilla-central/rev/413dd3a1fab3446749f3690d93ee17e3196f8c37/layout/base/nsPresContext.h#148

All of them but the first match @media print.

Also, IsRootPaginatedDocument looks like the wrong test to me anyway, since it'll only be true for the root document, not subdocuments (for example, if you printed an <iframe>, I think that <iframe> should match both @media print and the new overflow queries as well, shouldn't it?).
Attachment #9032976 - Flags: review?(emilio)
Florian, so, question for you as the spec author: Your first comment seems to imply that overflow-block: paged and @media print should match different things...

Should them, really? You're way more familiar with the publishing industry than I am, but I'd expect all e-book readers to match @media print. Is that not true?

In Gecko, all paginated layouts match @media print, fwiw.
Flags: needinfo?(florian)
Comment on attachment 9032977 [details] [diff] [review]
2/3 - Implement the 'overflow-block' media query.

Review of attachment 9032977 [details] [diff] [review]:
-----------------------------------------------------------------

This looks good, thank you! Though I'll wait for the reply for the first patch to r+ it. It may be worth to test subdocuments too, if it's not too much of a hassle.

Also, adding some very basic parsing tests to either:

  https://searchfox.org/mozilla-central/source/layout/style/test/test_media_queries.html

or:

  https://searchfox.org/mozilla-central/source/testing/web-platform/tests/css/mediaqueries/test_media_queries.html

(the later preferred, since this is not mozilla-specific) would be great!

::: servo/components/style/gecko/media_features.rs
@@ +316,5 @@
> +
> +  match query_value {
> +      OverflowBlock::None => false,
> +      OverflowBlock::Scroll => scrolling,
> +      OverflowBlock::OptionalPaged => false,

nit: You could merge the two branches that return false as follows:

match query_value {
    OverflowBlock::None |
    OverflowBlock::OptionalPaged => false,
    OverflowBlock::Scroll => scrolling,
    OverflowBlock::Paged => !scrolling,
}
Attachment #9032977 - Flags: review?(emilio)
Comment on attachment 9032979 [details] [diff] [review]
3/3 - Implement the 'overflow-inline' media query.

Review of attachment 9032979 [details] [diff] [review]:
-----------------------------------------------------------------

This looks great too! Same remarks as the previous patch :)

I assume you don't have access to the try server, right? I'm happy to push your patches to automation to ensure that the reftests you just added pass there :)
Attachment #9032979 - Flags: review?(emilio)
Reporter

Comment 10

5 months ago
> Your first comment seems to imply that overflow-block: paged and @media print should match different things...

They could:

* printing on roll paper would match '@media print' but not '@media (overflow-block: paged)'
* An on-screen paginated view would match '@media (overflow-block: paged)' but not '@media print'. For instance, an ebook reader, or something like https://vivliostyle.org/. (as an exception print-preview, probably shouldn't do that, and instead should probably pretend it's print even if it is not for the sake of being a preview)

I don't believe Firefox uses either of these modes as of today, so from a practical point of view, having them do the same is  fine for now. However, if Gecko should support being used in either of these two modes, it could make sense from keep these somewhat separate.

Even if it isn't a high priority right now, I suspect rendering paginated ebook-like view with Gecko would be reasonable thing to do (either to display EPUB ebooks or the like, or even possibly as an opt-in view for web content).
Flags: needinfo?(florian)
Assignee

Comment 11

5 months ago
Yes, I'd meant to have it coincide with the 'print' media type, but I didn't figure out the right way to do that without the prod - thanks!

As noted in a comment in the patch, this assumption (that print === paged and not print === scrolling) may not be true in the future, but I think it's sensible to leave the code adaptations to future people when they break that assumption. Hopefully the comment's clear enough.

I have added a test with a subdocument to exercise that, but running it as a  reftest doesn't render the iframe at all (possibly because iframes don't get along with class=reftest-paged?). I left it in anyway and manually checked that it renders as expected.

WPT parsing tests have also been added, as well as a small sanity check.
Attachment #9032976 - Attachment is obsolete: true
Attachment #9032977 - Attachment is obsolete: true
Attachment #9032979 - Attachment is obsolete: true
Attachment #9033087 - Flags: review?(emilio)
Comment on attachment 9033087 [details] [diff] [review]
1/2 - Implement the 'overflow-block' media query.

Review of attachment 9033087 [details] [diff] [review]:
-----------------------------------------------------------------

Yeah, I agree. This patch looks good to me, thanks!
Attachment #9033087 - Flags: review?(emilio) → review+
Comment on attachment 9033088 [details] [diff] [review]
2/2 - Implement the 'overflow-inline' media query.

Review of attachment 9033088 [details] [diff] [review]:
-----------------------------------------------------------------

(I assume you also meant to ask me to review this patch)

Looks good :)
Attachment #9033088 - Flags: review+
Assignee: nobody → quasicomputational
I pushed your patches to the try server:

  https://treeherder.mozilla.org/#/jobs?repo=try&revision=66fb218294ed2f60ec28671cc055e4792063720a

And sent an intent email as per https://wiki.mozilla.org/ExposureGuidelines:

  https://groups.google.com/d/msg/mozilla.dev.platform/0XQjow3t5vY/tmgRdojAAgAJ

Assuming nobody objects heavily I'll push the patches as soon as the try run above is green.

Thanks a lot again!
Assignee

Comment 16

5 months ago
Thank you for the reviews, too!
That try run looks green! I was going to push the patches myself but the tree seems closed due to infra issues, so I'll set the keyword so a sheriff can land it when appropriate :)

Thanks very much again for the patch!
Keywords: checkin-needed

Comment 18

5 months ago
Pushed by apavel@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/849c2b71aae4
Implement the 'overflow-block' media query. r=emilio
https://hg.mozilla.org/integration/mozilla-inbound/rev/2f2f235a4cba
Implement the 'overflow-inline' media query. r=emilio
Keywords: checkin-needed
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/14663 for changes under testing/web-platform/tests
Upstream web-platform-tests status checks passed, PR will merge once commit reaches central.

Comment 21

5 months ago
Backed out for reftest failures on tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block.html.

Push with failure: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&resultStatus=testfailed%2Cbusted%2Cexception&classifiedState=unclassified&revision=2f2f235a4cba544d833d7f1ad798b182650e4df1

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=218698052&repo=mozilla-inbound&lineNumber=2769

[task 2018-12-24T19:46:34.349Z] 19:46:34     INFO -  REFTEST TEST-START | http://10.0.2.2:8854/tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block.html == http://10.0.2.2:8854/tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block-ref.html
[task 2018-12-24T19:46:34.349Z] 19:46:34     INFO -  REFTEST TEST-LOAD | http://10.0.2.2:8854/tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block.html | 277 / 538 (51%)
[task 2018-12-24T19:46:34.349Z] 19:46:34     INFO -  REFTEST TEST-LOAD | http://10.0.2.2:8854/tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block-ref.html | 277 / 538 (51%)
[task 2018-12-24T19:46:45.169Z] 19:46:45     INFO -  REFTEST TEST-UNEXPECTED-FAIL | http://10.0.2.2:8854/tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block.html == http://10.0.2.2:8854/tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block-ref.html | image comparison, max difference: 243, number of differing pixels: 157
[task 2018-12-24T19:46:45.182Z] 19:46:45     INFO -  REFTEST   IMAGE 1 (TEST): data:image/png;base64,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
[task 2018-12-24T19:46:45.193Z] 19:46:45     INFO -  REFTEST   IMAGE 2 (REFERENCE): data:image/png;base64,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ADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABDT/eIv/mIBAAAkGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAAxHS/9Eu/VAAAAAkGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABDT/fIv/3IBAAAkGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABATPcrv/IrBQAAkGCAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADHdiy++WAAAAAkGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABBjgAAAADEGCAAAEGOAAAAAMQYIAAAQY4AAAAAxBggAABDT/eqv/moBAAAkGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAAxBggAABAjAECAADEGCAAAECMAQIAAMQYIAAAQIwBAgAA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
[task 2018-12-24T19:46:45.196Z] 19:46:45     INFO -  REFTEST INFO | Saved log: START http://10.0.2.2:8854/tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block.html
[task 2018-12-24T19:46:45.196Z] 19:46:45     INFO -  REFTEST INFO | Saved log: [CONTENT] OnDocumentLoad setting up print mode
[task 2018-12-24T19:46:45.197Z] 19:46:45     INFO -  REFTEST INFO | Saved log: [CONTENT] OnDocumentLoad triggering AfterOnLoadScripts
[task 2018-12-24T19:46:45.197Z] 19:46:45     INFO -  REFTEST INFO | Saved log: Initializing canvas snapshot
[task 2018-12-24T19:46:45.197Z] 19:46:45     INFO -  REFTEST INFO | Saved log: DoDrawWindow 0,0,800,1000
[task 2018-12-24T19:46:45.198Z] 19:46:45     INFO -  REFTEST INFO | Saved log: [CONTENT] RecordResult fired
[task 2018-12-24T19:46:45.198Z] 19:46:45     INFO -  REFTEST INFO | Saved log: RecordResult fired
[task 2018-12-24T19:46:45.199Z] 19:46:45     INFO -  REFTEST INFO | Saved log: START http://10.0.2.2:8854/tests/layout/reftests/css-mediaqueries/mq_print_iframe_overflow-block-ref.html
[task 2018-12-24T19:46:45.199Z] 19:46:45     INFO -  REFTEST INFO | Saved log: [CONTENT] OnDocumentLoad setting up print mode
[task 2018-12-24T19:46:45.200Z] 19:46:45     INFO -  REFTEST INFO | Saved log: [CONTENT] OnDocumentLoad triggering AfterOnLoadScripts
[task 2018-12-24T19:46:45.200Z] 19:46:45     INFO -  REFTEST INFO | Saved log: Initializing canvas snapshot
[task 2018-12-24T19:46:45.201Z] 19:46:45     INFO -  REFTEST INFO | Saved log: DoDrawWindow 0,0,800,1000
[task 2018-12-24T19:46:45.202Z] 19:46:45     INFO -  REFTEST INFO | Saved log: [CONTENT] RecordResult fired
[task 2018-12-24T19:46:45.203Z] 19:46:45     INFO -  REFTEST INFO | Saved log: RecordResult fired

Backout: https://hg.mozilla.org/integration/mozilla-inbound/rev/4094a816f2070977c253c1d0e702248f59a5f79c
Flags: needinfo?(quasicomputational)
Upstream PR was closed without merging
Assignee

Comment 23

5 months ago
I've done some investigation on the test failure, and my conclusion is that the pagination reftest code doesn't work properly with subdocuments: either not displaying them at all or with the wrong media type.

I tested that hypothesis by swapping the overflow-block media queries with a print/screen/all/none media type query (as appropriate) and the reftest failed in exactly the same way. I have also manually checked that print previews are behaving correctly in both Firefox and Fennec.

This isn't really a surprise; the reftest README does say that the pagination tests have problems with frames.

Since it was producing false negatives and not adding any extra coverage due to brokenness, I've regretfully ripped out the iframe reftest. I did try with an SVG instead of an iframe, but that was still causing the false negative, so manual testing will have to suffice.
Attachment #9033087 - Attachment is obsolete: true
Attachment #9033088 - Attachment is obsolete: true
Flags: needinfo?(quasicomputational)
Attachment #9033413 - Flags: review?(emilio)
Comment on attachment 9033413 [details] [diff] [review]
1/2 - Implement the 'overflow-block' media query.

Review of attachment 9033413 [details] [diff] [review]:
-----------------------------------------------------------------

Yeah, sounds good. Thanks for looking into it! :)
Attachment #9033413 - Flags: review?(emilio) → review+
Attachment #9033414 - Flags: review?(emilio) → review+
Tried to land these changes but got this error:
applying patch-2.diff
patching file layout/reftests/css-mediaqueries/reftest.list
Hunk #1 FAILED at 11
1 out of 1 hunks FAILED -- saving rejects to file layout/reftests/css-mediaqueries/reftest.list.rej
patching file servo/components/style/gecko/media_features.rs
Hunk #2 FAILED at 526
1 out of 3 hunks FAILED -- saving rejects to file servo/components/style/gecko/media_features.rs.rej
patching file testing/web-platform/tests/css/mediaqueries/test_media_queries.html
Hunk #1 succeeded at 517 with fuzz 2 (offset -13 lines).
patching file xpcom/ds/StaticAtoms.py
Hunk #1 FAILED at 926
1 out of 1 hunks FAILED -- saving rejects to file xpcom/ds/StaticAtoms.py.rej
patch failed, unable to continue (try -v)
patch failed, rejects left in working directory
errors during apply, please fix and qrefresh patch-2.diff

emilio: Could you please check this?
Flags: needinfo?(emilio)

Comment 27

5 months ago
Pushed by emilio@crisal.io:
https://hg.mozilla.org/integration/mozilla-inbound/rev/75ddf9a6a2bb
Implement the 'overflow-block' media query. r=emilio
https://hg.mozilla.org/integration/mozilla-inbound/rev/9495b83aad64
Implement the 'overflow-inline' media query. r=emilio
Keywords: checkin-needed
Probably applied in the wrong order? They applied cleanly on inbound here. Pushed them myself anyway, thanks!
Flags: needinfo?(emilio)
Upstream web-platform-tests status checks passed, PR will merge once commit reaches central.

Comment 30

5 months ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/75ddf9a6a2bb
https://hg.mozilla.org/mozilla-central/rev/9495b83aad64
Status: NEW → RESOLVED
Last Resolved: 5 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla66
Upstream PR merged

I've checked this out; these media features are documented:

And the data is updated to show the correct Fx support.

You need to log in before you can comment on or make changes to this bug.