Граф коммитов

285 Коммитов

Автор SHA1 Сообщение Дата
Emilio Cobos Álvarez 48c5a32dc2 Bug 1404897: Add bindings to Servo selector lists. r=heycam
MozReview-Commit-ID: 4ZrWawDwuNe

--HG--
extra : rebase_source : 38248c72c8208200735fe4cf4516e374ea721080
2017-10-02 12:07:11 +02:00
Sebastian Hengst 66c0db70b2 Backed out changeset 1f1ff129684f (bug 1404897) for Android bustage at nsDocument.cpp:1414: undefined reference to 'Servo_SelectorList_Drop'. r=backout 2017-10-04 12:56:00 +02:00
Sebastian Hengst d90f0a5f6d Backed out changeset cfc393773f0d (bug 1404897) 2017-10-04 12:55:11 +02:00
Emilio Cobos Álvarez ff89c00970 Bug 1404897: Implement Element.matches using stylo. r=heycam
MozReview-Commit-ID: 7nxYVcweu0W

--HG--
extra : rebase_source : 4c816bb774ea7c67262a1e73277e3dbaeec060e8
2017-10-02 18:14:15 +02:00
Emilio Cobos Álvarez 6edc4a4c43 Bug 1404897: Add bindings to Servo selector lists. r=heycam
MozReview-Commit-ID: 4ZrWawDwuNe

--HG--
extra : rebase_source : de0f04b9155e9ad31596d7fd7b89585b8c1d753f
2017-10-02 12:07:11 +02:00
Sebastian Hengst 65ea166a53 Backed out changeset fda0d9bc93f0 (bug 1404897) for build bustage at nsIDocument.h:1181: bad implicit conversion constructor for 'SelectorList'. r=backout 2017-10-04 11:25:27 +02:00
Sebastian Hengst 000d2b584e Backed out changeset 3833f3700021 (bug 1404897) 2017-10-04 11:24:26 +02:00
Emilio Cobos Álvarez aaadd28724 Bug 1404897: Implement Element.matches using stylo. r=heycam
MozReview-Commit-ID: 7nxYVcweu0W
2017-10-04 11:01:42 +02:00
Emilio Cobos Álvarez 3e01f33d28 Bug 1404897: Add bindings to Servo selector lists. r=heycam
MozReview-Commit-ID: 4ZrWawDwuNe
2017-10-04 11:01:26 +02:00
Bobby Holley ef26283b2d Bug 1403397 - Revert: Add a testing API. r=bholley
This reverts commit 4194b7dd8ec748c044a9b8b0967fd9d652ea342c.
2017-10-03 14:05:56 -07:00
Bobby Holley bd4be52f46 Bug 1403397 - Add a testing API. r=bz,r=Manishearth
This will allow us to verify the entire detection pipeline in real nightly
builds, which will give us confidence that real heap corruption will be
detected and reported properly.

MozReview-Commit-ID: 43Fp2HT8RYy
2017-09-28 18:23:15 -07:00
Hiroyuki Ikezoe 9e9a01fd49 Bug 1402219 - Compute css variables with custom properties in keyframes for getKeyframes(). r=birtles
MozReview-Commit-ID: 7CMnWbzzemY

--HG--
extra : rebase_source : 977a2d4af632beef45906cb0eb1077fc48ccd4ed
2017-09-27 16:49:21 +09:00
Cameron McCormack ec4e0786a0 Bug 1403030 - stylo: Followup for another missing const. r=me
--HG--
extra : amend_source : 1db1fe5adf61b5cebd653bf0a0a740a7bfc7d2db
2017-09-26 10:21:37 +08:00
Cameron McCormack d3e557a199 Bug 1403030 - stylo: Fix some mismatching FFI declarations. r=xidorn
MozReview-Commit-ID: C5iBTR0OZKy

--HG--
extra : rebase_source : fa8c99f64dc8a78954cee21747a8915a7c04e7bb
2017-09-26 09:13:36 +08:00
Blake Kaplan 04b86e2150 Bug 1398393 - Set Servo thread state on cooperative threads. r=billm
By doing this we avoid triggering assertions in the Servo code that ensure
we have registered the thread with Servo and set the proper state on it.

MozReview-Commit-ID: K6qHrYoQDLm

--HG--
extra : rebase_source : d01b0aad42273f6b92b7cfd5f5fe17ffe7b4cda0
2017-09-08 16:50:34 -07:00
Tom Tromey 916228aee7 Bug 1399911 - preserve sourceURL comment directive on style sheets; r=bz,heycam
In addition to the sourceMappingURL comment, there is a second special
comment, "sourceURL", that can be used to set the "display name" of a
style sheet for developer tools.  This name is also used as the base
URL for the source-map URL resolution algorithm.  sourceURL is
described here:
https://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/

This patch changes Firefox to record this URL, if specified, and to
expose it (chrome-only) vai StyleSheet.webidl.

MozReview-Commit-ID: 7NwXsOf7nbY

--HG--
extra : rebase_source : bd5d25b4d44f5f220a4624db346edbc4236c9886
2017-09-14 14:59:32 -06:00
Bobby Holley 51ff1b0b2b Bug 1401317 - Disable lazy pseudo caching when the originating element's primary style was reused via the rule node. r=emilio
MozReview-Commit-ID: IkBa39E1bR1
2017-09-20 10:09:59 -07:00
Bobby Holley 8d10314a67 Bug 1400435 - Use a more precise check in the nsCSSValue destructor. r=xidorn
MozReview-Commit-ID: KFdgtxyOZ01
2017-09-19 22:53:23 -07:00
Nicholas Nethercote 5036b9133e Bug 1400078 - Measure the UA cache. r=njn.
ServoStyleSetSizes now has two uses, one for the Stylist, and one for the UA
cache, and so the patch removes 'Stylist' from the field names.

Example output from about:memory:

> +----1,359,608 B (00.55%) -- layout
> |    +----756,488 B (00.31%) -- style-sheet-cache [2]
> |    +----393,968 B (00.16%) -- servo-ua-cache
> |    |    +--234,496 B (00.10%) -- element-and-pseudos-maps
> |    |    +---59,648 B (00.02%) -- revalidation-selectors
> |    |    +---58,320 B (00.02%) -- invalidation-map
> |    |    +---30,752 B (00.01%) -- other
> |    |    +---10,752 B (00.00%) -- precomputed-pseudos

MozReview-Commit-ID: 8oxuJO0ojp

--HG--
extra : rebase_source : 7d86216967259b71df7280261d025cc65bf00ba4
2017-09-19 09:25:00 +10:00
Nicholas Nethercote 887dab3c3f Bug 1400624 - Fix a panic in Stylo memory reporting. r=heycam.
`MallocSizeOfOps::enclosing_size_of_op` is an `Option<>` type, and the panic in
question is caused by not providing a value in a case where it's needed for
measuring a HashSet.

HashMaps and HashSets are common enough that it makes sense to make
`enclosing_size_of_op` non-optional, which this patch does.

MozReview-Commit-ID: IB2aRuXHj8E

--HG--
extra : rebase_source : a6f593b718ca9e92a7a36ca7e2063a01e11c7e04
2017-09-18 13:54:30 +10:00
Josh Matthews a323bdfe53 Bug 1397971 - Share strings in URLDataValue with Rust. r=heycam
--HG--
extra : amend_source : 7946c76a40240baac44db6c1c6c7b0117ced4219
2017-09-15 13:11:37 -07:00
Wei-Cheng Pan 4c6b1c3dec Bug 1397168 - Add a function to find out if a node has any ancestor that is pending for restyling. r=emilio
MozReview-Commit-ID: DXcodMcQP59

--HG--
extra : rebase_source : e31ed0d2471150bfdf30ac656f39795d11a4fed5
2017-09-06 15:42:05 +08:00
Nazım Can Altınova 39c02b31f3 Bug 1394551 - stylo: Dont unnecessarily construct gfxFontFeatureValueSet r=xidorn
If there is no font feature values inside document we should avoid creating
unnecessary objects.

MozReview-Commit-ID: HJKMzQvQAPR

--HG--
extra : rebase_source : 06dc792d2c4848c4c8ca49b9eb98630d5d475006
2017-08-30 17:08:50 -07:00
Nicholas Nethercote fb0b046a21 Bug 1387958 - Measure the stylist during memory reporting. r=heycam.
Example output from the Obama Wikipedia page:

> ├──2,315,600 B (01.16%) -- stylist
> │  ├──1,916,928 B (00.96%) ── invalidation-map
> │  ├────228,800 B (00.11%) ── rule-tree
> │  ├────142,336 B (00.07%) ── element-and-pseudos-maps
> │  ├─────14,336 B (00.01%) ── revalidation-selectors
> │  ├──────9,648 B (00.00%) ── other
> │  └──────3,552 B (00.00%) ── precomputed-pseudos

This change requires new code to measure HashMaps, which uses the new
'malloc_enclosing_size_of' functions that can measure a heap block from an
interior pointer.

The patch changes MallocSizeOfFn to a newtype, and introduces
MallocEnclosingSizeOfFn alongside.

It also adds new traits: MallocSizeOfBox, MallocSizeOfVec, MallocSizeOfHash.
These each contain a single method that does shallow measurement of the
relevant type, which is often useful. (This is a different style to the
existing MallocSizeOf trait, which does deep measurement, but I'm moving away
from the always-deep-measurement style because it's less flexible.)

MozReview-Commit-ID: FgJCCmdw0ZF

--HG--
extra : rebase_source : c692c2073aa66020224489b97247c49de95a99a4
2017-09-05 11:38:45 +10:00
Jeremy Chen 03a9b4e928 Bug 1394994 - stylo: get line and column for ServoKeyframeRule. r=xidorn
The Servo_KeyframesRule_GetKeyframe binding function has been empowerd and
renamed to Servo_KeyframesRule_GetKeyframeAt in the servo side patch. In this
patch, we use Servo_KeyframesRule_GetKeyframeAt to get line and column
information for ServoKeyframeRule, so that the inspector can present Keyframe
rules on the devtool panel properly.

MozReview-Commit-ID: BGd9FFsC3Nz

--HG--
extra : rebase_source : f2b5ff73a84a3cd4e5d0b17d5e0c5ac5fd57f817
2017-09-04 13:38:23 +08:00
Tom Tromey c355a3b8b9 Bug 1388855 - Extract source map URL when parsing CSS, r=bz,heycam
This changes the CSS lexer to extract sourceMappingURL directives from
comments and preserve them; then changes the parser to expose this value
as the style sheet's sourceMapURL.

MozReview-Commit-ID: LfMamJ1PsU0

--HG--
extra : rebase_source : 258827720282d415f97f1d49d870b7c2448d39f4
2017-08-09 13:33:24 -06:00
Ting-Yu Lin 3b33ba27fb Bug 1382078 Part 4 - Avoid unneeded restyle when XBL styleset is utilized by different PresContext. r=emilio
This fixed layout/style/test/test_media_queries_dynamic.html after Part 3 is added.

MozReview-Commit-ID: 7ZpSunCnkIc

--HG--
extra : rebase_source : 6acab11ba784b801b90afc0558c32baabcc3f271
2017-09-04 17:57:00 +08:00
Henri Sivonen 3c8567b60d Bug 1354989 - Avoid pivoting via UTF-16 when loading CSS in the Stylo mode. r=jdm,SimonSapin
MozReview-Commit-ID: Llt29dvB4Io

--HG--
extra : rebase_source : 3ae51dc8beff3fb19e9318a6c7c30c9ab08a5b57
2017-08-29 16:01:42 +03:00
Nicholas Nethercote 9251ef42b7 Bug 1394729 - Measure memory usage of Stylo's Rule Tree. r=heycam.
This patch splits up the existing "layout/style-sets" measurement into
"layout/gecko-style-sets", or "layout/servo-style-sets/stylist/rule-tree" and
"layout/servo-style-sets/other". (Additional things will be measured under
"layout/servo-style-sets/" later, such as cascade data.)

This requires introducing a new type, ServoStyleSetSizes, for transferring the
multiple measurements from Rust code to C++ code.

MozReview-Commit-ID: FbmzpsjBpgI

--HG--
extra : rebase_source : f2d1441705139e6674d355792255302fcd89f748
2017-08-30 18:21:26 +10:00
Wei-Cheng Pan e55f4e59ec Bug 1388298 - Add an API to process all invalidations on the main thread. r=emilio
MozReview-Commit-ID: I7rBwvPQykR

--HG--
extra : rebase_source : 432210b2798c8b602fb7659e097721c6fbc1d60d
2017-08-24 15:36:48 +08:00
Nazım Can Altınova b2b88364dd Bug 1355721 - stylo: Implement font feature values lookup r=emilio,xidorn
MozReview-Commit-ID: 7wgQ1NCn7vL

--HG--
extra : rebase_source : 6c774e87b8bd3f30d819302aba5a73a50047981a
2017-08-23 18:05:53 -07:00
Gregory Szorc 2a5e786286 Backed out changesets b749fc196a50, 2791eac8d760 (bug 1355721) for build bustage
CLOSED TREE

--HG--
extra : amend_source : 7618f27e1cf71347f12384935374d303d5c1ab23
extra : histedit_source : 1143d226673ace563bb5d9ff3c420ded33439791%2C9746a30097304bd2214a0072773dc00c767d31cd
2017-08-24 20:30:17 -07:00
Nazım Can Altınova 00f1cc4565 Bug 1355721 - stylo: Implement font feature values lookup r=emilio,xidorn
MozReview-Commit-ID: 7wgQ1NCn7vL

--HG--
extra : rebase_source : c104c2b09ebfbf5cdb98bc5638473cac1bfc40c9
2017-08-23 18:05:53 -07:00
Brad Werth c946e3ebb0 Bug 1387933 Part 2: Gecko-side add a reusable sheets parameter to Servo_StyleSheet_FromUTF8Bytes, and mark a test as passing. r=xidorn
MozReview-Commit-ID: 9wqJW3SqbbM

--HG--
extra : rebase_source : 2d6711c411ec5ef22866a4b3aefcbd9c70619f31
2017-08-22 13:53:53 -07:00
Bobby Holley 7210bd7226 Bug 1383332 - Track the restyle root and use it to do less work during the traversal. r=emilio
MozReview-Commit-ID: A8O3JOpsv4E
2017-08-22 21:19:24 -07:00
J. Ryan Stinnett 2c635e5c43 Bug 1392447 - Fix up Servo_StyleSheet_GetOrigin for Linux 32-bit ABI. r=emilio
Bindgen bitfield enums don't work as return values with the Linux 32-bit ABI at
the moment because they wrap the value in a struct.

This causes the Rust side to believe the caller will pass along space for the
struct return value, while C++ believes it's just an integer value.

MozReview-Commit-ID: JHDp0XAmQCG
2017-08-22 14:54:20 -05:00
Brian Birtles ac44c390db Bug 1385139 - Expand var() references in keyframes from CSS animations when serializing; r=hiro
This is a temporary step until we implement bug 1391537. It is needed to
maintain consistent behavior with Gecko and provide sensible output,
particularly in the case where we have longhands whose values are drawn from
unparsed shorthands.

MozReview-Commit-ID: 9aD2tsLagBp

--HG--
extra : rebase_source : cdabb26be17b96a574ea8b2e8093e11abb1af430
2017-08-21 12:35:35 +09:00
Emilio Cobos Álvarez 6e86138dcf Bug 1390255: stylo: Remove unused Servo_StyleSet_Clear. r=heycam
MozReview-Commit-ID: nihQbUAbh8
2017-08-16 11:31:11 +02:00
J. Ryan Stinnett 418161625f Bug 1390691 - Fix up Servo_StyleSet_MediumFeaturesChanged for Linux 32-bit ABI. r=manishearth
Bindgen bitfield enums don't work as return values with the Linux 32-bit ABI at
the moment because they wrap the value in a struct.

This causes the Rust side to believe the caller will pass along space for the
struct return value, while C++ believes it's just an integer value.

MozReview-Commit-ID: LY6z7lEKgOp

--HG--
extra : rebase_source : deb9739bd100e2162e7c93d6d45d7029d7793355
2017-08-15 17:10:13 -05:00
J. Ryan Stinnett f68386ce04 Bug 1390691 - Fix up Servo_TakeChangeHint for Linux 32-bit ABI. r=manishearth
Bindgen bitfield enums don't work as return values with the Linux 32-bit ABI at
the moment because they wrap the value in a struct.

This causes the Rust side to believe the caller will pass along space for the
struct return value, while C++ believes it's just an integer value.

MozReview-Commit-ID: 6qqVVfU8Mb2

--HG--
extra : rebase_source : 825985977307b50ae8a80ab182e54a3f7b95eafc
2017-08-14 22:11:53 -05:00
J. Ryan Stinnett 7c022405a1 Bug 1390691 - Fix up Servo_StyleSet_Init for Linux 32-bit ABI. r=manishearth
Rust was treating this as returning an `Owned` types which uses a struct, while
C++ saw it as just a pointer.

This disagreement violates the Linux 32-bit ABI, and also the pointer was deemed
to be more correct anyway.

MozReview-Commit-ID: AQJkdU02vfh

--HG--
extra : rebase_source : d53d7a395944f65d71f14e540cc6d6bac4582187
2017-08-14 17:21:51 -05:00
Emilio Cobos Álvarez 18c2f8e9a8 Bug 1389871: stylo: only clear relevant origins when medium features change. r=heycam
MozReview-Commit-ID: 6ocZc1u1TbU

--HG--
extra : rebase_source : a1f0f17bcb06e075aaa39cce5ac5e31e30f1b33e
2017-08-14 10:37:19 +02:00
Nicholas Nethercote 57c26c9834 Bug 1387956 - Overhaul ComputedValues measurement, and add style structs measurement. r=bholley.
This patch moves measurement of ComputedValues objects from Rust to C++.
Measurement now happens (a) via DOM elements and (b) remaining elements via
the frame tree. Likewise for the style structs hanging off ComputedValues
objects.

Here is an example of the output.

> ├──27,600,448 B (26.49%) -- active/window(https://en.wikipedia.org/wiki/Barack_Obama)
> │  ├──12,772,544 B (12.26%) -- layout
> │  │  ├───4,483,744 B (04.30%) -- frames
> │  │  │   ├──1,653,552 B (01.59%) ── nsInlineFrame
> │  │  │   ├──1,415,760 B (01.36%) ── nsTextFrame
> │  │  │   ├────431,376 B (00.41%) ── nsBlockFrame
> │  │  │   ├────340,560 B (00.33%) ── nsHTMLScrollFrame
> │  │  │   ├────302,544 B (00.29%) ── nsContinuingTextFrame
> │  │  │   ├────156,408 B (00.15%) ── nsBulletFrame
> │  │  │   ├─────73,024 B (00.07%) ── nsPlaceholderFrame
> │  │  │   ├─────27,656 B (00.03%) ── sundries
> │  │  │   ├─────23,520 B (00.02%) ── nsTableCellFrame
> │  │  │   ├─────16,704 B (00.02%) ── nsImageFrame
> │  │  │   ├─────15,488 B (00.01%) ── nsTableRowFrame
> │  │  │   ├─────13,776 B (00.01%) ── nsTableColFrame
> │  │  │   └─────13,376 B (00.01%) ── nsTableFrame
> │  │  ├───3,412,192 B (03.28%) -- servo-style-structs
> │  │  │   ├──1,288,224 B (01.24%) ── Display
> │  │  │   ├────742,400 B (00.71%) ── Position
> │  │  │   ├────308,736 B (00.30%) ── Font
> │  │  │   ├────226,512 B (00.22%) ── Background
> │  │  │   ├────218,304 B (00.21%) ── TextReset
> │  │  │   ├────214,896 B (00.21%) ── Text
> │  │  │   ├────130,560 B (00.13%) ── Border
> │  │  │   ├─────81,408 B (00.08%) ── UIReset
> │  │  │   ├─────61,440 B (00.06%) ── Padding
> │  │  │   ├─────38,176 B (00.04%) ── UserInterface
> │  │  │   ├─────29,232 B (00.03%) ── Margin
> │  │  │   ├─────21,824 B (00.02%) ── sundries
> │  │  │   ├─────20,080 B (00.02%) ── Color
> │  │  │   ├─────20,080 B (00.02%) ── Column
> │  │  │   └─────10,320 B (00.01%) ── Effects
> │  │  ├───2,227,680 B (02.14%) -- computed-values
> │  │  │   ├──1,182,928 B (01.14%) ── non-dom
> │  │  │   └──1,044,752 B (01.00%) ── dom
> │  │  ├───1,500,016 B (01.44%) ── text-runs
> │  │  ├─────492,640 B (00.47%) ── line-boxes
> │  │  ├─────326,688 B (00.31%) ── frame-properties
> │  │  ├─────301,760 B (00.29%) ── pres-shell
> │  │  ├──────27,648 B (00.03%) ── pres-contexts
> │  │  └─────────176 B (00.00%) ── style-sets

The 'servo-style-structs' and 'computed-values' sub-trees are new. (Prior to
this patch, ComputedValues under DOM elements were tallied under the the
'dom/element-nodes' sub-tree, and ComputedValues not under DOM element were
ignored.) 'servo-style-structs/sundries' aggregates all the style structs that
are smaller than 8 KiB.

Other notable things done by the patch are as follows.

- It significantly changes the signatures of the methods measuring nsINode and
  its subclasses, in order to handle the tallying of style structs separately
  from element-nodes. Likewise for nsIFrame.

- It renames the 'layout/style-structs' sub-tree as
  'layout/gecko-style-structs', to clearly distinguish it from the new
  'layout/servo-style-structs' sub-tree.

- It adds some FFI functions to access various Rust-side data structures from
  C++ code.

- There is a nasty hack used twice to measure Arcs, by stepping backwards from
  an interior pointer to a base pointer. It works, but I want to replace it
  with something better eventually. The "XXX WARNING" comments have details.

- It makes DMD print a line to the console if it sees a pointer it doesn't
  recognise. This is useful for detecting when we are measuring an interior
  pointer instead of a base pointer, which is bad but easy to do when Arcs are
  involved.

- It removes the Rust code for measuring CVs, because it's now all done on the
  C++ side.

MozReview-Commit-ID: BKebACLKtCi

--HG--
extra : rebase_source : 4d9a8c6b198a0ff025b811759a6bfa9f33a260ba
2017-08-11 16:37:33 +10:00
Cameron McCormack 0a951a3cb0 Bug 1382925 - Part 2: Add FFI function to get stylesheet origin. r=emilio
MozReview-Commit-ID: F3VY6qagrpS

--HG--
extra : rebase_source : c53e528ae36a57240bfdd5318d59411e51a8feb9
2017-08-12 18:34:34 +08:00
Cameron McCormack 7e913c1a93 Bug 1382925 - Part 1: Make Servo_StyleSet_NoteStyleSheetsChanged take a set of origins to dirty. r=emilio
MozReview-Commit-ID: KY29REU78tH

--HG--
extra : rebase_source : bc3ca1deb1fcc797e6156c8bd0656012eb9c4315
2017-08-12 18:19:22 +08:00
Hiroyuki Ikezoe 0d870b1b90 Bug 1388031 - Cleanup code that was used for verifying styling results for throttled animation flush in post traversal. r=bholley
Now that we do process normal traversal even in the case of throttled animation
flush so that we don't need to do special handling for the case.

Note about the comment in has_current_styles():
the remaining animation hints is not caused by either this patch or the
previous patch in this patch series, it's been there in the first place, but
it should be fixed somehow later. See bug 1389675.

MozReview-Commit-ID: JojHufxNCiS
2017-08-11 20:34:08 -07:00
Cameron McCormack 5a641131b9 Bug 1384824 - Part 1: Lazily clear stale Servo element data from a document when its pres shell changes. r=bholley
MozReview-Commit-ID: 1c566PRqFpe
2017-08-04 19:26:04 +10:00
Manish Goregaokar efbe3a9af8 Bug 1386887 - Clean up FFI lifetimes to work on nightly; r=emilio
MozReview-Commit-ID: 5WAIVd6p2du
2017-08-03 15:49:25 -07:00
Emilio Cobos Álvarez 809cec316c Bug 1386602: Avoid recreating the stylist in RebuildAllStyleData. r=heycam
MozReview-Commit-ID: 31G9BLgqEmm
2017-08-03 18:10:06 +02:00
Nicholas Nethercote cc91deea30 Bug 1383977 - stylo: Measure Elements and ComputedValues. r=manishearth.
The patch provides FFI access to Gecko's SeenPtrs type from Rust, in order to
record what has already been measured when measuring Arcs. (The SeenPtrs must
be initialized on the Gecko side because the same table is reused for measuring
all Elements within a window, because Elements can share ComputedValues.) I
have confirmed with DMD that this is working correctly.

The patch also introduces MallocSizeOfRepeats, which is like MallocSizeOf but
takes a SizeOfState, which holds a SeenPtrs table.

MozReview-Commit-ID: DHS8zvCsEdQ

--HG--
extra : rebase_source : acf4d7909abf6ceb1719331ccf2e33137eb6dc91
2017-07-19 10:30:53 +10:00