From 8cc473a34ab0eb6e96b997d52461d00b5226cd4b Mon Sep 17 00:00:00 2001 From: Jonathan Kew Date: Wed, 14 Feb 2018 22:02:05 +1100 Subject: [PATCH] Bug 1435984 - patch 4 - Expose variationSettings on the FontFace webidl interface. r=bz,jwatt --HG-- extra : source : 987305fa2a5faba6da86f8f0d494a6ce3dc77b33 --- dom/webidl/FontFace.webidl | 2 ++ layout/style/FontFace.cpp | 20 ++++++++++++++++++++ layout/style/FontFace.h | 2 ++ 3 files changed, 24 insertions(+) diff --git a/dom/webidl/FontFace.webidl b/dom/webidl/FontFace.webidl index 136658cc7cd6..5705f5d8debd 100644 --- a/dom/webidl/FontFace.webidl +++ b/dom/webidl/FontFace.webidl @@ -19,6 +19,7 @@ dictionary FontFaceDescriptors { DOMString unicodeRange = "U+0-10FFFF"; DOMString variant = "normal"; DOMString featureSettings = "normal"; + DOMString variationSettings = "normal"; DOMString display = "auto"; }; @@ -38,6 +39,7 @@ interface FontFace { [SetterThrows] attribute DOMString unicodeRange; [SetterThrows] attribute DOMString variant; [SetterThrows] attribute DOMString featureSettings; + [SetterThrows, Pref="layout.css.font-variations.enabled"] attribute DOMString variationSettings; [SetterThrows, Pref="layout.css.font-display.enabled"] attribute DOMString display; readonly attribute FontFaceLoadStatus status; diff --git a/layout/style/FontFace.cpp b/layout/style/FontFace.cpp index 93b06e5a9263..372f6f51e8e1 100644 --- a/layout/style/FontFace.cpp +++ b/layout/style/FontFace.cpp @@ -20,6 +20,7 @@ #include "nsCSSParser.h" #include "nsIDocument.h" #include "nsStyleUtil.h" +#include "StylePrefs.h" namespace mozilla { namespace dom { @@ -344,6 +345,21 @@ FontFace::SetFeatureSettings(const nsAString& aValue, ErrorResult& aRv) SetDescriptor(eCSSFontDesc_FontFeatureSettings, aValue, aRv); } +void +FontFace::GetVariationSettings(nsString& aResult) +{ + mFontFaceSet->FlushUserFontSet(); + GetDesc(eCSSFontDesc_FontVariationSettings, eCSSProperty_font_variation_settings, + aResult); +} + +void +FontFace::SetVariationSettings(const nsAString& aValue, ErrorResult& aRv) +{ + mFontFaceSet->FlushUserFontSet(); + SetDescriptor(eCSSFontDesc_FontVariationSettings, aValue, aRv); +} + void FontFace::GetDisplay(nsString& aResult) { @@ -600,6 +616,10 @@ FontFace::SetDescriptors(const nsAString& aFamily, !ParseDescriptor(eCSSFontDesc_FontFeatureSettings, aDescriptors.mFeatureSettings, mDescriptors->mFontFeatureSettings) || + (StylePrefs::sFontVariationsEnabled && + !ParseDescriptor(eCSSFontDesc_FontVariationSettings, + aDescriptors.mVariationSettings, + mDescriptors->mFontVariationSettings)) || !ParseDescriptor(eCSSFontDesc_Display, aDescriptors.mDisplay, mDescriptors->mDisplay)) { diff --git a/layout/style/FontFace.h b/layout/style/FontFace.h index 5f3658587993..7c9eb30fd24c 100644 --- a/layout/style/FontFace.h +++ b/layout/style/FontFace.h @@ -162,6 +162,8 @@ public: void SetVariant(const nsAString& aValue, mozilla::ErrorResult& aRv); void GetFeatureSettings(nsString& aResult); void SetFeatureSettings(const nsAString& aValue, mozilla::ErrorResult& aRv); + void GetVariationSettings(nsString& aResult); + void SetVariationSettings(const nsAString& aValue, mozilla::ErrorResult& aRv); void GetDisplay(nsString& aResult); void SetDisplay(const nsAString& aValue, mozilla::ErrorResult& aRv);