Bug 1384542: Fix dynamic change handling of justify-items legacy values. r=heycam

MozReview-Commit-ID: NEPGlL4ri7
This commit is contained in:
Emilio Cobos Álvarez 2017-07-27 16:45:04 +02:00
parent 1a47c01765
commit 6a2188b226
4 changed files with 124 additions and 69 deletions

View File

@ -2227,6 +2227,24 @@ ElementRestyler::ComputeRestyleResultFromNewContext(nsIFrame* aSelf,
}
}
if (auto* position = oldContext->PeekStylePosition()) {
const bool wasLegacyJustifyItems =
position->mJustifyItems & NS_STYLE_JUSTIFY_LEGACY;
const auto newJustifyItems = aNewContext->StylePosition()->mJustifyItems;
const bool isLegacyJustifyItems =
newJustifyItems & NS_STYLE_JUSTIFY_LEGACY;
// Children with justify-items: legacy may depend on our value.
if (wasLegacyJustifyItems != isLegacyJustifyItems ||
(wasLegacyJustifyItems && position->mJustifyItems != newJustifyItems)) {
LOG_RESTYLE_CONTINUE("legacy justify-items changed between old and new"
" style contexts");
aRestyleResult = RestyleResult::eContinue;
aCanStopWithStyleChange = false;
return;
}
}
// If the old and new style contexts differ in their
// NS_STYLE_HAS_TEXT_DECORATION_LINES or NS_STYLE_HAS_PSEUDO_ELEMENT_DATA
// bits, then we must keep restyling so that those new bit values are

View File

@ -631,6 +631,7 @@ ShouldSuppressLineBreak(const nsStyleContext* aContext,
return false;
}
// FIXME(emilio): Why in GeckoStyleContext.cpp?
void
nsStyleContext::SetStyleBits()
{

View File

@ -328077,6 +328077,12 @@
{}
]
],
"css/css-align-3/default-alignment/justify-items-legacy-001.html": [
[
"/css/css-align-3/default-alignment/justify-items-legacy-001.html",
{}
]
],
"css/css-align-3/default-alignment/place-items-shorthand-001.html": [
[
"/css/css-align-3/default-alignment/place-items-shorthand-001.html",
@ -491860,6 +491866,10 @@
"016c2ff7902fc01d8368645b7177e3932aa64d42",
"testharness"
],
"css/css-align-3/default-alignment/justify-items-legacy-001.html": [
"31e799b7f436952f136efbab01f1b648d108b3cc",
"testharness"
],
"css/css-align-3/default-alignment/place-items-shorthand-001.html": [
"cc69bbbee852e6cd203d3f39dac2a1e05a428361",
"testharness"
@ -541501,263 +541511,263 @@
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-1.html": [
"e4b08019299f251b2b1f78e4ed6e00e6b1a24432",
"5f167290a8e0fff96660c1d6f3834382af86323d",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-10.html": [
"573d05d34e2b2d001e3bcf135786ba6513125e56",
"13df1179a487d04b184b51869a313407cdf48fce",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-11.html": [
"18642a0cd1ff83f21498c5d2fcc4b2e56d8daf62",
"de6c6eb0c34c82faaa74ca7ed34d1e819ef9cb6b",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-12.html": [
"4aa1847a4835b79531259be970fa6da623ffd683",
"e213ba44ea00235462c9feed295521fe653f2a3e",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-13.html": [
"8bdccc3b37dca395597b1bfb20f25be77565a62a",
"9401910b64ccec604bc048d6086b823ee1aca784",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-14-ref.html": [
"0d6d2bf17823ddeb2c52b8b5a3fbb106a1ab73b5",
"e0c41c7d1ec9363b037d880657e0e181a0d52f95",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-14.html": [
"0d657c2d443574e0881646b31c30ddbc885fe62b",
"c600097503bdff38dc268f4b4377fa5c684df86c",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-15-ref.html": [
"ce1c706c674dfb34e7770f85fa64682de1796a90",
"00c20343e4cbc4c2c2c87d9f54536f7629162622",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-15.html": [
"152e273ac4c8cef89660c878af8f457e9a5b7c27",
"13c0f7ccf422c9245588d83e81dfcc05d76b7f0e",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-2.html": [
"59d2a436ff8d9a9b741e38bce33d09a5eeb0ffef",
"305733910f3bf2c0a3889c679d54d7159899205e",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-3.html": [
"0fca663c14e1206a7d7ca6c23d220a7b1af863ab",
"e6432c6079d6cc2f3cd3574c2353d4003e424002",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-4.html": [
"cab1fc96692923e5e8cf8e0ca49d844272b67029",
"12a0a0f2c9ea488593666a4c2ee9af34c07b85a0",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-5.html": [
"2019b1d7e9b7e0cd1c630c54c60bfc89caf9aace",
"255e8c5ec21d9b4cf66c0a6577b27b49b9184518",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-6.html": [
"fc87592f9a77cf74d6ab0bcf5c718d870b48ccce",
"eca811d7f25ab1f8462eb3a30175f0b9da1c1264",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-7.html": [
"93b46d6167438e0f061bf463f5f35a92e916fd18",
"dff822e68bc08fc5a43299b36ef6908dbee3b55c",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-8-ref.html": [
"111bdb377319e2ed730714de6bf71b0cfe5674c2",
"c145b739ba682678b7d9f7fd0ecca0748ad96e16",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-8.html": [
"78a83467b7ca0d87aaaeac3d5edc043282619aa4",
"27f6d768ddc67fc14ee7ca3eb0854f240c947007",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-9.html": [
"82aa9e7e8aceef6d34d4d4749efdd16e874ae120",
"7698520c971d95383777739b3a042505c6bdd145",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-ref.html": [
"dee091a8db848ef1340b83774737b4c9f432387a",
"46b88e89bc4498d4146a631c98348c499b417fc0",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-1.html": [
"653bdbc83cd5eb99ee274e4a6e8e53a34476d5f5",
"d853136d910ea583c17a4a739d4e019319c096e8",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-2-ref.html": [
"3971920b1153eabe2418b1c9db5e303b8c488cb8",
"475ee785150ecb75474eea87ba3744ee06363d22",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-2.html": [
"5978697844c4434f91348e52ecf3e3c3d1a1708a",
"2a6baf15c0ce39ce82491fb186bdb5ec9aab87e0",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-3.html": [
"9a9791057cd8e80d496d966ca36ffe9e08c62dba",
"3fa5a48021eb4ce82767445cf568c6a0b8a9c26a",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-4.html": [
"83f4b3958fcbb47e1e9755d3163f97f099421bf6",
"cb6ebce8a023ca636bdde89947a84c54d9ac7539",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-5-ref.html": [
"0f05ef82b0bf48c7d6b2c687866d57b4076edc4f",
"7030a5eefb553cfa149692ea1f2737b219c8657a",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-5.html": [
"48cbf4b40b3a09ad99a884cc13b50fcd65775acb",
"c3125bc4cb0a96ff019e4a4c1dd697fb4f299acd",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-6-ref.html": [
"6d13942114f74f971d739a16eab6f7b368f45612",
"920db8da9d6be4c23fffa5e1892fbc9434eb41b0",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-6.html": [
"3d7482133885cc8a4382b8e4c748130d97d6b0fd",
"0db1ee3d037ffef1691eb51302dc21cd2761c846",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-7-ref.html": [
"48395831cdaed18abae32eb5269ffd2c476d8741",
"d1a8405116d449a173efe12947df3702835f5cda",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-7.html": [
"99076af8ebecc4df6988389fc6ed9a0ff5d67be6",
"227997da9f8d61033c6badc375f9254098a4b05c",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-8-ref.html": [
"d6b77c08573ada206f15924ea5861088953c65b8",
"8afcabcdb0d59c26e38049b42cc0d5a49a6ba257",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-8.html": [
"a87ff0053249f2752e5c3c2524ad0ed7b313705f",
"f1e90e52027349f9429f4f4a73d24cc365615e29",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-9-ref.html": [
"31026483f18ee80e0ac7723d6a7fb13632a13748",
"7556b737511dfc97e0bd3880be7c4c8641cd94d4",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-9.html": [
"3376ba90eafdb984901fdca69ba7dd40a962bc56",
"afa49c092f67a226e47f865cee1bd90b29266569",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-inline-page-break-inside-avoid-1-ref.html": [
"407b2a125b1435a8ca7fe0b3c31a68f17f3faf2c",
"dc2d651f026037400b08173ea6e3caa37f4aacb8",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-inline-page-break-inside-avoid-1.html": [
"4ec1b253ebe3393006fe343c7298283cb6a3bc26",
"035fe2c4d538ff07db03de65330451bf7adb8c76",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-row-page-break-inside-avoid-1.html": [
"ff1816e3ccdc344d3bc81fa1174167f99218a329",
"5760f548a6372180ba67a3307979d68dca96a3a1",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-row-page-break-inside-avoid-2.html": [
"f8ddba7940da0f948dcac8386c71387a1d163ce0",
"c3cd757aa6c280a5da5d6bca362474bb57b4fcfb",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-1.html": [
"50a3ecc24a4615e10d557f605a7233100ec5e56c",
"384f11d655bfdba7a725ca3120c07e6363dd59e5",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-2.html": [
"2c58c0d437054a9fe2384fcd8f45ca2febd2ae95",
"66089b4d810e3be098b721a00c1acfe757e99c75",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-3.html": [
"84a2fd476bd635fb0967669dd625cde336a4850f",
"3600766573575c63306ca0a0e837f125551e804b",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-4-ref.html": [
"60ac2a7696d0027b617506a39149ddd8aecf3ee5",
"5c4c9033141cec9cd85492abb0a911e80c08f291",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-4.html": [
"d9c87fb3a27ece6f45077c00c2f8681973cfb991",
"f379dc4e8c15011c73b1a8c36e68d321baa1e4df",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-5-ref.html": [
"03aaf328bdb4b7649a438b29404020e48c5110f2",
"36ada19833858467356cecfb7dcc8207e36b3b7a",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-5.html": [
"35617acaefc679da0fbc694209fa137bff0787c4",
"68607b5bb39061988a9a8c5862bf88d35430697d",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-6.html": [
"3e8e871fb27787e834736af3d671f7e7254f7e76",
"648aa0a0c21a6c54e24ef7729daa29292d420a39",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-7-ref.html": [
"24c53bd5d709ef3205f799f1eb01802ac95971a8",
"04b813e10c97c04d86957aa4bc3da00651fcb6fd",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-7.html": [
"414732490d4de2d9b27d663e277f78eda4814951",
"c0cb4962090a48b4ecdebcf67248f1b71a2f6cec",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-8-ref.html": [
"e15a19db56314596ff63dd778cad326393674812",
"9ccd76a3d7a7ca9523ebc04d5d4798bb82d01f16",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-rowgroup-page-break-inside-avoid-8.html": [
"3a8522802c796a4ed95e4c93fd55771d49c1bc12",
"72037332e3bd9d068617d14f59203cfa35ce6d55",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-1.html": [
"f456d5c6fc113b33ccaaf5fdd80a4627693406da",
"5cce795a43ba0eeb0ba04cd94b20b40d11eab2bb",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-2-ref.html": [
"819d83e74de44f0ac1cd91f13963a912332a8208",
"461188c6d1cff9107cfa260621adc3ba7a1f4cb9",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-2.html": [
"c60b7f868ceceb18db02c9dd50e12d1a3a0e8266",
"879a988b381eb86531f979f9612ef6cfacec1cb7",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-3-ref.html": [
"46c5d46e19e0a3ee0e68bcb640df670fc10089cf",
"183997ca0a35d5551f3b7c4b6fc8da76c3195982",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-3.html": [
"4815bed7023164118396bb6659ddec27b4165446",
"bcbc942356ddef43f57215c059fdb34c0f5fc559",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-4-ref.html": [
"fe5c8cae7811f585a5ff76e8bf8770e9e66e4187",
"7f35fb3b7b2c41dbbf9647a078a41069c1064049",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-4.html": [
"a17dcc0255b4fb34cd8074391c658feae43bba62",
"d18f1c4e05d023c50249d3ac56503a7e6757f6da",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-5-ref.html": [
"84f95c890e10c5faf1c46c28a440b2f28c3cd094",
"204abe8488984c5bb452b760ab206f5f9ff863d6",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-5.html": [
"c15af49e50dc4d38bbd967fc4f9a207d831460f1",
"07d3217544325f8f3a6f748a7be2b5dffe6010e3",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-6-ref.html": [
"1d5d19229560979682c0afb22e2e4915a360ec74",
"9137427b3b9fd00c156f46e9277cdac99e4258b1",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-6.html": [
"a06c8eba7abd93591dd2f76ce247d52cb574e901",
"4b3e779f2b05a21d3cb4f840f291a93dcf7ef7fb",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-7-ref.html": [
"f03108960c0188835664433ade1377bb101f5998",
"ccda860d8bb4b82ad137e2a680082844cb55efd4",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-7.html": [
"ec38ad5c5b60693ede3924a51688ce515bb9833b",
"b10e3e94828781210b3136e708666752e88f4b70",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-8.html": [
"2caf007ce1003adf91f53d319979eb671ab44a8d",
"3b234a27c8f1a92ab0b315c914826dc21e3fb342",
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-table-page-break-inside-avoid-ref.html": [
"0c770671686e5437f7baca2beab8ea77f56eda27",
"8958a105c537bf438ee318a0ad56e278b168a0cf",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/reftest.list": [
@ -544741,11 +544751,11 @@
"manual"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/multicol3/multicol-height-002.xht": [
"15988661cfe37abd0c3e8e26238b8b5c6c74ea5e",
"46fd36d04284c70506e8d8cf0ee0311c14a3f9f3",
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/multicol3/reference/multicol-height-002.xht": [
"a2d8c2ad7f3a817197cecf34385547d909119820",
"30d0428647c64f8d4a56f36748a6dcc0eb90e25d",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/multicol3/reftest.list": [
@ -569837,7 +569847,7 @@
"testharness"
],
"cssom/getComputedStyle-pseudo.html": [
"b9d037db577325526d2414270d2ceefcd6587a6d",
"1eead8a132a035788c5d5584b41024e42975bd9c",
"testharness"
],
"cssom/historical.html": [
@ -604229,7 +604239,7 @@
"support"
],
"page-visibility/idlharness.html": [
"6bbcc548a783a56340aa256e5f51ca51c1b3f4d3",
"d6d16a7aed48659afaf14acd5e21271a8ce8cec0",
"testharness"
],
"page-visibility/prerender_call.html": [

View File

@ -0,0 +1,26 @@
<!doctype html>
<meta charset=utf-8>
<title>CSS Box Alignment: legacy value for justify-items</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="help" href="https://drafts.csswg.org/css-align/#justify-items-property">
<meta name="assert" content="Tests that legacy justify-items values are correctly inherited.">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<style>
#container {
justify-items: legacy center;
}
</style>
<div id="container"><span id="child"></span></div>
<script>
test(function() {
assert_equals(getComputedStyle(child).justifyItems, "legacy center",
"default justify-items resolves to the parent justify-items value if legacy")
container.style.justifyItems = "legacy left";
assert_equals(getComputedStyle(child).justifyItems, "legacy left",
"dynamic changes to justify-items propagate to children if needed (legacy)")
container.style.justifyItems = "left";
assert_equals(getComputedStyle(child).justifyItems, "normal",
"dynamic changes to justify-items propagate to children if needed (left)")
}, "legacy value for justify-items")
</script>