mirror of
https://github.com/servo/servo.git
synced 2025-06-21 23:59:00 +01:00
Auto merge of #20146 - bholley:explicit_load_data, r=bholley
Stylo: Pass an explicit parent SheetLoadData for child stylesheet loads https://bugzilla.mozilla.org/show_bug.cgi?id=1441896
This commit is contained in:
commit
e8f77861a9
3 changed files with 15 additions and 6 deletions
|
@ -235,6 +235,7 @@ use gecko_bindings::structs::nscoord;
|
|||
use gecko_bindings::structs::nsresult;
|
||||
use gecko_bindings::structs::Loader;
|
||||
use gecko_bindings::structs::LoaderReusableStyleSheets;
|
||||
use gecko_bindings::structs::SheetLoadData;
|
||||
use gecko_bindings::structs::ServoStyleSheet;
|
||||
use gecko_bindings::structs::ServoComputedData;
|
||||
use gecko_bindings::structs::ServoStyleContext;
|
||||
|
@ -664,6 +665,7 @@ extern "C" {
|
|||
pub fn Gecko_LoadStyleSheet(
|
||||
loader: *mut Loader,
|
||||
parent: *mut ServoStyleSheet,
|
||||
parent_load_data: *mut SheetLoadData,
|
||||
reusable_sheets: *mut LoaderReusableStyleSheets,
|
||||
base_url_data: *mut RawGeckoURLExtraData,
|
||||
url_bytes: *const u8,
|
||||
|
@ -2093,6 +2095,7 @@ extern "C" {
|
|||
pub fn Servo_StyleSheet_FromUTF8Bytes(
|
||||
loader: *mut Loader,
|
||||
gecko_stylesheet: *mut ServoStyleSheet,
|
||||
load_data: *mut SheetLoadData,
|
||||
data: *const u8,
|
||||
data_len: usize,
|
||||
parsing_mode: SheetParsingMode,
|
||||
|
|
|
@ -90,7 +90,7 @@ use style::gecko_bindings::structs;
|
|||
use style::gecko_bindings::structs::{CallerType, CSSPseudoElementType, CompositeOperation};
|
||||
use style::gecko_bindings::structs::{Loader, LoaderReusableStyleSheets};
|
||||
use style::gecko_bindings::structs::{RawServoStyleRule, ServoStyleContextStrong, RustString};
|
||||
use style::gecko_bindings::structs::{ServoStyleSheet, SheetParsingMode, nsAtom, nsCSSPropertyID};
|
||||
use style::gecko_bindings::structs::{ServoStyleSheet, SheetLoadData, SheetParsingMode, nsAtom, nsCSSPropertyID};
|
||||
use style::gecko_bindings::structs::{nsCSSFontDesc, nsCSSFontFaceRule, nsCSSCounterStyleRule};
|
||||
use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint, PropertyValuePair};
|
||||
use style::gecko_bindings::structs::AtomArray;
|
||||
|
@ -1067,10 +1067,14 @@ pub extern "C" fn Servo_StyleSheet_Empty(mode: SheetParsingMode) -> RawServoStyl
|
|||
).into_strong()
|
||||
}
|
||||
|
||||
/// Note: The load_data corresponds to this sheet, and is passed as the parent
|
||||
/// load data for child sheet loads. It may be null for certain cases where we
|
||||
/// know we won't have child loads.
|
||||
#[no_mangle]
|
||||
pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes(
|
||||
loader: *mut Loader,
|
||||
stylesheet: *mut ServoStyleSheet,
|
||||
load_data: *mut SheetLoadData,
|
||||
data: *const u8,
|
||||
data_len: usize,
|
||||
mode: SheetParsingMode,
|
||||
|
@ -1094,7 +1098,7 @@ pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes(
|
|||
let loader = if loader.is_null() {
|
||||
None
|
||||
} else {
|
||||
Some(StylesheetLoader::new(loader, stylesheet, reusable_sheets))
|
||||
Some(StylesheetLoader::new(loader, stylesheet, load_data, reusable_sheets))
|
||||
};
|
||||
|
||||
// FIXME(emilio): loader.as_ref() doesn't typecheck for some reason?
|
||||
|
@ -1538,7 +1542,7 @@ pub extern "C" fn Servo_CssRules_InsertRule(
|
|||
let loader = if loader.is_null() {
|
||||
None
|
||||
} else {
|
||||
Some(StylesheetLoader::new(loader, gecko_stylesheet, ptr::null_mut()))
|
||||
Some(StylesheetLoader::new(loader, gecko_stylesheet, ptr::null_mut(), ptr::null_mut()))
|
||||
};
|
||||
let loader = loader.as_ref().map(|loader| loader as &StyleStylesheetLoader);
|
||||
let rule = unsafe { rule.as_ref().unwrap().as_str_unchecked() };
|
||||
|
|
|
@ -6,7 +6,7 @@ use cssparser::SourceLocation;
|
|||
use servo_arc::Arc;
|
||||
use style::gecko::data::GeckoStyleSheet;
|
||||
use style::gecko_bindings::bindings::Gecko_LoadStyleSheet;
|
||||
use style::gecko_bindings::structs::{Loader, ServoStyleSheet, LoaderReusableStyleSheets};
|
||||
use style::gecko_bindings::structs::{Loader, ServoStyleSheet, SheetLoadData, LoaderReusableStyleSheets};
|
||||
use style::gecko_bindings::sugar::ownership::FFIArcHelpers;
|
||||
use style::media_queries::MediaList;
|
||||
use style::parser::ParserContext;
|
||||
|
@ -15,13 +15,14 @@ use style::stylesheets::{ImportRule, StylesheetLoader as StyleStylesheetLoader};
|
|||
use style::stylesheets::import_rule::ImportSheet;
|
||||
use style::values::specified::url::SpecifiedUrl;
|
||||
|
||||
pub struct StylesheetLoader(*mut Loader, *mut ServoStyleSheet, *mut LoaderReusableStyleSheets);
|
||||
pub struct StylesheetLoader(*mut Loader, *mut ServoStyleSheet, *mut SheetLoadData, *mut LoaderReusableStyleSheets);
|
||||
|
||||
impl StylesheetLoader {
|
||||
pub fn new(loader: *mut Loader,
|
||||
parent: *mut ServoStyleSheet,
|
||||
parent_load_data: *mut SheetLoadData,
|
||||
reusable_sheets: *mut LoaderReusableStyleSheets) -> Self {
|
||||
StylesheetLoader(loader, parent, reusable_sheets)
|
||||
StylesheetLoader(loader, parent, parent_load_data, reusable_sheets)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,6 +46,7 @@ impl StyleStylesheetLoader for StylesheetLoader {
|
|||
Gecko_LoadStyleSheet(self.0,
|
||||
self.1,
|
||||
self.2,
|
||||
self.3,
|
||||
base_url_data,
|
||||
spec_bytes,
|
||||
spec_len as u32,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue