Commit Graph

50341 Commits

Author SHA1 Message Date
Peter Van der Beken
5c9bb43e9d Bug 1267186 - Split lookup of WebIDL DOM class names from lookup of DOMCI DOM class names. r=bz.
--HG--
extra : rebase_source : 073ec0857b63df3e2ecef43ef3b982f2e1be2d24
2016-05-09 17:08:31 +02:00
Cameron McCormack
74881f45fe Bug 1271168 - Part 1: Remove nsPresContext arg from nsStyleOutline::RecalcData. r=bholley 2016-05-08 20:22:00 +02:00
Matt Woodrow
daea81cf90 Bug 1251644 - Snap object-contain fit if we were going to reduce the size by less than one css pixel. r=seth 2016-04-07 18:51:45 +12:00
Sotaro Ikeda
9eab898cc6 Bug 1252405 - Reduce MaskLayer's memory usage r=mattwoodrow 2016-05-10 03:18:11 -07:00
Hiroyuki Ikezoe
64599f507d Bug 1223658 - Part 1: Drop ExtractComputedValueForTransition. r=birtles,dholbert
MozReview-Commit-ID: I4SMwcv30YL
2016-05-10 18:39:37 +09:00
Robert Longson
4236a89dfc Bug 1260032 - drop support for altGlyph as a tspan. r=cam r=peterv (DOM Peer) 2016-05-10 10:02:20 +01:00
Xidorn Quan
f355ff0241 Bug 1269976 part 2 - Add nsCSSPseudoElements::IsEnabled() and make GetPseudoType take CSSEnabledState. r=heycam
MozReview-Commit-ID: K3uFwojy6FZ

--HG--
extra : rebase_source : b4a671f8d97b1d11696c375d9af790ea27ccf0ca
extra : source : d458585bd00bbe6a503bfb0f1072c632b8f0e26f
2016-05-10 18:44:05 +10:00
Xidorn Quan
9a12bfd9db Bug 1269976 part 1 - Move CSSPseudoElements_flags to a static array in nsCSSPseudoElements. r=heycam
MozReview-Commit-ID: HWMuRrakCia

--HG--
extra : rebase_source : 7867601d650dd6dee92e7f7f922a47f0d357d6bd
extra : source : 8b27cbd442385900df9935c82c726167e489cdc8
2016-05-10 18:44:05 +10:00
Xidorn Quan
6a72181520 Bug 1269975 part 4 - Make nsCSSPseudoClasses::GetPseudoType() take CSSEnabledState rather than two bool params. r=heycam
MozReview-Commit-ID: Xh50g9hsH9

--HG--
extra : rebase_source : 7d1a2b5259f8c041c08536293f49b73071b428d7
extra : source : 4d400db27c134019063306fe5b5ef7d02c275af0
2016-05-10 18:44:05 +10:00
Xidorn Quan
ab52eeed12 Bug 1269975 part 3 - Make some static arrays in nsCSSPseudoClasses.cpp static members of the class. r=heycam
MozReview-Commit-ID: 4CRtDgiYKnO

--HG--
extra : rebase_source : 8a2f2c0c9e5f89845cb782fb29d9d31837e9b281
extra : source : dda3412d88716504c8a5205fcced7cadbb140c74
2016-05-10 18:44:05 +10:00
Xidorn Quan
7b7ddfc469 Bug 1269975 part 2 - Rename nsCSSParser::PropertyEnabledState() to EnabledState(). r=heycam
MozReview-Commit-ID: 4JESxsOYN4w

--HG--
extra : rebase_source : 14ba06f00d51f51309367b99039d7c5a4c5d8f9a
extra : source : b52bff89c494a5411557e8a2ab7332862736c0b5
2016-05-10 18:44:05 +10:00
Xidorn Quan
fa7ba2cb82 Bug 1269975 part 1 - Move nsCSSProps::EnabledState to a top level enum class mozilla::CSSEnabledState. r=heycam
MozReview-Commit-ID: 3KH5cqDFzUI

--HG--
extra : rebase_source : 3c8355f7807982152a16a913b31cbcdd6ef78030
extra : source : 73e89d25a34ca5587f306b848b0b801342f9432f
2016-05-10 18:44:05 +10:00
Botond Ballo
810a495c93 Backed out 12 changesets (bug 1267438) for Android reftest failures on a CLOSED TREE. r=backout
MozReview-Commit-ID: LlibhRhbyVO

--HG--
extra : rebase_source : 6e2e52316ff4ef777b2a63ce5fb6ffc172623e40
2016-05-10 04:27:31 -04:00
Carsten "Tomcat" Book
8b1468cc35 Backed out changeset 51922d1ebfa1 (bug 1251644) for android reftest failures on a CLOSED TREE 2016-05-10 08:51:31 +02:00
Ryan VanderMeulen
f514ed495c Backed out 4 changesets (bug 1269975) for bustage.
Backed out changeset a55ecedea260 (bug 1269975)
Backed out changeset 5321545b938c (bug 1269975)
Backed out changeset 7e4a2ee61ef3 (bug 1269975)
Backed out changeset d181f8e7e4c3 (bug 1269975)
2016-05-10 00:08:54 -04:00
Ryan VanderMeulen
3b7fc0b68e No bug - Enable some e10s that pass and add some more annotations to ones that don't. 2016-05-09 17:01:16 -04:00
Ryan VanderMeulen
937594f842 Backed out changesets 4e949692600a and 6f7ecae8e663 (bug 1269976) for bustage. 2016-05-09 23:58:49 -04:00
Xidorn Quan
05db7e1bc8 Bug 1269976 part 2 - Add nsCSSPseudoElements::IsEnabled() and make GetPseudoType take CSSEnabledState. r=heycam
MozReview-Commit-ID: K3uFwojy6FZ

--HG--
extra : source : 9828f687af13af0d4e220ea440692b29cf14dcd0
2016-05-10 13:36:25 +10:00
Xidorn Quan
85ca906802 Bug 1269976 part 1 - Move CSSPseudoElements_flags to a static array in nsCSSPseudoElements. r=heycam
MozReview-Commit-ID: HWMuRrakCia

--HG--
extra : source : fca40d54c5270d09642f329267809fb3f7447c60
2016-05-10 13:36:25 +10:00
Xidorn Quan
438b9dea89 Bug 1269975 part 4 - Make nsCSSPseudoClasses::GetPseudoType() take CSSEnabledState rather than two bool params. r=heycam
MozReview-Commit-ID: Xh50g9hsH9

--HG--
extra : source : 5455ce61582ef7c98a24f587a9212113487db984
2016-05-10 13:36:25 +10:00
Xidorn Quan
9869ec38a9 Bug 1269975 part 3 - Make some static arrays in nsCSSPseudoClasses.cpp static members of the class. r=heycam
MozReview-Commit-ID: 4CRtDgiYKnO

--HG--
extra : source : 3e9cd355be9c476c52984ed789695c3c794d4e49
2016-05-10 13:36:25 +10:00
Xidorn Quan
9e9f009050 Bug 1269975 part 2 - Rename nsCSSParser::PropertyEnabledState() to EnabledState(). r=heycam
MozReview-Commit-ID: 4JESxsOYN4w

--HG--
extra : source : b52bff89c494a5411557e8a2ab7332862736c0b5
2016-05-10 13:36:25 +10:00
Xidorn Quan
30a6d76b26 Bug 1269975 part 1 - Move nsCSSProps::EnabledState to a top level enum class mozilla::CSSEnabledState. r=heycam
MozReview-Commit-ID: 3KH5cqDFzUI

--HG--
extra : source : 73e89d25a34ca5587f306b848b0b801342f9432f
2016-05-10 13:36:25 +10:00
Boris Zbarsky
59de5a530f Bug 1270349 part 5. Use LegacyUnenumerableNamedProperties instead of passing flags to GetSupportedNames to determine whether named props on DOM proxies should be reflected in ownPropertyKeys. r=peterv 2016-05-09 22:25:40 -04:00
Boris Zbarsky
76180fb5a7 Bug 1270349 part 4. Use LegacyUnenumerableNamedProperties instead of NameIsEnumerable() calls to determine whether named props on DOM proxies should be enumerable. r=peterv 2016-05-09 22:25:40 -04:00
Matt Woodrow
f74cbd822c Bug 1251644 - Snap object-contain fit if we were going to reduce the size by less than one css pixel. r=seth
--HG--
extra : rebase_source : 1ee6fbfbed92c16f4fb21535455af3737c02d9f8
2016-05-10 13:25:20 +12:00
Matt Woodrow
fec269f78c Bug 1270797 - Differentiate between nsDisplayBlendContainers created for mix-blend-mode and background-blend-mode. r=mstange 2016-05-10 12:48:59 +12:00
Matt Woodrow
6811eb7ee7 Bug 1271058 - Use Layers effective opacity for determining if it is opaque. r=mstange 2016-05-10 12:42:57 +12:00
Botond Ballo
89c6c3b097 Bug 1267438 - Remove the (no longer used) isClipFixed=false annotation. r=mstange
MozReview-Commit-ID: LicG7zFHnX3

--HG--
extra : rebase_source : 0e4d3a86f2fbc4b88126a346c938c8f9fd67bf4b
extra : histedit_source : 0b785c0881d1bf4ed5f7c991574d8d7033b71bfc
2016-05-04 20:07:42 -04:00
Botond Ballo
c0f4837a5f Bug 1267438 - For fixed backgrounds, use the scrolled clip rather than the isClipFixed=false annotation. r=mstange
MozReview-Commit-ID: 9STe7ypglpP

--HG--
extra : rebase_source : 9324a8487cc52ab66b0ab9bc510e8261288381c9
extra : histedit_source : f945314ddfbe35ba5615ec5a417b967ade448a93
2016-05-06 19:02:26 -04:00
Botond Ballo
a5f375a42f Bug 1267438 - Support adding ancestor mask layers from places other than SetupScrollingMetadata. r=mstange
MozReview-Commit-ID: DwdbSRdEMEc

--HG--
extra : rebase_source : 07cfbb871a15404d7d4766aea0b8f8387e42f67b
extra : histedit_source : 66dc2ae14acf2ae399e810785ccd7ee51550445d
2016-05-06 19:34:16 -04:00
Botond Ballo
8699c362f8 Bug 1267438 - Group ScrollMetadata's optional clip rect and mask layer index into a LayerClip structure. r=mstange
MozReview-Commit-ID: 6W0GZYkioov

--HG--
extra : rebase_source : c46d0d27145df9b268e70ab5aed67c8c64df9433
extra : histedit_source : 016fe1d78bde06feeb483446fdfb508448573d72
2016-04-29 16:14:21 -04:00
L. David Baron
d7641eeef2 Bug 1271015 patch 2 - Add tests for things not happening (optimizations) in response to media query changes. r=heycam
This adds a few basic tests for expectations of when we do and don't
restyle, construct frames, and reflow in response to changes of media
queries.  They don't give us a lot of coverage, but often the tiny bits
of coverage at the beginning are the most useful.

In general, I'd like us to have more tests for specific optimizations,
i.e., for specific things that we expect not to happen in certain cases.
The elementsRestyled, framesConstructed, and framesReflowed getters on
DOMWindowUtils are a good way to make such measurements for a number of
things in layout; that's why I added them.

(Inspired a bit by bug 1259641.)

MozReview-Commit-ID: JFtlPO1eyoD
2016-05-09 11:26:35 -07:00
L. David Baron
91233fe6f4 Bug 1271015 patch 1 - Add mechanism for testing the number of elements restyled. r=heycam
This is useful for writing tests that test particular optimizations,
such as that a particular operation doesn't cause restyles.  It sits
next to similar counters for frames constructed and frames reflowed.

I also snuck in a preference for the less-expensive mPresContext over
the more expensive mFrame->PresContext() (which dereferences multiple
pointers).

(Originally written for work I planned to be part of bug 1189598.)

MozReview-Commit-ID: 8PN7nwLJG9r
2016-05-09 11:26:35 -07:00
CJKu
b11e2e12ee Bug 1270795 - Crash test; r=jfkthame
MozReview-Commit-ID: CPnOAyuc6hp

--HG--
extra : rebase_source : 2586233eb9d8e931260510efbff94ae351247308
2016-05-07 00:47:13 +08:00
CJKu
a4e3f835fa bug 1270795 - do not generate any background items in glyph path generating process; r=jfkthame
MozReview-Commit-ID: GbhxyY93Vur

--HG--
extra : rebase_source : 2eb309017fe2dcc33424de81eecdf4405cd38334
2016-05-07 00:47:01 +08:00
Andreas Tolfsen
90edca9757 Bug 1123506 - Update references to __webDriverArguments; r=automatedtester
__marionetteParams was renamed to __webDriverArguments.

MozReview-Commit-ID: 9t1skl5MESf
2016-05-09 16:08:27 +01:00
Carsten "Tomcat" Book
98f0a3271a Backed out changeset d385df62c0e7 (bug 1267186) for hazard failures 2016-05-09 13:40:01 +02:00
Peter Van der Beken
b6c1e074c2 Bug 1267186 - Split lookup of WebIDL DOM class names from lookup of DOMCI DOM class names. r=bz.
--HG--
extra : rebase_source : 324cf124544c0ffe2ad2ceccbed397d5069d1435
2016-03-09 15:48:12 +01:00
L. David Baron
5aafe1d979 Bug 567283 patch 4 - Support #rgba and #rrggbbaa colors in CSS. r=xidorn
This adds support for #rgba and #rrggbbaa colors to CSS.  This feature
is specified in https://drafts.csswg.org/css-color-4/#hex-notation .

This adds new types to nsCSSValue so that we can serialize the syntax
that was specified, as we do for other distinctions in how colors are
specified.

It does not change the behavior of the hashless color quirk, which
continues to support only 3 and 6 digit colors as specified in
https://quirks.spec.whatwg.org/#the-hashless-hex-color-quirk (step 4).

This changes property_database.js to remove various uses of 4 and 8
digit colors as invalid values.  It then adds them in slightly fewer
places as valid values, but more thoroughly testing both initial and
non-initial values on 'color'.

It marks two canvas tests explicitly testing this feature as no longer
known to fail by removing their .ini files.

Finally, it adjusts the web platform test testing the hashless color
quirk to no longer treat 4 and 8 digit colors with hashes as invalid
values.  Removing the relevant test items seems like the right thing
since they're in a section where 3 and 6 digit colors were skipped but
other lengths were tested.  Modifying this imported test is OK since:
  <jgraham> dbaron: Commit the change you want to m-c, it is
    (semi-)automatically upstreamed every so often (typically
    about once a week)

MozReview-Commit-ID: IFq4HxaRkil
2016-05-08 22:16:42 -07:00
L. David Baron
9ee89fe42f Bug 567283 patch 2 - Rename NS_HexToRGB to NS_HexToRGBA and add parameter saying whether 4 and 8 digit colors are allowed. r=xidorn
This patch tells all callers to use the existing behavior, so it is
intended not to change behavior.  Callers that will be modified in later
patches are marked with "FIXME" comments that will be removed in those
later patches (patches 3 and 4).

MozReview-Commit-ID: FaLryfxaeHv
2016-05-08 22:16:41 -07:00
Hiroyuki Ikezoe
4030f03992 Bug 1258904 - Part 4: Set performance warning for small content. r=birtles
MozReview-Commit-ID: 7GyGkPog1Bo

--HG--
extra : rebase_source : c296a35c433af547fe4dd800ec8c8abd3bdba339
2016-05-07 17:37:58 +09:00
Hiroyuki Ikezoe
95f4a2736f Bug 1258904 - Part 2: nsDisplay(Opacity|Transform)::GetLayerState should return LAYER_ACTIVE_FORCE if they have async animations to avoid flattening the layers. r=mattwoodrow
MozReview-Commit-ID: 16QtFJBX97W

--HG--
extra : rebase_source : 3d53df451a5695dcb5967dc3e9723efef36af556
2016-05-07 17:37:57 +09:00
Hiroyuki Ikezoe
bce5aea131 Bug 1258904 - Part 1: Don't create layers for compositor animations if the layer size is less than 16x16. r=mattwoodrow
MozReview-Commit-ID: Kb26GeYYr9D

--HG--
extra : rebase_source : ea38aedf3eeb329d86fb1387e8b19ed32ae69ba7
2016-05-07 17:37:57 +09:00
Gregory Szorc
e13542b72f Bug 1271035 - Disable Places during reftests, preventing 50 GB of I/O; r=dholbert
It was a cold Friday night in San Francisco. Earlier in the day, I
informed Chris AtLee that I was going to start focusing on improving
the efficiency of Firefox automation and asked him where the biggest
capacity issues were. He said "we're hurting most on Windows tests."

As I was casually drinking a barleywine (note to reader: barleywines
are serious beers - there's nothing casual about them), I found myself
tediously clicking through Treeherder looking at logs for Windows jobs,
looking for patterns and other oddities. As I was clicking through,
something stood out to me: the sheer number of reftest jobs. I
recalled a random project I started a few years ago. Its aim was to
analyze buildbot job metadata so we could better understand where time
was spent in automation. I had mostly written off the side project as
a failure and a near complete waste of my time. Not even a stray
random thought of this project had entered my mind in the past year.
But clicking through Treeherder after a few glasses of barleywine
somehow reminded me of one of the few useful findings of that project:
reftest jobs consumed a seemingly disproportiate amount of machine time,
something like 35 or 40% IIRC of the time spent on all jobs.

Now, this finding was several years ago and almost certainly no longer
relevant. But, again, I had a few glasses of barleywine in me and was
bothered by the amount of reftest jobs and their duration, so I thought
"hey, why don't I run reftests and see why they take so long." So I
built Firefox on Windows - the platform Chris AtLee said we're "hurting
most on."

I decided to start my very casual profiling session by recording a
`mach reftest` run using Sysinternals Process Monitor. To my surprise,
it yielded a very obvious and unexpected result: the Places SQLite
database was incurring a lot of I/O. On my i7-6700K Windows 10 desktop
with a high performance SSD, `mach reftest` yielded the following:

File Time  #Events  #Reads   #Writes  RBytes        WBytes          Path
198s       980,872  243,270  669,231  7,971,471,360 20,667,084,080  places.sqlite-wal
165s       645,853  222,407  367,775  7,287,701,820 14.071,529,472  places.sqlite
  2s       377,121        1        0         32,768              0  places.sqlite-shm

The Places SQLite database accounts for 2,003,846 of the total of
3,547,527 system calls (56.49%) recorded by procmon during `mach
reftest` execution. This represents a staggering 49,997,786,732 of the
50,307,660,589 (99.38%) bytes of I/O recorded! Yes, that's 50 GB.

I reckon the reason the Places database accumulates so much I/O load
during reftests is because the reftest suite essentially loads thousands
of pages as quickly as possible. This effectively performs a stress
test against the Places history recording service.

As effective as reftests are at stress-testing Places, it adds no value
to reftests because reftests are testing the layout features, not the
performance of history recording. So these 2M system calls and 50 GB
of I/O are overhead.

This commit disables Places when executing reftests and prevents
the overhead.

After this commit, `mach reftest` has significantly reduced interaction
with the Places SQLite database:

File Time  #Events  #Reads   #Writes  RBytes        WBytes         Path
0.09s          502     138       302     4,521,984      8,961,528  places.sqlite-wal
0.07s          254      20       140       524,604      8,126,464  places.sqlite
0.01s        3,289       1         0        32,768              0  places.sqlite-shm

Of the 948,033 system calls recorded with this change (26.7% of
original), 691,322 were related to I/O. The Places SQLite database
only consumed ~22MB of I/O, <0.01% of original. It's worth noting that
~half of the remaining I/O system calls are related to reftest.log,
which now accounts for the largest percentage of write I/O (only
~53 MB, however). It's worth noting that reftest.log appears to be
using unbuffered writes and is requiring an excessive amount of
system calls for writing. But that's for another bug and commit.

In terms of wall time, the drastic I/O reduction during `mach reftest`
appears to have minimal impact on my machine: maybe 30s shaved from a
~900s execution, or ~3%. But my machine with its modern SSD doesn't
struggle with I/O.

In automation, it is a different story.

I pushed this change to Try along with the base revision and triggered
4 runs of most reftest jobs. The runtime improvements in automation
are impressive. Here are the fastest reported times for various jobs:

Job                     Before      After     Delta
Linux Opt R1               31m        34m       +3m
Linux Opt R2               43m        35m       -8m
Linux Opt Ru1              40m        34m       -6m
Linux Opt Ru2              43m        37m       -6m
Linux Opt R E10s           89m        72m      -17m
Linux Debug R1             52m        40m      -12m
Linux Debug R2             49m        42m       -7m
Linux Debug R3             60m        51m       -9m
Linux Debug R4             42m        37m       -5m
Linux Debug R1 E10s        84m        72m      -12m
Linux Debug R2 E10s        97m        85m      -12m
Linux64 Opt R1             35m        24m      -11m
Linux64 Opt R2             37m        26m      -11m
Linux64 Opt Ru1            32m        29m       -3m
Linux64 Opt Ru2            37m        26m      -12m
Linux64 Opt TC R1          12m        10m       -2m
Linux64 Opt TC R2          10m         7m       -3m
Linux64 Opt TC R3          11m         9m       -2m
Linux64 Opt TC R4          11m         9m       -2m
Linux64 Opt TC R5          13m        11m       -2m
Linux64 Opt TC R6          11m         9m       -2m
Linux64 Opt TC R7           9m         8m       -1m
Linux64 Opt TC R8          11m        10m       -1m
Linux64 Opt TC Ru1         30m        25m       -5m
Linux64 Opt TC Ru2         36m        27m      -11m
OS X 10.10 Opt             31m        27m       -4m
OS X 10.10 Opt E10s        26m        25m       -1m
OS X 10.10 Debug           68m        55m      -13m
Win7 Opt R                 30m        28m       -2m
Win7 Opt Ru                28m        26m       -2m
Win7 Opt R E10S            29m        27m       -2m
Win7 Debug R               85m        76m       -9m
Win7 Debug R E10S          75m        65m      -10m
Win8 x64 Opt R             29m        26m       -3m
Win8 x64 Opt Ru            27m        25m       -2m
Win8 x64 Debug R           90m        71m      -19m
Android 4.3 API15 Opt R1   89m        71m      -18m
Android 4.3 API15 Opt R2   78m        64m      -14m
Android 4.3 API15 Opt R3   75m        64m      -11m
Android 4.3 API15 Opt R4   74m        68m       -6m
Android 4.3 API15 Opt R5   75m        69m       -6m
Android 4.3 API15 Opt R6   91m        86m       -5m
Android 4.3 API15 Opt R7   87m        66m      -21m
Android 4.3 API15 Opt R8   87m        82m       -5m
Android 4.3 API15 Opt R9   80m        66m      -14m
Android 4.3 API15 Opt R10  80m        67m      -13m
Android 4.3 API15 Opt R11  73m        66m       -7m
Android 4.3 API15 Opt R12 105m        91m      -14m
Android 4.3 API15 Opt R13  72m        59m      -13m
Android 4.3 API15 Opt R14  82m        61m      -21m
Android 4.3 API15 Opt R15  73m        62m      -11m
Android 4.3 API15 Opt R16  79m        78m       -1m

The savings total 6+ *hours* or ~15% when running all reftests. I'd
say this isn't bad for a one-line code change!

MozReview-Commit-ID: H1LkACgSpVn

--HG--
extra : rebase_source : 891a5ce8e1f6c3d70fc646f116c2f49f897ad735
2016-05-07 02:53:14 -07:00
Bobby Holley
21a222e332 Bug 1270515 - Bonus fix: Factor out unnecessary Reset calls during nsStyleCoord initialization. r=dbaron
The previous patches prevent us from generating temporaries at the affected callsites,
but this could still have benefits in other places.
2016-05-06 16:11:10 -07:00
Bobby Holley
23b53c3cad Bug 1270515 - Avoid synthesizing temporary nsStyleCoords in nsStyleSides::ToLength. r=dbaron 2016-05-06 16:11:10 -07:00
Bobby Holley
e7fab38387 Bug 1270515 - Avoid synthesizing temporary nsStyleCoords in nsStyleSides::ConvertsToLength. r=dbaron 2016-05-06 16:11:10 -07:00
Cameron McCormack
53c4d9df37 Bug 1270956 - Stub out some ServoRestyleManager methods. r=bholley 2016-05-06 14:19:57 -07:00
Bobby Holley
bedd733071 Bug 1270956 - Convert CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE assertion into a warning. r=me 2016-05-06 14:19:57 -07:00