This also fixes bug 980560.
This is needed for patch 15, which will make the rules passed to these
methods no longer implement nsIStyleRule.
TODO (bug 1221908): Given the amount that these parameters are used (not
at all), perhaps we should have a followup on removing them and
simplifying these notifications?
--HG--
extra : commitid : 2RmPg80eWs6
This is the key change in this patch series; it changes the object we
use for style data (currently nsIStyleRule) identity. It allows
removing some hacks we have to deal with that for StyleRule, and avoids
having to write similar hacks for nsCSSKeyframeRule and nsCSSPageRule
(which are broken without this).
I confirmed locally that it is this patch that fixes both of the todo_is
mochitests, by building and testing with the patch queue through patch
11, and again through patch 12.
--HG--
extra : commitid : AzgBp6KfPhJ
Patch 12 changes nsRuleWalker.h from including StyleRule.h to including
Declaration.h; this fixes other headers to deal with that change based
on the include-what-you-use principle.
--HG--
extra : commitid : 5z9LIJ2QKCn
Prior to patch 12, rule destruction for rules that were matched doesn't
happen until rule tree GC. This means that GetCSSDeclaration is less
likely to return null, but then GetCSSParsingEnvironment might fail.
With StyleRule no longer participating in the rule tree, they're more
likely to be destroyed quickly, leading to the !olddecl failure case
instead of the !env.mPrincipal failure case.
This is needed to avoid patch 12 causing:
TEST-UNEXPECTED-FAIL | layout/inspector/tests/chrome/test_bug727834.xul | original rule is not available for modification anymore - got "NS_ERROR_FAILURE", expected "NS_ERROR_NOT_AVAILABLE"
--HG--
extra : commitid : K8f1NS4DX9F
The current location of the assertion will stop being called in patch 12
and will go away in patch 15; the new location is valid both before and
after patch 12.
--HG--
extra : commitid : 8wH1hXHKWU5
This probably should have been done before, but prior to this patch
series, dynamic changes of the declarations on these rules were broken
due to rule immutability violations; now that is no longer the case, but
to benefit from that, I believe we actually need to mark the
declarations as immutable once matched so that dynamic changes will
trigger construction of a new declaration (which thus has a new
nsIStyleRule identity).
--HG--
extra : commitid : 8IsYBd67qQr
Note that this adds a new public API to css::Declaration; the equivalent
API is removed from css::StyleRule and nsCSSPageRule in patch 13. But
the removal and addition need to be on opposite sides of patch 12.
This fused allocation is no larger than having a pointer, and it removes
having to worry about cycles.
--HG--
extra : commitid : EOrsMKswNMP
(This is part of a longer term plan to rename nsIStyleRule to StyleData
and nsIStyleRuleProcessor to StyleDataSource. I'm not doing all of that
here, though.)
--HG--
extra : commitid : DZGpUQO2Fey
We switch to using this implementation instead of the one in
css::StyleRule in patch 12.
(Yes, implementing QueryInterface for a CID is ugly, but it's the same
thing StyleRule does. Unfortunately now we'll need to have it in both
places.)
--HG--
extra : commitid : 9O6Z3E868cq
This is done in preparation for making it implement nsIStyleRule, which
happens in patch 3, and which is used in patch 12.
--HG--
extra : commitid : 56cV7yfXq59
* BaseMarionetteRunner: any change to self.bin resets self.marionette and
self.tests, so you change binaries between calls to run_tests()
* Refactor runtests.py to make it easier to extend/customize the harness
for different test suites. Add more error handling.
--HG--
extra : transplant_source : %BB%AC%A0%93%A1s%7F%23%A5%DER%E0%AF%B8Q%AF%83%98d%D9
Specifically, this adds the following alias mappings:
-webkit-box-flex --> flex-grow
-webkit-box-ordinal-group --> order
-webkit-box-align --> align-items
-webkit-box-pack --> justify-content
We may want to do this for fixed pos frames in all documents (not just root documents). However, this patch only maintains the previous behaviour on purpose.
Instead of returning the root scroll frame if we encountered the root frame (which is the parent of the root scroll frame).
This allows the use of GetNearestScrollableFrame to walk up the frame tree without getting into a infinite loop going from root scroll frame to root frame and back.
This regresses bug 1105823 in that fixed pos frames will no longer find the root scroll frame of their document. The next patch will fix that.
The only other type of frame that will be affected when calling GetNearestScrollableFrame are viewport (root) frames. However, the only user of SCROLLABLE_ALWAYS_MATCH_ROOT (APZCCallbackHelper) calls GetNearestScrollableFrame on the result of a hit test on a display list. Viewport frames never create any display items whose HitTest function could return the viewport frame.
SCROLLABLE_ALWAYS_MATCH_ROOT should take precendence over SCROLLABLE_ONLY_ASYNC_SCROLLABLE as if we fail to find the root scroll frame we will have no usable scroll frame at all.