Skip to content

Commit

Permalink
stylo: Parse eSafeAgentSheetFeatures as agent sheet
Browse files Browse the repository at this point in the history
This was reviewed in https://bugzilla.mozilla.org/show_bug.cgi?id=1321754

MozReview-Commit-ID: 7GdsOP8lBxk
  • Loading branch information
aethanyc committed May 2, 2017
1 parent 4f13bc3 commit 81fdd0b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
10 changes: 10 additions & 0 deletions components/style/gecko_bindings/structs_debug.rs
Expand Up @@ -5293,18 +5293,28 @@ pub mod root {
* exposure on the public Web, but are very useful for expressing
* user style overrides, such as @-moz-document rules.
*
* XXX: eUserSheetFeatures was added in bug 1035091, but some patches in
* that bug never landed to use this enum value. Currently, all the features
* in user sheet are also available in author sheet.
*
* Agent sheets have access to all author- and user-sheet features
* plus more extensions that are necessary for internal use but,
* again, not yet suitable for exposure on the public Web. Some of
* these are outright unsafe to expose; in particular, incorrect
* styling of anonymous box pseudo-elements can violate layout
* invariants.
*
* Agent sheets that do not use any unsafe rules could use
* eSafeAgentSheetFeatures when creating the sheet. This enum value allows
* Servo backend to recognize the sheets as the agent level, but Gecko
* backend will parse it under _author_ level.
*/
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum SheetParsingMode {
eAuthorSheetFeatures = 0,
eUserSheetFeatures = 1,
eAgentSheetFeatures = 2,
eSafeAgentSheetFeatures = 3,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
Expand Down
10 changes: 10 additions & 0 deletions components/style/gecko_bindings/structs_release.rs
Expand Up @@ -5222,18 +5222,28 @@ pub mod root {
* exposure on the public Web, but are very useful for expressing
* user style overrides, such as @-moz-document rules.
*
* XXX: eUserSheetFeatures was added in bug 1035091, but some patches in
* that bug never landed to use this enum value. Currently, all the features
* in user sheet are also available in author sheet.
*
* Agent sheets have access to all author- and user-sheet features
* plus more extensions that are necessary for internal use but,
* again, not yet suitable for exposure on the public Web. Some of
* these are outright unsafe to expose; in particular, incorrect
* styling of anonymous box pseudo-elements can violate layout
* invariants.
*
* Agent sheets that do not use any unsafe rules could use
* eSafeAgentSheetFeatures when creating the sheet. This enum value allows
* Servo backend to recognize the sheets as the agent level, but Gecko
* backend will parse it under _author_ level.
*/
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum SheetParsingMode {
eAuthorSheetFeatures = 0,
eUserSheetFeatures = 1,
eAgentSheetFeatures = 2,
eSafeAgentSheetFeatures = 3,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
Expand Down
2 changes: 2 additions & 0 deletions ports/geckolib/glue.rs
Expand Up @@ -509,6 +509,7 @@ pub extern "C" fn Servo_StyleSheet_Empty(mode: SheetParsingMode) -> RawServoStyl
SheetParsingMode::eAuthorSheetFeatures => Origin::Author,
SheetParsingMode::eUserSheetFeatures => Origin::User,
SheetParsingMode::eAgentSheetFeatures => Origin::UserAgent,
SheetParsingMode::eSafeAgentSheetFeatures => Origin::UserAgent,
};
let shared_lock = global_style_data.shared_lock.clone();
Arc::new(Stylesheet::from_str(
Expand All @@ -533,6 +534,7 @@ pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes(loader: *mut Loader,
SheetParsingMode::eAuthorSheetFeatures => Origin::Author,
SheetParsingMode::eUserSheetFeatures => Origin::User,
SheetParsingMode::eAgentSheetFeatures => Origin::UserAgent,
SheetParsingMode::eSafeAgentSheetFeatures => Origin::UserAgent,
};

let url_data = unsafe { RefPtr::from_ptr_ref(&extra_data) };
Expand Down

0 comments on commit 81fdd0b

Please sign in to comment.