mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Store the pointer of reusable sheets in StylesheetLoader.
MozReview-Commit-ID: DZP2bChjj3k
This commit is contained in:
parent
d767e6046b
commit
3a15cbd5c3
2 changed files with 13 additions and 9 deletions
|
@ -65,12 +65,12 @@ use style::gecko_bindings::bindings::nsTimingFunctionBorrowed;
|
||||||
use style::gecko_bindings::bindings::nsTimingFunctionBorrowedMut;
|
use style::gecko_bindings::bindings::nsTimingFunctionBorrowedMut;
|
||||||
use style::gecko_bindings::structs;
|
use style::gecko_bindings::structs;
|
||||||
use style::gecko_bindings::structs::{CSSPseudoElementType, CompositeOperation};
|
use style::gecko_bindings::structs::{CSSPseudoElementType, CompositeOperation};
|
||||||
|
use style::gecko_bindings::structs::{Loader, LoaderReusableStyleSheets};
|
||||||
use style::gecko_bindings::structs::{RawServoStyleRule, ServoStyleSheet};
|
use style::gecko_bindings::structs::{RawServoStyleRule, ServoStyleSheet};
|
||||||
use style::gecko_bindings::structs::{SheetParsingMode, nsIAtom, nsCSSPropertyID};
|
use style::gecko_bindings::structs::{SheetParsingMode, nsIAtom, nsCSSPropertyID};
|
||||||
use style::gecko_bindings::structs::{nsCSSFontFaceRule, nsCSSCounterStyleRule};
|
use style::gecko_bindings::structs::{nsCSSFontFaceRule, nsCSSCounterStyleRule};
|
||||||
use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint, PropertyValuePair};
|
use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint, PropertyValuePair};
|
||||||
use style::gecko_bindings::structs::IterationCompositeOperation;
|
use style::gecko_bindings::structs::IterationCompositeOperation;
|
||||||
use style::gecko_bindings::structs::Loader;
|
|
||||||
use style::gecko_bindings::structs::MallocSizeOf;
|
use style::gecko_bindings::structs::MallocSizeOf;
|
||||||
use style::gecko_bindings::structs::RawGeckoPresContextOwned;
|
use style::gecko_bindings::structs::RawGeckoPresContextOwned;
|
||||||
use style::gecko_bindings::structs::ServoElementSnapshotTable;
|
use style::gecko_bindings::structs::ServoElementSnapshotTable;
|
||||||
|
@ -721,7 +721,7 @@ pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes(loader: *mut Loader,
|
||||||
let loader = if loader.is_null() {
|
let loader = if loader.is_null() {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
Some(StylesheetLoader::new(loader, stylesheet))
|
Some(StylesheetLoader::new(loader, stylesheet, ptr::null_mut()))
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME(emilio): loader.as_ref() doesn't typecheck for some reason?
|
// FIXME(emilio): loader.as_ref() doesn't typecheck for some reason?
|
||||||
|
@ -750,7 +750,8 @@ pub extern "C" fn Servo_StyleSheet_ClearAndUpdate(stylesheet: RawServoStyleSheet
|
||||||
gecko_stylesheet: *mut ServoStyleSheet,
|
gecko_stylesheet: *mut ServoStyleSheet,
|
||||||
data: *const nsACString,
|
data: *const nsACString,
|
||||||
extra_data: *mut URLExtraData,
|
extra_data: *mut URLExtraData,
|
||||||
line_number_offset: u32)
|
line_number_offset: u32,
|
||||||
|
reusable_sheets: *mut LoaderReusableStyleSheets)
|
||||||
{
|
{
|
||||||
let input = unsafe { data.as_ref().unwrap().as_str_unchecked() };
|
let input = unsafe { data.as_ref().unwrap().as_str_unchecked() };
|
||||||
let url_data = unsafe { RefPtr::from_ptr_ref(&extra_data) };
|
let url_data = unsafe { RefPtr::from_ptr_ref(&extra_data) };
|
||||||
|
@ -758,7 +759,7 @@ pub extern "C" fn Servo_StyleSheet_ClearAndUpdate(stylesheet: RawServoStyleSheet
|
||||||
let loader = if loader.is_null() {
|
let loader = if loader.is_null() {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
Some(StylesheetLoader::new(loader, gecko_stylesheet))
|
Some(StylesheetLoader::new(loader, gecko_stylesheet, reusable_sheets))
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME(emilio): loader.as_ref() doesn't typecheck for some reason?
|
// FIXME(emilio): loader.as_ref() doesn't typecheck for some reason?
|
||||||
|
@ -950,7 +951,7 @@ pub extern "C" fn Servo_CssRules_InsertRule(rules: ServoCssRulesBorrowed,
|
||||||
let loader = if loader.is_null() {
|
let loader = if loader.is_null() {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
Some(StylesheetLoader::new(loader, gecko_stylesheet))
|
Some(StylesheetLoader::new(loader, gecko_stylesheet, ptr::null_mut()))
|
||||||
};
|
};
|
||||||
let loader = loader.as_ref().map(|loader| loader as &StyleStylesheetLoader);
|
let loader = loader.as_ref().map(|loader| loader as &StyleStylesheetLoader);
|
||||||
let rule = unsafe { rule.as_ref().unwrap().as_str_unchecked() };
|
let rule = unsafe { rule.as_ref().unwrap().as_str_unchecked() };
|
||||||
|
|
|
@ -3,18 +3,20 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use style::gecko_bindings::bindings::Gecko_LoadStyleSheet;
|
use style::gecko_bindings::bindings::Gecko_LoadStyleSheet;
|
||||||
use style::gecko_bindings::structs::{Loader, ServoStyleSheet};
|
use style::gecko_bindings::structs::{Loader, ServoStyleSheet, LoaderReusableStyleSheets};
|
||||||
use style::gecko_bindings::sugar::ownership::{HasArcFFI, FFIArcHelpers};
|
use style::gecko_bindings::sugar::ownership::{HasArcFFI, FFIArcHelpers};
|
||||||
use style::media_queries::MediaList;
|
use style::media_queries::MediaList;
|
||||||
use style::shared_lock::Locked;
|
use style::shared_lock::Locked;
|
||||||
use style::stylearc::Arc;
|
use style::stylearc::Arc;
|
||||||
use style::stylesheets::{ImportRule, Stylesheet, StylesheetLoader as StyleStylesheetLoader};
|
use style::stylesheets::{ImportRule, Stylesheet, StylesheetLoader as StyleStylesheetLoader};
|
||||||
|
|
||||||
pub struct StylesheetLoader(*mut Loader, *mut ServoStyleSheet);
|
pub struct StylesheetLoader(*mut Loader, *mut ServoStyleSheet, *mut LoaderReusableStyleSheets);
|
||||||
|
|
||||||
impl StylesheetLoader {
|
impl StylesheetLoader {
|
||||||
pub fn new(loader: *mut Loader, parent: *mut ServoStyleSheet) -> Self {
|
pub fn new(loader: *mut Loader,
|
||||||
StylesheetLoader(loader, parent)
|
parent: *mut ServoStyleSheet,
|
||||||
|
reusable_sheets: *mut LoaderReusableStyleSheets) -> Self {
|
||||||
|
StylesheetLoader(loader, parent, reusable_sheets)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +39,7 @@ impl StyleStylesheetLoader for StylesheetLoader {
|
||||||
unsafe {
|
unsafe {
|
||||||
Gecko_LoadStyleSheet(self.0,
|
Gecko_LoadStyleSheet(self.0,
|
||||||
self.1,
|
self.1,
|
||||||
|
self.2,
|
||||||
Stylesheet::arc_as_borrowed(&import.stylesheet),
|
Stylesheet::arc_as_borrowed(&import.stylesheet),
|
||||||
base_url_data,
|
base_url_data,
|
||||||
spec_bytes,
|
spec_bytes,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue