mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
Bug 1321754 - Add an enum value to SheetParsingMode for agent sheets that use no unsafe rules. r=heycam
scrollbars.css is the only sheet which is parsed as author level, but later added as agent level in [1]. Add a new enum value so that it can be parsed as author level in gecko (nsCSSParser::AgentRulesEnabled() will exclude it), but servo can recognize it as agent level sheet when the sheet is created. Delete UserRulesEnabled() because no one uses it. [1] http://searchfox.org/mozilla-central/rev/7419b368156a6efa24777b21b0e5706be89a9c2f/layout/base/nsDocumentViewer.cpp#2326 MozReview-Commit-ID: 2lrV4ogfnHM --HG-- extra : rebase_source : 9d80a146f2ec5629999076ea1587e7d36f06afe7
This commit is contained in:
parent
7137918b7e
commit
0119bb6b75
@ -24,17 +24,27 @@ namespace css {
|
||||
* 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.
|
||||
*/
|
||||
enum SheetParsingMode {
|
||||
eAuthorSheetFeatures = 0,
|
||||
eUserSheetFeatures,
|
||||
eAgentSheetFeatures
|
||||
eAgentSheetFeatures,
|
||||
eSafeAgentSheetFeatures,
|
||||
};
|
||||
|
||||
} // namespace css
|
||||
|
@ -363,10 +363,6 @@ public:
|
||||
bool ChromeRulesEnabled() const {
|
||||
return mIsChrome;
|
||||
}
|
||||
bool UserRulesEnabled() const {
|
||||
return mParsingMode == css::eAgentSheetFeatures ||
|
||||
mParsingMode == css::eUserSheetFeatures;
|
||||
}
|
||||
|
||||
CSSEnabledState EnabledState() const {
|
||||
static_assert(int(CSSEnabledState::eForAllContent) == 0,
|
||||
@ -376,7 +372,7 @@ public:
|
||||
if (AgentRulesEnabled()) {
|
||||
enabledState |= CSSEnabledState::eInUASheets;
|
||||
}
|
||||
if (mIsChrome) {
|
||||
if (ChromeRulesEnabled()) {
|
||||
enabledState |= CSSEnabledState::eInChrome;
|
||||
}
|
||||
return enabledState;
|
||||
|
@ -79,7 +79,7 @@ nsLayoutStylesheetCache::ScrollbarsSheet()
|
||||
if (!mScrollbarsSheet) {
|
||||
// Scrollbars don't need access to unsafe rules
|
||||
LoadSheetURL("chrome://global/skin/scrollbars.css",
|
||||
&mScrollbarsSheet, eAuthorSheetFeatures, eCrash);
|
||||
&mScrollbarsSheet, eSafeAgentSheetFeatures, eCrash);
|
||||
}
|
||||
|
||||
return mScrollbarsSheet;
|
||||
|
@ -327,6 +327,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(
|
||||
@ -349,6 +350,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) };
|
||||
|
Loading…
Reference in New Issue
Block a user