diff options
author | JustOff <Off.Just.Off@gmail.com> | 2020-01-07 13:05:05 +0200 |
---|---|---|
committer | JustOff <Off.Just.Off@gmail.com> | 2020-01-07 13:05:05 +0200 |
commit | b4d686d62da679acabdbb7b30153a2971a200f79 (patch) | |
tree | 1b1284a85bf5ecfdbc134f75abd9c877f3fab01f /layout/style | |
parent | e30d68b699bb3dca89534727974a08d4b43b62f8 (diff) | |
download | UXP-b4d686d62da679acabdbb7b30153a2971a200f79.tar UXP-b4d686d62da679acabdbb7b30153a2971a200f79.tar.gz UXP-b4d686d62da679acabdbb7b30153a2971a200f79.tar.lz UXP-b4d686d62da679acabdbb7b30153a2971a200f79.tar.xz UXP-b4d686d62da679acabdbb7b30153a2971a200f79.zip |
Issue #1345 - Implement non-standard legacy CSSStyleSheet rules
Diffstat (limited to 'layout/style')
-rw-r--r-- | layout/style/StyleSheet.cpp | 26 | ||||
-rw-r--r-- | layout/style/StyleSheet.h | 3 |
2 files changed, 29 insertions, 0 deletions
diff --git a/layout/style/StyleSheet.cpp b/layout/style/StyleSheet.cpp index 9ff90b8d2..f307f3918 100644 --- a/layout/style/StyleSheet.cpp +++ b/layout/style/StyleSheet.cpp @@ -259,6 +259,32 @@ StyleSheet::DeleteRule(uint32_t aIndex, FORWARD_INTERNAL(DeleteRuleInternal, (aIndex, aRv)) } +int32_t +StyleSheet::AddRule(const nsAString& aSelector, const nsAString& aBlock, + const Optional<uint32_t>& aIndex, + nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) +{ + if (!AreRulesAvailable(aSubjectPrincipal, aRv)) { + return -1; + } + + nsAutoString rule; + rule.Append(aSelector); + rule.AppendLiteral(" { "); + if (!aBlock.IsEmpty()) { + rule.Append(aBlock); + rule.Append(' '); + } + rule.Append('}'); + + auto index = + aIndex.WasPassed() ? aIndex.Value() : GetCssRules(aSubjectPrincipal, aRv)->Length(); + + FORWARD_INTERNAL(InsertRuleInternal, (rule, index, aRv)); + // As per Microsoft documentation, always return -1. + return -1; +} + #undef FORWARD_INTERNAL void diff --git a/layout/style/StyleSheet.h b/layout/style/StyleSheet.h index f21a6d648..863f6d22f 100644 --- a/layout/style/StyleSheet.h +++ b/layout/style/StyleSheet.h @@ -143,6 +143,9 @@ public: void DeleteRule(uint32_t aIndex, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv); + int32_t AddRule(const nsAString& aSelector, const nsAString& aBlock, + const dom::Optional<uint32_t>& aIndex, + nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv); // WebIDL miscellaneous bits inline dom::ParentObject GetParentObject() const; |