Backed out 5 changesets (bug 1909346, bug 1911353, bug 1900233) for Bp bustages on ServoStyleSet.cpp . CLOSED TREE

Backed out changeset f6e3cddaa98e (bug 1911353)
Backed out changeset d8ec18178fed (bug 1900233)
Backed out changeset f6e45aa1a0f9 (bug 1909346)
Backed out changeset 7903b612930c (bug 1909346)
Backed out changeset c400d8d1a91f (bug 1900233)
This commit is contained in:
Narcis Beleuzu 2024-08-06 21:34:13 +03:00
Родитель 9429216cdb
Коммит 58825dea6d
59 изменённых файлов: 3433 добавлений и 616 удалений

Просмотреть файл

@ -174,11 +174,6 @@ DOMInterfaces = {
'nativeType': 'mozilla::StyleSheet',
},
'CSSPositionTryDescriptors': {
'nativeType': 'mozilla::dom::CSSPositionTryRuleDeclaration',
'headerFile': 'mozilla/dom/CSSPositionTryRule.h',
},
'CustomElementRegistry': {
'implicitJSContext': ['define', 'getName'],
},
@ -2048,14 +2043,4 @@ TemplatedAttributes = {
},
],
'CSSPositionTryDescriptors': [
{
'template': 'CSSPositionTryDescriptor',
'getter': 'GetPropertyValue',
'setter': 'SetPropertyValue',
'argument': ('nsCSSPropertyID', 'id'),
'attrName': 'nsCSSProps::PropertyIDLName(id)',
},
],
}

Просмотреть файл

@ -18,7 +18,7 @@ def generateLine(propName, extendedAttrs):
)
def generate(output, dataFile, ruleType, interfaceName, bindingTemplate, pref=None):
def generate(output, dataFile, ruleType, interfaceName, bindingTemplate):
propsData = runpy.run_path(dataFile)["data"]
output.write(
"""/* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT */
@ -29,16 +29,12 @@ def generate(output, dataFile, ruleType, interfaceName, bindingTemplate, pref=No
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
[Exposed=Window"""
)
if pref:
output.write(', Pref="' + pref + '"')
output.write(
"""]
[Exposed=Window]
interface """
+ interfaceName
+ " : CSSStyleDeclaration {\n"
)
for p in propsData.values():
# Skip properties which aren't valid in style rules.
if ruleType not in p.rules:
@ -133,14 +129,3 @@ def generateCSSPageDescriptors(output, dataFile):
"CSSPageDescriptors",
"CSSPageDescriptor",
)
def generateCSSPositionTryDescriptors(output, dataFile):
generate(
output,
dataFile,
"PositionTry",
"CSSPositionTryDescriptors",
"CSSPositionTryDescriptor",
"layout.css.anchor-positioning.enabled",
)

Просмотреть файл

@ -207,9 +207,3 @@ if CONFIG["COMPILE_ENVIRONMENT"]:
entry_point="generateCSSPageDescriptors",
inputs=["!/layout/style/ServoCSSPropList.py"],
)
GeneratedFile(
"CSSPositionTryDescriptors.webidl",
script="GenerateCSSPropListWebIDL.py",
entry_point="generateCSSPositionTryDescriptors",
inputs=["!/layout/style/ServoCSSPropList.py"],
)

Просмотреть файл

@ -47,7 +47,6 @@ PEExpectedNoneOrURL=Expected none or URL but found %1$S.
PEExpectedNoneOrURLOrFilterFunction=Expected none, URL, or filter function but found %1$S.
PEDisallowedImportRule=@import rules are not yet valid in constructed stylesheets.
PENeverMatchingHostSelector=:host selector in %S is not featureless and will never match. Maybe you intended to use :host()?
PEImportantDeclError=Property cannot be declared as !important in this context.
TooLargeDashedRadius=Border radius is too large for dashed style (the limit is 100000px). Rendering as solid.
TooLargeDottedRadius=Border radius is too large for dotted style (the limit is 100000px). Rendering as solid.

Просмотреть файл

@ -1,14 +0,0 @@
/* -*- 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/css-anchor-position-1/#om-position-try
*/
[Exposed=Window, Pref="layout.css.anchor-positioning.enabled"]
interface CSSPositionTryRule : CSSRule {
readonly attribute UTF8String name;
[SameObject, PutForwards=cssText] readonly attribute CSSPositionTryDescriptors style;
};

Просмотреть файл

@ -397,7 +397,6 @@ with Files("WebTransport*"):
GENERATED_WEBIDL_FILES = [
"CSS2Properties.webidl",
"CSSPageDescriptors.webidl",
"CSSPositionTryDescriptors.webidl",
]
PREPROCESSED_WEBIDL_FILES = [
@ -501,7 +500,6 @@ WEBIDL_FILES = [
"CSSMozDocumentRule.webidl",
"CSSNamespaceRule.webidl",
"CSSPageRule.webidl",
"CSSPositionTryRule.webidl",
"CSSPropertyRule.webidl",
"CSSPseudoElement.webidl",
"CSSRule.webidl",

Просмотреть файл

@ -473,7 +473,6 @@ static uint32_t CollectAtRules(ServoCSSRuleList& aRuleList,
case StyleCssRuleType::FontPaletteValues:
case StyleCssRuleType::Scope:
case StyleCssRuleType::StartingStyle:
case StyleCssRuleType::PositionTry:
break;
}

Просмотреть файл

@ -88,8 +88,7 @@ void ServoStyleRuleMap::RuleRemoved(StyleSheet& aStyleSheet,
case StyleCssRuleType::Container:
case StyleCssRuleType::Document:
case StyleCssRuleType::Scope:
case StyleCssRuleType::StartingStyle:
case StyleCssRuleType::PositionTry: {
case StyleCssRuleType::StartingStyle: {
// See the comment in SheetRemoved.
mTable.Clear();
break;
@ -152,7 +151,6 @@ void ServoStyleRuleMap::FillTableFromRule(css::Rule& aRule) {
case StyleCssRuleType::CounterStyle:
case StyleCssRuleType::FontFeatureValues:
case StyleCssRuleType::FontPaletteValues:
case StyleCssRuleType::PositionTry:
break;
}
}

Просмотреть файл

@ -1,189 +0,0 @@
/* -*- Mode: C++; tab-width: 8; 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/. */
#include "mozilla/dom/CSSPositionTryRule.h"
#include "mozilla/dom/CSSPositionTryRuleBinding.h"
#include "mozilla/dom/CSSPositionTryDescriptorsBinding.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/DeclarationBlock.h"
namespace mozilla::dom {
CSSPositionTryRule* CSSPositionTryRuleDeclaration::Rule() {
return reinterpret_cast<CSSPositionTryRule*>(
reinterpret_cast<uint8_t*>(this) - offsetof(CSSPositionTryRule, mDecls));
}
const CSSPositionTryRule* CSSPositionTryRuleDeclaration::Rule() const {
return reinterpret_cast<const CSSPositionTryRule*>(
reinterpret_cast<const uint8_t*>(this) -
offsetof(CSSPositionTryRule, mDecls));
}
CSSPositionTryRuleDeclaration::CSSPositionTryRuleDeclaration(
already_AddRefed<StyleLockedDeclarationBlock> aDecls)
: mDecls(new DeclarationBlock(std::move(aDecls))) {
mDecls->SetOwningRule(Rule());
}
CSSPositionTryRuleDeclaration::~CSSPositionTryRuleDeclaration() {
mDecls->SetOwningRule(nullptr);
}
NS_INTERFACE_MAP_BEGIN(CSSPositionTryRuleDeclaration)
NS_WRAPPERCACHE_INTERFACE_TABLE_ENTRY
// We forward the cycle collection interfaces to Rule(), which is
// never null (in fact, we're part of that object!)
if (aIID.Equals(NS_GET_IID(nsCycleCollectionISupports)) ||
aIID.Equals(NS_GET_IID(nsXPCOMCycleCollectionParticipant))) {
return Rule()->QueryInterface(aIID, aInstancePtr);
}
NS_INTERFACE_MAP_END_INHERITING(nsDOMCSSDeclaration)
NS_IMPL_ADDREF_USING_AGGREGATOR(CSSPositionTryRuleDeclaration, Rule())
NS_IMPL_RELEASE_USING_AGGREGATOR(CSSPositionTryRuleDeclaration, Rule())
css::Rule* CSSPositionTryRuleDeclaration::GetParentRule() { return Rule(); }
nsINode* CSSPositionTryRuleDeclaration::GetAssociatedNode() const {
return Rule()->GetAssociatedDocumentOrShadowRoot();
}
nsISupports* CSSPositionTryRuleDeclaration::GetParentObject() const {
return Rule()->GetParentObject();
}
JSObject* CSSPositionTryRuleDeclaration::WrapObject(
JSContext* aCx, JS::Handle<JSObject*> aGivenProto) {
return CSSPositionTryDescriptors_Binding::Wrap(aCx, this, aGivenProto);
}
DeclarationBlock* CSSPositionTryRuleDeclaration::GetOrCreateCSSDeclaration(
Operation aOperation, DeclarationBlock** aCreated) {
if (aOperation != Operation::Read) {
if (StyleSheet* sheet = Rule()->GetStyleSheet()) {
sheet->WillDirty();
}
}
return mDecls;
}
void CSSPositionTryRuleDeclaration::SetRawAfterClone(
RefPtr<StyleLockedDeclarationBlock> aDeclarationBlock) {
mDecls->SetOwningRule(nullptr);
mDecls = new DeclarationBlock(aDeclarationBlock.forget());
mDecls->SetOwningRule(Rule());
}
nsresult CSSPositionTryRuleDeclaration::SetCSSDeclaration(
DeclarationBlock* aDecl, MutationClosureData* aClosureData) {
MOZ_ASSERT(aDecl, "must be non-null");
CSSPositionTryRule* rule = Rule();
if (aDecl != mDecls) {
mDecls->SetOwningRule(nullptr);
Servo_PositionTryRule_SetStyle(rule->Raw(), aDecl->Raw());
mDecls = aDecl;
mDecls->SetOwningRule(rule);
}
return NS_OK;
}
nsDOMCSSDeclaration::ParsingEnvironment
CSSPositionTryRuleDeclaration::GetParsingEnvironment(
nsIPrincipal* aSubjectPrincipal) const {
return GetParsingEnvironmentForRule(Rule(), StyleCssRuleType::PositionTry);
}
CSSPositionTryRule::CSSPositionTryRule(
RefPtr<StyleLockedPositionTryRule> aRawRule, StyleSheet* aSheet,
css::Rule* aParentRule, uint32_t aLine, uint32_t aColumn)
: css::Rule(aSheet, aParentRule, aLine, aColumn),
mRawRule(std::move(aRawRule)),
mDecls(Servo_PositionTryRule_GetStyle(mRawRule).Consume()) {}
NS_IMPL_ADDREF_INHERITED(CSSPositionTryRule, css::Rule)
NS_IMPL_RELEASE_INHERITED(CSSPositionTryRule, css::Rule)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(CSSPositionTryRule)
NS_INTERFACE_MAP_END_INHERITING(css::Rule)
NS_IMPL_CYCLE_COLLECTION_CLASS(CSSPositionTryRule)
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(CSSPositionTryRule, css::Rule)
// Keep this in sync with IsCCLeaf.
// Trace the wrapper for our declaration. This just expands out
// NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER which we can't use
// directly because the wrapper is on the declaration, not on us.
tmp->mDecls.TraceWrapper(aCallbacks, aClosure);
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(CSSPositionTryRule)
// Keep this in sync with IsCCLeaf.
// Unlink the wrapper for our declaration.
//
// Note that this has to happen before unlinking css::Rule.
tmp->UnlinkDeclarationWrapper(tmp->mDecls);
tmp->mDecls.mDecls->SetOwningRule(nullptr);
NS_IMPL_CYCLE_COLLECTION_UNLINK_END_INHERITED(css::Rule)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(CSSPositionTryRule, css::Rule)
// Keep this in sync with IsCCLeaf.
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
bool CSSPositionTryRule::IsCCLeaf() const {
if (!Rule::IsCCLeaf()) {
return false;
}
return !mDecls.PreservingWrapper();
}
void CSSPositionTryRule::SetRawAfterClone(
RefPtr<StyleLockedPositionTryRule> aRaw) {
mRawRule = std::move(aRaw);
mDecls.SetRawAfterClone(
Servo_PositionTryRule_GetStyle(mRawRule.get()).Consume());
}
StyleCssRuleType CSSPositionTryRule::Type() const {
return StyleCssRuleType::PositionTry;
}
size_t CSSPositionTryRule::SizeOfIncludingThis(
MallocSizeOf aMallocSizeOf) const {
// TODO(dshin)
return aMallocSizeOf(this);
}
#ifdef DEBUG
void CSSPositionTryRule::List(FILE* out, int32_t aIndent) const {
nsAutoCString str;
for (int32_t i = 0; i < aIndent; i++) {
str.AppendLiteral(" ");
}
Servo_PositionTryRule_Debug(mRawRule, &str);
fprintf_stderr(out, "%s\n", str.get());
}
#endif
void CSSPositionTryRule::GetName(nsACString& aName) {
Servo_PositionTryRule_GetName(mRawRule, &aName);
}
void CSSPositionTryRule::GetCssText(nsACString& aCssText) const {
Servo_PositionTryRule_GetCssText(mRawRule, &aCssText);
}
JSObject* CSSPositionTryRule::WrapObject(JSContext* aCx,
JS::Handle<JSObject*> aGivenProto) {
return CSSPositionTryRule_Binding::Wrap(aCx, this, aGivenProto);
}
} // namespace mozilla::dom

Просмотреть файл

@ -1,97 +0,0 @@
/* -*- Mode: C++; tab-width: 8; 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/. */
#ifndef mozilla_dom_CSSPositionTryRule_h
#define mozilla_dom_CSSPositionTryRule_h
#include "mozilla/css/Rule.h"
#include "mozilla/ServoBindingTypes.h"
#include "nsDOMCSSDeclaration.h"
#include "nsICSSDeclaration.h"
namespace mozilla {
class DeclarationBlock;
namespace dom {
class CSSPositionTryRule;
class CSSPositionTryRuleDeclaration final : public nsDOMCSSDeclaration {
public:
NS_DECL_ISUPPORTS_INHERITED
css::Rule* GetParentRule() final;
nsINode* GetAssociatedNode() const final;
nsISupports* GetParentObject() const final;
JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) final;
protected:
DeclarationBlock* GetOrCreateCSSDeclaration(
Operation aOperation, DeclarationBlock** aCreated) final;
nsresult SetCSSDeclaration(DeclarationBlock* aDecl,
MutationClosureData* aClosureData) final;
nsDOMCSSDeclaration::ParsingEnvironment GetParsingEnvironment(
nsIPrincipal* aSubjectPrincipal) const final;
private:
// For accessing the constructor.
friend class CSSPositionTryRule;
explicit CSSPositionTryRuleDeclaration(
already_AddRefed<StyleLockedDeclarationBlock> aDecls);
void SetRawAfterClone(RefPtr<StyleLockedDeclarationBlock>);
~CSSPositionTryRuleDeclaration();
inline CSSPositionTryRule* Rule();
inline const CSSPositionTryRule* Rule() const;
RefPtr<DeclarationBlock> mDecls;
};
class CSSPositionTryRule final : public css::Rule {
public:
CSSPositionTryRule(RefPtr<StyleLockedPositionTryRule> aRawRule,
StyleSheet* aSheet, css::Rule* aParentRule, uint32_t aLine,
uint32_t aColumn);
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(CSSPositionTryRule,
css::Rule)
bool IsCCLeaf() const final;
StyleLockedPositionTryRule* Raw() const { return mRawRule; }
void SetRawAfterClone(RefPtr<StyleLockedPositionTryRule>);
// WebIDL interfaces
StyleCssRuleType Type() const final;
void GetCssText(nsACString& aCssText) const final;
CSSPositionTryRuleDeclaration* Style() { return &mDecls; }
void GetName(nsACString& aName);
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const final;
#ifdef DEBUG
void List(FILE* out = stdout, int32_t aIndent = 0) const final;
#endif
JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) final;
private:
~CSSPositionTryRule() = default;
// For computing the offset of mDecls.
friend class CSSPositionTryRuleDeclaration;
RefPtr<StyleLockedPositionTryRule> mRawRule;
CSSPositionTryRuleDeclaration mDecls;
};
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_CSSPositionTryRule_h

Просмотреть файл

@ -90,7 +90,6 @@ BASIC_RULE_FUNCS_LOCKED(CounterStyle)
GROUP_RULE_FUNCS_UNLOCKED(Container)
GROUP_RULE_FUNCS_UNLOCKED(Scope)
GROUP_RULE_FUNCS_UNLOCKED(StartingStyle)
BASIC_RULE_FUNCS_LOCKED(PositionTry)
#undef GROUP_RULE_FUNCS_LOCKED
#undef GROUP_RULE_FUNCS_UNLOCKED

Просмотреть файл

@ -27,7 +27,6 @@
#include "mozilla/dom/CSSStartingStyleRule.h"
#include "mozilla/dom/CSSStyleRule.h"
#include "mozilla/dom/CSSSupportsRule.h"
#include "mozilla/dom/CSSPositionTryRule.h"
#include "mozilla/IntegerRange.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/StyleSheet.h"
@ -105,7 +104,6 @@ css::Rule* ServoCSSRuleList::GetRule(uint32_t aIndex) {
CASE_RULE_UNLOCKED(Container, Container)
CASE_RULE_UNLOCKED(Scope, Scope)
CASE_RULE_UNLOCKED(StartingStyle, StartingStyle)
CASE_RULE_LOCKED(PositionTry, PositionTry)
#undef CASE_RULE_LOCKED
#undef CASE_RULE_UNLOCKED
#undef CASE_RULE_WITH_PREFIX
@ -293,7 +291,6 @@ void ServoCSSRuleList::SetRawContents(RefPtr<StyleLockedCssRules> aNewRules,
RULE_CASE_UNLOCKED(Container, Container)
RULE_CASE_UNLOCKED(Scope, Scope)
RULE_CASE_UNLOCKED(StartingStyle, StartingStyle)
RULE_CASE_LOCKED(PositionTry, PositionTry)
case StyleCssRuleType::Keyframe:
MOZ_ASSERT_UNREACHABLE("keyframe rule cannot be here");
break;

Просмотреть файл

@ -24,4 +24,3 @@ SERVO_LOCKED_ARC_TYPE(MediaList)
SERVO_LOCKED_ARC_TYPE(PageRule)
SERVO_LOCKED_ARC_TYPE(FontFaceRule)
SERVO_LOCKED_ARC_TYPE(CounterStyleRule)
SERVO_LOCKED_ARC_TYPE(PositionTryRule)

Просмотреть файл

@ -56,7 +56,6 @@ template struct StyleStrong<StyleLockedCounterStyleRule>;
template struct StyleStrong<StyleContainerRule>;
template struct StyleStrong<StyleScopeRule>;
template struct StyleStrong<StyleStartingStyleRule>;
template struct StyleStrong<StyleLockedPositionTryRule>;
template <typename T>
inline void StyleOwnedSlice<T>::Clear() {

Просмотреть файл

@ -1019,7 +1019,6 @@ void ServoStyleSet::RuleChangedInternal(StyleSheet& aSheet, css::Rule& aRule,
CASE_FOR(Container, Container)
CASE_FOR(Scope, Scope)
CASE_FOR(StartingStyle, StartingStyle)
CASE_FOR(PositionTry, PositionTry)
// @namespace can only be inserted / removed when there are only other
// @namespace and @import rules, and can't be mutated.
case StyleCssRuleType::Namespace:

Просмотреть файл

@ -143,7 +143,6 @@ EXPORTS.mozilla.dom += [
"CSSMozDocumentRule.h",
"CSSNamespaceRule.h",
"CSSPageRule.h",
"CSSPositionTryRule.h",
"CSSPropertyRule.h",
"CSSRuleList.h",
"CSSScopeRule.h",
@ -198,7 +197,6 @@ UNIFIED_SOURCES += [
"CSSMozDocumentRule.cpp",
"CSSNamespaceRule.cpp",
"CSSPageRule.cpp",
"CSSPositionTryRule.cpp",
"CSSPropertyRule.cpp",
"CSSRuleList.cpp",
"CSSScopeRule.cpp",

Просмотреть файл

@ -15,7 +15,6 @@ prefs = [
"layout.css.transform-box-content-stroke.enabled=true",
"layout.css.transition-behavior.enabled=true",
"layout.css.field-sizing.enabled=true",
"layout.css.anchor-positioning.enabled=true",
]
support-files = [
"animation_utils.js",

Просмотреть файл

@ -125,10 +125,6 @@
css: ":host:hover { color: red; }",
error: ":host selector in :host:hover is not featureless and will never match. Maybe you intended to use :host()?"
},
{
css: "@position-try --foo { width: 10px !important; }",
error: "Property cannot be declared as !important in this context. Declaration dropped."
},
];
// Tests that apply only to constructed style sheets

Просмотреть файл

@ -32,6 +32,8 @@ pub enum ContextualParseError<'a> {
InvalidKeyframeRule(&'a str, ParseError<'a>),
/// A font feature values rule was not valid.
InvalidFontFeatureValuesRule(&'a str, ParseError<'a>),
/// A keyframe property declaration was not recognized.
UnsupportedKeyframePropertyDeclaration(&'a str, ParseError<'a>),
/// A rule was invalid for some reason.
InvalidRule(&'a str, ParseError<'a>),
/// A rule was not recognized.
@ -173,6 +175,10 @@ impl<'a> fmt::Display for ContextualParseError<'a> {
write!(f, "Invalid font feature value rule: '{}', ", rule)?;
parse_error_to_str(err, f)
},
ContextualParseError::UnsupportedKeyframePropertyDeclaration(decl, ref err) => {
write!(f, "Unsupported keyframe property declaration: '{}', ", decl)?;
parse_error_to_str(err, f)
},
ContextualParseError::InvalidRule(rule, ref err) => {
write!(f, "Invalid rule: '{}', ", rule)?;
parse_error_to_str(err, f)

Просмотреть файл

@ -16,8 +16,8 @@ use crate::stylesheets::keyframes_rule::Keyframe;
use crate::stylesheets::{
ContainerRule, CounterStyleRule, CssRules, DocumentRule, FontFaceRule, FontFeatureValuesRule,
FontPaletteValuesRule, ImportRule, KeyframesRule, LayerBlockRule, LayerStatementRule,
MarginRule, MediaRule, NamespaceRule, PageRule, PositionTryRule, PropertyRule, ScopeRule,
StartingStyleRule, StyleRule, StylesheetContents, SupportsRule,
MarginRule, MediaRule, NamespaceRule, PageRule, PropertyRule, ScopeRule, StartingStyleRule,
StyleRule, StylesheetContents, SupportsRule,
};
use servo_arc::Arc;
@ -181,10 +181,3 @@ impl_simple_arc_ffi!(
Servo_StartingStyleRule_AddRef,
Servo_StartingStyleRule_Release
);
impl_locked_arc_ffi!(
PositionTryRule,
LockedPositionTryRule,
Servo_PositionTryRule_AddRef,
Servo_PositionTryRule_Release
);

Просмотреть файл

@ -642,11 +642,6 @@ impl StylesheetInvalidationSet {
// figure out the styling order.
self.invalidate_fully();
},
PositionTry(..) => {
// Potential change in sizes/positions of anchored elements. TODO(dshin, bug 1910616):
// We should probably make an effort to see if this position-try is referenced.
self.invalidate_fully();
},
}
}
}

Просмотреть файл

@ -131,12 +131,6 @@ impl<'a> ParserContext<'a> {
self.nesting_context.rule_types.contains(CssRuleType::Page)
}
/// Returns whether !important declarations are forbidden.
#[inline]
pub fn allows_important_declarations(&self) -> bool {
!self.nesting_context.rule_types.intersects(CssRuleTypes::IMPORTANT_FORBIDDEN)
}
/// Get the rule type, which assumes that one is available.
pub fn rule_types(&self) -> CssRuleTypes {
self.nesting_context.rule_types

Просмотреть файл

@ -101,20 +101,17 @@ VISITED_DEPENDENT_PROPERTIES = set(
STYLE_RULE = 1 << 0
PAGE_RULE = 1 << 1
KEYFRAME_RULE = 1 << 2
POSITION_TRY_RULE = 1 << 3
ALL_RULES = STYLE_RULE | PAGE_RULE | KEYFRAME_RULE
DEFAULT_RULES = STYLE_RULE | KEYFRAME_RULE
DEFAULT_RULES_AND_PAGE = DEFAULT_RULES | PAGE_RULE
DEFAULT_RULES_EXCEPT_KEYFRAME = STYLE_RULE
DEFAULT_RULES_AND_POSITION_TRY = DEFAULT_RULES | POSITION_TRY_RULE
# Rule name to value dict
RULE_VALUES = {
"Style": STYLE_RULE,
"Page": PAGE_RULE,
"Keyframe": KEYFRAME_RULE,
"PositionTry": POSITION_TRY_RULE,
}

Просмотреть файл

@ -1455,12 +1455,7 @@ impl<'i> DeclarationParserState<'i> {
PropertyDeclaration::parse_into(&mut self.declarations, id, context, input)
})?;
self.importance = match input.try_parse(parse_important) {
Ok(()) => {
if !context.allows_important_declarations() {
return Err(input.new_custom_error(StyleParseErrorKind::UnexpectedImportantDeclaration));
}
Importance::Important
},
Ok(()) => Importance::Important,
Err(_) => Importance::Normal,
};
// In case there is still unparsed text in the declaration, we should roll back.
@ -1614,20 +1609,12 @@ fn report_one_css_error<'i>(
return;
}
}
// Was able to parse property ID - Either an invalid value, or is constrained
// by the rule block it's in to be invalid. In the former case, we need to unwrap
// the error to be more specific.
if !matches!(
error.kind,
ParseErrorKind::Custom(StyleParseErrorKind::UnexpectedImportantDeclaration)
) {
error = match *property {
PropertyId::Custom(ref c) => {
StyleParseErrorKind::new_invalid(format!("--{}", c), error)
},
_ => StyleParseErrorKind::new_invalid(property.non_custom_id().unwrap().name(), error),
};
}
error = match *property {
PropertyId::Custom(ref c) => {
StyleParseErrorKind::new_invalid(format!("--{}", c), error)
},
_ => StyleParseErrorKind::new_invalid(property.non_custom_id().unwrap().name(), error),
};
}
let location = error.location;

Просмотреть файл

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
<%namespace name="helpers" file="/helpers.mako.rs" />
<% from data import ALL_SIDES, DEFAULT_RULES, DEFAULT_RULES_AND_PAGE, POSITION_TRY_RULE, maybe_moz_logical_alias %>
<% from data import ALL_SIDES, DEFAULT_RULES, DEFAULT_RULES_AND_PAGE, maybe_moz_logical_alias %>
% for side in ALL_SIDES:
<%
@ -21,7 +21,7 @@
logical=side[1],
logical_group="margin",
spec=spec,
rule_types_allowed=(DEFAULT_RULES if side[1] else DEFAULT_RULES_AND_PAGE) | POSITION_TRY_RULE,
rule_types_allowed=DEFAULT_RULES if side[1] else DEFAULT_RULES_AND_PAGE,
servo_restyle_damage="reflow",
affects="layout",
)}

Просмотреть файл

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
<%namespace name="helpers" file="/helpers.mako.rs" />
<% from data import ALL_SIZES, PHYSICAL_SIDES, LOGICAL_SIDES, DEFAULT_RULES_AND_POSITION_TRY %>
<% from data import ALL_SIZES, PHYSICAL_SIDES, LOGICAL_SIDES %>
// "top" / "left" / "bottom" / "right"
% for side in PHYSICAL_SIDES:
@ -14,7 +14,6 @@
engines="gecko servo",
spec="https://www.w3.org/TR/CSS2/visuren.html#propdef-%s" % side,
allow_quirks="Yes",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
servo_restyle_damage="reflow_out_of_flow",
logical_group="inset",
affects="layout",
@ -28,7 +27,6 @@
"computed::LengthPercentageOrAuto::auto()",
engines="gecko servo",
spec="https://drafts.csswg.org/css-logical-props/#propdef-inset-%s" % side,
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
logical=True,
logical_group="inset",
affects="layout",
@ -153,7 +151,6 @@ ${helpers.predefined_type(
spec="https://drafts.csswg.org/css-align/#align-self-property",
extra_prefixes="webkit",
animation_type="discrete",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
affects="layout",
)}
${helpers.predefined_type(
@ -163,7 +160,6 @@ ${helpers.predefined_type(
engines="gecko servo",
spec="https://drafts.csswg.org/css-align/#justify-self-property",
animation_type="discrete",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
affects="layout",
)}
@ -209,7 +205,6 @@ ${helpers.predefined_type(
logical_group="size",
allow_quirks="No" if logical else "Yes",
spec=spec % size,
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
servo_restyle_damage="reflow",
affects="layout",
)}
@ -223,7 +218,6 @@ ${helpers.predefined_type(
logical_group="min-size",
allow_quirks="No" if logical else "Yes",
spec=spec % size,
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
servo_restyle_damage="reflow",
affects="layout",
)}
@ -236,7 +230,6 @@ ${helpers.predefined_type(
logical_group="max-size",
allow_quirks="No" if logical else "Yes",
spec=spec % size,
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
servo_restyle_damage="reflow",
affects="layout",
)}
@ -248,7 +241,6 @@ ${helpers.predefined_type(
"computed::PositionAnchor::auto()",
engines="gecko",
animation_type="discrete",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
gecko_pref="layout.css.anchor-positioning.enabled",
spec="https://drafts.csswg.org/css-anchor-position-1/#propdef-position-anchor",
affects="layout",
@ -273,7 +265,6 @@ ${helpers.predefined_type(
engines="gecko",
initial_specified_value="specified::InsetArea::none()",
animation_type="discrete",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
gecko_pref="layout.css.anchor-positioning.enabled",
spec="https://drafts.csswg.org/css-anchor-position-1/#typedef-inset-area",
affects="layout",

Просмотреть файл

@ -25,7 +25,6 @@ use crate::gecko_bindings::structs::{nsCSSPropertyID, AnimatedPropertyID, RefPtr
use crate::logical_geometry::WritingMode;
use crate::parser::ParserContext;
use crate::str::CssString;
use crate::stylesheets::CssRuleType;
use crate::stylesheets::Origin;
use crate::stylist::Stylist;
use crate::values::{computed, serialize_atom_name};
@ -487,8 +486,8 @@ impl PropertyId {
fn allowed_in(&self, context: &ParserContext) -> bool {
let id = match self.non_custom_id() {
// Custom properties are allowed everywhere, except `position-try`.
None => return !context.nesting_context.rule_types.contains(CssRuleType::PositionTry),
// Custom properties are allowed everywhere
None => return true,
Some(id) => id,
};
id.allowed_in(context)

Просмотреть файл

@ -550,8 +550,7 @@ impl NonCustomPropertyId {
debug_assert!(
rule_types.contains(CssRuleType::Keyframe) ||
rule_types.contains(CssRuleType::Page) ||
rule_types.contains(CssRuleType::Style) ||
rule_types.contains(CssRuleType::PositionTry),
rule_types.contains(CssRuleType::Style),
"Declarations are only expected inside a keyframe, page, or style rule."
);

Просмотреть файл

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
<%namespace name="helpers" file="/helpers.mako.rs" />
<% from data import DEFAULT_RULES_AND_PAGE, POSITION_TRY_RULE, DEFAULT_RULES_AND_POSITION_TRY %>
<% from data import DEFAULT_RULES_AND_PAGE %>
${helpers.four_sides_shorthand(
"margin",
@ -11,7 +11,7 @@ ${helpers.four_sides_shorthand(
"specified::LengthPercentageOrAuto::parse",
engines="gecko servo",
spec="https://drafts.csswg.org/css-box/#propdef-margin",
rule_types_allowed=DEFAULT_RULES_AND_PAGE | POSITION_TRY_RULE,
rule_types_allowed=DEFAULT_RULES_AND_PAGE,
allow_quirks="Yes",
)}
@ -21,8 +21,7 @@ ${helpers.two_properties_shorthand(
"margin-block-end",
"specified::LengthPercentageOrAuto::parse",
engines="gecko servo",
spec="https://drafts.csswg.org/css-logical/#propdef-margin-block",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY
spec="https://drafts.csswg.org/css-logical/#propdef-margin-block"
)}
${helpers.two_properties_shorthand(
@ -31,8 +30,7 @@ ${helpers.two_properties_shorthand(
"margin-inline-end",
"specified::LengthPercentageOrAuto::parse",
engines="gecko servo",
spec="https://drafts.csswg.org/css-logical/#propdef-margin-inline",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY
spec="https://drafts.csswg.org/css-logical/#propdef-margin-inline"
)}
${helpers.four_sides_shorthand(

Просмотреть файл

@ -3,7 +3,6 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
<%namespace name="helpers" file="/helpers.mako.rs" />
<% from data import DEFAULT_RULES_AND_POSITION_TRY %>
<%helpers:shorthand name="flex-flow"
engines="gecko servo",
@ -781,7 +780,6 @@
engines="gecko servo"
sub_properties="align-self justify-self"
spec="https://drafts.csswg.org/css-align/#place-self-property"
rule_types_allowed="Style PositionTry"
>
use crate::values::specified::align::{AlignSelf, JustifySelf, SelfAlignment, AxisDirection};
@ -868,7 +866,6 @@ ${helpers.four_sides_shorthand(
"specified::LengthPercentageOrAuto::parse",
engines="gecko servo",
spec="https://drafts.csswg.org/css-logical/#propdef-inset",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
allow_quirks="No",
)}
@ -878,8 +875,7 @@ ${helpers.two_properties_shorthand(
"inset-block-end",
"specified::LengthPercentageOrAuto::parse",
engines="gecko servo",
spec="https://drafts.csswg.org/css-logical/#propdef-inset-block",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
spec="https://drafts.csswg.org/css-logical/#propdef-inset-block"
)}
${helpers.two_properties_shorthand(
@ -888,8 +884,7 @@ ${helpers.two_properties_shorthand(
"inset-inline-end",
"specified::LengthPercentageOrAuto::parse",
engines="gecko servo",
spec="https://drafts.csswg.org/css-logical/#propdef-inset-inline",
rule_types_allowed=DEFAULT_RULES_AND_POSITION_TRY,
spec="https://drafts.csswg.org/css-logical/#propdef-inset-inline"
)}
${helpers.two_properties_shorthand(

Просмотреть файл

@ -422,9 +422,9 @@ macro_rules! font_feature_values_blocks {
while let Some(declaration) = iter.next() {
if let Err((error, slice)) = declaration {
let location = error.location;
// TODO(emilio): Maybe add a more specific error kind for
// font-feature-values descriptors.
let error = ContextualParseError::UnsupportedPropertyDeclaration(slice, error, &[]);
let error = ContextualParseError::UnsupportedKeyframePropertyDeclaration(
slice, error
);
self.context.log_css_error(location, error);
}
}

Просмотреть файл

@ -11,8 +11,8 @@ use crate::properties::{
animation_composition::single_value::SpecifiedValue as SpecifiedComposition,
transition_timing_function::single_value::SpecifiedValue as SpecifiedTimingFunction,
},
parse_property_declaration_list, LonghandId, PropertyDeclaration, PropertyDeclarationBlock,
PropertyDeclarationId, PropertyDeclarationIdSet,
Importance, LonghandId, PropertyDeclaration, PropertyDeclarationBlock, PropertyDeclarationId,
PropertyDeclarationIdSet, PropertyId, SourcePropertyDeclaration,
};
use crate::shared_lock::{DeepCloneParams, DeepCloneWithLock, SharedRwLock, SharedRwLockReadGuard};
use crate::shared_lock::{Locked, ToCssWithGuard};
@ -21,7 +21,7 @@ use crate::stylesheets::rule_parser::VendorPrefix;
use crate::stylesheets::{CssRuleType, StylesheetContents};
use crate::values::{serialize_percentage, KeyframesName};
use cssparser::{
parse_one_rule, AtRuleParser, DeclarationParser, Parser, ParserInput, ParserState,
parse_one_rule, AtRuleParser, CowRcStr, DeclarationParser, Parser, ParserInput, ParserState,
QualifiedRuleParser, RuleBodyItemParser, RuleBodyParser, SourceLocation, Token,
};
use servo_arc::Arc;
@ -227,9 +227,11 @@ impl Keyframe {
let mut input = ParserInput::new(css);
let mut input = Parser::new(&mut input);
let mut declarations = SourcePropertyDeclaration::default();
let mut rule_parser = KeyframeListParser {
context: &mut context,
shared_lock: &lock,
declarations: &mut declarations,
};
parse_one_rule(&mut input, &mut rule_parser)
}
@ -527,6 +529,7 @@ impl KeyframesAnimation {
struct KeyframeListParser<'a, 'b> {
context: &'a mut ParserContext<'b>,
shared_lock: &'a SharedRwLock,
declarations: &'a mut SourcePropertyDeclaration,
}
/// Parses a keyframe list from CSS input.
@ -535,9 +538,11 @@ pub fn parse_keyframe_list<'a>(
input: &mut Parser,
shared_lock: &SharedRwLock,
) -> Vec<Arc<Locked<Keyframe>>> {
let mut declarations = SourcePropertyDeclaration::default();
let mut parser = KeyframeListParser {
context,
shared_lock,
declarations: &mut declarations,
};
RuleBodyParser::new(input, &mut parser)
.filter_map(Result::ok)
@ -582,9 +587,33 @@ impl<'a, 'b, 'i> QualifiedRuleParser<'i> for KeyframeListParser<'a, 'b> {
start: &ParserState,
input: &mut Parser<'i, 't>,
) -> Result<Self::QualifiedRule, ParseError<'i>> {
let block = self.context.nest_for_rule(CssRuleType::Keyframe, |p| {
parse_property_declaration_list(&p, input, &[])
});
let mut block = PropertyDeclarationBlock::new();
let declarations = &mut self.declarations;
self.context
.nest_for_rule(CssRuleType::Keyframe, |context| {
let mut parser = KeyframeDeclarationParser {
context: &context,
declarations,
};
let mut iter = RuleBodyParser::new(input, &mut parser);
while let Some(declaration) = iter.next() {
match declaration {
Ok(()) => {
block.extend(iter.parser.declarations.drain(), Importance::Normal);
},
Err((error, slice)) => {
iter.parser.declarations.clear();
let location = error.location;
let error =
ContextualParseError::UnsupportedKeyframePropertyDeclaration(
slice, error,
);
context.log_css_error(location, error);
},
}
// `parse_important` is not called here, `!important` is not allowed in keyframe blocks.
}
});
Ok(Arc::new(self.shared_lock.wrap(Keyframe {
selector,
block: Arc::new(self.shared_lock.wrap(block)),
@ -603,3 +632,59 @@ impl<'a, 'b, 'i> RuleBodyItemParser<'i, Arc<Locked<Keyframe>>, StyleParseErrorKi
false
}
}
struct KeyframeDeclarationParser<'a, 'b: 'a> {
context: &'a ParserContext<'b>,
declarations: &'a mut SourcePropertyDeclaration,
}
/// Default methods reject all at rules.
impl<'a, 'b, 'i> AtRuleParser<'i> for KeyframeDeclarationParser<'a, 'b> {
type Prelude = ();
type AtRule = ();
type Error = StyleParseErrorKind<'i>;
}
impl<'a, 'b, 'i> QualifiedRuleParser<'i> for KeyframeDeclarationParser<'a, 'b> {
type Prelude = ();
type QualifiedRule = ();
type Error = StyleParseErrorKind<'i>;
}
impl<'a, 'b, 'i> DeclarationParser<'i> for KeyframeDeclarationParser<'a, 'b> {
type Declaration = ();
type Error = StyleParseErrorKind<'i>;
fn parse_value<'t>(
&mut self,
name: CowRcStr<'i>,
input: &mut Parser<'i, 't>,
) -> Result<(), ParseError<'i>> {
let id = match PropertyId::parse(&name, self.context) {
Ok(id) => id,
Err(()) => {
return Err(input.new_custom_error(StyleParseErrorKind::UnknownProperty(name)));
},
};
// TODO(emilio): Shouldn't this use parse_entirely?
PropertyDeclaration::parse_into(self.declarations, id, self.context, input)?;
// In case there is still unparsed text in the declaration, we should
// roll back.
input.expect_exhausted()?;
Ok(())
}
}
impl<'a, 'b, 'i> RuleBodyItemParser<'i, (), StyleParseErrorKind<'i>>
for KeyframeDeclarationParser<'a, 'b>
{
fn parse_qualified(&self) -> bool {
false
}
fn parse_declarations(&self) -> bool {
true
}
}

Просмотреть файл

@ -19,7 +19,6 @@ mod media_rule;
mod namespace_rule;
pub mod origin;
mod page_rule;
pub mod position_try_rule;
mod property_rule;
mod rule_list;
mod rule_parser;
@ -64,7 +63,6 @@ pub use self::media_rule::MediaRule;
pub use self::namespace_rule::NamespaceRule;
pub use self::origin::{Origin, OriginSet, OriginSetIterator, PerOrigin, PerOriginIter};
pub use self::page_rule::{PagePseudoClassFlags, PageRule, PageSelector, PageSelectors};
pub use self::position_try_rule::PositionTryRule;
pub use self::property_rule::PropertyRule;
pub use self::rule_list::{CssRules, CssRulesHelpers};
pub use self::rule_parser::{InsertRuleContext, State, TopLevelRuleParser};
@ -304,7 +302,6 @@ pub enum CssRule {
LayerStatement(Arc<LayerStatementRule>),
Scope(Arc<ScopeRule>),
StartingStyle(Arc<StartingStyleRule>),
PositionTry(Arc<Locked<PositionTryRule>>),
}
impl CssRule {
@ -357,9 +354,6 @@ impl CssRule {
CssRule::Scope(ref rule) => {
rule.unconditional_shallow_size_of(ops) + rule.size_of(guard, ops)
},
CssRule::PositionTry(ref lock) => {
lock.unconditional_shallow_size_of(ops) + lock.read_with(guard).size_of(guard, ops)
},
}
}
}
@ -401,8 +395,6 @@ pub enum CssRuleType {
Scope = 21,
// https://drafts.csswg.org/css-transitions-2/#the-cssstartingstylerule-interface
StartingStyle = 22,
// https://drafts.csswg.org/css-anchor-position-1/#om-position-try
PositionTry = 23,
}
impl CssRuleType {
@ -424,9 +416,6 @@ impl From<CssRuleType> for CssRuleTypes {
}
impl CssRuleTypes {
/// Rules where !important declarations are forbidden.
pub const IMPORTANT_FORBIDDEN: Self = Self(CssRuleType::PositionTry.bit() | CssRuleType::Keyframe.bit());
/// Returns whether the rule is in the current set.
#[inline]
pub fn contains(self, ty: CssRuleType) -> bool {
@ -495,7 +484,6 @@ impl CssRule {
CssRule::Container(_) => CssRuleType::Container,
CssRule::Scope(_) => CssRuleType::Scope,
CssRule::StartingStyle(_) => CssRuleType::StartingStyle,
CssRule::PositionTry(_) => CssRuleType::PositionTry,
}
}
@ -637,12 +625,6 @@ impl DeepCloneWithLock for CssRule {
CssRule::StartingStyle(ref arc) => {
CssRule::StartingStyle(Arc::new(arc.deep_clone_with_lock(lock, guard, params)))
},
CssRule::PositionTry(ref arc) => {
let rule = arc.read_with(guard);
CssRule::PositionTry(Arc::new(
lock.wrap(rule.deep_clone_with_lock(lock, guard, params)),
))
},
}
}
}
@ -670,7 +652,6 @@ impl ToCssWithGuard for CssRule {
CssRule::Container(ref rule) => rule.to_css(guard, dest),
CssRule::Scope(ref rule) => rule.to_css(guard, dest),
CssRule::StartingStyle(ref rule) => rule.to_css(guard, dest),
CssRule::PositionTry(ref lock) => lock.read_with(guard).to_css(guard, dest),
}
}
}

Просмотреть файл

@ -1,72 +0,0 @@
/* 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 https://mozilla.org/MPL/2.0/. */
//! A [`@position-try`][position-try] rule for Anchor Positioning.
//!
//! [position-try]: https://drafts.csswg.org/css-anchor-position-1/#fallback-rule
use std::fmt::Write;
use crate::properties::PropertyDeclarationBlock;
use crate::shared_lock::{
DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard,
};
use crate::str::CssStringWriter;
use crate::values::DashedIdent;
use cssparser::SourceLocation;
use malloc_size_of::{MallocSizeOf, MallocSizeOfOps, MallocUnconditionalShallowSizeOf};
use servo_arc::Arc;
use style_traits::{CssWriter, ToCss};
/// A position-try rule.
#[derive(Clone, Debug, ToShmem)]
pub struct PositionTryRule {
/// Name of this position-try rule.
pub name: DashedIdent,
/// The declaration block this position-try rule contains.
pub block: Arc<Locked<PropertyDeclarationBlock>>,
/// The source position this rule was found at.
pub source_location: SourceLocation,
}
impl PositionTryRule {
/// Measure heap usage.
#[cfg(feature = "gecko")]
pub fn size_of(&self, guard: &SharedRwLockReadGuard, ops: &mut MallocSizeOfOps) -> usize {
self.block.unconditional_shallow_size_of(ops) + self.block.read_with(guard).size_of(ops)
}
}
impl DeepCloneWithLock for PositionTryRule {
fn deep_clone_with_lock(
&self,
lock: &SharedRwLock,
guard: &SharedRwLockReadGuard,
_: &DeepCloneParams,
) -> Self {
PositionTryRule {
name: self.name.clone(),
block: Arc::new(lock.wrap(self.block.read_with(&guard).clone())),
source_location: self.source_location.clone(),
}
}
}
impl ToCssWithGuard for PositionTryRule {
fn to_css(
&self,
guard: &SharedRwLockReadGuard,
dest: &mut CssStringWriter,
) -> std::fmt::Result {
dest.write_str("@position-try ")?;
self.name.to_css(&mut CssWriter::new(dest))?;
dest.write_str(" { ")?;
let declarations = self.block.read_with(guard);
declarations.to_css(dest)?;
if !declarations.is_empty() {
dest.write_char(' ')?;
}
dest.write_char('}')
}
}

Просмотреть файл

@ -23,7 +23,6 @@ use crate::stylesheets::font_feature_values_rule::parse_family_name_list;
use crate::stylesheets::import_rule::{ImportLayer, ImportRule, ImportSupportsCondition};
use crate::stylesheets::keyframes_rule::parse_keyframe_list;
use crate::stylesheets::layer_rule::{LayerBlockRule, LayerName, LayerStatementRule};
use crate::stylesheets::position_try_rule::PositionTryRule;
use crate::stylesheets::scope_rule::{ScopeBounds, ScopeRule};
use crate::stylesheets::starting_style_rule::StartingStyleRule;
use crate::stylesheets::supports_rule::SupportsCondition;
@ -240,8 +239,6 @@ pub enum AtRulePrelude {
Scope(ScopeBounds),
/// A @starting-style prelude.
StartingStyle,
/// A @position-try prelude for Anchor Positioning.
PositionTry(DashedIdent),
}
impl AtRulePrelude {
@ -264,7 +261,6 @@ impl AtRulePrelude {
Self::Layer(..) => "layer",
Self::Scope(..) => "scope",
Self::StartingStyle => "starting-style",
Self::PositionTry(..) => "position-try",
}
}
}
@ -544,8 +540,7 @@ impl<'a, 'i> NestedRuleParser<'a, 'i> {
AtRulePrelude::Keyframes(..) |
AtRulePrelude::Page(..) |
AtRulePrelude::Property(..) |
AtRulePrelude::Import(..) |
AtRulePrelude::PositionTry(..) => !self.in_style_or_page_rule(),
AtRulePrelude::Import(..) => !self.in_style_or_page_rule(),
AtRulePrelude::Margin(..) => self.in_page_rule(),
}
}
@ -735,10 +730,6 @@ impl<'a, 'i> AtRuleParser<'i> for NestedRuleParser<'a, 'i> {
"starting-style" if static_prefs::pref!("layout.css.starting-style-at-rules.enabled") => {
AtRulePrelude::StartingStyle
},
"position-try" if static_prefs::pref!("layout.css.anchor-positioning.enabled") => {
let name = DashedIdent::parse(&self.context, input)?;
AtRulePrelude::PositionTry(name)
},
_ => {
if static_prefs::pref!("layout.css.margin-rules.enabled") {
if let Some(margin_rule_type) = MarginRuleType::match_name(&name) {
@ -924,16 +915,6 @@ impl<'a, 'i> AtRuleParser<'i> for NestedRuleParser<'a, 'i> {
source_location,
}))
},
AtRulePrelude::PositionTry(name) => {
let declarations = self.nest_for_rule(CssRuleType::PositionTry, |p| {
parse_property_declaration_list(&p.context, input, &[])
});
CssRule::PositionTry(Arc::new(self.shared_lock.wrap(PositionTryRule {
name,
block: Arc::new(self.shared_lock.wrap(declarations)),
source_location: start.source_location(),
})))
},
};
self.rules.push(rule);
Ok(())

Просмотреть файл

@ -70,8 +70,7 @@ where
CssRule::Property(_) |
CssRule::LayerStatement(_) |
CssRule::FontFeatureValues(_) |
CssRule::FontPaletteValues(_) |
CssRule::PositionTry(_) => None,
CssRule::FontPaletteValues(_) => None,
CssRule::Page(ref page_rule) => {
let page_rule = page_rule.read_with(guard);
let rules = page_rule.rules.read_with(guard);

Просмотреть файл

@ -352,10 +352,7 @@ impl SanitizationKind {
CssRule::Scope(..) |
CssRule::StartingStyle(..) => false,
CssRule::FontFace(..) |
CssRule::Namespace(..) |
CssRule::Style(..) |
CssRule::PositionTry(..) => true,
CssRule::FontFace(..) | CssRule::Namespace(..) | CssRule::Style(..) => true,
CssRule::Keyframes(..) |
CssRule::Page(..) |

Просмотреть файл

@ -3790,8 +3790,7 @@ impl CascadeData {
CssRule::FontPaletteValues(..) |
CssRule::FontFeatureValues(..) |
CssRule::Scope(..) |
CssRule::StartingStyle(..) |
CssRule::PositionTry(..) => {
CssRule::StartingStyle(..) => {
// Not affected by device changes.
continue;
},

Просмотреть файл

@ -163,8 +163,13 @@ pub enum StyleParseErrorKind<'i> {
InvalidFilter(CowRcStr<'i>, Token<'i>),
/// The property declaration contained an invalid value.
OtherInvalidValue(CowRcStr<'i>),
/// `!important` declarations are disallowed in `@position-try` or keyframes.
UnexpectedImportantDeclaration,
/// The declaration contained an animation property, and we were parsing
/// this as a keyframe block (so that property should be ignored).
///
/// See: https://drafts.csswg.org/css-animations/#keyframes
AnimationPropertyInKeyframeBlock,
/// The property is not allowed within a page rule.
NotAllowedInPageRule,
}
impl<'i> From<ValueParseErrorKind<'i>> for StyleParseErrorKind<'i> {

Просмотреть файл

@ -196,6 +196,7 @@ impl<'a> ErrorHelpers<'a> for ContextualParseError<'a> {
ContextualParseError::UnsupportedFontPaletteValuesDescriptor(s, err) |
ContextualParseError::InvalidKeyframeRule(s, err) |
ContextualParseError::InvalidFontFeatureValuesRule(s, err) |
ContextualParseError::UnsupportedKeyframePropertyDeclaration(s, err) |
ContextualParseError::InvalidRule(s, err) |
ContextualParseError::UnsupportedRule(s, err) |
ContextualParseError::UnsupportedViewportDescriptorDeclaration(s, err) |
@ -275,9 +276,6 @@ impl<'a> ErrorHelpers<'a> for ContextualParseError<'a> {
StyleParseErrorKind::OtherInvalidValue(_) => {
(cstr!("PEValueParsingError"), Action::Drop)
},
StyleParseErrorKind::UnexpectedImportantDeclaration => {
(cstr!("PEImportantDeclError"), Action::Drop)
},
_ => (cstr!("PEUnknownProperty"), Action::Drop),
},
ContextualParseError::UnsupportedPropertyDeclaration(..) => {
@ -289,6 +287,9 @@ impl<'a> ErrorHelpers<'a> for ContextualParseError<'a> {
ContextualParseError::InvalidKeyframeRule(..) => {
(cstr!("PEKeyframeBadName"), Action::Nothing)
},
ContextualParseError::UnsupportedKeyframePropertyDeclaration(..) => {
(cstr!("PEBadSelectorKeyframeRuleIgnored"), Action::Nothing)
},
ContextualParseError::InvalidRule(
_,
ParseError {

Просмотреть файл

@ -37,7 +37,7 @@ use style::font_face::{self, FontFaceSourceFormat, FontFaceSourceListComponent,
use style::gecko::arc_types::{
LockedCounterStyleRule, LockedCssRules, LockedDeclarationBlock, LockedFontFaceRule,
LockedImportRule, LockedKeyframe, LockedKeyframesRule, LockedMediaList, LockedPageRule,
LockedPositionTryRule, LockedStyleRule,
LockedStyleRule,
};
use style::gecko::data::{
AuthorStyles, GeckoStyleSheet, PerDocumentStyleData, PerDocumentStyleDataImpl,
@ -136,9 +136,8 @@ use style::stylesheets::{
CssRules, CssRulesHelpers, DocumentRule, FontFaceRule, FontFeatureValuesRule,
FontPaletteValuesRule, ImportRule, KeyframesRule, LayerBlockRule, LayerStatementRule,
MarginRule, MediaRule, NamespaceRule, Origin, OriginSet, PagePseudoClassFlags, PageRule,
PositionTryRule, PropertyRule, SanitizationData, SanitizationKind, ScopeRule,
StartingStyleRule, StyleRule, StylesheetContents, StylesheetLoader as StyleStylesheetLoader,
SupportsRule, UrlExtraData,
PropertyRule, SanitizationData, SanitizationKind, ScopeRule, StartingStyleRule, StyleRule,
StylesheetContents, StylesheetLoader as StyleStylesheetLoader, SupportsRule, UrlExtraData,
};
use style::stylist::{add_size_of_ua_cache, AuthorStylesEnabled, RuleInclusion, Stylist};
use style::thread_state;
@ -2573,13 +2572,6 @@ impl_group_rule_funcs! { (StartingStyle, StartingStyleRule, StartingStyleRule),
changed: Servo_StyleSet_StartingStyleRuleChanged,
}
impl_basic_rule_funcs! { (PositionTry, PositionTryRule, Locked<PositionTryRule>),
getter: Servo_CssRules_GetPositionTryRuleAt,
debug: Servo_PositionTryRule_Debug,
to_css: Servo_PositionTryRule_GetCssText,
changed: Servo_StyleSet_PositionTryRuleChanged,
}
#[no_mangle]
pub extern "C" fn Servo_StyleRule_GetStyle(
rule: &LockedStyleRule,
@ -4045,31 +4037,6 @@ counter_style_descriptors! {
]
}
#[no_mangle]
pub unsafe extern "C" fn Servo_PositionTryRule_GetName(
rule: &LockedPositionTryRule,
result: &mut nsACString,
) {
read_locked_arc(rule, |rule: &PositionTryRule| rule.name.to_css(&mut CssWriter::new(result)).unwrap());
}
#[no_mangle]
pub extern "C" fn Servo_PositionTryRule_GetStyle(
rule: &LockedPositionTryRule,
) -> Strong<LockedDeclarationBlock> {
read_locked_arc(rule, |rule: &PositionTryRule| rule.block.clone().into())
}
#[no_mangle]
pub extern "C" fn Servo_PositionTryRule_SetStyle(
rule: &LockedPositionTryRule,
declarations: &LockedDeclarationBlock,
) {
write_locked_arc(rule, |rule: &mut PositionTryRule| {
rule.block = unsafe { Arc::from_raw_addrefed(declarations) };
})
}
#[no_mangle]
pub unsafe extern "C" fn Servo_ComputedValues_GetForPageContent(
raw_data: &PerDocumentStyleData,

Просмотреть файл

@ -1 +0,0 @@
prefs: [layout.css.anchor-positioning.enabled: true]

Просмотреть файл

@ -0,0 +1,168 @@
[at-position-try-allowed-declarations.html]
[top: 1px is allowed in @position-try]
expected: FAIL
[bottom: 1px is allowed in @position-try]
expected: FAIL
[left: 1px is allowed in @position-try]
expected: FAIL
[right: 1px is allowed in @position-try]
expected: FAIL
[inset-block-start: 1px is allowed in @position-try]
expected: FAIL
[inset-block-end: 1px is allowed in @position-try]
expected: FAIL
[inset-inline-start: 1px is allowed in @position-try]
expected: FAIL
[inset-inline-end: 1px is allowed in @position-try]
expected: FAIL
[inset-block: 1px is allowed in @position-try]
expected: FAIL
[inset-inline: 1px is allowed in @position-try]
expected: FAIL
[inset: 1px is allowed in @position-try]
expected: FAIL
[margin-top: 1px is allowed in @position-try]
expected: FAIL
[margin-bottom: 1px is allowed in @position-try]
expected: FAIL
[margin-left: 1px is allowed in @position-try]
expected: FAIL
[margin-right: 1px is allowed in @position-try]
expected: FAIL
[margin-block-start: 1px is allowed in @position-try]
expected: FAIL
[margin-block-end: 1px is allowed in @position-try]
expected: FAIL
[margin-inline-start: 1px is allowed in @position-try]
expected: FAIL
[margin-inline-end: 1px is allowed in @position-try]
expected: FAIL
[margin-block: 1px is allowed in @position-try]
expected: FAIL
[margin-inline: 1px is allowed in @position-try]
expected: FAIL
[margin: 1px is allowed in @position-try]
expected: FAIL
[width: 1px is allowed in @position-try]
expected: FAIL
[height: 1px is allowed in @position-try]
expected: FAIL
[block-size: 1px is allowed in @position-try]
expected: FAIL
[inline-size: 1px is allowed in @position-try]
expected: FAIL
[min-width: 1px is allowed in @position-try]
expected: FAIL
[min-height: 1px is allowed in @position-try]
expected: FAIL
[min-block-size: 1px is allowed in @position-try]
expected: FAIL
[min-inline-size: 1px is allowed in @position-try]
expected: FAIL
[max-width: 1px is allowed in @position-try]
expected: FAIL
[max-height: 1px is allowed in @position-try]
expected: FAIL
[max-block-size: 1px is allowed in @position-try]
expected: FAIL
[max-inline-size: 1px is allowed in @position-try]
expected: FAIL
[justify-self: normal is allowed in @position-try]
expected: FAIL
[align-self: normal is allowed in @position-try]
expected: FAIL
[--custom: 1px is disallowed in @position-try]
expected: FAIL
[font-size: 1px is disallowed in @position-try]
expected: FAIL
[border-width: 1px is disallowed in @position-try]
expected: FAIL
[padding: 1px is disallowed in @position-try]
expected: FAIL
[display: 1px is disallowed in @position-try]
expected: FAIL
[position: 1px is disallowed in @position-try]
expected: FAIL
[float: 1px is disallowed in @position-try]
expected: FAIL
[top: 1px !important is disallowed in @position-try]
expected: FAIL
[inset: 1px !important is disallowed in @position-try]
expected: FAIL
[place-self: normal is allowed in @position-try]
expected: FAIL
[position-anchor: --anchor is allowed in @position-try]
expected: FAIL
[justify-content: normal is disallowed in @position-try]
expected: FAIL
[align-content: normal is disallowed in @position-try]
expected: FAIL
[justify-items: normal is disallowed in @position-try]
expected: FAIL
[align-items: normal is disallowed in @position-try]
expected: FAIL
[inset-area: span-all is allowed in @position-try]
expected: FAIL
[top: revert is allowed in @position-try]
expected: FAIL
[top: revert-layer is allowed in @position-try]
expected: FAIL
[inset: revert is allowed in @position-try]
expected: FAIL
[inset: revert-layer is allowed in @position-try]
expected: FAIL

Просмотреть файл

@ -4,3 +4,789 @@
[CSSPositionTryRule.style.setProperty setting allowed and disallowed properties]
expected: FAIL
[CSSPositionTryDescriptors.item]
expected: FAIL
[CSSPositionTryDescriptors.cssText]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin)]
expected: FAIL
[CSSPositionTryDescriptors[margin\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-top)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-top)]
expected: FAIL
[CSSPositionTryDescriptors[margin-top\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-top\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginTop\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginTop\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-right)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-right)]
expected: FAIL
[CSSPositionTryDescriptors[margin-right\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-right\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginRight\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginRight\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-bottom)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-bottom)]
expected: FAIL
[CSSPositionTryDescriptors[margin-bottom\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-bottom\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginBottom\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginBottom\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-left)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-left)]
expected: FAIL
[CSSPositionTryDescriptors[margin-left\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-left\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginLeft\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginLeft\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-block)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-block)]
expected: FAIL
[CSSPositionTryDescriptors[margin-block\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-block\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginBlock\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginBlock\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-block-start)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-block-start)]
expected: FAIL
[CSSPositionTryDescriptors[margin-block-start\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-block-start\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginBlockStart\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginBlockStart\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-block-end)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-block-end)]
expected: FAIL
[CSSPositionTryDescriptors[margin-block-end\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-block-end\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginBlockEnd\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginBlockEnd\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-inline)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-inline)]
expected: FAIL
[CSSPositionTryDescriptors[margin-inline\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-inline\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginInline\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginInline\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-inline-start)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-inline-start)]
expected: FAIL
[CSSPositionTryDescriptors[margin-inline-start\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-inline-start\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginInlineStart\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginInlineStart\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(margin-inline-end)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(margin-inline-end)]
expected: FAIL
[CSSPositionTryDescriptors[margin-inline-end\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[margin-inline-end\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginInlineEnd\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[marginInlineEnd\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inset)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inset)]
expected: FAIL
[CSSPositionTryDescriptors[inset\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inset\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(top)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(top)]
expected: FAIL
[CSSPositionTryDescriptors[top\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[top\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(left)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(left)]
expected: FAIL
[CSSPositionTryDescriptors[left\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[left\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(right)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(right)]
expected: FAIL
[CSSPositionTryDescriptors[right\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[right\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(bottom)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(bottom)]
expected: FAIL
[CSSPositionTryDescriptors[bottom\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[bottom\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inset-block)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inset-block)]
expected: FAIL
[CSSPositionTryDescriptors[inset-block\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inset-block\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetBlock\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetBlock\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inset-block-start)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inset-block-start)]
expected: FAIL
[CSSPositionTryDescriptors[inset-block-start\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inset-block-start\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetBlockStart\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetBlockStart\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inset-block-end)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inset-block-end)]
expected: FAIL
[CSSPositionTryDescriptors[inset-block-end\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inset-block-end\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetBlockEnd\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetBlockEnd\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inset-inline)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inset-inline)]
expected: FAIL
[CSSPositionTryDescriptors[inset-inline\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inset-inline\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetInline\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetInline\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inset-inline-start)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inset-inline-start)]
expected: FAIL
[CSSPositionTryDescriptors[inset-inline-start\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inset-inline-start\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetInlineStart\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetInlineStart\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inset-inline-end)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inset-inline-end)]
expected: FAIL
[CSSPositionTryDescriptors[inset-inline-end\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inset-inline-end\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetInlineEnd\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetInlineEnd\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(width)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(width)]
expected: FAIL
[CSSPositionTryDescriptors[width\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[width\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(height)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(height)]
expected: FAIL
[CSSPositionTryDescriptors[height\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[height\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(min-width)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(min-width)]
expected: FAIL
[CSSPositionTryDescriptors[min-width\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[min-width\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[minWidth\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[minWidth\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(max-width)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(max-width)]
expected: FAIL
[CSSPositionTryDescriptors[max-width\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[max-width\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[maxWidth\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[maxWidth\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(min-height)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(min-height)]
expected: FAIL
[CSSPositionTryDescriptors[min-height\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[min-height\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[minHeight\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[minHeight\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(max-height)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(max-height)]
expected: FAIL
[CSSPositionTryDescriptors[max-height\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[max-height\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[maxHeight\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[maxHeight\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(block-size)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(block-size)]
expected: FAIL
[CSSPositionTryDescriptors[block-size\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[block-size\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[blockSize\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[blockSize\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(min-block-size)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(min-block-size)]
expected: FAIL
[CSSPositionTryDescriptors[min-block-size\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[min-block-size\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[minBlockSize\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[minBlockSize\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(max-block-size)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(max-block-size)]
expected: FAIL
[CSSPositionTryDescriptors[max-block-size\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[max-block-size\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[maxBlockSize\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[maxBlockSize\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inline-size)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inline-size)]
expected: FAIL
[CSSPositionTryDescriptors[inline-size\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inline-size\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[inlineSize\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[inlineSize\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(min-inline-size)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(min-inline-size)]
expected: FAIL
[CSSPositionTryDescriptors[min-inline-size\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[min-inline-size\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[minInlineSize\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[minInlineSize\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(max-inline-size)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(max-inline-size)]
expected: FAIL
[CSSPositionTryDescriptors[max-inline-size\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[max-inline-size\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[maxInlineSize\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[maxInlineSize\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(place-self)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(place-self)]
expected: FAIL
[CSSPositionTryDescriptors[place-self\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[place-self\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[placeSelf\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[placeSelf\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(align-self)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(align-self)]
expected: FAIL
[CSSPositionTryDescriptors[align-self\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[align-self\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[alignSelf\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[alignSelf\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(justify-self)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(justify-self)]
expected: FAIL
[CSSPositionTryDescriptors[justify-self\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[justify-self\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[justifySelf\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[justifySelf\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(position-anchor)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(position-anchor)]
expected: FAIL
[CSSPositionTryDescriptors[position-anchor\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[position-anchor\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[positionAnchor\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[positionAnchor\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(inset-area)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(inset-area)]
expected: FAIL
[CSSPositionTryDescriptors[inset-area\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[inset-area\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetArea\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[insetArea\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(color)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(color)]
expected: FAIL
[CSSPositionTryDescriptors[color\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[color\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(align-items)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(align-items)]
expected: FAIL
[CSSPositionTryDescriptors[align-items\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[align-items\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[alignItems\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[alignItems\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(align-content)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(align-content)]
expected: FAIL
[CSSPositionTryDescriptors[align-content\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[align-content\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[alignContent\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[alignContent\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(background)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(background)]
expected: FAIL
[CSSPositionTryDescriptors[background\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[background\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(display)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(display)]
expected: FAIL
[CSSPositionTryDescriptors[display\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[display\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(position)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(position)]
expected: FAIL
[CSSPositionTryDescriptors[position\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[position\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(writing-mode)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(writing-mode)]
expected: FAIL
[CSSPositionTryDescriptors[writing-mode\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[writing-mode\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[writingMode\] (get)]
expected: FAIL
[CSSPositionTryDescriptors[writingMode\] (set)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(direction)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(direction)]
expected: FAIL
[CSSPositionTryDescriptors[direction\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[direction\] (get)]
expected: FAIL
[CSSPositionTryDescriptors.getPropertyValue(syntax)]
expected: FAIL
[CSSPositionTryDescriptors.setProperty(syntax)]
expected: FAIL
[CSSPositionTryDescriptors[syntax\] (set)]
expected: FAIL
[CSSPositionTryDescriptors[syntax\] (get)]
expected: FAIL

Просмотреть файл

@ -1,6 +1,2 @@
[at-position-try-invalidation-shadow-dom.html]
[#host with inserted @position-try applied]
expected: FAIL
[#slotted with inserted @position-try applied]
expected: FAIL
expected: ERROR

Просмотреть файл

@ -0,0 +1,24 @@
[at-position-try-parse.html]
[@position-try --foo { } should be a valid rule]
expected: FAIL
[@position-try --foo { top: 1px; } should be a valid rule]
expected: FAIL
[@position-try --foo { backround-color: green; } should be a valid rule]
expected: FAIL
[@position-try --foo { @keyframes bar {} } should be a valid rule]
expected: FAIL
[@position-try --foo { @font-face {} } should be a valid rule]
expected: FAIL
[@position-try --foo { @media print {} } should be a valid rule]
expected: FAIL
[@position-try --foo { & {} } should be a valid rule]
expected: FAIL
[@position-try --foo { arbitrary garbage } should be a valid rule]
expected: FAIL

Просмотреть файл

@ -0,0 +1,252 @@
[idlharness.html]
[CSSPositionTryRule interface: existence and properties of interface object]
expected: FAIL
[CSSPositionTryRule interface object length]
expected: FAIL
[CSSPositionTryRule interface object name]
expected: FAIL
[CSSPositionTryRule interface: existence and properties of interface prototype object]
expected: FAIL
[CSSPositionTryRule interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[CSSPositionTryRule interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[CSSPositionTryRule interface: attribute name]
expected: FAIL
[CSSPositionTryRule interface: attribute style]
expected: FAIL
[CSSPositionTryDescriptors interface: existence and properties of interface object]
expected: FAIL
[CSSPositionTryDescriptors interface object length]
expected: FAIL
[CSSPositionTryDescriptors interface object name]
expected: FAIL
[CSSPositionTryDescriptors interface: existence and properties of interface prototype object]
expected: FAIL
[CSSPositionTryDescriptors interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[CSSPositionTryDescriptors interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginTop]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginRight]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginBottom]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginLeft]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginBlock]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginBlockStart]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginBlockEnd]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginInline]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginInlineStart]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute marginInlineEnd]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-top]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-right]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-bottom]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-left]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-block]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-block-start]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-block-end]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-inline]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-inline-start]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute margin-inline-end]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inset]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute insetBlock]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute insetBlockStart]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute insetBlockEnd]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute insetInline]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute insetInlineStart]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute insetInlineEnd]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute top]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute left]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute right]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute bottom]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inset-block]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inset-block-start]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inset-block-end]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inset-inline]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inset-inline-start]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inset-inline-end]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute width]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute minWidth]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute maxWidth]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute height]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute minHeight]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute maxHeight]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute blockSize]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute minBlockSize]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute maxBlockSize]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inlineSize]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute minInlineSize]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute maxInlineSize]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute min-width]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute max-width]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute min-height]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute max-height]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute block-size]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute min-block-size]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute max-block-size]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inline-size]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute min-inline-size]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute max-inline-size]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute placeSelf]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute alignSelf]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute justifySelf]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute place-self]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute align-self]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute justify-self]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute positionAnchor]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute position-anchor]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute insetArea]
expected: FAIL
[CSSPositionTryDescriptors interface: attribute inset-area]
expected: FAIL

Просмотреть файл

@ -0,0 +1,30 @@
[inset-area-computed.html]
[Property inset-area value 'none']
expected: FAIL
[Property inset-area value 'x-start']
expected: FAIL
[Property inset-area value 'center']
expected: FAIL
[Property inset-area value 'top center']
expected: FAIL
[Property inset-area has initial value none]
expected: FAIL
[Property inset-area does not inherit]
expected: FAIL
[Property inset-area value 'span-all']
expected: FAIL
[Property inset-area value 'span-all span-all']
expected: FAIL
[Property inset-area value 'center center']
expected: FAIL
[Property inset-area value 'span-bottom span-all']
expected: FAIL

Просмотреть файл

@ -0,0 +1,126 @@
[inset-area-interpolation.html]
[CSS Transitions with transition-behavior:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (-0.3) should be [none\]]
expected: FAIL
[CSS Transitions with transition-behavior:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (0) should be [none\]]
expected: FAIL
[CSS Transitions with transition-behavior:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (0.3) should be [none\]]
expected: FAIL
[CSS Transitions with transition-behavior:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (0.5) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition-behavior:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (0.6) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition-behavior:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (1) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition-behavior:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (1.5) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (-0.3) should be [none\]]
expected: FAIL
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (0) should be [none\]]
expected: FAIL
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (0.3) should be [none\]]
expected: FAIL
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (0.5) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (0.6) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (1) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <inset-area> from [none\] to [span-all left\] at (1.5) should be [span-all left\]]
expected: FAIL
[CSS Transitions: property <inset-area> from [none\] to [span-all left\] at (-0.3) should be [span-all left\]]
expected: FAIL
[CSS Transitions: property <inset-area> from [none\] to [span-all left\] at (0) should be [span-all left\]]
expected: FAIL
[CSS Transitions: property <inset-area> from [none\] to [span-all left\] at (0.3) should be [span-all left\]]
expected: FAIL
[CSS Transitions: property <inset-area> from [none\] to [span-all left\] at (0.5) should be [span-all left\]]
expected: FAIL
[CSS Transitions: property <inset-area> from [none\] to [span-all left\] at (0.6) should be [span-all left\]]
expected: FAIL
[CSS Transitions: property <inset-area> from [none\] to [span-all left\] at (1) should be [span-all left\]]
expected: FAIL
[CSS Transitions: property <inset-area> from [none\] to [span-all left\] at (1.5) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition: all: property <inset-area> from [none\] to [span-all left\] at (-0.3) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition: all: property <inset-area> from [none\] to [span-all left\] at (0) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition: all: property <inset-area> from [none\] to [span-all left\] at (0.3) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition: all: property <inset-area> from [none\] to [span-all left\] at (0.5) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition: all: property <inset-area> from [none\] to [span-all left\] at (0.6) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition: all: property <inset-area> from [none\] to [span-all left\] at (1) should be [span-all left\]]
expected: FAIL
[CSS Transitions with transition: all: property <inset-area> from [none\] to [span-all left\] at (1.5) should be [span-all left\]]
expected: FAIL
[CSS Animations: property <inset-area> from [none\] to [span-all left\] at (-0.3) should be [none\]]
expected: FAIL
[CSS Animations: property <inset-area> from [none\] to [span-all left\] at (0) should be [none\]]
expected: FAIL
[CSS Animations: property <inset-area> from [none\] to [span-all left\] at (0.3) should be [none\]]
expected: FAIL
[CSS Animations: property <inset-area> from [none\] to [span-all left\] at (0.5) should be [span-all left\]]
expected: FAIL
[CSS Animations: property <inset-area> from [none\] to [span-all left\] at (0.6) should be [span-all left\]]
expected: FAIL
[CSS Animations: property <inset-area> from [none\] to [span-all left\] at (1) should be [span-all left\]]
expected: FAIL
[CSS Animations: property <inset-area> from [none\] to [span-all left\] at (1.5) should be [span-all left\]]
expected: FAIL
[Web Animations: property <inset-area> from [none\] to [span-all left\] at (-0.3) should be [none\]]
expected: FAIL
[Web Animations: property <inset-area> from [none\] to [span-all left\] at (0) should be [none\]]
expected: FAIL
[Web Animations: property <inset-area> from [none\] to [span-all left\] at (0.3) should be [none\]]
expected: FAIL
[Web Animations: property <inset-area> from [none\] to [span-all left\] at (0.5) should be [span-all left\]]
expected: FAIL
[Web Animations: property <inset-area> from [none\] to [span-all left\] at (0.6) should be [span-all left\]]
expected: FAIL
[Web Animations: property <inset-area> from [none\] to [span-all left\] at (1) should be [span-all left\]]
expected: FAIL
[Web Animations: property <inset-area> from [none\] to [span-all left\] at (1.5) should be [span-all left\]]
expected: FAIL

Просмотреть файл

@ -0,0 +1,24 @@
[anchor-scope-computed.html]
[Property anchor-scope value 'none']
expected: FAIL
[Property anchor-scope value 'initial']
expected: FAIL
[Property anchor-scope value 'all']
expected: FAIL
[Property anchor-scope value '--a']
expected: FAIL
[Property anchor-scope value '--a, --b']
expected: FAIL
[Property anchor-scope value '--a, --b, --c']
expected: FAIL
[Property anchor-scope has initial value none]
expected: FAIL
[Property anchor-scope does not inherit]
expected: FAIL

Просмотреть файл

@ -0,0 +1,27 @@
[anchor-scope-parsing.html]
[e.style['anchor-scope'\] = "initial" should set the property value]
expected: FAIL
[e.style['anchor-scope'\] = "inherit" should set the property value]
expected: FAIL
[e.style['anchor-scope'\] = "unset" should set the property value]
expected: FAIL
[e.style['anchor-scope'\] = "revert" should set the property value]
expected: FAIL
[e.style['anchor-scope'\] = "none" should set the property value]
expected: FAIL
[e.style['anchor-scope'\] = "all" should set the property value]
expected: FAIL
[e.style['anchor-scope'\] = "--a" should set the property value]
expected: FAIL
[e.style['anchor-scope'\] = "--a, --b" should set the property value]
expected: FAIL
[e.style['anchor-scope'\] = "--a, --b, --c" should set the property value]
expected: FAIL

Просмотреть файл

@ -1,3 +1,60 @@
[position-try-fallbacks-computed.html]
[Property position-try-fallbacks value 'none']
expected: FAIL
[Property position-try-fallbacks value 'flip-block']
expected: FAIL
[Property position-try-fallbacks value 'flip-inline']
expected: FAIL
[Property position-try-fallbacks value 'flip-start']
expected: FAIL
[Property position-try-fallbacks value 'flip-block, flip-inline']
expected: FAIL
[Property position-try-fallbacks value '--foo, --bar']
expected: FAIL
[Property position-try-fallbacks value 'flip-start flip-inline flip-block']
expected: FAIL
[Property position-try-fallbacks value 'flip-start --flop']
expected: FAIL
[Property position-try-fallbacks value '--flop flip-start']
expected: FAIL
[Property position-try-fallbacks value 'left top']
expected: FAIL
[Property position-try-fallbacks value 'top left']
expected: FAIL
[Property position-try-fallbacks value 'start start']
expected: FAIL
[Property position-try-fallbacks value 'left, right']
expected: FAIL
[Property position-try-fallbacks value '--foo, left']
expected: FAIL
[Property position-try-fallbacks value '--foo, left, --bar']
expected: FAIL
[Property position-try-fallbacks value '--foo, flip-start, left']
expected: FAIL
[Property position-try-fallbacks value '--foo flip-start, left']
expected: FAIL
[Property position-try-fallbacks value 'left, --bar flip-start']
expected: FAIL
[Property position-try-fallbacks has initial value none]
expected: FAIL
[Property position-try-fallbacks does not inherit]
expected: FAIL

Просмотреть файл

@ -1,9 +1,81 @@
[position-try-fallbacks-parsing.html]
[e.style['position-try-fallbacks'\] = "initial" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "inherit" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "unset" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "revert" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "none" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-block" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-block " should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-start, flip-block" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-start flip-inline, flip-block" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-start, flip-start" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-start flip-inline flip-block" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-block, --foo" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "--bar, flip-block flip-start" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "--foo, --bar, --baz" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "--bar flip-block" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "--bar flip-inline flip-block" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-inline --foo" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "flip-inline flip-start --foo" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "left top" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "top left" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "start start" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "left, right" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "--foo, left" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "--foo, left, --bar" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "--foo, flip-start, left" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "--foo flip-start, left" should set the property value]
expected: FAIL
[e.style['position-try-fallbacks'\] = "left, --bar flip-start" should set the property value]
expected: FAIL

Просмотреть файл

@ -0,0 +1,21 @@
[position-try-order-computed.html]
[Property position-try-order value 'normal']
expected: FAIL
[Property position-try-order value 'most-width']
expected: FAIL
[Property position-try-order value 'most-height']
expected: FAIL
[Property position-try-order value 'most-block-size']
expected: FAIL
[Property position-try-order value 'most-inline-size']
expected: FAIL
[Property position-try-order has initial value normal]
expected: FAIL
[Property position-try-order does not inherit]
expected: FAIL

Просмотреть файл

@ -0,0 +1,30 @@
[position-visibility-computed.tentative.html]
[Property position-visibility value 'always']
expected: FAIL
[Property position-visibility value 'anchors-valid']
expected: FAIL
[Property position-visibility value 'anchors-visible']
expected: FAIL
[Property position-visibility value 'no-overflow']
expected: FAIL
[Property position-visibility value 'anchors-valid no-overflow']
expected: FAIL
[Property position-visibility value 'anchors-visible no-overflow']
expected: FAIL
[Property position-visibility value 'no-overflow anchors-valid']
expected: FAIL
[Property position-visibility value 'no-overflow anchors-visible']
expected: FAIL
[Property position-visibility has initial value always]
expected: FAIL
[Property position-visibility does not inherit]
expected: FAIL

Просмотреть файл

@ -1,3 +1,36 @@
[position-visibility-parsing.tentative.html]
[e.style['position-visibility'\] = "anchors-valid anchors-visible" should not set the property value]
[e.style['position-visibility'\] = "initial" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "inherit" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "unset" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "revert" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "always" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "anchors-valid" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "anchors-visible" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "no-overflow" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "anchors-valid no-overflow" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "anchors-visible no-overflow" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "no-overflow anchors-valid" should set the property value]
expected: FAIL
[e.style['position-visibility'\] = "no-overflow anchors-visible" should set the property value]
expected: FAIL

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,5 +1,4 @@
[try-tactic-basic.html]
expected: ERROR
[--pf ]
expected: FAIL
@ -47,6 +46,3 @@
[--pf flip-block flip-inline flip-start]
expected: FAIL
[--pf]
expected: FAIL

Просмотреть файл

@ -22,6 +22,3 @@
[--pf flip-block flip-inline flip-start]
expected: FAIL
[--pf]
expected: FAIL