mirror of
https://github.com/servo/servo.git
synced 2025-08-12 17:05:33 +01:00
Urlmageddon: Use refcounted urls more often.
This commit is contained in:
parent
f14e7339b5
commit
913c874cb5
161 changed files with 1044 additions and 718 deletions
|
@ -32,13 +32,13 @@ range = {path = "../range"}
|
|||
rustc-serialize = "0.3"
|
||||
serde = "0.8"
|
||||
servo_atoms = {path = "../atoms"}
|
||||
servo_url = {path = "../url"}
|
||||
serde_derive = "0.8"
|
||||
smallvec = "0.1"
|
||||
style = {path = "../style"}
|
||||
style_traits = {path = "../style_traits"}
|
||||
time = "0.1.12"
|
||||
unicode-script = {version = "0.1", features = ["harfbuzz"]}
|
||||
url = {version = "1.2", features = ["heap_size"]}
|
||||
util = {path = "../util"}
|
||||
xi-unicode = "0.0.1"
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ use platform::font_list::last_resort_font_families;
|
|||
use platform::font_list::system_default_family;
|
||||
use platform::font_template::FontTemplateData;
|
||||
use servo_atoms::Atom;
|
||||
use servo_url::ServoUrl;
|
||||
use std::borrow::ToOwned;
|
||||
use std::collections::HashMap;
|
||||
use std::mem;
|
||||
|
@ -23,7 +24,6 @@ use std::sync::{Arc, Mutex};
|
|||
use std::u32;
|
||||
use style::font_face::{EffectiveSources, Source};
|
||||
use style::properties::longhands::font_family::computed_value::FontFamily;
|
||||
use url::Url;
|
||||
use util::thread::spawn_named;
|
||||
use webrender_traits;
|
||||
|
||||
|
@ -106,7 +106,7 @@ pub enum Command {
|
|||
GetFontTemplate(FontFamily, FontTemplateDescriptor, IpcSender<Reply>),
|
||||
GetLastResortFontTemplate(FontTemplateDescriptor, IpcSender<Reply>),
|
||||
AddWebFont(LowercaseString, EffectiveSources, IpcSender<()>),
|
||||
AddDownloadedWebFont(LowercaseString, Url, Vec<u8>, IpcSender<()>),
|
||||
AddDownloadedWebFont(LowercaseString, ServoUrl, Vec<u8>, IpcSender<()>),
|
||||
Exit(IpcSender<()>),
|
||||
}
|
||||
|
||||
|
@ -206,7 +206,11 @@ impl FontCache {
|
|||
match src {
|
||||
Source::Url(url_source) => {
|
||||
// https://drafts.csswg.org/css-fonts/#font-fetching-requirements
|
||||
let url = url_source.url;
|
||||
let url = match url_source.url.url() {
|
||||
Some(url) => url.clone(),
|
||||
None => return,
|
||||
};
|
||||
|
||||
let request = RequestInit {
|
||||
url: url.clone(),
|
||||
type_: RequestType::Font,
|
||||
|
@ -242,7 +246,7 @@ impl FontCache {
|
|||
Err(_) => {
|
||||
// FIXME(servo/fontsan#1): get an error message
|
||||
debug!("Sanitiser rejected web font: \
|
||||
family={:?} url={}", family_name, url);
|
||||
family={:?} url={:?}", family_name, url);
|
||||
let msg = Command::AddWebFont(family_name.clone(), sources.clone(), sender.clone());
|
||||
channel_to_self.send(msg).unwrap();
|
||||
return;
|
||||
|
|
|
@ -63,17 +63,15 @@ extern crate rustc_serialize;
|
|||
extern crate serde;
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
extern crate servo_url;
|
||||
#[macro_use] extern crate servo_atoms;
|
||||
#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
|
||||
extern crate simd;
|
||||
|
||||
#[macro_use] extern crate servo_atoms;
|
||||
extern crate smallvec;
|
||||
extern crate style;
|
||||
extern crate style_traits;
|
||||
extern crate time;
|
||||
extern crate unicode_script;
|
||||
extern crate url;
|
||||
extern crate util;
|
||||
extern crate webrender_traits;
|
||||
extern crate xi_unicode;
|
||||
|
|
|
@ -10,13 +10,13 @@ use core_text::font::CTFont;
|
|||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use serde::de::{Error, Visitor};
|
||||
use servo_atoms::Atom;
|
||||
use servo_url::ServoUrl;
|
||||
use std::borrow::ToOwned;
|
||||
use std::collections::HashMap;
|
||||
use std::fs::File;
|
||||
use std::io::{Read, Error as IoError};
|
||||
use std::ops::Deref;
|
||||
use std::sync::Mutex;
|
||||
use url::Url;
|
||||
|
||||
/// Platform specific font representation for mac.
|
||||
/// The identifier is a PostScript font name. The
|
||||
|
@ -86,13 +86,13 @@ impl FontTemplateData {
|
|||
None => {}
|
||||
}
|
||||
|
||||
let path = Url::parse(&*self.ctfont(0.0)
|
||||
let path = ServoUrl::parse(&*self.ctfont(0.0)
|
||||
.expect("No Core Text font available!")
|
||||
.url()
|
||||
.expect("No URL for Core Text font!")
|
||||
.get_string()
|
||||
.to_string()).expect("Couldn't parse Core Text font URL!")
|
||||
.to_file_path()
|
||||
.as_url().unwrap().to_file_path()
|
||||
.expect("Core Text font didn't name a path!");
|
||||
let mut bytes = Vec::new();
|
||||
File::open(path).expect("Couldn't open font file!").read_to_end(&mut bytes).unwrap();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue