stylo: Create ServoFontFeatureValuesRule and bind servo data

Add ServoFontFeatureValuesRule for CSSOM representation of
@font-feature-values rule and wire up with bindings.
This commit is contained in:
Nazım Can Altınova 2017-07-27 11:20:19 -07:00
parent 43cf493832
commit 25896c384f
3 changed files with 70 additions and 3 deletions

View file

@ -8,7 +8,7 @@
#![allow(non_snake_case, missing_docs)]
use gecko_bindings::bindings::{RawServoImportRule, RawServoSupportsRule};
use gecko_bindings::bindings::{RawServoFontFeatureValuesRule, RawServoImportRule, RawServoSupportsRule};
use gecko_bindings::bindings::{RawServoKeyframe, RawServoKeyframesRule};
use gecko_bindings::bindings::{RawServoMediaRule, RawServoNamespaceRule, RawServoPageRule};
use gecko_bindings::bindings::{RawServoRuleNode, RawServoRuleNodeStrong, RawServoDocumentRule};
@ -24,7 +24,7 @@ use servo_arc::{Arc, ArcBorrow};
use shared_lock::Locked;
use std::{mem, ptr};
use stylesheets::{CssRules, StylesheetContents, StyleRule, ImportRule, KeyframesRule, MediaRule};
use stylesheets::{NamespaceRule, PageRule, SupportsRule, DocumentRule};
use stylesheets::{FontFeatureValuesRule, NamespaceRule, PageRule, SupportsRule, DocumentRule};
use stylesheets::keyframes_rule::Keyframe;
macro_rules! impl_arc_ffi {
@ -88,6 +88,9 @@ impl_arc_ffi!(Locked<SupportsRule> => RawServoSupportsRule
impl_arc_ffi!(Locked<DocumentRule> => RawServoDocumentRule
[Servo_DocumentRule_AddRef, Servo_DocumentRule_Release]);
impl_arc_ffi!(Locked<FontFeatureValuesRule> => RawServoFontFeatureValuesRule
[Servo_FontFeatureValuesRule_AddRef, Servo_FontFeatureValuesRule_Release]);
// RuleNode is a Arc-like type but it does not use Arc.
impl StrongRuleNode {

View file

@ -378,6 +378,11 @@ pub type RawServoDocumentRuleBorrowed<'a> = &'a RawServoDocumentRule;
pub type RawServoDocumentRuleBorrowedOrNull<'a> = Option<&'a RawServoDocumentRule>;
enum RawServoDocumentRuleVoid { }
pub struct RawServoDocumentRule(RawServoDocumentRuleVoid);
pub type RawServoFontFeatureValuesRuleStrong = ::gecko_bindings::sugar::ownership::Strong<RawServoFontFeatureValuesRule>;
pub type RawServoFontFeatureValuesRuleBorrowed<'a> = &'a RawServoFontFeatureValuesRule;
pub type RawServoFontFeatureValuesRuleBorrowedOrNull<'a> = Option<&'a RawServoFontFeatureValuesRule>;
enum RawServoFontFeatureValuesRuleVoid { }
pub struct RawServoFontFeatureValuesRule(RawServoFontFeatureValuesRuleVoid);
pub type RawServoRuleNodeStrong = ::gecko_bindings::sugar::ownership::Strong<RawServoRuleNode>;
pub type RawServoRuleNodeBorrowed<'a> = &'a RawServoRuleNode;
pub type RawServoRuleNodeBorrowedOrNull<'a> = Option<&'a RawServoRuleNode>;
@ -480,6 +485,14 @@ extern "C" {
extern "C" {
pub fn Servo_DocumentRule_Release(ptr: RawServoDocumentRuleBorrowed);
}
extern "C" {
pub fn Servo_FontFeatureValuesRule_AddRef(ptr:
RawServoFontFeatureValuesRuleBorrowed);
}
extern "C" {
pub fn Servo_FontFeatureValuesRule_Release(ptr:
RawServoFontFeatureValuesRuleBorrowed);
}
extern "C" {
pub fn Servo_RuleNode_AddRef(ptr: RawServoRuleNodeBorrowed);
}
@ -2159,6 +2172,24 @@ extern "C" {
pub fn Servo_DocumentRule_GetRules(rule: RawServoDocumentRuleBorrowed)
-> ServoCssRulesStrong;
}
extern "C" {
pub fn Servo_CssRules_GetFontFeatureValuesRuleAt(rules:
ServoCssRulesBorrowed,
index: u32,
line: *mut u32,
column: *mut u32)
-> RawServoFontFeatureValuesRuleStrong;
}
extern "C" {
pub fn Servo_FontFeatureValuesRule_Debug(rule:
RawServoFontFeatureValuesRuleBorrowed,
result: *mut nsACString);
}
extern "C" {
pub fn Servo_FontFeatureValuesRule_GetCssText(rule:
RawServoFontFeatureValuesRuleBorrowed,
result: *mut nsAString);
}
extern "C" {
pub fn Servo_CssRules_GetFontFaceRuleAt(rules: ServoCssRulesBorrowed,
index: u32)
@ -2296,6 +2327,16 @@ extern "C" {
RawServoDocumentRuleBorrowed,
result: *mut nsAString);
}
extern "C" {
pub fn Servo_FontFeatureValuesRule_GetFontFamily(rule:
RawServoFontFeatureValuesRuleBorrowed,
result: *mut nsAString);
}
extern "C" {
pub fn Servo_FontFeatureValuesRule_GetValueText(rule:
RawServoFontFeatureValuesRuleBorrowed,
result: *mut nsAString);
}
extern "C" {
pub fn Servo_ParseProperty(property: nsCSSPropertyID,
value: *const nsACString,