Skip to content
Permalink
Browse files

Urlmageddon: Use refcounted urls more often.

  • Loading branch information
emilio committed Nov 17, 2016
1 parent f14e733 commit 913c874cb55fd0fdc9e8f3a4c34624cd015fac8a
Showing with 1,044 additions and 718 deletions.
  1. +1 −1 components/compositing/Cargo.toml
  2. +3 −3 components/compositing/compositor.rs
  3. +3 −3 components/compositing/compositor_thread.rs
  4. +1 −1 components/compositing/lib.rs
  5. +3 −3 components/compositing/windowing.rs
  6. +1 −1 components/constellation/Cargo.toml
  7. +6 −6 components/constellation/constellation.rs
  8. +1 −1 components/constellation/lib.rs
  9. +3 −3 components/constellation/pipeline.rs
  10. +1 −1 components/devtools_traits/Cargo.toml
  11. +4 −4 components/devtools_traits/lib.rs
  12. +1 −1 components/gfx/Cargo.toml
  13. +8 −4 components/gfx/font_cache_thread.rs
  14. +2 −4 components/gfx/lib.rs
  15. +3 −3 components/gfx/platform/macos/font_template.rs
  16. +1 −1 components/layout/Cargo.toml
  17. +5 −5 components/layout/construct.rs
  18. +8 −8 components/layout/context.rs
  19. +4 −4 components/layout/display_list_builder.rs
  20. +2 −2 components/layout/fragment.rs
  21. +1 −1 components/layout/lib.rs
  22. +2 −1 components/layout_thread/Cargo.toml
  23. +20 −19 components/layout_thread/lib.rs
  24. +1 −1 components/layout_traits/Cargo.toml
  25. +3 −3 components/layout_traits/lib.rs
  26. +1 −0 components/net/Cargo.toml
  27. +2 −1 components/net/about_loader.rs
  28. +2 −2 components/net/blob_loader.rs
  29. +3 −3 components/net/chrome_loader.rs
  30. +3 −3 components/net/cookie.rs
  31. +3 −3 components/net/cookie_storage.rs
  32. +6 −5 components/net/data_loader.rs
  33. +3 −3 components/net/fetch/cors_cache.rs
  34. +3 −2 components/net/fetch/methods.rs
  35. +3 −3 components/net/file_loader.rs
  36. +40 −34 components/net/http_loader.rs
  37. +21 −21 components/net/image_cache_thread.rs
  38. +1 −0 components/net/lib.rs
  39. +4 −4 components/net/resource_thread.rs
  40. +9 −9 components/net/storage_thread.rs
  41. +3 −3 components/net/websocket_loader.rs
  42. +1 −0 components/net_traits/Cargo.toml
  43. +9 −6 components/net_traits/blob_url_store.rs
  44. +3 −3 components/net_traits/hosts.rs
  45. +14 −12 components/net_traits/image_cache_thread.rs
  46. +17 −16 components/net_traits/lib.rs
  47. +15 −14 components/net_traits/request.rs
  48. +7 −7 components/net_traits/response.rs
  49. +8 −8 components/net_traits/storage_thread.rs
  50. +1 −0 components/script/Cargo.toml
  51. +10 −10 components/script/document_loader.rs
  52. +2 −2 components/script/dom/bindings/trace.rs
  53. +2 −2 components/script/dom/canvasrenderingcontext2d.rs
  54. +2 −2 components/script/dom/client.rs
  55. +4 −4 components/script/dom/dedicatedworkerglobalscope.rs
  56. +9 −9 components/script/dom/document.rs
  57. +1 −1 components/script/dom/element.rs
  58. +4 −4 components/script/dom/eventsource.rs
  59. +3 −3 components/script/dom/eventtarget.rs
  60. +3 −3 components/script/dom/globalscope.rs
  61. +2 −2 components/script/dom/htmlanchorelement.rs
  62. +2 −2 components/script/dom/htmlbaseelement.rs
  63. +3 −3 components/script/dom/htmlbodyelement.rs
  64. +3 −3 components/script/dom/htmlcanvaselement.rs
  65. +14 −10 components/script/dom/htmlformelement.rs
  66. +3 −3 components/script/dom/htmliframeelement.rs
  67. +7 −7 components/script/dom/htmlimageelement.rs
  68. +2 −2 components/script/dom/htmllinkelement.rs
  69. +7 −7 components/script/dom/htmlmediaelement.rs
  70. +6 −6 components/script/dom/htmlscriptelement.rs
  71. +3 −3 components/script/dom/location.rs
  72. +3 −3 components/script/dom/node.rs
  73. +5 −5 components/script/dom/request.rs
  74. +7 −7 components/script/dom/response.rs
  75. +7 −7 components/script/dom/serviceworker.rs
  76. +7 −7 components/script/dom/serviceworkerglobalscope.rs
  77. +6 −6 components/script/dom/serviceworkerregistration.rs
  78. +2 −2 components/script/dom/servoparser/html.rs
  79. +6 −6 components/script/dom/servoparser/mod.rs
  80. +2 −2 components/script/dom/servoparser/xml.rs
  81. +5 −5 components/script/dom/storage.rs
  82. +13 −12 components/script/dom/url.rs
  83. +83 −22 components/script/dom/urlhelper.rs
  84. +6 −6 components/script/dom/websocket.rs
  85. +5 −5 components/script/dom/window.rs
  86. +4 −4 components/script/dom/workerglobalscope.rs
  87. +4 −4 components/script/dom/workerlocation.rs
  88. +3 −3 components/script/dom/xmldocument.rs
  89. +9 −7 components/script/dom/xmlhttprequest.rs
  90. +2 −2 components/script/fetch.rs
  91. +2 −2 components/script/layout_wrapper.rs
  92. +1 −0 components/script/lib.rs
  93. +3 −2 components/script/origin.rs
  94. +18 −15 components/script/script_thread.rs
  95. +5 −5 components/script/serviceworker_manager.rs
  96. +3 −3 components/script/webdriver_handlers.rs
  97. +1 −1 components/script_layout_interface/Cargo.toml
  98. +1 −1 components/script_layout_interface/lib.rs
  99. +3 −3 components/script_layout_interface/message.rs
  100. +2 −4 components/script_layout_interface/wrapper_traits.rs
  101. +1 −0 components/script_traits/Cargo.toml
  102. +8 −8 components/script_traits/lib.rs
  103. +10 −10 components/script_traits/script_msg.rs
  104. +2 −2 components/script_traits/webdriver_msg.rs
  105. +1 −0 components/servo/Cargo.toml
  106. +3 −2 components/servo/lib.rs
  107. +2 −2 components/style/Cargo.toml
  108. +4 −4 components/style/attr.rs
  109. +4 −5 components/style/font_face.rs
  110. +3 −3 components/style/gecko/wrapper.rs
  111. +1 −1 components/style/lib.rs
  112. +4 −4 components/style/parser.rs
  113. +8 −3 components/style/properties/declaration_block.rs
  114. +3 −3 components/style/properties/properties.mako.rs
  115. +4 −4 components/style/stylesheets.rs
  116. +2 −3 components/style/values/specified/image.rs
  117. +10 −9 components/style/values/specified/url.rs
  118. +22 −0 components/url/Cargo.toml
  119. +150 −0 components/url/lib.rs
  120. +2 −1 components/util/Cargo.toml
  121. +1 −0 components/util/lib.rs
  122. +8 −7 components/util/opts.rs
  123. +1 −0 components/webdriver_server/Cargo.toml
  124. +3 −3 components/webdriver_server/lib.rs
  125. +30 −11 ports/cef/Cargo.lock
  126. +2 −2 ports/cef/Cargo.toml
  127. +2 −2 ports/cef/lib.rs
  128. +5 −5 ports/cef/window.rs
  129. +11 −3 ports/geckolib/Cargo.lock
  130. +1 −1 ports/geckolib/Cargo.toml
  131. +4 −4 ports/geckolib/glue.rs
  132. +1 −1 ports/geckolib/lib.rs
  133. +1 −1 ports/glutin/Cargo.toml
  134. +1 −1 ports/glutin/lib.rs
  135. +4 −4 ports/glutin/window.rs
  136. +32 −12 ports/servo/Cargo.lock
  137. +1 −0 tests/unit/net/Cargo.toml
  138. +3 −3 tests/unit/net/chrome_loader.rs
  139. +5 −5 tests/unit/net/cookie.rs
  140. +3 −3 tests/unit/net/cookie_http_state.rs
  141. +2 −2 tests/unit/net/data_loader.rs
  142. +8 −7 tests/unit/net/fetch.rs
  143. +39 −39 tests/unit/net/http_loader.rs
  144. +4 −3 tests/unit/net/lib.rs
  145. +7 −7 tests/unit/net/resource_thread.rs
  146. +1 −1 tests/unit/script/Cargo.toml
  147. +1 −1 tests/unit/script/lib.rs
  148. +10 −10 tests/unit/script/origin.rs
  149. +1 −1 tests/unit/style/Cargo.toml
  150. +1 −1 tests/unit/style/lib.rs
  151. +3 −3 tests/unit/style/media_queries.rs
  152. +6 −6 tests/unit/style/parsing/border.rs
  153. +2 −2 tests/unit/style/parsing/font.rs
  154. +0 −1 tests/unit/style/parsing/image.rs
  155. +0 −1 tests/unit/style/parsing/inherited_text.rs
  156. +6 −6 tests/unit/style/parsing/mask.rs
  157. +2 −2 tests/unit/style/parsing/mod.rs
  158. +3 −3 tests/unit/style/stylesheets.rs
  159. +3 −3 tests/unit/style/viewport.rs
  160. +1 −1 tests/unit/stylo/Cargo.toml
  161. +1 −1 tests/unit/stylo/lib.rs
@@ -23,9 +23,9 @@ profile_traits = {path = "../profile_traits"}
script_traits = {path = "../script_traits"}
serde = "0.8"
serde_derive = "0.8"
servo_url = {path = "../url", features = ["servo"]}
style_traits = {path = "../style_traits"}
time = "0.1.17"
url = {version = "1.2", features = ["heap_size"]}
util = {path = "../util"}

[dependencies.webrender]
@@ -26,6 +26,7 @@ use script_traits::{ConstellationMsg, LayoutControlMsg, LoadData, MouseButton};
use script_traits::{MouseEventType, StackingContextScrollState};
use script_traits::{TouchpadPressurePhase, TouchEventType, TouchId, WindowSizeData, WindowSizeType};
use script_traits::CompositorEvent::{self, MouseMoveEvent, MouseButtonEvent, TouchEvent, TouchpadPressureEvent};
use servo_url::ServoUrl;
use std::collections::HashMap;
use std::fs::File;
use std::rc::Rc;
@@ -34,7 +35,6 @@ use style_traits::{PagePx, ViewportPx};
use style_traits::viewport::ViewportConstraints;
use time::{precise_time_ns, precise_time_s};
use touch::{TouchHandler, TouchAction};
use url::Url;
use util::geometry::ScreenPx;
use util::opts;
use util::prefs::PREFS;
@@ -697,7 +697,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
}
}

fn change_page_url(&mut self, _: PipelineId, url: Url) {
fn change_page_url(&mut self, _: PipelineId, url: ServoUrl) {
self.window.set_page_url(url);
}

@@ -881,7 +881,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
fn on_load_url_window_event(&mut self, url_string: String) {
debug!("osmain: loading URL `{}`", url_string);
self.got_load_complete_message = false;
match Url::parse(&url_string) {
match ServoUrl::parse(&url_string) {
Ok(url) => {
self.window.set_page_url(url.clone());
let msg = match self.root_pipeline {
@@ -14,11 +14,11 @@ use net_traits::image::base::Image;
use profile_traits::mem;
use profile_traits::time;
use script_traits::{AnimationState, ConstellationMsg, EventResult};
use servo_url::ServoUrl;
use std::fmt::{Debug, Error, Formatter};
use std::sync::mpsc::{Receiver, Sender};
use style_traits::cursor::Cursor;
use style_traits::viewport::ViewportConstraints;
use url::Url;
use webrender;
use webrender_traits;

@@ -76,7 +76,7 @@ pub enum Msg {
/// Alerts the compositor that the current page has changed its title.
ChangePageTitle(PipelineId, Option<String>),
/// Alerts the compositor that the current page has changed its URL.
ChangePageUrl(PipelineId, Url),
ChangePageUrl(PipelineId, ServoUrl),
/// Alerts the compositor that the given pipeline has changed whether it is running animations.
ChangeRunningAnimationsState(PipelineId, AnimationState),
/// Replaces the current frame tree, typically called during main frame navigation.
@@ -102,7 +102,7 @@ pub enum Msg {
/// A reply to the compositor asking if the output image is stable.
IsReadyToSaveImageReply(bool),
/// A favicon was detected
NewFavicon(Url),
NewFavicon(ServoUrl),
/// <head> tag finished parsing
HeadParsed,
/// A status message to be displayed by the browser chrome.
@@ -23,9 +23,9 @@ extern crate profile_traits;
extern crate script_traits;
#[macro_use]
extern crate serde_derive;
extern crate servo_url;
extern crate style_traits;
extern crate time;
extern crate url;
#[macro_use]
extern crate util;
extern crate webrender;
@@ -13,9 +13,9 @@ use gfx_traits::DevicePixel;
use msg::constellation_msg::{Key, KeyModifiers, KeyState};
use net_traits::net_error_list::NetError;
use script_traits::{MouseButton, TouchEventType, TouchId, TouchpadPressurePhase};
use servo_url::ServoUrl;
use std::fmt::{Debug, Error, Formatter};
use style_traits::cursor::Cursor;
use url::Url;
use util::geometry::ScreenPx;

#[derive(Clone)]
@@ -123,7 +123,7 @@ pub trait WindowMethods {
/// Sets the page title for the current page.
fn set_page_title(&self, title: Option<String>);
/// Sets the load data for the current page.
fn set_page_url(&self, url: Url);
fn set_page_url(&self, url: ServoUrl);
/// Called when the browser chrome should display a status message.
fn status(&self, Option<String>);
/// Called when the browser has started loading a frame.
@@ -160,5 +160,5 @@ pub trait WindowMethods {
fn supports_clipboard(&self) -> bool;

/// Add a favicon
fn set_favicon(&self, url: Url);
fn set_favicon(&self, url: ServoUrl);
}
@@ -33,7 +33,7 @@ script_traits = {path = "../script_traits"}
serde = "0.8"
serde_derive = "0.8"
style_traits = {path = "../style_traits"}
url = {version = "1.2", features = ["heap_size"]}
servo_url = {path = "../url", features = ["servo"]}
util = {path = "../util"}

[dependencies.webrender_traits]
@@ -46,6 +46,7 @@ use script_traits::{LayoutMsg as FromLayoutMsg, ScriptMsg as FromScriptMsg, Scri
use script_traits::{LogEntry, ServiceWorkerMsg, webdriver_msg};
use script_traits::{MozBrowserErrorType, MozBrowserEvent, WebDriverCommandMsg, WindowSizeData};
use script_traits::{SWManagerMsg, ScopeThings, WindowSizeType};
use servo_url::ServoUrl;
use std::borrow::ToOwned;
use std::collections::{HashMap, VecDeque};
use std::io::Error as IOError;
@@ -62,7 +63,6 @@ use style_traits::PagePx;
use style_traits::cursor::Cursor;
use style_traits::viewport::ViewportConstraints;
use timer_scheduler::TimerScheduler;
use url::Url;
use util::opts;
use util::prefs::PREFS;
use util::remutex::ReentrantMutex;
@@ -1047,15 +1047,15 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
}
}

fn handle_register_serviceworker(&self, scope_things: ScopeThings, scope: Url) {
fn handle_register_serviceworker(&self, scope_things: ScopeThings, scope: ServoUrl) {
if let Some(ref mgr) = self.swmanager_chan {
let _ = mgr.send(ServiceWorkerMsg::RegisterServiceWorker(scope_things, scope));
} else {
warn!("sending scope info to service worker manager failed");
}
}

fn handle_broadcast_storage_event(&self, pipeline_id: PipelineId, storage: StorageType, url: Url,
fn handle_broadcast_storage_event(&self, pipeline_id: PipelineId, storage: StorageType, url: ServoUrl,
key: Option<String>, old_value: Option<String>, new_value: Option<String>) {
let origin = url.origin();
for pipeline in self.pipelines.values() {
@@ -1204,7 +1204,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
self.close_pipeline(pending_pipeline_id, ExitPipelineMode::Force);
}

let failure_url = Url::parse("about:failure").expect("infallible");
let failure_url = ServoUrl::parse("about:failure").expect("infallible");

if let Some(pipeline_url) = pipeline_url {
if pipeline_url == failure_url {
@@ -1245,7 +1245,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
}
}

fn handle_init_load(&mut self, url: Url) {
fn handle_init_load(&mut self, url: ServoUrl) {
let window_size = self.window_size.visible_viewport;
let root_pipeline_id = PipelineId::new();
let root_frame_id = self.root_frame_id;
@@ -1331,7 +1331,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
let load_data = load_info.load_data.unwrap_or_else(|| {
let url = match old_pipeline {
Some(old_pipeline) => old_pipeline.url.clone(),
None => Url::parse("about:blank").expect("infallible"),
None => ServoUrl::parse("about:blank").expect("infallible"),
};

// TODO - loaddata here should have referrer info (not None, None)
@@ -36,8 +36,8 @@ extern crate script_traits;
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate servo_url;
extern crate style_traits;
extern crate url;
#[macro_use]
extern crate util;
extern crate webrender_traits;
@@ -26,6 +26,7 @@ use script_traits::{ConstellationControlMsg, InitialScriptState};
use script_traits::{LayoutControlMsg, LayoutMsg, LoadData, MozBrowserEvent};
use script_traits::{NewLayoutInfo, SWManagerMsg, SWManagerSenders, ScriptMsg};
use script_traits::{ScriptThreadFactory, TimerEventRequest, WindowSizeData};
use servo_url::ServoUrl;
use std::collections::HashMap;
use std::env;
use std::ffi::OsStr;
@@ -34,7 +35,6 @@ use std::process;
use std::rc::Rc;
use std::sync::mpsc::Sender;
use style_traits::{PagePx, ViewportPx};
use url::Url;
use util::opts::{self, Opts};
use util::prefs::{PREFS, Pref};
use webrender_traits;
@@ -58,7 +58,7 @@ pub struct Pipeline {
/// A channel to the compositor.
pub compositor_proxy: Box<CompositorProxy + 'static + Send>,
/// URL corresponding to the most recently-loaded page.
pub url: Url,
pub url: ServoUrl,
/// The title of the most recently-loaded page.
pub title: Option<String>,
pub size: Option<TypedSize2D<f32, PagePx>>,
@@ -264,7 +264,7 @@ impl Pipeline {
layout_chan: IpcSender<LayoutControlMsg>,
compositor_proxy: Box<CompositorProxy + 'static + Send>,
is_private: bool,
url: Url,
url: ServoUrl,
size: Option<TypedSize2D<f32, PagePx>>,
visible: bool)
-> Pipeline {
@@ -19,5 +19,5 @@ ipc-channel = "0.5"
msg = {path = "../msg"}
serde = "0.8"
serde_derive = "0.8"
servo_url = {path = "../url"}
time = "0.1"
url = {version = "1.2", features = ["heap_size"]}
@@ -24,24 +24,24 @@ extern crate ipc_channel;
extern crate msg;
extern crate serde;
#[macro_use] extern crate serde_derive;
extern crate servo_url;
extern crate time;
extern crate url;

use hyper::header::Headers;
use hyper::method::Method;
use ipc_channel::ipc::IpcSender;
use msg::constellation_msg::PipelineId;
use servo_url::ServoUrl;
use std::net::TcpStream;
use time::Duration;
use time::Tm;
use url::Url;

// Information would be attached to NewGlobal to be received and show in devtools.
// Extend these fields if we need more information.
#[derive(Debug, Deserialize, Serialize)]
pub struct DevtoolsPageInfo {
pub title: String,
pub url: Url
pub url: ServoUrl,
}

#[derive(Debug, Deserialize, HeapSizeOf, Serialize, Clone)]
@@ -292,7 +292,7 @@ pub enum CachedConsoleMessage {

#[derive(Debug, PartialEq)]
pub struct HttpRequest {
pub url: Url,
pub url: ServoUrl,
pub method: Method,
pub headers: Headers,
pub body: Option<Vec<u8>>,
@@ -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();
@@ -39,12 +39,12 @@ serde = "0.8"
serde_derive = "0.8"
serde_json = "0.8"
servo_atoms = {path = "../atoms"}
servo_url = {path = "../url"}
smallvec = "0.1"
style = {path = "../style"}
style_traits = {path = "../style_traits"}
unicode-bidi = "0.2"
unicode-script = {version = "0.1", features = ["harfbuzz"]}
url = {version = "1.2", features = ["heap_size"]}
util = {path = "../util"}

[dependencies.webrender_traits]

0 comments on commit 913c874

Please sign in to comment.
You can’t perform that action at this time.