mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 818400. Add a preference to control :scope and pref it off in release builds for now. r=dbaron
This commit is contained in:
parent
ab0dbf07d1
commit
7e46a922c1
@ -100,8 +100,8 @@
|
||||
/* :root tests */
|
||||
:root { background-color: green; }
|
||||
|
||||
/* :-moz-scope tests */
|
||||
:-moz-scope { background-color: green; }
|
||||
/* :scope tests */
|
||||
:scope { background-color: green; }
|
||||
|
||||
/* :nth-child(n) tests */
|
||||
.nthchild1 > :nth-last-child(odd) { background-color: lime; }
|
||||
@ -226,7 +226,17 @@
|
||||
.bar. { background: red; color: yellow; }
|
||||
</span>
|
||||
<script><![CDATA[
|
||||
window.onload = function(){
|
||||
window.onload = function() {
|
||||
if (window.parent && window.parent.SpecialPowers) {
|
||||
window.parent.SpecialPowers.pushPrefEnv(
|
||||
{ 'set': [[ "layout.css.scope-pseudo.enabled", true]] },
|
||||
doTest);
|
||||
} else {
|
||||
doTest();
|
||||
}
|
||||
}
|
||||
|
||||
function doTest(){
|
||||
if ( window.location.hash.indexOf("target") == -1 )
|
||||
window.location.hash = "#target";
|
||||
|
||||
@ -544,7 +554,7 @@
|
||||
var namespaced = /\|[^=]/.test( q );
|
||||
var prepend = namespaced ? "xHTML|*#root3 " : "#root3 ";
|
||||
q = (restrict === false || restrict === ":root" ||
|
||||
restrict === ":-moz-scope" ? "" : prepend) +
|
||||
restrict === ":scope" ? "" : prepend) +
|
||||
q.replace(/,/g, ", " + prepend);
|
||||
var nq = q.replace(/>/g, ">").replace(/</g, "<");
|
||||
|
||||
@ -576,9 +586,9 @@
|
||||
(pass ? "" : " Expected: " + extra(ids) + " Received: " + extra(results)) );
|
||||
|
||||
// For now, don't use checkMatchesSelector when
|
||||
// restrict === ":-moz-scope" because we have no way to hand the
|
||||
// restrict === ":scope" because we have no way to hand the
|
||||
// right scope to it yet.
|
||||
if (results && restrict !== ":-moz-scope")
|
||||
if (results && restrict !== ":scope")
|
||||
checkMatchesSelector( results, q );
|
||||
}
|
||||
|
||||
@ -641,15 +651,15 @@
|
||||
|
||||
if ( root == document ) {
|
||||
t( ":root Selector", ":root", ["html"], false );
|
||||
t( ":-moz-scope Selector", ":-moz-scope", ["html"], ":-moz-scope" );
|
||||
t( ":scope Selector", ":scope", ["html"], ":scope" );
|
||||
} else {
|
||||
t( ":root Selector", ":root", [], ":root" );
|
||||
if (root.localName != "nosuchtag") {
|
||||
t( ":-moz-scope Selector", ":-moz-scope > nosuchtag",
|
||||
[ "outerbogustag" ], ":-moz-scope");
|
||||
t( ":scope Selector", ":scope > nosuchtag",
|
||||
[ "outerbogustag" ], ":scope");
|
||||
}
|
||||
t( ":-moz-scope Selector", ":-moz-scope nosuchtag nosuchtag",
|
||||
[ "innerbogustag" ], ":-moz-scope");
|
||||
t( ":scope Selector", ":scope nosuchtag nosuchtag",
|
||||
[ "innerbogustag" ], ":scope");
|
||||
|
||||
if ( !root.parentNode ) {
|
||||
t( ":root All Selector", ":root *", [], ":root" );
|
||||
@ -659,7 +669,7 @@
|
||||
if ( root.parentNode || root == document ) {
|
||||
assert( query(":root *").length == query("*").length - (root == document ? 1 : 0), type + ": :root All Selector" );
|
||||
}
|
||||
assert( query(":-moz-scope *").length == query("*").length - (root == document ? 1 : 0), type + ": :-moz-scope All Selector" );
|
||||
assert( query(":scope *").length == query("*").length - (root == document ? 1 : 0), type + ": :scope All Selector" );
|
||||
|
||||
t( "Element Selector", "p", ["firstp","ap","sndp","en","sap","first"] );
|
||||
t( "Element Selector", "body", ["body"], false );
|
||||
|
@ -326,9 +326,9 @@ GetStatesForPseudoClass(const nsAString& aStatePseudo)
|
||||
// An array of the states that are relevant for various pseudoclasses.
|
||||
// XXXbz this duplicates code in nsCSSRuleProcessor
|
||||
static const nsEventStates sPseudoClassStates[] = {
|
||||
#define CSS_PSEUDO_CLASS(_name, _value) \
|
||||
#define CSS_PSEUDO_CLASS(_name, _value, _pref) \
|
||||
nsEventStates(),
|
||||
#define CSS_STATE_PSEUDO_CLASS(_name, _value, _states) \
|
||||
#define CSS_STATE_PSEUDO_CLASS(_name, _value, _pref, _states) \
|
||||
_states,
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_STATE_PSEUDO_CLASS
|
||||
|
@ -14,7 +14,10 @@
|
||||
* will have cruel and unusual things done to them. The entries should
|
||||
* be kept in some sort of logical order. The first argument to
|
||||
* CSS_PSEUDO_CLASS is the C++ identifier of the atom. The second
|
||||
* argument is the string value of the atom.
|
||||
* argument is the string value of the atom. The third argument is the
|
||||
* name of the preference controlling whether the pseudo-class is
|
||||
* recognized by the parser, or the empty string if it's unconditional.
|
||||
*
|
||||
* CSS_STATE_DEPENDENT_PSEUDO_CLASS and CSS_STATE_PSEUDO_CLASS also take
|
||||
* the name of the state bits that the class corresponds to. Only one
|
||||
* of the bits needs to match for a CSS_STATE_PSEUDO_CLASS to match;
|
||||
@ -36,8 +39,8 @@
|
||||
#endif
|
||||
|
||||
#ifndef CSS_STATE_DEPENDENT_PSEUDO_CLASS
|
||||
#define CSS_STATE_DEPENDENT_PSEUDO_CLASS(_name, _value, _bit) \
|
||||
CSS_PSEUDO_CLASS(_name, _value)
|
||||
#define CSS_STATE_DEPENDENT_PSEUDO_CLASS(_name, _value, _pref, _bit) \
|
||||
CSS_PSEUDO_CLASS(_name, _value, _pref)
|
||||
#define DEFINED_CSS_STATE_DEPENDENT_PSEUDO_CLASS
|
||||
#endif
|
||||
|
||||
@ -46,8 +49,8 @@
|
||||
#endif
|
||||
|
||||
#ifndef CSS_STATE_PSEUDO_CLASS
|
||||
#define CSS_STATE_PSEUDO_CLASS(_name, _value, _bit) \
|
||||
CSS_STATE_DEPENDENT_PSEUDO_CLASS(_name, _value, _bit)
|
||||
#define CSS_STATE_PSEUDO_CLASS(_name, _value, _pref, _bit) \
|
||||
CSS_STATE_DEPENDENT_PSEUDO_CLASS(_name, _value, _pref, _bit)
|
||||
#define DEFINED_CSS_STATE_PSEUDO_CLASS
|
||||
#endif
|
||||
|
||||
@ -56,148 +59,148 @@
|
||||
// must be the same as the order of cases in SelectorMatches. :not
|
||||
// must be the last CSS_PSEUDO_CLASS.
|
||||
|
||||
CSS_PSEUDO_CLASS(empty, ":empty")
|
||||
CSS_PSEUDO_CLASS(mozOnlyWhitespace, ":-moz-only-whitespace")
|
||||
CSS_PSEUDO_CLASS(mozEmptyExceptChildrenWithLocalname, ":-moz-empty-except-children-with-localname")
|
||||
CSS_PSEUDO_CLASS(lang, ":lang")
|
||||
CSS_PSEUDO_CLASS(mozBoundElement, ":-moz-bound-element")
|
||||
CSS_PSEUDO_CLASS(root, ":root")
|
||||
CSS_PSEUDO_CLASS(any, ":-moz-any")
|
||||
CSS_PSEUDO_CLASS(empty, ":empty", "")
|
||||
CSS_PSEUDO_CLASS(mozOnlyWhitespace, ":-moz-only-whitespace", "")
|
||||
CSS_PSEUDO_CLASS(mozEmptyExceptChildrenWithLocalname, ":-moz-empty-except-children-with-localname", "")
|
||||
CSS_PSEUDO_CLASS(lang, ":lang", "")
|
||||
CSS_PSEUDO_CLASS(mozBoundElement, ":-moz-bound-element", "")
|
||||
CSS_PSEUDO_CLASS(root, ":root", "")
|
||||
CSS_PSEUDO_CLASS(any, ":-moz-any", "")
|
||||
|
||||
CSS_PSEUDO_CLASS(firstChild, ":first-child")
|
||||
CSS_PSEUDO_CLASS(firstNode, ":-moz-first-node")
|
||||
CSS_PSEUDO_CLASS(lastChild, ":last-child")
|
||||
CSS_PSEUDO_CLASS(lastNode, ":-moz-last-node")
|
||||
CSS_PSEUDO_CLASS(onlyChild, ":only-child")
|
||||
CSS_PSEUDO_CLASS(firstOfType, ":first-of-type")
|
||||
CSS_PSEUDO_CLASS(lastOfType, ":last-of-type")
|
||||
CSS_PSEUDO_CLASS(onlyOfType, ":only-of-type")
|
||||
CSS_PSEUDO_CLASS(nthChild, ":nth-child")
|
||||
CSS_PSEUDO_CLASS(nthLastChild, ":nth-last-child")
|
||||
CSS_PSEUDO_CLASS(nthOfType, ":nth-of-type")
|
||||
CSS_PSEUDO_CLASS(nthLastOfType, ":nth-last-of-type")
|
||||
CSS_PSEUDO_CLASS(firstChild, ":first-child", "")
|
||||
CSS_PSEUDO_CLASS(firstNode, ":-moz-first-node", "")
|
||||
CSS_PSEUDO_CLASS(lastChild, ":last-child", "")
|
||||
CSS_PSEUDO_CLASS(lastNode, ":-moz-last-node", "")
|
||||
CSS_PSEUDO_CLASS(onlyChild, ":only-child", "")
|
||||
CSS_PSEUDO_CLASS(firstOfType, ":first-of-type", "")
|
||||
CSS_PSEUDO_CLASS(lastOfType, ":last-of-type", "")
|
||||
CSS_PSEUDO_CLASS(onlyOfType, ":only-of-type", "")
|
||||
CSS_PSEUDO_CLASS(nthChild, ":nth-child", "")
|
||||
CSS_PSEUDO_CLASS(nthLastChild, ":nth-last-child", "")
|
||||
CSS_PSEUDO_CLASS(nthOfType, ":nth-of-type", "")
|
||||
CSS_PSEUDO_CLASS(nthLastOfType, ":nth-last-of-type", "")
|
||||
|
||||
// Match nodes that are HTML but not XHTML
|
||||
CSS_PSEUDO_CLASS(mozIsHTML, ":-moz-is-html")
|
||||
CSS_PSEUDO_CLASS(mozIsHTML, ":-moz-is-html", "")
|
||||
|
||||
// Matches anything when the specified look-and-feel metric is set
|
||||
CSS_PSEUDO_CLASS(mozSystemMetric, ":-moz-system-metric")
|
||||
CSS_PSEUDO_CLASS(mozSystemMetric, ":-moz-system-metric", "")
|
||||
|
||||
// -moz-locale-dir(ltr) and -moz-locale-dir(rtl) may be used
|
||||
// to match based on the locale's chrome direction
|
||||
CSS_PSEUDO_CLASS(mozLocaleDir, ":-moz-locale-dir")
|
||||
CSS_PSEUDO_CLASS(mozLocaleDir, ":-moz-locale-dir", "")
|
||||
|
||||
// -moz-lwtheme may be used to match a document that has a lightweight theme
|
||||
CSS_PSEUDO_CLASS(mozLWTheme, ":-moz-lwtheme")
|
||||
CSS_PSEUDO_CLASS(mozLWTheme, ":-moz-lwtheme", "")
|
||||
|
||||
// -moz-lwtheme-brighttext matches a document that has a dark lightweight theme
|
||||
CSS_PSEUDO_CLASS(mozLWThemeBrightText, ":-moz-lwtheme-brighttext")
|
||||
CSS_PSEUDO_CLASS(mozLWThemeBrightText, ":-moz-lwtheme-brighttext", "")
|
||||
|
||||
// -moz-lwtheme-darktext matches a document that has a bright lightweight theme
|
||||
CSS_PSEUDO_CLASS(mozLWThemeDarkText, ":-moz-lwtheme-darktext")
|
||||
CSS_PSEUDO_CLASS(mozLWThemeDarkText, ":-moz-lwtheme-darktext", "")
|
||||
|
||||
// Matches anything when the containing window is inactive
|
||||
CSS_PSEUDO_CLASS(mozWindowInactive, ":-moz-window-inactive")
|
||||
CSS_PSEUDO_CLASS(mozWindowInactive, ":-moz-window-inactive", "")
|
||||
|
||||
// Matches any table elements that have a nonzero border attribute,
|
||||
// according to HTML integer attribute parsing rules.
|
||||
CSS_PSEUDO_CLASS(mozTableBorderNonzero, ":-moz-table-border-nonzero")
|
||||
CSS_PSEUDO_CLASS(mozTableBorderNonzero, ":-moz-table-border-nonzero", "")
|
||||
|
||||
// Matches whatever the contextual reference elements are for the
|
||||
// matching operation.
|
||||
CSS_PSEUDO_CLASS(scope, ":-moz-scope")
|
||||
CSS_PSEUDO_CLASS(scope, ":scope", "layout.css.scope-pseudo.enabled")
|
||||
|
||||
// :not needs to come at the end of the non-bit pseudo-class list, since
|
||||
// it doesn't actually get directly matched on in SelectorMatches.
|
||||
CSS_PSEUDO_CLASS(notPseudo, ":not")
|
||||
CSS_PSEUDO_CLASS(notPseudo, ":not", "")
|
||||
|
||||
// :-moz-dir(ltr) and :-moz-dir(rtl) match elements whose resolved
|
||||
// directionality in the markup language is ltr or rtl respectively
|
||||
CSS_STATE_DEPENDENT_PSEUDO_CLASS(dir, ":-moz-dir",
|
||||
CSS_STATE_DEPENDENT_PSEUDO_CLASS(dir, ":-moz-dir", "",
|
||||
NS_EVENT_STATE_LTR | NS_EVENT_STATE_RTL)
|
||||
|
||||
CSS_STATE_PSEUDO_CLASS(link, ":link", NS_EVENT_STATE_UNVISITED)
|
||||
CSS_STATE_PSEUDO_CLASS(link, ":link", "", NS_EVENT_STATE_UNVISITED)
|
||||
// what matches :link or :visited
|
||||
CSS_STATE_PSEUDO_CLASS(mozAnyLink, ":-moz-any-link",
|
||||
CSS_STATE_PSEUDO_CLASS(mozAnyLink, ":-moz-any-link", "",
|
||||
NS_EVENT_STATE_VISITED | NS_EVENT_STATE_UNVISITED)
|
||||
CSS_STATE_PSEUDO_CLASS(visited, ":visited", NS_EVENT_STATE_VISITED)
|
||||
CSS_STATE_PSEUDO_CLASS(visited, ":visited", "", NS_EVENT_STATE_VISITED)
|
||||
|
||||
CSS_STATE_PSEUDO_CLASS(active, ":active", NS_EVENT_STATE_ACTIVE)
|
||||
CSS_STATE_PSEUDO_CLASS(checked, ":checked", NS_EVENT_STATE_CHECKED)
|
||||
CSS_STATE_PSEUDO_CLASS(disabled, ":disabled", NS_EVENT_STATE_DISABLED)
|
||||
CSS_STATE_PSEUDO_CLASS(enabled, ":enabled", NS_EVENT_STATE_ENABLED)
|
||||
CSS_STATE_PSEUDO_CLASS(focus, ":focus", NS_EVENT_STATE_FOCUS)
|
||||
CSS_STATE_PSEUDO_CLASS(hover, ":hover", NS_EVENT_STATE_HOVER)
|
||||
CSS_STATE_PSEUDO_CLASS(mozDragOver, ":-moz-drag-over", NS_EVENT_STATE_DRAGOVER)
|
||||
CSS_STATE_PSEUDO_CLASS(target, ":target", NS_EVENT_STATE_URLTARGET)
|
||||
CSS_STATE_PSEUDO_CLASS(indeterminate, ":indeterminate",
|
||||
CSS_STATE_PSEUDO_CLASS(active, ":active", "", NS_EVENT_STATE_ACTIVE)
|
||||
CSS_STATE_PSEUDO_CLASS(checked, ":checked", "", NS_EVENT_STATE_CHECKED)
|
||||
CSS_STATE_PSEUDO_CLASS(disabled, ":disabled", "", NS_EVENT_STATE_DISABLED)
|
||||
CSS_STATE_PSEUDO_CLASS(enabled, ":enabled", "", NS_EVENT_STATE_ENABLED)
|
||||
CSS_STATE_PSEUDO_CLASS(focus, ":focus", "", NS_EVENT_STATE_FOCUS)
|
||||
CSS_STATE_PSEUDO_CLASS(hover, ":hover", "", NS_EVENT_STATE_HOVER)
|
||||
CSS_STATE_PSEUDO_CLASS(mozDragOver, ":-moz-drag-over", "", NS_EVENT_STATE_DRAGOVER)
|
||||
CSS_STATE_PSEUDO_CLASS(target, ":target", "", NS_EVENT_STATE_URLTARGET)
|
||||
CSS_STATE_PSEUDO_CLASS(indeterminate, ":indeterminate", "",
|
||||
NS_EVENT_STATE_INDETERMINATE)
|
||||
|
||||
// Matches the element which is being displayed full-screen, and
|
||||
// any containing frames.
|
||||
CSS_STATE_PSEUDO_CLASS(mozFullScreen, ":-moz-full-screen", NS_EVENT_STATE_FULL_SCREEN)
|
||||
CSS_STATE_PSEUDO_CLASS(mozFullScreen, ":-moz-full-screen", "", NS_EVENT_STATE_FULL_SCREEN)
|
||||
|
||||
// Matches any element which is an ancestor of the DOM full-screen element,
|
||||
// or an ancestor of a containing frame of the full-screen element.
|
||||
CSS_STATE_PSEUDO_CLASS(mozFullScreenAncestor, ":-moz-full-screen-ancestor", NS_EVENT_STATE_FULL_SCREEN_ANCESTOR)
|
||||
CSS_STATE_PSEUDO_CLASS(mozFullScreenAncestor, ":-moz-full-screen-ancestor", "", NS_EVENT_STATE_FULL_SCREEN_ANCESTOR)
|
||||
|
||||
// Matches if the element is focused and should show a focus ring
|
||||
CSS_STATE_PSEUDO_CLASS(mozFocusRing, ":-moz-focusring", NS_EVENT_STATE_FOCUSRING)
|
||||
CSS_STATE_PSEUDO_CLASS(mozFocusRing, ":-moz-focusring", "", NS_EVENT_STATE_FOCUSRING)
|
||||
|
||||
// Image, object, etc state pseudo-classes
|
||||
CSS_STATE_PSEUDO_CLASS(mozBroken, ":-moz-broken", NS_EVENT_STATE_BROKEN)
|
||||
CSS_STATE_PSEUDO_CLASS(mozUserDisabled, ":-moz-user-disabled",
|
||||
CSS_STATE_PSEUDO_CLASS(mozBroken, ":-moz-broken", "", NS_EVENT_STATE_BROKEN)
|
||||
CSS_STATE_PSEUDO_CLASS(mozUserDisabled, ":-moz-user-disabled", "",
|
||||
NS_EVENT_STATE_USERDISABLED)
|
||||
CSS_STATE_PSEUDO_CLASS(mozSuppressed, ":-moz-suppressed",
|
||||
CSS_STATE_PSEUDO_CLASS(mozSuppressed, ":-moz-suppressed", "",
|
||||
NS_EVENT_STATE_SUPPRESSED)
|
||||
CSS_STATE_PSEUDO_CLASS(mozLoading, ":-moz-loading", NS_EVENT_STATE_LOADING)
|
||||
CSS_STATE_PSEUDO_CLASS(mozTypeUnsupported, ":-moz-type-unsupported",
|
||||
CSS_STATE_PSEUDO_CLASS(mozLoading, ":-moz-loading", "", NS_EVENT_STATE_LOADING)
|
||||
CSS_STATE_PSEUDO_CLASS(mozTypeUnsupported, ":-moz-type-unsupported", "",
|
||||
NS_EVENT_STATE_TYPE_UNSUPPORTED)
|
||||
CSS_STATE_PSEUDO_CLASS(mozTypeUnsupportedPlatform, ":-moz-type-unsupported-platform",
|
||||
CSS_STATE_PSEUDO_CLASS(mozTypeUnsupportedPlatform, ":-moz-type-unsupported-platform", "",
|
||||
NS_EVENT_STATE_TYPE_UNSUPPORTED_PLATFORM)
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerClickToPlay, ":-moz-handler-clicktoplay",
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerClickToPlay, ":-moz-handler-clicktoplay", "",
|
||||
NS_EVENT_STATE_TYPE_CLICK_TO_PLAY)
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerPlayPreview, ":-moz-handler-playpreview",
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerPlayPreview, ":-moz-handler-playpreview", "",
|
||||
NS_EVENT_STATE_TYPE_PLAY_PREVIEW)
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerVulnerableUpdatable, ":-moz-handler-vulnerable-updatable",
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerVulnerableUpdatable, ":-moz-handler-vulnerable-updatable", "",
|
||||
NS_EVENT_STATE_VULNERABLE_UPDATABLE)
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerVulnerableNoUpdate, ":-moz-handler-vulnerable-no-update",
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerVulnerableNoUpdate, ":-moz-handler-vulnerable-no-update", "",
|
||||
NS_EVENT_STATE_VULNERABLE_NO_UPDATE)
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerDisabled, ":-moz-handler-disabled",
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerDisabled, ":-moz-handler-disabled", "",
|
||||
NS_EVENT_STATE_HANDLER_DISABLED)
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerBlocked, ":-moz-handler-blocked",
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerBlocked, ":-moz-handler-blocked", "",
|
||||
NS_EVENT_STATE_HANDLER_BLOCKED)
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerCrashed, ":-moz-handler-crashed",
|
||||
CSS_STATE_PSEUDO_CLASS(mozHandlerCrashed, ":-moz-handler-crashed", "",
|
||||
NS_EVENT_STATE_HANDLER_CRASHED)
|
||||
|
||||
CSS_STATE_PSEUDO_CLASS(mozMathIncrementScriptLevel,
|
||||
":-moz-math-increment-script-level",
|
||||
":-moz-math-increment-script-level", "",
|
||||
NS_EVENT_STATE_INCREMENT_SCRIPT_LEVEL)
|
||||
|
||||
// CSS 3 UI
|
||||
// http://www.w3.org/TR/2004/CR-css3-ui-20040511/#pseudo-classes
|
||||
CSS_STATE_PSEUDO_CLASS(required, ":required", NS_EVENT_STATE_REQUIRED)
|
||||
CSS_STATE_PSEUDO_CLASS(optional, ":optional", NS_EVENT_STATE_OPTIONAL)
|
||||
CSS_STATE_PSEUDO_CLASS(valid, ":valid", NS_EVENT_STATE_VALID)
|
||||
CSS_STATE_PSEUDO_CLASS(invalid, ":invalid", NS_EVENT_STATE_INVALID)
|
||||
CSS_STATE_PSEUDO_CLASS(inRange, ":in-range", NS_EVENT_STATE_INRANGE)
|
||||
CSS_STATE_PSEUDO_CLASS(outOfRange, ":out-of-range", NS_EVENT_STATE_OUTOFRANGE)
|
||||
CSS_STATE_PSEUDO_CLASS(defaultPseudo, ":default", NS_EVENT_STATE_DEFAULT)
|
||||
CSS_STATE_PSEUDO_CLASS(mozReadOnly, ":-moz-read-only",
|
||||
CSS_STATE_PSEUDO_CLASS(required, ":required", "", NS_EVENT_STATE_REQUIRED)
|
||||
CSS_STATE_PSEUDO_CLASS(optional, ":optional", "", NS_EVENT_STATE_OPTIONAL)
|
||||
CSS_STATE_PSEUDO_CLASS(valid, ":valid", "", NS_EVENT_STATE_VALID)
|
||||
CSS_STATE_PSEUDO_CLASS(invalid, ":invalid", "", NS_EVENT_STATE_INVALID)
|
||||
CSS_STATE_PSEUDO_CLASS(inRange, ":in-range", "", NS_EVENT_STATE_INRANGE)
|
||||
CSS_STATE_PSEUDO_CLASS(outOfRange, ":out-of-range", "", NS_EVENT_STATE_OUTOFRANGE)
|
||||
CSS_STATE_PSEUDO_CLASS(defaultPseudo, ":default", "", NS_EVENT_STATE_DEFAULT)
|
||||
CSS_STATE_PSEUDO_CLASS(mozReadOnly, ":-moz-read-only", "",
|
||||
NS_EVENT_STATE_MOZ_READONLY)
|
||||
CSS_STATE_PSEUDO_CLASS(mozReadWrite, ":-moz-read-write",
|
||||
CSS_STATE_PSEUDO_CLASS(mozReadWrite, ":-moz-read-write", "",
|
||||
NS_EVENT_STATE_MOZ_READWRITE)
|
||||
CSS_STATE_PSEUDO_CLASS(mozSubmitInvalid, ":-moz-submit-invalid",
|
||||
CSS_STATE_PSEUDO_CLASS(mozSubmitInvalid, ":-moz-submit-invalid", "",
|
||||
NS_EVENT_STATE_MOZ_SUBMITINVALID)
|
||||
CSS_STATE_PSEUDO_CLASS(mozUIInvalid, ":-moz-ui-invalid",
|
||||
CSS_STATE_PSEUDO_CLASS(mozUIInvalid, ":-moz-ui-invalid", "",
|
||||
NS_EVENT_STATE_MOZ_UI_INVALID)
|
||||
CSS_STATE_PSEUDO_CLASS(mozUIValid, ":-moz-ui-valid",
|
||||
CSS_STATE_PSEUDO_CLASS(mozUIValid, ":-moz-ui-valid", "",
|
||||
NS_EVENT_STATE_MOZ_UI_VALID)
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterOptimum, ":-moz-meter-optimum",
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterOptimum, ":-moz-meter-optimum", "",
|
||||
NS_EVENT_STATE_OPTIMUM)
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterSubOptimum, ":-moz-meter-sub-optimum",
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterSubOptimum, ":-moz-meter-sub-optimum", "",
|
||||
NS_EVENT_STATE_SUB_OPTIMUM)
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterSubSubOptimum, ":-moz-meter-sub-sub-optimum",
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterSubSubOptimum, ":-moz-meter-sub-sub-optimum", "",
|
||||
NS_EVENT_STATE_SUB_SUB_OPTIMUM)
|
||||
|
||||
#ifdef DEFINED_CSS_STATE_PSEUDO_CLASS
|
||||
|
@ -11,29 +11,46 @@
|
||||
#include "nsAtomListUtils.h"
|
||||
#include "nsStaticAtom.h"
|
||||
#include "nsMemory.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
// define storage for all atoms
|
||||
#define CSS_PSEUDO_CLASS(_name, _value) static nsIAtom* sPseudoClass_##_name;
|
||||
#define CSS_PSEUDO_CLASS(_name, _value, _pref) \
|
||||
static nsIAtom* sPseudoClass_##_name;
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_PSEUDO_CLASS
|
||||
|
||||
#define CSS_PSEUDO_CLASS(name_, value_) \
|
||||
#define CSS_PSEUDO_CLASS(name_, value_, pref_) \
|
||||
NS_STATIC_ATOM_BUFFER(name_##_buffer, value_)
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_PSEUDO_CLASS
|
||||
|
||||
static const nsStaticAtom CSSPseudoClasses_info[] = {
|
||||
#define CSS_PSEUDO_CLASS(name_, value_) \
|
||||
#define CSS_PSEUDO_CLASS(name_, value_, pref_) \
|
||||
NS_STATIC_ATOM(name_##_buffer, &sPseudoClass_##name_),
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_PSEUDO_CLASS
|
||||
};
|
||||
|
||||
static bool sPseudoClassEnabled[] = {
|
||||
#define CSS_PSEUDO_CLASS(name_, value_, pref_) \
|
||||
true,
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_PSEUDO_CLASS
|
||||
};
|
||||
|
||||
void nsCSSPseudoClasses::AddRefAtoms()
|
||||
{
|
||||
NS_RegisterStaticAtoms(CSSPseudoClasses_info);
|
||||
|
||||
#define CSS_PSEUDO_CLASS(name_, value_, pref_) \
|
||||
if (pref_[0]) { \
|
||||
Preferences::AddBoolVarCache(&sPseudoClassEnabled[ePseudoClass_##name_], \
|
||||
pref_); \
|
||||
}
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_PSEUDO_CLASS
|
||||
}
|
||||
|
||||
bool
|
||||
@ -68,7 +85,7 @@ nsCSSPseudoClasses::GetPseudoType(nsIAtom* aAtom)
|
||||
{
|
||||
for (uint32_t i = 0; i < ArrayLength(CSSPseudoClasses_info); ++i) {
|
||||
if (*CSSPseudoClasses_info[i].mAtom == aAtom) {
|
||||
return Type(i);
|
||||
return sPseudoClassEnabled[i] ? Type(i) : ePseudoClass_NotPseudoClass;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
static void AddRefAtoms();
|
||||
|
||||
enum Type {
|
||||
#define CSS_PSEUDO_CLASS(_name, _value) \
|
||||
#define CSS_PSEUDO_CLASS(_name, _value, _pref) \
|
||||
ePseudoClass_##_name,
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_PSEUDO_CLASS
|
||||
|
@ -1538,9 +1538,9 @@ checkGenericEmptyMatches(Element* aElement,
|
||||
|
||||
// Arrays of the states that are relevant for various pseudoclasses.
|
||||
static const nsEventStates sPseudoClassStateDependences[] = {
|
||||
#define CSS_PSEUDO_CLASS(_name, _value) \
|
||||
#define CSS_PSEUDO_CLASS(_name, _value, _pref) \
|
||||
nsEventStates(),
|
||||
#define CSS_STATE_DEPENDENT_PSEUDO_CLASS(_name, _value, _states) \
|
||||
#define CSS_STATE_DEPENDENT_PSEUDO_CLASS(_name, _value, _pref, _states) \
|
||||
_states,
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_STATE_DEPENDENT_PSEUDO_CLASS
|
||||
@ -1552,9 +1552,9 @@ static const nsEventStates sPseudoClassStateDependences[] = {
|
||||
};
|
||||
|
||||
static const nsEventStates sPseudoClassStates[] = {
|
||||
#define CSS_PSEUDO_CLASS(_name, _value) \
|
||||
#define CSS_PSEUDO_CLASS(_name, _value, _pref) \
|
||||
nsEventStates(),
|
||||
#define CSS_STATE_PSEUDO_CLASS(_name, _value, _states) \
|
||||
#define CSS_STATE_PSEUDO_CLASS(_name, _value, _pref, _states) \
|
||||
_states,
|
||||
#include "nsCSSPseudoClassList.h"
|
||||
#undef CSS_STATE_PSEUDO_CLASS
|
||||
|
@ -1661,6 +1661,13 @@ pref("layout.css.prefixes.transforms", true);
|
||||
pref("layout.css.prefixes.transitions", true);
|
||||
pref("layout.css.prefixes.animations", true);
|
||||
|
||||
// Is support for the :scope selector enabled?
|
||||
#ifdef RELEASE_BUILD
|
||||
pref("layout.css.scope-pseudo.enabled", false);
|
||||
#else
|
||||
pref("layout.css.scope-pseudo.enabled", true);
|
||||
#endif
|
||||
|
||||
// pref for which side vertical scrollbars should be on
|
||||
// 0 = end-side in UI direction
|
||||
// 1 = end-side in document/content direction
|
||||
|
Loading…
Reference in New Issue
Block a user