From MozillaWiki
Jump to: navigation, search

Firefox 64 Platform Layout Release Notes

Noteworthy Changes


  • Implemented interaction (hover/pointer type) media queries from Media Queries Level 4 (bug 1035774)
  • Enabled CSS style-able scrollbar support from Scrollbars Level 1 (bug 1492012)
  • Added support for multi-position gradient color stops syntax from Images Level 4 (bug 1352643)
  • Added support for proposed @supports selector() syntax (bug 1499386)
  • Added support for window.screenLeft and window.screenTop (bug 1498860)
  • Added support for text-transform: full-size-kana (bug 1498148)

Web Compatibility

  • Removed support for -moz/-webkit-appearance values not supported in other browsers (bug 1496720)
  • Fix default page width bug when page has two different <meta name="viewport"> tags (bug 1476995)
  • Added support for <meta name="viewport"> "extend-to-zoom" semantics (bug 1494422)

All Bugs Fixed

Note: Does not include some minor automated fixes, such as web platform test syncs.

CSS Parsing and Computation

bug 1338158 Use the 'unset' value more in UA sheets

bug 1352643 [css-images-4]Implement multi-position gradient color-stops syntax

bug 1368555 [Meta] Implement -webkit-appearance

bug 1386907 don't build a staticlib for geckoservo

bug 1408841 Remove preference "layout.css.filters.enabled"

bug 1434963 Apply CORS Mode to shape-outside ImageValues at point of construction

bug 1440251 Allow division in calc for <integer>s.

bug 1472172 Old css/css-transitions tests flaky

bug 1472917 Implement the even smarter interpolation for transform list

bug 1475691 Publish servo_arc on

bug 1477079 Crash in nsXBLResourceLoader::StyleSheetLoaded

bug 1478505 Add support for CSS prefers-reduced-motion media feature for Android

bug 1483075 Merge scrollbar color properties into one

bug 1483111 Implement any-pointer and any-hover media queries features

bug 1486325 Enable layout.css.unknown-webkit-pseudo-element by default

bug 1487838 Add a pref for |clip-path:path()|

bug 1488155 links sometimes not styled properly in about:privatebrowsing in a private browsing window

bug 1488300 Loading of external resources referenced from CSS like elements from SVG document should block onload

bug 1488472 Bug 1445834 disabled the CSS border tests everywhere.

bug 1488817 Assertion failure: mOwner == ExpectedOwnerForChild(aFrame) (Missed some frame in the hierarchy?), at /builds/worker/workspace/build/src/layout/base/RestyleManager.cpp:2045

bug 1488854 Sync some servo changes.

bug 1489529 Update comments that refer to nsRuleNode to refer to the right thing

bug 1489667 Cherry-pick servo/servo#21635

bug 1489676 Teach the ComputeSquaredDistance derive about #[animation(constant)]

bug 1489862 Cherry-pick servo/servo#21652

bug 1490311 Some misc. cleanup

bug 1490432 Preemptively fix unified bustage in layout/style

bug 1490791 Make the shadow root stylesheet list (and .sheet) only work on connected trees.

bug 1491577 Sync servo stuff.

bug 1491579 Enable nsstring/gecko_debug in a place other than components/style.

bug 1491620 Split apply_declarations.

bug 1491622 Some minor cleanups.

bug 1492012 Enable scrollbar properties by default

bug 1492567 Back out bug 1481866.

bug 1493043 Change function arguments from nsIFrame& to nsIFrame* in RestyleManager

bug 1493181 The size of the 'ch' unit may be inappropriately rounded up when converting to appUnits

bug 1493435 Sync servo stuff.

bug 1493507 Don't walk the rule tree three times from apply_declarations.

bug 1494384 fix bindgen for aarch64 windows

bug 1494501 Rename pref "layout.css.scrollbar-colors.enabled" to "layout.css.scrollbar-color.enabled"

bug 1494607 Have custom scrollbars blend with underlying natively for Windows

bug 1494622 Cleanup a bit CSSValue and such.

bug 1495353 remove unused css::URLValueData::MightHaveRef

bug 1495645 move image request table out of css::ImageValue

bug 1495984 nsContentUtils::IsLocalRefURL differs from CssUrl::is_fragment

bug 1495994 merge ImageValue, URLValue, and URLValueData

bug 1496008 Serialize some more image properties using servo.

bug 1496041 Remove unused ImageValue constructor.

bug 1496279 ImageLoader::RegisterCSSImage doesn't need to be called on loading document when printing

bug 1496287 fix "warning: unused import: `std::mem`"

bug 1496295 remove some more unused methods from css::URLValue

bug 1496308 require URLExtraData::mPrincipal to be non-null

bug 1496312 URLValueData doesn't need to release mBaseURI and mReferrer on the main thread

bug 1496558 Handle max-content/min-content/fit-content/available keywords for block-size dimension properly

bug 1496720 [css-compat] Unship -moz/webkit-appearance values not supported by other UAs / spec

bug 1496961 Let some XUL unshipping prefs ride the trains.

bug 1497406 add helper function to set length and copy into nsTArrays of PODs from Rust

bug 1497607 Sync servo stuff.

bug 1497734 Rename nsStaticAtom subclasses

bug 1497972 Use LookupForAdd in ImageLoader::LoadImage.

bug 1497981 Simplify a bit ImageLoader::LoadImage.

bug 1497986 Some more nsCSSValue cleanup.

bug 1498734 Always compute angle values to degrees.

bug 1498755 clean up and document Servo binding header files

bug 1498943 Don't copy style structs for stuff that is not going to change.

bug 1499359 Unused import warning: HashMap in servo/components/style/

bug 1499386 Implement @supports selector() syntax.

bug 1499408 slim down css::URLValue a little more

bug 1499778 Remove StaticId.

bug 1499863 Dynamic changes to will-change which cause the creation of an abspos containing block aren't honored.

bug 1499991 nsStyleDisplay::CalcStyleDifference doesn't handle no-op will-change changes correctly.

bug 1500260 Sync servo stuff.

CSS Transitions and Animations

bug 1486094 Make path() animatable

bug 1488414 Broken slider box on

bug 1489965 change default bug component for css-animations and css-transitions reftests

bug 1491954 Filping boolean half way for path() interpolation

DOM: CSS Object Model

bug 1478485 Incorrect value for position:absolute's getComputedStyle left (for display:grid)

bug 1498445 cssstyledeclaration-mutationrecord-002.html is not testing what it wants to test.

bug 1498860 Consider implementing window.screenLeft and window.screenTop


bug 326944 Remove nsIComboboxControlFrame

bug 328680 Remove nsIListControlFrame

bug 458473 ReflowInput::InitConstraints potential use of uninitialized value

bug 1035774 Implement Interaction Media Features including pointer:coarse that replaces non-standard -moz-touch-enabled

bug 1299118 Implement Time to Interactive (TTI) for Telemetry/Profiler

bug 1428670 Font inflation layout regression

bug 1445570 Ensure notifying the MozAfterPaint correctly without timer.

bug 1470462 Implement contain:size for GridContainerFrame

bug 1476995 page with two different <meta name="viewport">s has a different "default width" on Chrome and Firefox on Android.

bug 1481098 Remove Unused aParentContext Parameter in ServoStyleSet::ResolveStyleFor Function

bug 1483659 Perspective frames with transformed children might not have correct overflow areas

bug 1485581 grid item's height affected by img's width in vertical writing mode

bug 1487190 Update bugzilla metadata in to reflect Layout components reorganization in bug 1484408

bug 1488684 Devirtualize more of layout

bug 1488728 Remove PresShell::GetEventTargetFrame

bug 1489015 Remove nsAbsoluteItems::AddChild()

bug 1489149 Assertion failure: !aPrevFrame || (!aPrevFrame->GetNextContinuation() || (((aPrevFrame->GetNextContinuation()->GetStateBits() & NS_FRAME_IS_OVERFLOW_CONTAINER)) && !(aPrevFrame->GetStateBits() & NS_FRAME_IS_OVERFLOW_CONTAINER))) (aPrevFrame must be the la

bug 1489770 crash at null in [@ nsCSSFrameConstructor::CreateContinuingFrame]

bug 1490012 crash at null in [@ mozilla::ServoStyleSet::UpdateStylist]

bug 1490037 Assertion failure: content == pc->Document()->GetRootElement() (Root element is the only case for this fallback path to be triggered), at /builds/worker/workspace/build/src/layout/base/nsLayoutUtils.cpp:10268

bug 1490111 contain-layout-formatting-context-margin-001's reference file (expressed in <link> tag) is incorrect

bug 1490216 some miscellaneous old code removal

bug 1490410 PresShell.cpp:7947:10: warning: 'return' will never be executed [-Wunreachable-code-return]

bug 1490611 Refactor DISPLAY_*_WIDTH macro names(and the relevant struct of the macro contents) to logical DISPLAY_*_INLINE_SIZE

bug 1491235 [css-contain] Size containment should not suppress baseline alignment (but layout containment should)

bug 1491639 IS_TABLE_CELL should be renamed since it is not a macro

bug 1493222 Expose some InspectorUtils APIs to fuzzers

bug 1493710 SUMMARY: AddressSanitizer: SEGV /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/WritingModes.h:244:38 in IsVertical

bug 1493741 Assertion failure: false (MOZ_ASSERT_UNREACHABLE: Extra child frame found in nsVideoFrame. Possibly from stray whitespace around the videocontrols container element.), at /builds/worker/workspace/build/src/layout/generic/nsVideoFrame.cpp:408

bug 1494030 Assertion failure: aNextSibling->GetParent() == aParentFrame (Wrong parent), at /builds/worker/workspace/build/src/layout/base/nsCSSFrameConstructor.cpp:6083

bug 1494332 Assertion failure: parent->HasFirstLetterChild(), at /builds/worker/workspace/build/src/layout/base/nsCSSFrameConstructor.cpp:10697

bug 1494426 Use ReflowInput::AvailableSize() and ComputedSize() convenience methods in a few more places

bug 1494745 Simplify nsRefreshDriver::AddRefreshObserver because it's infallible

bug 1495323 ReflowInput::FontSizeInflationListMarginAdjustment unnecessarily computes amount of font size inflation

bug 1495470 Google Photos' left sidebar menu items (e.g. "Albums") are unclickable, if CSS Containment is enabled

bug 1496014 shape changes unnecessarily trigger reframe.

bug 1496833 Add a reftest that depends on ancestor intrinsics being cleared on bsize changes.

bug 1498067 Add event markers for WipeContainingBlock and related expensive paths in the frame constructor.

Layout: Block and Inline

bug 1487221 We don't have memory reporting for nsLineBox::mFrames

bug 1491731 [css-text] calc() text-indent doesn't contribute to intrinsic size if it has a percentage

bug 1493805 We should initialize ReflowInput::mCBReflowInput also for placeholders

Layout: Columns

bug 1346983 Create ColumnSetWrapper to be used as a parent for nsColumnSetFrames and spanners. (nsColumnSetFrames will be split on the basis of column-span elements)

bug 1490525 Unbitrot reflow logs in nsColumnSetFrame

bug 1495875 Fix wpt test multicol-span-none-001-ref.xht

bug 1496275 Fix wpt test multicol-span-all-margin-bottom-001-ref.xht

Layout: Flexbox

bug 1490890 nsFlexContainerFrame::MarkIntrinsicISizesDirty is too aggressive

bug 1491510 Perma Tier2 /css/css-contain/contain-size-flexbox-001.html | [Exception... "Unexpected error" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: chrome://marionette/content/reftest.js :: screenshot :: line 388" data: no]

bug 1493645 {inc} Youtube video titles wrongly overlap the content sometimes.

bug 1494694 FlexItem mainDeltaSize is not well-documented

bug 1497589 Extend flexbox devtools API to return the physical directions of the axes

bug 1498281 The flex base size that we report to devtools API has sometimes already been clamped to min/max-size

bug 1499542 Skip FreezeItemsEarly() step of flex layout if we're collecting data for flex devtools

bug 1499569 Improve mochitest test_flex_items.html

bug 1499875 Extend test_flex_items.html with some items that grow & shrink by known amounts

bug 1500608 "###!!! ASSERTION: availableFreeSpace's sign should match isUsingFlexGrow" followed by "Assertion failure: !isUsingFlexGrow (Unfrozen items can only shrink if we're distributing (negative) space with flex-shrink), "

bug 1500609 layout/generic/nsFrame.cpp:5223:20: error: use of undeclared identifier 'CachedFlexMeasuringReflow'

Layout: Form Controls

bug 1005268 element.type returns "text" for input type month|week|datetime|datetime-local

bug 1488219 Assertion failure: nullptr != aFrame && nullptr != aState (null parameters passed in), at src/layout/base/nsFrameManager.cpp:172

bug 1488301 <legend> auto inline margins doesn't work correctly

bug 1488657 scrollbar-width: none doesn't have effect on <textarea>

bug 1490747 <legend> margins affects its border-box alignment with the <fieldset> border

bug 1495153 Replace the XUL label in <input type=file> with an HTML label

bug 1496232 Remove references to textbox.css in datetimebox.xml

bug 1498632 Input date and time does not respect CSS rules for cursor

bug 1498769 <option> elements with "display: none" style can still be selected using the keyboard

bug 1498869 macOS: Some form elements rendered invisible, error in STDOUT

bug 1499127 display:none on option/optgroup makes <select size=4> list have zero block-size

bug 1499230 Inline-size is too wide for empty <select> lists compared to other UAs

bug 1499578 <select size=1> block-size calculation is wacky

Layout: Generated Content, Lists, and Counters

bug 1486602 display: list-item should be supported on legend, but not on fieldset

Layout: Grid

bug 1490032 AddressSanitizer: SEGV /builds/worker/workspace/build/src/obj-firefox/dist/include/nsTArray.h in Length (called by nsGridContainerFrame)

bug 1490730 [css-grid] Static position should use content-box, not padding-box

Layout: Images, Video, and HTML Frames

bug 1490414 Preemptively fix unified bustage in layout/generic

bug 1490685 Assertion failure: density > 0.0, at /builds/worker/workspace/build/src/layout/generic/nsImageFrame.cpp:411

Layout: Scrolling and Overflow

bug 1486695 Scrolling not working in an iframe on Android.

bug 1494422 Implement "extend-to-zoom" semantics in meta viewport tags

Layout: Tables

bug 1397119 Move GetBStartBCBorderWidth, GetBEndBCBorderWidth and any similar methods' return type to BCPixelSize rather than nscoord

Layout: Text and Fonts

bug 1380830 Intermittent font-inflation/container-with-clamping.html == font-inflation/container-with-clamping-ref.html | image comparison, max difference: 255, number of differing pixels: 10142

bug 1432198 Ensure a minimum rendered width of 0.5ch for tabs [was: pre eliminates leading whitespace]

bug 1487553 Make gfxSparseBitSet use a more compact representation

bug 1490402 Use UTF-8 strings for font family & face names, etc in the system font list

bug 1490997 Use nsAtom instead of nsString for font family name in the FontFamilyName struct

bug 1491860 Use utf-8 strings for font names that we read from preferences

bug 1492220 Tab crashes when visiting v-fonts

bug 1492518 Remove 16-bit string version of gfxPlatformFontList::GenerateFontListKey

bug 1494380 Assertion failure: aWM.IsVertical(), at /builds/worker/workspace/build/src/layout/generic/nsTextFrame.cpp:6661 (with 'text-combine-upright' and 'sideways-rl')

bug 1498148 Implement text-transform: full-size-kana

bug 1498438 Use Microsoft JhengHei for zh-TW on all channel

bug 1498571 Cleanup FontPropertyTypes.

bug 1500815 font-inflation/list-1.html reftest has spurious Ahem font

Printing: Output

bug 1448507 WebExtension tabs.insertCSS not applied when printing


bug 1396642 SVG wrong size with viewBox width/height non-integers

bug 1449883 Improve static atom handling in dom/svg/

bug 1474982 Assertion failure: lengthAdjust == LENGTHADJUST_SPACING, at src/layout/svg/SVGTextFrame.cpp:5328

bug 1488700 Some SVG rendering observer cleanup

bug 1489848 SVG elements don't implement click()

bug 1492432 Remove PaintingPropertyDescriptor parameter from SVGObserverUtils::GetPaintServer

bug 1492573 Make SVGTextFrame ignorant of the implementation details of SVG rendering observers

bug 1492660 feTurbulence fails to render with certain filter sizes when baseFrequency="0 <nonzero>"

bug 1492694 invalid filter primitive in="" attributes should be treated as if they weren't specified

bug 1492812 Intermittent TVw /css/filter-effects/svg-unknown-input-001.html, svg-unknown-input-002.html | Testing http://web-platform.test:8000/css/filter-effects/svg-unknown-input-001.html ==svg-unknown-input-ref.html

bug 1492883 Hide the implementation details of SVG rendering observers for markers

bug 1493049 Stop using nsSVGPaintingProperty for observing SVG "template" elements

bug 1493406 Hide the implementation details of SVG rendering observers for template elements

bug 1494092 Get rid of SVGFilterObserverList::IsInObserverLists

bug 1494285 Rename nsDisplaySVGEffects and subclasses

bug 1494321 Stop doing wasteful pre/post-effects work for frames with just a clip-path or mask applied

bug 1494355 Separate out the SVGObserverUtils filter handling from EffectProperties

bug 1494604 Figure out what to do with nsSVGUtils::NotifyAncestorsOfFilterRegionChange

bug 1494695 Remove SVGFilterElement::Invalidate

bug 1494820 Stop leaking SVGObserverUtils implementation details into CanvasRenderingContext2D

bug 1494830 Stop leaking SVGFilterObserverList details into nsSVGIntegrationUtils

bug 1494953 Make nsFrame::DidSetComputedStyle initiate resource document filter loads

bug 1495034 Separate out the SVGObserverUtils clip path handling from EffectProperties

bug 1495215 Separate out the SVGObserverUtils mask handling from EffectProperties

bug 1495246 Only call SVGObserverUtils::UpdateEffects on FirstContinuationOrIBSplitSibling frames

bug 1495249 Make ComputePostEffectsVisualOverflowRect use the first continuations/block-in-inline siblings for SVG observers

bug 1495330 Hide SVGObserverUtils implementation details from nsImageRenderer

bug 1495390 Inline some SVGObserverUtils code

bug 1495438 Move most code from SVGObserverUtils.h to its source file

bug 1495562 Rename SVGRenderingObserverList to SVGRenderingObserverSet

bug 1495851 Comment why StopObserving is called in SVGRenderingObserver base class destructors

bug 1495877 Standardize the GetAndObserve* naming for SVGObserverUtils methods