Closed Bug 1412179 Opened 3 years ago Closed 1 year ago

webrender: implement fieldsets with non-empty legends

Categories

(Core :: Graphics: WebRender, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
mozilla68
Tracking Status
firefox57 --- unaffected
firefox58 --- unaffected
firefox68 --- fixed

People

(Reporter: Gankra, Assigned: Gankra, Mentored)

References

(Blocks 1 open bug)

Details

(Whiteboard: [wr-reserve] [gfx-noted])

Attachments

(2 files, 5 obsolete files)

This was left out in initial conversion as it required upstream support. We now have ClipMode::ClipOut which provides that support.

Someone just needs to add the appropriate push/pop clip commands in nsDisplayFieldSetBorder::CreateWebRenderCommands (it's mostly already set up with a comment).

Good bug starter bug, happy to mentor. (do we have a tag for that?)
Mentor: a.beingessner
Whiteboard: [gfx-noted]
If I could get some help on this then I would love to try and fix this!

I assume the comment Alexis refers to is https://dxr.mozilla.org/mozilla-central/source/layout/forms/nsFieldSetFrame.cpp?q=nsDisplayFieldSetBorder%3A%3ACreateWebRenderCommands&redirect_type=direct#174 ?
Yes, exactly. So looking a bit closer, there's two things to do here:

1. Add API support for generating a ClipOut
2. Use that API to Push/PopClip in the code you linked.

I expect (1) will involve making a version of ToComplexClipRegion ( http://searchfox.org/mozilla-central/source/gfx/webrender_bindings/WebRenderTypes.h#330 ) that takes a (non-rounded) Rect and a ClipMode. (It might end up trivial enough that you should just skip making a function and do the work directly in CreateWebRenderCommands)


I think (2) should look like (very-pseudocode):

region = ToComplexClipRegion(legendRect, ClipOut)
aBuiler->PushClip(aBuilder->DefineClip(region))

...

result = CreateWebRenderCommandsForBorder(..)
if (pushedClip) { aBuilder->PopClip() }
return result

Somewhere in there you should also use the aSc.ToRelativeLayoutRect to get the units right. This should be a decent example:

http://searchfox.org/mozilla-central/source/layout/generic/TextDrawTarget.h#61-75
Thanks for the details!

Unfortunately I will not be able to do anything tonight, but I'll sit down and work with this tomorrow. If I encounter any problems I'll let you know!
Whiteboard: [gfx-noted] → [gfx-noted][wr-reserve-candidate]
Whiteboard: [gfx-noted][wr-reserve-candidate] → [wr-mvp] [triage] [gfx-noted] [wr-reserve-candidate]
Whiteboard: [wr-mvp] [triage] [gfx-noted] [wr-reserve-candidate] → [wr-reserve] [gfx-noted]
I started working on an implementation today and decided to divide it up like you did with (1) and (2) (if the function becomes very small I'll just manually inline it). 

I wanted to ask about the non-rounded Rect. I wasn't sure which one to use that work with the nsRect class from "nsDisplayFieldSetBorder::CreateWebRenderCommands". Am I right in assuming that RectTyped will work (http://searchfox.org/mozilla-central/source/gfx/2d/Rect.h#229) and is it then appropriate to use gfxRect from http://searchfox.org/mozilla-central/source/gfx/thebes/gfxRect.h#12 ?
Flags: needinfo?(a.beingessner)
Looking again, it looks like ToComplexClipRegion is now dead code, having been replaced by ToComplexClipRegions. This suggests to me you should just skip to doing it inline, based on the body of ToComplexClipRegions.
Flags: needinfo?(a.beingessner)
I mimicked the ToComplexClipRegions without the radii (I assume that it shouldn't be there). DefineClip didn't need the ComplexClipRegion, can I just pass it in directly to aBuilder.DefineClip like in the code snippet? Do I need to manually define the ClipMode::ClipOut somewhere because now I only throw the layoutRect into the DefineClip

```
  bool pushedClip{false};

  if (nsIFrame* legend = frame->GetLegend()) {
    rect = frame->VisualBorderRectRelativeToSelf() + offset;
    nsRect legendRect = legend->GetNormalRect() + offset;

    if (!legendRect.IsEmpty()) {
      auto appUnitsPerDevPixel = frame->PresContext()->AppUnitsPerDevPixel();
      wr::ComplexClipRegion region;
      auto layoutRect = LayoutDeviceRect::FromAppUnits(legendRect, appUnitsPerDevPixel);

      aBuilder.PushClip(aBuilder.DefineClip(Nothing(), Nothing(), aSc.ToRelativeLayoutRect(layoutRect)));
      pushedClip = true;
    }

  } else {
    rect = nsRect(offset, frame->GetRect().Size());
  }
```

The full change is in the patch
Attached patch my.patch (obsolete) — Splinter Review
Ah, so the issue is that when we added the ClipOut API to webrender, we only put it on ComplexClipRegions, because we didn't want to bloat the much more common clip-rect. So you need to set the mode on the region, properly initialize it, and pass that in too.
Attached patch my.patch (obsolete) — Splinter Review
Attachment #8925116 - Attachment is obsolete: true
I updated the patch and am now creating an Array with a single ComplexClipRegion that I pass into the DefineClip function. With the previous patch I thought I had to pass the ComplexClipRegion as the rect (third parameter). Perhaps I should have taken a second to read exactly what the fourth parameter was '-.-
Assignee: nobody → anting004
Status: NEW → ASSIGNED
Priority: P3 → P1
It seems I did not add any flags to my updated patch, woops.

Could you look at the patch Alexis?
Flags: needinfo?(a.beingessner)
Whoops, yeah sorry didn't see you updated this!

Patch looks like what I was imagining. The style is a bit different from what I'm used to in our codebase. 

mstange, can you advise on style?
Flags: needinfo?(a.beingessner) → needinfo?(mstange)
Comment on attachment 8925848 [details] [diff] [review]
my.patch

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

Yes, I have some style comments. The code itself looks good!

::: layout/forms/nsFieldSetFrame.cpp
@@ +167,4 @@
>    auto frame = static_cast<nsFieldSetFrame*>(mFrame);
>    auto offset = ToReferenceFrame();
>    nsRect rect;
> +  bool pushedClip{false};

This syntax is rarely used in our code, usually only when initializing struct fields. So I'd recommend making this "bool pushedClip = false;" instead, so that it looks less out of place.

@@ +178,5 @@
> +      auto layoutRect = LayoutDeviceRect::FromAppUnits(legendRect, appUnitsPerDevPixel);
> +      wr::ComplexClipRegion region;
> +      region.rect = aSc.ToRelativeLayoutRect(layoutRect);
> +      region.mode = wr::ClipMode::ClipOut;
> +      nsTArray<mozilla::wr::ComplexClipRegion> array{region};

whoa, I didn't know we had a way to add a value into an nsTArray during construction!

@@ +179,5 @@
> +      wr::ComplexClipRegion region;
> +      region.rect = aSc.ToRelativeLayoutRect(layoutRect);
> +      region.mode = wr::ClipMode::ClipOut;
> +      nsTArray<mozilla::wr::ComplexClipRegion> array{region};
> +      auto clip = aBuilder.DefineClip(Nothing(), Nothing(), region.rect, &array);

Let's make this "wr::ClipId" instead of "auto" to be consistent with the other users of DefineClip.

@@ +188,5 @@
>    } else {
>      rect = nsRect(offset, frame->GetRect().Size());
>    }
>  
> +  auto result = nsCSSRendering::CreateWebRenderCommandsForBorder(this,

And please make this auto a bool instead. Same number of characters and clearer.

@@ +196,5 @@
> +                                                                 aResources,
> +                                                                 aSc,
> +                                                                 aManager,
> +                                                                 aDisplayListBuilder);
> +  if (pushedClip) { aBuilder.PopClip(); }

Final style comment: Please add line breaks.

if (pushedClip) {
  aBuilder.PopClip();
}
Attached patch my.patch (obsolete) — Splinter Review
Style fixes
Attachment #8925848 - Attachment is obsolete: true
Flags: needinfo?(a.beingessner)
Comment on attachment 8930831 [details] [diff] [review]
my.patch

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

perfect!
Attachment #8930831 - Flags: review+
Flags: needinfo?(a.beingessner)
Keywords: checkin-needed
It's probably worth adding a reftest to exercise this case (in a follow-up bug maybe) since our existing reftest suite doesn't seem to cover this.
I will be without a laptop for the next week or so. My suggestion is to, as @kats says, put the reftest in a follow-up bug. Or someone else will have to work on this bug to complete it in a timely manner.
From irc discussion, this was a misunderstanding. Because this is replacing a fallback with a proper WR implementation, it should be fine.
Yeah, my mistake. I can land this patch for you - in the future please make sure to also include the bug number in the commit message ("Bug XXXXX - commit message. r=reviewer" is the usual format).
Pushed by kgupta@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/0df37c7600d1
Implement fieldsets with non-empty legends. r=Gankro
Keywords: checkin-needed
Henrik (or Alexis) please update the patch to correct the build bustage. Thanks!

I'd do it but since this is a mentored bug you guys might as well get the full Gecko-hacking experience :)
Flags: needinfo?(bugmail) → needinfo?(anting004)
I'll happily fix it if Henrik's fine with it (since they can't work on it for a week)
I'll have a hard time fixing it for same reason as i mentioned before so please do fix it Alexis
Flags: needinfo?(anting004)
Deprioritized to P3 during triage - moving to Reserve Backlog.
Assignee: anting004 → nobody
Status: ASSIGNED → NEW
Priority: P1 → P3
Flags: needinfo?(mstange)
We'll fallback so this issue isn't related to correctness.
Priority: P1 → P3
Assignee: nobody → a.beingessner
MozReview-Commit-ID: 1QqgRcSN1K3
note to sheriffs: there's multiple commits on phabricator but I only see the first in bugzilla?
Keywords: checkin-needed
Pushed by ebalazs@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/69faa23050d9
Implement non-empty legends for wr. r=jrmuizel
Keywords: checkin-needed
Comment on attachment 9003784 [details]
Bug 1412179 - Implement non-empty legends for wr. r=jrmuizel

Jeff Muizelaar [:jrmuizel] has approved the revision.
Attachment #9003784 - Flags: review+
Backout by ebalazs@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/902644464343
Backed out changeset 69faa23050d9 for landing without first patch
https://phabricator.services.mozilla.com/p/Gankro/ mentions only one patch for this bug. Are the other patches on phabricator? Is https://phabricator.services.mozilla.com/D4010 the other patch? It changed bug numbers.
Flags: needinfo?(a.beingessner)
This should be ready to go, but I don't think we need to block the release on it.
Blocks: stage-wr-next
No longer blocks: stage-wr-trains
Alexis, please upload the patch again with arc diff so proper author information (your name and email) are included.
Depends on D4963
Attachment #8930831 - Attachment is obsolete: true
Flags: needinfo?(a.beingessner)
Attachment #9003784 - Attachment is obsolete: true
Comment on attachment 9006321 [details]
Bug 1412179 - Implement non-empty legends for wr

Jeff Muizelaar [:jrmuizel] has approved the revision.
Attachment #9006321 - Flags: review+
Comment on attachment 9006322 [details]
Bug 1412179 - defuzz tests that no longer fallback

Jeff Muizelaar [:jrmuizel] has approved the revision.
Attachment #9006322 - Flags: review+
Keywords: checkin-needed
Hi. I've tried to land this 2 times, lando returns: 

This diff does not have the proper author information uploaded to Phabricator. This can happen if the diff was created using the web UI, or a non standard client. The author should re-upload the diff to Phabricator using the "arc diff" command. 

Importing the patches returns this: 

https://irccloud.mozilla.com/file/2Kl01K6B/image.png

Removing checkin-needed, please take a look at this.
Flags: needinfo?(aryx.bugmail)
Keywords: checkin-needed
Flags: needinfo?(a.beingessner)
fyi, nika ^
Flags: needinfo?(a.beingessner) → needinfo?(nika)
Gankro: update phlay to the latest version and try repushing the patch. This is a bug with the old version.
Flags: needinfo?(nika)
Attachment #9006321 - Attachment description: Bug 1412179 - Implement non-empty legends for wr. r=jrmuizel → Bug 1412179 - Implement non-empty legends for wr
Attachment #9006322 - Attachment description: Bug 1412179 - defuzz tests that no longer fallback. r=jrmuizel → Bug 1412179 - defuzz tests that no longer fallback
*sobbing* please work phabricator
Keywords: checkin-needed
Pushed by dluca@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f22f3ce35811
Implement non-empty legends for wr r=jrmuizel
Keywords: checkin-needed
Pushed by archaeopteryx@coole-files.de:
https://hg.mozilla.org/integration/autoland/rev/29b47a085757
defuzz tests that no longer fallback. r=jrmuizel CLOSED TREE
Wait I'm confused, you pushed only one patch, and then archaeopteryx pushed the expectation changes, but I got backed out for not having the expectation change?
Flags: needinfo?(a.beingessner) → needinfo?(dluca)
After both patches landed, there was failure for layout/reftests/box-shadow/fieldset.html:

https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed,busted,exception&tochange=7102989560f2a6155025e4f083cc41427516c2b8&fromchange=56a508217ab7e7c28e1e5622f8dd31caa98a8706&searchStr=reftest&selectedJob=198931299

REFTEST TEST-UNEXPECTED-FAIL | file:///builds/worker/workspace/build/tests/reftest/tests/layout/reftests/box-shadow/fieldset.html == file:///builds/worker/workspace/build/tests/reftest/tests/layout/reftests/box-shadow/fieldset-ref.html | image comparison, max difference: 246, number of differing pixels: 42

Your patch in phabricator https://phabricator.services.mozilla.com/D4964 looks like the change which landed for that file: https://hg.mozilla.org/integration/autoland/rev/29b47a0857574c7164d03ec56c27d5c3e51f412a

The expectation for the sticky-legend one had already been changed before to the new value: https://hg.mozilla.org/integration/autoland/rev/e4f3b85bc61b / bug 1488403

Part 1 has a merge conflict now, please update it. Set potential needinfos on me, my work interval is more frequent (but shorter) compared to the sheriffs. Let's get this landed.
Flags: needinfo?(dluca)
Flags: needinfo?(aryx.bugmail)
Attachment #9006322 - Attachment is obsolete: true
Keywords: checkin-needed

Pushed by ncsoregi@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/fd5cb917b6eb
implement fieldsets with nonempty legends. r=kats

Keywords: checkin-needed

Backed out changeset fd5cb917b6eb (bug 1412179) for Wr failures at /html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html

Backout: https://hg.mozilla.org/integration/autoland/rev/bcf9b5a72198cb74f6fc063234652583201e4c3e

Failure push: https://treeherder.mozilla.org/#/jobs?repo=autoland&selectedJob=240112129&revision=fd5cb917b6eb7623ee6de94d5105ac4e23c38371

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=240114849&repo=autoland&lineNumber=44081

task 2019-04-13T07:52:27.639Z] 07:52:27 INFO - TEST-START | /html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html
[task 2019-04-13T07:52:27.646Z] 07:52:27 INFO - PID 17262 | 1555141947639 Marionette INFO Testing http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html == http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical-ref.html
[task 2019-04-13T07:52:27.662Z] 07:52:27 INFO - PID 17262 | JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 2383: TypeError: tabbrowser.getTabForBrowser is not a function
[task 2019-04-13T07:52:27.662Z] 07:52:27 INFO - PID 17262 | ++DOMWINDOW == 49 (0x7f95d8af7400) [pid = 17403] [serial = 49] [outer = 0x7f95dbfcbd40]
[task 2019-04-13T07:52:28.032Z] 07:52:28 INFO - PID 17262 | JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 2383: TypeError: tabbrowser.getTabForBrowser is not a function
[task 2019-04-13T07:52:28.039Z] 07:52:28 INFO - PID 17262 | ++DOMWINDOW == 50 (0x7f95d8af4000) [pid = 17403] [serial = 50] [outer = 0x7f95dbfcbd40]
[task 2019-04-13T07:52:28.282Z] 07:52:28 INFO - PID 17262 | 1555141948276 Marionette INFO No differences allowed
[task 2019-04-13T07:52:28.388Z] 07:52:28 INFO - TEST-UNEXPECTED-PASS | /html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html | Testing http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html == http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical-ref.html
[task 2019-04-13T07:52:28.388Z] 07:52:28 INFO - REFTEST IMAGE 1 (TEST): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQVR4nO3dW3IbuZYFUA+wfu8oahIeU02Q/dFXXWyaZAJIPM4B1opglG1KMrYAZ2KTmapfDwAAgEl+rR4AAABwDgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGCadAXk1690QwYAAP4r5G7+W8kYWUB+/fpV9PVLPw4AAPj/Qu6iV27uS/9uBQQAAOqF3EUrIAAAsKfLXfTP5UavG+6SP3+3SX/+83cf+/pn7567GufdjynxKXfp3wMAACcq2h2XbtY/FY53f/btc2vvAflWBmo+5urvLhlHyfcEAABO1a2A1JSGq015j69VejN5y+fd/VwAADhV8Y655B2F1s+9+vg7X6v271FAAABgnK4F5Nvj2+de/V014/j2eVfj+vT13328AgIAAPWqdszPN1l/eq7m67Q831JAai7T8g4IAACMM6WArL4HRAEBAIAYuhWQT3/eslGv/QlZLT/xatRPwQIAAD6r3jGXlIereyxK/h8Zn+67aP26756v+fo1Y1NEAADgPTtlAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkuC8hff/117OP379/LxyC//PLLL7/8K/IDjKKAfDn4/vPPP8vHIb/88ssvv/wr8gOMooB8OfieegKSX3755ZdffoBRFJAvB98TT0Dyyy+//PLLr4AAIykgXw6+p52A5Jdffvnll18BAUZTQL4cfE86Ackvv/zyyy+/AgLMoIB8OfiecgKSX3755ZdffgUEmOX4AvLt4HvCCUh++eWXX375FRBgptsF5NvBK/rj6uBbcgJanUF++eWXX375R+QHGOXYAvLzP5k69QQkv/zyyy+//N8eAKMcWUCe/w+3J56A5Jdffvnll//qYwFGOa6APB98TzwByS+//PLLL78CAqx0VAF5PfiedgKSX3755ZdffgUEWO2YAvLu4HvSCUh++eWXX375FRAg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
[task 2019-04-13T07:52:28.389Z] 07:52:28 INFO - REFTEST IMAGE 2 (REFERENCE): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQVR4nO3dW3IbuZYFUA+wfu8oahIeU02Q/dFXXWyaZAJIPM4B1opglG1KMrYAZ2KTmapfDwAAgEl+rR4AAABwDgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGCadAXk1690QwYAAP4r5G7+W8kYWUB+/fpV9PVLPw4AAPj/Qu6iV27uS/9uBQQAAOqF3EUrIAAAsKfLXfTP5UavG+6SP3+3SX/+83cf+/pn7567GufdjynxKXfp3wMAACcq2h2XbtY/FY53f/btc2vvAflWBmo+5urvLhlHyfcEAABO1a2A1JSGq015j69VejN5y+fd/VwAADhV8Y655B2F1s+9+vg7X6v271FAAABgnK4F5Nvj2+de/V014/j2eVfj+vT13328AgIAAPWqdszPN1l/eq7m67Q831JAai7T8g4IAACMM6WArL4HRAEBAIAYuhWQT3/eslGv/QlZLT/xatRPwQIAAD6r3jGXlIereyxK/h8Zn+67aP26756v+fo1Y1NEAADgPTtlAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkuC8hff/117OP379/LxyC//PLLL7/8K/IDjKKAfDn4/vPPP8vHIb/88ssvv/wr8gOMooB8OfieegKSX3755ZdffoBRFJAvB98TT0Dyyy+//PLLr4AAIykgXw6+p52A5Jdffvnll18BAUZTQL4cfE86Ackvv/zyyy+/AgLMoIB8OfiecgKSX3755ZdffgUEmOX4AvLt4HvCCUh++eWXX375FRBgptsF5NvBK/rj6uBbcgJanUF++eWXX375R+QHGOXYAvLzP5k69QQkv/zyyy+//N8eAKMcWUCe/w+3J56A5Jdffvnll//qYwFGOa6APB98TzwByS+//PLLL78CAqx0VAF5PfiedgKSX3755ZdffgUEWO2YAvLu4HvSCUh++eWXX375FRAg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
[task 2019-04-13T07:52:28.392Z] 07:52:28 INFO - TEST-INFO expected FAIL | took 712ms
[task 2019-04-13T07:52:28.392Z] 07:52:28 INFO - PID 17262 | [Parent 17262, Compositor] WARNING: Possibly dropping task posted to updater thread: file /builds/worker/workspace/build/src/gfx/layers/apz/src/APZUpdater.cpp, line 424
[task 2019-04-13T07:52:28.711Z] 07:52:28 INFO - PID 17262 | 1555141948706 Marionette INFO Stopped listening on port 2828
[task 2019-04-13T07:52:29.097Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 49 (0x7f95dbfcbd40) [pid = 17403] [serial = 1] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html]
[task 2019-04-13T07:52:29.099Z] 07:52:29 INFO - PID 17262 | --DOCSHELL 0x7f95daba6800 == 0 [pid = 17403] [id = {b37e6bd2-67e9-4ddf-9398-4248101da57b}] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html]
[task 2019-04-13T07:52:29.175Z] 07:52:29 INFO - PID 17262 | [Parent 17262, Compositor] WARNING: Possibly dropping task posted to updater thread: file /builds/worker/workspace/build/src/gfx/layers/apz/src/APZUpdater.cpp, line 424
[task 2019-04-13T07:52:29.232Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 48 (0x7f95d8aef800) [pid = 17403] [serial = 29] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-lower-alpha.html]
[task 2019-04-13T07:52:29.236Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 47 (0x7f95d8af1400) [pid = 17403] [serial = 30] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-lower-roman.html]
[task 2019-04-13T07:52:29.237Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 46 (0x7f95d8c3c800) [pid = 17403] [serial = 20] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-square.html]
[task 2019-04-13T07:52:29.237Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 45 (0x7f95dab2b800) [pid = 17403] [serial = 7] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/li-type-unsupported-upper-alpha.html]
[task 2019-04-13T07:52:29.246Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 44 (0x7f95d8af9c00) [pid = 17403] [serial = 35] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-border-gap-position-relative-ref.html]
[task 2019-04-13T07:52:29.246Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 43 (0x7f95d8afcc00) [pid = 17403] [serial = 37] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-containing-block-ref.html]
[task 2019-04-13T07:52:29.247Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 42 (0x7f95d8c3b000) [pid = 17403] [serial = 19] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-round.html]
[task 2019-04-13T07:52:29.247Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 41 (0x7f95d8c38000) [pid = 17403] [serial = 17] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-lower-roman.html]
[task 2019-04-13T07:52:29.247Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 40 (0x7f95dab33800) [pid = 17403] [serial = 10] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-supported-xhtml.xhtml]
[task 2019-04-13T07:52:29.248Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 39 (0x7f95dab33400) [pid = 17403] [serial = 9] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-supported-ref.html]
[task 2019-04-13T07:52:29.248Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 38 (0x7f95d8c43c00) [pid = 17403] [serial = 26] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-ref.html]
[task 2019-04-13T07:52:29.249Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 37 (0x7f95d8c36800) [pid = 17403] [serial = 16] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-lower-alpha.html]
[task 2019-04-13T07:52:29.249Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 36 (0x7f95d8c44c00) [pid = 17403] [serial = 27] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-decimal.html]
[task 2019-04-13T07:52:29.249Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 35 (0x7f95dad92c00) [pid = 17403] [serial = 13] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-circle.html]
[task 2019-04-13T07:52:29.249Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 34 (0x7f95d8c42400) [pid = 17403] [serial = 25] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-supported.html]
[task 2019-04-13T07:52:29.250Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 33 (0x7f95dab34800) [pid = 17403] [serial = 28] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-invalid.html]
[task 2019-04-13T07:52:29.253Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 32 (0x7f95d8af2c00) [pid = 17403] [serial = 31] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-upper-alpha.html]
[task 2019-04-13T07:52:29.253Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 31 (0x7f95d8af6000) [pid = 17403] [serial = 33] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/no-red-ref.html]
[task 2019-04-13T07:52:29.253Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 30 (0x7f95dab2d000) [pid = 17403] [serial = 8] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/li-type-unsupported-upper-roman.html]
[task 2019-04-13T07:52:29.254Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 29 (0x7f95dab36400) [pid = 17403] [serial = 11] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-supported.html]
[task 2019-04-13T07:52:29.254Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 28 (0x7f95d8afb400) [pid = 17403] [serial = 36] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-border-gap-position-relative.html]
[task 2019-04-13T07:52:29.255Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 27 (0x7f95da784000) [pid = 17403] [serial = 3] [outer = (nil)] [url = about:blank]

Flags: needinfo?(a.beingessner)

one unexpected pass, and one fuzzy-if(webrender, 8, 9), which seems totally fine to land. Nice!

Flags: needinfo?(a.beingessner)
Keywords: checkin-needed

Pushed by ccoroiu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/693535165c9f
implement fieldsets with nonempty legends. r=kats

Keywords: checkin-needed
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68
Regressions: 1546018
You need to log in before you can comment on or make changes to this bug.