diff options
author | bors-servo <release+servo@mozilla.com> | 2014-04-04 11:19:36 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-04-04 11:19:36 -0400 |
commit | 7ece5f92dbd82bae1ef4862497c8f1bc810c6c55 (patch) | |
tree | 29561ded4dd4410576b750a0a9fe31d40a305eda /src/components/script/dom/htmlobjectelement.rs | |
parent | fe1615bc3dc3bd2f8d3fbb6f776e701b4c6dda76 (diff) | |
parent | 55cc9ccf227378a8d4235708eeca1b1bf176cf20 (diff) | |
download | servo-7ece5f92dbd82bae1ef4862497c8f1bc810c6c55.tar.gz servo-7ece5f92dbd82bae1ef4862497c8f1bc810c6c55.zip |
auto merge of #1971 : Constellation/servo/quick-fail-selector-matching, r=SimonSapin
Restart selector matching from an appropriate selector
Introducing 3 matching failure statuses,
+ NotMatchedGlobally
+ NotMatchedAndRestartFromClosestDescendant
+ NotMatchedAndRestartFromClosestLaterSibling
When NotMatchedGlobally appears, stop selector matching completely since
the succeeding selector never matches.
It is raised when
+ Child selector cannot find the candidate element
+ Descendant selector cannot find the candidate element
When NotMatchedAndRestartFromClosestDescendant appears, the selector
matching does backtracking and restarts from the closest Descendant
selector.
It is raised when
+ NextSibling selector cannot find the candidate element.
+ LaterSibling selector cannot find the candidate element.
+ Child selector doesn't match on the found element.
When NotMatchedAndRestartFromClosestLaterSibling appears, the selector
matching does backtracking and restarts from the closest LaterSibling
selector.
It is raised when
+ NextSibling selector doesn't match on the found element.
For example, when the selector "d1 d2 a" is provided and we cannot *find*
an appropriate ancestor node for "d1", this selector matching raises
NotMatchedGlobally since even if "d2" is moved to more upper node, the
candidates for "d1" becomes less than before and d1 .
The next example is siblings. When the selector "b1 + b2 ~ d1 a" is
providied and we cannot *find* an appropriate brother node for b1,
the selector matching raises NotMatchedAndRestartFromClosestDescendant.
The selectors ("b1 + b2 ~") doesn't match and matching restart from "d1".
The additional example is child and sibling. When the selector
"b1 + c1 > b2 ~ d1 a" is provided and the selector "b1" doesn't match on
the element, this "b1" raises NotMatchedAndRestartFromClosestLaterSibling.
However since the selector "c1" raises
NotMatchedAndRestartFromClosestDescendant. So the selector
"b1 + c1 > b2 ~ " doesn't match and restart matching from "d1".
Diffstat (limited to 'src/components/script/dom/htmlobjectelement.rs')
0 files changed, 0 insertions, 0 deletions