mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 04:41:11 +00:00
09fec812c0
For the selector highlighter, we were retrieving the desugared selector of each displayed rule, and using the selector text in querySelectorAll to retrieve the elements matching the rule. This can be very expensive, especially for deeply nested rule, for a feature that might not even be used. This patch is adding a method which takes a root node, and will return the elements inside the root node that match the rule's selectors. We're only exposing the method that existed in glue.rs to get the SelectorList of a given Rule, and call `Servo_SelectorList_QueryAll` with it to get our NodeList. A test file is added to ensure this works as expected. Differential Revision: https://phabricator.services.mozilla.com/D208363
39 lines
1.6 KiB
Plaintext
39 lines
1.6 KiB
Plaintext
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* The origin of this IDL file is
|
|
* https://drafts.csswg.org/cssom/#the-cssstylerule-interface
|
|
*/
|
|
|
|
// https://drafts.csswg.org/cssom/#the-cssstylerule-interface
|
|
[Exposed=Window]
|
|
interface CSSStyleRule : CSSGroupingRule {
|
|
attribute UTF8String selectorText;
|
|
[SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
|
|
|
|
[ChromeOnly] readonly attribute unsigned long selectorCount;
|
|
[ChromeOnly] UTF8String selectorTextAt(unsigned long index, optional boolean desugared = false);
|
|
[ChromeOnly] unsigned long long selectorSpecificityAt(unsigned long index, optional boolean desugared = false);
|
|
[ChromeOnly] boolean selectorMatchesElement(
|
|
unsigned long selectorIndex,
|
|
Element element,
|
|
optional [LegacyNullToEmptyString] DOMString pseudo = "",
|
|
optional boolean includeVisitedStyle = false);
|
|
[ChromeOnly] sequence<SelectorWarning> getSelectorWarnings();
|
|
// Get elements on the page matching the rule's selectors. This is helpful for DevTools
|
|
// so we can avoid computing a desugared selector, which can be very expensive on deeply
|
|
// nested rules.
|
|
[ChromeOnly] NodeList querySelectorAll(Node root);
|
|
};
|
|
|
|
enum SelectorWarningKind {
|
|
"UnconstrainedHas",
|
|
};
|
|
|
|
dictionary SelectorWarning {
|
|
required unsigned long index;
|
|
required SelectorWarningKind kind;
|
|
};
|