From f2a547c7edfaa8b26ee996bcf34a79f83e7e01d0 Mon Sep 17 00:00:00 2001 From: Cameron McCormack Date: Tue, 2 Aug 2016 16:52:15 +0800 Subject: [PATCH] Parse style sheets with a real base URL in geckolib. --- ports/geckolib/gecko_bindings/bindings.rs | 2 ++ ports/geckolib/glue.rs | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ports/geckolib/gecko_bindings/bindings.rs b/ports/geckolib/gecko_bindings/bindings.rs index e659a17c43c..10d2bbb7c43 100644 --- a/ports/geckolib/gecko_bindings/bindings.rs +++ b/ports/geckolib/gecko_bindings/bindings.rs @@ -313,6 +313,8 @@ extern "C" { pub fn Gecko_ReleaseCalcArbitraryThread(aPtr: *mut Calc); pub fn Servo_StylesheetFromUTF8Bytes(bytes: *const u8, length: u32, parsing_mode: SheetParsingMode, + base_bytes: *const u8, + base_length: u32, base: *mut ThreadSafeURIHolder, referrer: *mut ThreadSafeURIHolder, principal: diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 7c562099c43..87e69aabef0 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -153,6 +153,8 @@ pub extern "C" fn Servo_DropNodeData(data: *mut ServoNodeData) -> () { pub extern "C" fn Servo_StylesheetFromUTF8Bytes(bytes: *const u8, length: u32, mode: SheetParsingMode, + base_bytes: *const u8, + base_length: u32, base: *mut ThreadSafeURIHolder, referrer: *mut ThreadSafeURIHolder, principal: *mut ThreadSafePrincipalHolder) @@ -165,8 +167,8 @@ pub extern "C" fn Servo_StylesheetFromUTF8Bytes(bytes: *const u8, SheetParsingMode::eAgentSheetFeatures => Origin::UserAgent, }; - // FIXME(heycam): Pass in the real base URL. - let url = Url::parse("about:none").unwrap(); + let base_str = unsafe { from_utf8_unchecked(slice::from_raw_parts(base_bytes, base_length as usize)) }; + let url = Url::parse(base_str).unwrap(); let extra_data = ParserContextExtraData { base: Some(GeckoArcURI::new(base)), referrer: Some(GeckoArcURI::new(referrer)),