mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Merge branch 'master' into fix-local-urls-only-10147
This commit is contained in:
commit
4965c93d16
37 changed files with 193 additions and 165 deletions
|
@ -1,5 +1,10 @@
|
|||
version: 1.0.{build}
|
||||
|
||||
environment:
|
||||
PATH: 'C:\msys64\mingw64\bin;C:\msys64\usr\bin\;%PATH%'
|
||||
MSYSTEM: 'MSYS'
|
||||
MSYS: 'winsymlinks=lnk'
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
@ -13,9 +18,6 @@ cache:
|
|||
- .cargo
|
||||
|
||||
install:
|
||||
- set MSYSTEM=MSYS
|
||||
- set MSYS="winsymlinks=lnk"
|
||||
- PATH C:\msys64\mingw64\bin;C:\msys64\usr\bin\;%PATH%
|
||||
- bash -lc "echo $MSYSTEM; pacman --needed --noconfirm -Sy pacman-mirrors"
|
||||
- bash -lc "pacman --noconfirm -Sy"
|
||||
- bash -lc "pacman -Sy --needed --noconfirm git mingw-w64-x86_64-toolchain mingw-w64-x86_64-freetype mingw-w64-x86_64-icu mingw-w64-x86_64-nspr mingw-w64-x86_64-ca-certificates mingw-w64-x86_64-expat mingw-w64-x86_64-cmake tar diffutils patch patchutils make python2-setuptools"
|
||||
|
|
|
@ -15,12 +15,11 @@ use gfx_traits::color;
|
|||
use ipc_channel::ipc::IpcSharedMemory;
|
||||
use ipc_channel::ipc::{self, IpcSender};
|
||||
use ipc_channel::router::ROUTER;
|
||||
use layers::platform::surface::NativeSurface;
|
||||
use num::ToPrimitive;
|
||||
use premultiplytable::PREMULTIPLY_TABLE;
|
||||
use std::borrow::ToOwned;
|
||||
use std::mem;
|
||||
use std::sync::mpsc::{Sender, channel};
|
||||
use std::sync::mpsc::channel;
|
||||
use util::opts;
|
||||
use util::thread::spawn_named;
|
||||
use util::vec::byte_swap;
|
||||
|
@ -205,13 +204,6 @@ impl<'a> CanvasPaintThread<'a> {
|
|||
}
|
||||
}
|
||||
}
|
||||
CanvasMsg::FromPaint(message) => {
|
||||
match message {
|
||||
FromPaintMsg::SendNativeSurface(chan) => {
|
||||
painter.send_native_surface(chan)
|
||||
}
|
||||
}
|
||||
}
|
||||
CanvasMsg::WebGL(_) => panic!("Wrong message sent to Canvas2D thread"),
|
||||
}
|
||||
}
|
||||
|
@ -550,12 +542,6 @@ impl<'a> CanvasPaintThread<'a> {
|
|||
})
|
||||
}
|
||||
|
||||
fn send_native_surface(&self, _chan: Sender<NativeSurface>) {
|
||||
// FIXME(mrobinson): We need a handle on the NativeDisplay to create compatible
|
||||
// NativeSurfaces for the compositor.
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn image_data(&self,
|
||||
dest_rect: Rect<i32>,
|
||||
canvas_size: Size2D<f64>,
|
||||
|
|
|
@ -2,16 +2,14 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use canvas_traits::{CanvasCommonMsg, CanvasMsg, CanvasPixelData, CanvasData, CanvasWebGLMsg};
|
||||
use canvas_traits::{FromLayoutMsg, FromPaintMsg};
|
||||
use canvas_traits::{CanvasCommonMsg, CanvasMsg, CanvasPixelData, CanvasData, CanvasWebGLMsg, FromLayoutMsg};
|
||||
use euclid::size::Size2D;
|
||||
use gleam::gl;
|
||||
use ipc_channel::ipc::{self, IpcSender, IpcSharedMemory};
|
||||
use ipc_channel::router::ROUTER;
|
||||
use layers::platform::surface::NativeSurface;
|
||||
use offscreen_gl_context::{ColorAttachmentType, GLContext, GLContextAttributes, NativeGLContext};
|
||||
use std::borrow::ToOwned;
|
||||
use std::sync::mpsc::{Sender, channel};
|
||||
use std::sync::mpsc::channel;
|
||||
use util::thread::spawn_named;
|
||||
use util::vec::byte_swap;
|
||||
use webrender_traits;
|
||||
|
@ -83,7 +81,7 @@ impl WebGLPaintThread {
|
|||
CanvasMsg::Common(message) => {
|
||||
match message {
|
||||
CanvasCommonMsg::Close => break,
|
||||
// TODO(ecoal95): handle error nicely
|
||||
// TODO(emilio): handle error nicely
|
||||
CanvasCommonMsg::Recreate(size) => painter.recreate(size).unwrap(),
|
||||
}
|
||||
},
|
||||
|
@ -93,12 +91,6 @@ impl WebGLPaintThread {
|
|||
painter.send_data(chan),
|
||||
}
|
||||
}
|
||||
CanvasMsg::FromPaint(message) => {
|
||||
match message {
|
||||
FromPaintMsg::SendNativeSurface(chan) =>
|
||||
painter.send_native_surface(chan),
|
||||
}
|
||||
}
|
||||
CanvasMsg::Canvas2d(_) => panic!("Wrong message sent to WebGLThread"),
|
||||
}
|
||||
}
|
||||
|
@ -147,12 +139,6 @@ impl WebGLPaintThread {
|
|||
}
|
||||
}
|
||||
|
||||
fn send_native_surface(&self, _: Sender<NativeSurface>) {
|
||||
// FIXME(ecoal95): We need to make a clone of the surface in order to
|
||||
// implement this
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
fn recreate(&mut self, size: Size2D<i32>) -> Result<(), &'static str> {
|
||||
match self.data {
|
||||
|
|
|
@ -15,10 +15,6 @@ path = "../gfx_traits"
|
|||
git = "https://github.com/servo/rust-azure"
|
||||
features = ["plugins"]
|
||||
|
||||
[dependencies.layers]
|
||||
git = "https://github.com/servo/rust-layers"
|
||||
features = ["plugins"]
|
||||
|
||||
[dependencies.offscreen_gl_context]
|
||||
git = "https://github.com/ecoal95/rust-offscreen-rendering-context"
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@ extern crate euclid;
|
|||
extern crate gfx_traits;
|
||||
extern crate heapsize;
|
||||
extern crate ipc_channel;
|
||||
extern crate layers;
|
||||
extern crate offscreen_gl_context;
|
||||
extern crate serde;
|
||||
extern crate util;
|
||||
|
@ -35,11 +34,8 @@ use euclid::rect::Rect;
|
|||
use euclid::size::Size2D;
|
||||
use gfx_traits::color;
|
||||
use ipc_channel::ipc::{IpcSender, IpcSharedMemory};
|
||||
use layers::platform::surface::NativeSurface;
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use std::default::Default;
|
||||
use std::str::FromStr;
|
||||
use std::sync::mpsc::Sender;
|
||||
|
||||
pub use webrender_traits::{WebGLFramebufferBindingRequest, WebGLError, WebGLParameter, WebGLResult, WebGLContextId};
|
||||
pub use webrender_traits::WebGLCommand as CanvasWebGLMsg;
|
||||
|
@ -55,7 +51,6 @@ pub enum CanvasMsg {
|
|||
Canvas2d(Canvas2dMsg),
|
||||
Common(CanvasCommonMsg),
|
||||
FromLayout(FromLayoutMsg),
|
||||
FromPaint(FromPaintMsg),
|
||||
WebGL(CanvasWebGLMsg),
|
||||
}
|
||||
|
||||
|
@ -82,23 +77,6 @@ pub enum FromLayoutMsg {
|
|||
SendData(IpcSender<CanvasData>),
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub enum FromPaintMsg {
|
||||
SendNativeSurface(Sender<NativeSurface>),
|
||||
}
|
||||
|
||||
impl Serialize for FromPaintMsg {
|
||||
fn serialize<S>(&self, _: &mut S) -> Result<(), S::Error> where S: Serializer {
|
||||
panic!("can't serialize a `FromPaintMsg`!")
|
||||
}
|
||||
}
|
||||
|
||||
impl Deserialize for FromPaintMsg {
|
||||
fn deserialize<D>(_: &mut D) -> Result<FromPaintMsg, D::Error> where D: Deserializer {
|
||||
panic!("can't deserialize a `FromPaintMsg`!")
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub enum Canvas2dMsg {
|
||||
Arc(Point2D<f32>, f32, f32, f32, bool),
|
||||
|
|
|
@ -1144,7 +1144,8 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
layer_id: LayerId,
|
||||
point: Point2D<f32>) {
|
||||
if self.move_layer(pipeline_id, layer_id, Point2D::from_untyped(&point)) {
|
||||
self.perform_updates_after_scroll()
|
||||
self.perform_updates_after_scroll();
|
||||
self.send_viewport_rects_for_all_layers()
|
||||
} else {
|
||||
self.fragment_point = Some(point)
|
||||
}
|
||||
|
|
|
@ -77,6 +77,12 @@ struct EvaluateJSReply {
|
|||
helperResult: Json,
|
||||
}
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
struct SetPreferencesReply {
|
||||
from: String,
|
||||
updated: Vec<String>,
|
||||
}
|
||||
|
||||
pub struct ConsoleActor {
|
||||
pub name: String,
|
||||
pub pipeline: PipelineId,
|
||||
|
@ -237,6 +243,15 @@ impl Actor for ConsoleActor {
|
|||
ActorMessageStatus::Processed
|
||||
}
|
||||
|
||||
"setPreferences" => {
|
||||
let msg = SetPreferencesReply {
|
||||
from: self.name(),
|
||||
updated: vec![],
|
||||
};
|
||||
stream.write_json_packet(&msg);
|
||||
ActorMessageStatus::Processed
|
||||
}
|
||||
|
||||
_ => ActorMessageStatus::Ignored
|
||||
})
|
||||
}
|
||||
|
|
|
@ -21,12 +21,14 @@ struct ActorTraits {
|
|||
}
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
struct ErrorReply {
|
||||
struct ListAddonsReply {
|
||||
from: String,
|
||||
error: String,
|
||||
message: String,
|
||||
addons: Vec<AddonMsg>,
|
||||
}
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
enum AddonMsg {}
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
struct ListTabsReply {
|
||||
from: String,
|
||||
|
@ -57,10 +59,9 @@ impl Actor for RootActor {
|
|||
stream: &mut TcpStream) -> Result<ActorMessageStatus, ()> {
|
||||
Ok(match msg_type {
|
||||
"listAddons" => {
|
||||
let actor = ErrorReply {
|
||||
let actor = ListAddonsReply {
|
||||
from: "root".to_owned(),
|
||||
error: "noAddons".to_owned(),
|
||||
message: "This root actor has no browser addons.".to_owned(),
|
||||
addons: vec![],
|
||||
};
|
||||
stream.write_json_packet(&actor);
|
||||
ActorMessageStatus::Processed
|
||||
|
|
|
@ -74,6 +74,7 @@ pub struct TabActor {
|
|||
pub timeline: String,
|
||||
pub profiler: String,
|
||||
pub performance: String,
|
||||
pub thread: String,
|
||||
}
|
||||
|
||||
impl Actor for TabActor {
|
||||
|
@ -98,7 +99,7 @@ impl Actor for TabActor {
|
|||
let msg = TabAttachedReply {
|
||||
from: self.name(),
|
||||
__type__: "tabAttached".to_owned(),
|
||||
threadActor: self.name(),
|
||||
threadActor: self.thread.clone(),
|
||||
cacheDisabled: false,
|
||||
javascriptEnabled: true,
|
||||
traits: TabTraits,
|
||||
|
|
90
components/devtools/actors/thread.rs
Normal file
90
components/devtools/actors/thread.rs
Normal file
|
@ -0,0 +1,90 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use actor::{Actor, ActorMessageStatus, ActorRegistry};
|
||||
use protocol::JsonPacketStream;
|
||||
use rustc_serialize::json;
|
||||
use std::net::TcpStream;
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
struct ThreadAttachedReply {
|
||||
from: String,
|
||||
__type__: String,
|
||||
actor: String,
|
||||
poppedFrames: Vec<PoppedFrameMsg>,
|
||||
why: WhyMsg,
|
||||
}
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
enum PoppedFrameMsg {}
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
struct WhyMsg {
|
||||
__type__: String,
|
||||
}
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
struct ThreadResumedReply {
|
||||
from: String,
|
||||
__type__: String,
|
||||
}
|
||||
|
||||
#[derive(RustcEncodable)]
|
||||
struct ReconfigureReply {
|
||||
from: String
|
||||
}
|
||||
|
||||
pub struct ThreadActor {
|
||||
name: String,
|
||||
}
|
||||
|
||||
impl ThreadActor {
|
||||
pub fn new(name: String) -> ThreadActor {
|
||||
ThreadActor {
|
||||
name: name,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Actor for ThreadActor {
|
||||
fn name(&self) -> String {
|
||||
self.name.clone()
|
||||
}
|
||||
|
||||
fn handle_message(&self,
|
||||
registry: &ActorRegistry,
|
||||
msg_type: &str,
|
||||
_msg: &json::Object,
|
||||
stream: &mut TcpStream) -> Result<ActorMessageStatus, ()> {
|
||||
Ok(match msg_type {
|
||||
"attach" => {
|
||||
let msg = ThreadAttachedReply {
|
||||
from: self.name(),
|
||||
__type__: "paused".to_owned(),
|
||||
actor: registry.new_name("pause"),
|
||||
poppedFrames: vec![],
|
||||
why: WhyMsg { __type__: "attached".to_owned() },
|
||||
};
|
||||
stream.write_json_packet(&msg);
|
||||
ActorMessageStatus::Processed
|
||||
},
|
||||
|
||||
"resume" => {
|
||||
let msg = ThreadResumedReply {
|
||||
from: self.name(),
|
||||
__type__: "resumed".to_owned(),
|
||||
};
|
||||
stream.write_json_packet(&msg);
|
||||
ActorMessageStatus::Processed
|
||||
},
|
||||
|
||||
"reconfigure" => {
|
||||
stream.write_json_packet(&ReconfigureReply { from: self.name() });
|
||||
ActorMessageStatus::Processed
|
||||
}
|
||||
|
||||
_ => ActorMessageStatus::Ignored,
|
||||
})
|
||||
}
|
||||
}
|
|
@ -42,6 +42,7 @@ use actors::performance::PerformanceActor;
|
|||
use actors::profiler::ProfilerActor;
|
||||
use actors::root::RootActor;
|
||||
use actors::tab::TabActor;
|
||||
use actors::thread::ThreadActor;
|
||||
use actors::timeline::TimelineActor;
|
||||
use actors::worker::WorkerActor;
|
||||
use devtools_traits::{ChromeToDevtoolsControlMsg, ConsoleMessage, DevtoolsControlMsg};
|
||||
|
@ -73,6 +74,7 @@ mod actors {
|
|||
pub mod profiler;
|
||||
pub mod root;
|
||||
pub mod tab;
|
||||
pub mod thread;
|
||||
pub mod timeline;
|
||||
pub mod worker;
|
||||
}
|
||||
|
@ -248,7 +250,7 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
|
|||
let (pipeline, worker_id) = ids;
|
||||
|
||||
//TODO: move all this actor creation into a constructor method on TabActor
|
||||
let (tab, console, inspector, timeline, profiler, performance) = {
|
||||
let (tab, console, inspector, timeline, profiler, performance, thread) = {
|
||||
let console = ConsoleActor {
|
||||
name: actors.new_name("console"),
|
||||
script_chan: script_sender.clone(),
|
||||
|
@ -271,6 +273,8 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
|
|||
let profiler = ProfilerActor::new(actors.new_name("profiler"));
|
||||
let performance = PerformanceActor::new(actors.new_name("performance"));
|
||||
|
||||
let thread = ThreadActor::new(actors.new_name("context"));
|
||||
|
||||
let DevtoolsPageInfo { title, url } = page_info;
|
||||
let tab = TabActor {
|
||||
name: actors.new_name("tab"),
|
||||
|
@ -281,12 +285,13 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
|
|||
timeline: timeline.name(),
|
||||
profiler: profiler.name(),
|
||||
performance: performance.name(),
|
||||
thread: thread.name(),
|
||||
};
|
||||
|
||||
let root = actors.find_mut::<RootActor>("root");
|
||||
root.tabs.push(tab.name.clone());
|
||||
|
||||
(tab, console, inspector, timeline, profiler, performance)
|
||||
(tab, console, inspector, timeline, profiler, performance, thread)
|
||||
};
|
||||
|
||||
if let Some(id) = worker_id {
|
||||
|
@ -306,6 +311,7 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
|
|||
actors.register(box timeline);
|
||||
actors.register(box profiler);
|
||||
actors.register(box performance);
|
||||
actors.register(box thread);
|
||||
}
|
||||
|
||||
fn handle_console_message(actors: Arc<Mutex<ActorRegistry>>,
|
||||
|
|
|
@ -41,9 +41,6 @@ path = "../gfx_traits"
|
|||
[dependencies.net_traits]
|
||||
path = "../net_traits"
|
||||
|
||||
[dependencies.canvas_traits]
|
||||
path = "../canvas_traits"
|
||||
|
||||
[dependencies.util]
|
||||
path = "../util"
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@ extern crate app_units;
|
|||
extern crate azure;
|
||||
#[macro_use]
|
||||
extern crate bitflags;
|
||||
extern crate canvas_traits;
|
||||
|
||||
// Mac OS-specific library dependencies
|
||||
#[cfg(target_os = "macos")] extern crate core_foundation;
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
use app_units::Au;
|
||||
use azure::AzFloat;
|
||||
use azure::azure_hl::{BackendType, Color, DrawTarget, SurfaceFormat};
|
||||
use canvas_traits::CanvasMsg;
|
||||
use display_list::{DisplayItem, DisplayList, DisplayListEntry, DisplayListTraversal};
|
||||
use display_list::{LayerInfo, StackingContext, StackingContextId, StackingContextType};
|
||||
use euclid::Matrix4;
|
||||
|
@ -343,7 +342,6 @@ pub enum Msg {
|
|||
#[derive(Deserialize, Serialize)]
|
||||
pub enum LayoutToPaintMsg {
|
||||
PaintInit(Epoch, Arc<DisplayList>),
|
||||
CanvasLayer(LayerId, IpcSender<CanvasMsg>),
|
||||
Exit(IpcSender<()>),
|
||||
}
|
||||
|
||||
|
@ -379,9 +377,6 @@ pub struct PaintThread<C> {
|
|||
|
||||
/// Communication handles to each of the worker threads.
|
||||
worker_threads: Vec<WorkerThreadProxy>,
|
||||
|
||||
/// A map to track the canvas specific layers
|
||||
canvas_map: HashMap<LayerId, IpcSender<CanvasMsg>>,
|
||||
}
|
||||
|
||||
// If we implement this as a function, we get borrowck errors from borrowing
|
||||
|
@ -431,7 +426,6 @@ impl<C> PaintThread<C> where C: PaintListener + Send + 'static {
|
|||
paint_permission: false,
|
||||
current_epoch: None,
|
||||
worker_threads: worker_threads,
|
||||
canvas_map: HashMap::new()
|
||||
};
|
||||
|
||||
let reporter_name = format!("paint-reporter-{}", id);
|
||||
|
@ -475,11 +469,6 @@ impl<C> PaintThread<C> where C: PaintListener + Send + 'static {
|
|||
self.initialize_layers();
|
||||
}
|
||||
}
|
||||
// Inserts a new canvas renderer to the layer map
|
||||
Msg::FromLayout(LayoutToPaintMsg::CanvasLayer(layer_id, canvas_renderer)) => {
|
||||
debug!("Renderer received for canvas with layer {:?}", layer_id);
|
||||
self.canvas_map.insert(layer_id, canvas_renderer);
|
||||
}
|
||||
Msg::FromChrome(ChromeToPaintMsg::Paint(requests, frame_tree_id)) => {
|
||||
if self.paint_permission && self.root_display_list.is_some() {
|
||||
let mut replies = Vec::new();
|
||||
|
|
|
@ -12,9 +12,6 @@ path = "lib.rs"
|
|||
git = "https://github.com/servo/rust-azure"
|
||||
features = ["plugins"]
|
||||
|
||||
[dependencies.canvas]
|
||||
path = "../canvas"
|
||||
|
||||
[dependencies.canvas_traits]
|
||||
path = "../canvas_traits"
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#![allow(unsafe_code)]
|
||||
|
||||
use app_units::Au;
|
||||
use canvas_traits::CanvasMsg;
|
||||
use euclid::Rect;
|
||||
use fnv::FnvHasher;
|
||||
use gfx::display_list::WebRenderImageInfo;
|
||||
|
@ -16,7 +15,7 @@ use gfx::font_cache_thread::FontCacheThread;
|
|||
use gfx::font_context::FontContext;
|
||||
use gfx_traits::LayerId;
|
||||
use heapsize::HeapSizeOf;
|
||||
use ipc_channel::ipc::{self, IpcSender, IpcSharedMemory};
|
||||
use ipc_channel::ipc::{self, IpcSharedMemory};
|
||||
use net_traits::image::base::Image;
|
||||
use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheThread, ImageResponse, ImageState};
|
||||
use net_traits::image_cache_thread::{ImageOrMetadataAvailable, UsePlaceholder};
|
||||
|
@ -24,7 +23,6 @@ use std::cell::{RefCell, RefMut};
|
|||
use std::collections::HashMap;
|
||||
use std::hash::BuildHasherDefault;
|
||||
use std::rc::Rc;
|
||||
use std::sync::mpsc::Sender;
|
||||
use std::sync::{Arc, Mutex, RwLock};
|
||||
use style::context::{LocalStyleContext, StyleContext};
|
||||
use style::matching::{ApplicableDeclarationsCache, StyleSharingCandidateCache};
|
||||
|
@ -95,9 +93,6 @@ pub struct SharedLayoutContext {
|
|||
/// The URL.
|
||||
pub url: Url,
|
||||
|
||||
/// A channel to send canvas renderers to paint thread, in order to correctly paint the layers
|
||||
pub canvas_layers_sender: Mutex<Sender<(LayerId, IpcSender<CanvasMsg>)>>,
|
||||
|
||||
/// The visible rects for each layer, as reported to us by the compositor.
|
||||
pub visible_rects: Arc<HashMap<LayerId, Rect<Au>, BuildHasherDefault<FnvHasher>>>,
|
||||
|
||||
|
|
|
@ -1197,13 +1197,7 @@ impl FragmentDisplayListBuilding for Fragment {
|
|||
let (sender, receiver) = ipc::channel().unwrap();
|
||||
ipc_renderer.send(CanvasMsg::FromLayout(
|
||||
FromLayoutMsg::SendData(sender))).unwrap();
|
||||
let data = receiver.recv().unwrap();
|
||||
|
||||
// Propagate the layer and the renderer to the paint task.
|
||||
state.layout_context.shared.canvas_layers_sender.lock().unwrap().send(
|
||||
(layer_id, (*ipc_renderer).clone())).unwrap();
|
||||
|
||||
data
|
||||
receiver.recv().unwrap()
|
||||
},
|
||||
None => CanvasData::Pixels(CanvasPixelData {
|
||||
image_data: IpcSharedMemory::from_byte(0xFFu8, width * height * 4),
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
use animation;
|
||||
use app_units::Au;
|
||||
use azure::azure::AzColor;
|
||||
use canvas_traits::CanvasMsg;
|
||||
use construct::ConstructionResult;
|
||||
use context::{LayoutContext, SharedLayoutContext, heap_size_of_local_context};
|
||||
use display_list_builder::ToGfxColor;
|
||||
|
@ -186,11 +185,6 @@ pub struct LayoutThread {
|
|||
/// Is this the first reflow in this LayoutThread?
|
||||
first_reflow: bool,
|
||||
|
||||
/// To receive a canvas renderer associated to a layer, this message is propagated
|
||||
/// to the paint chan
|
||||
canvas_layers_receiver: Receiver<(LayerId, IpcSender<CanvasMsg>)>,
|
||||
canvas_layers_sender: Sender<(LayerId, IpcSender<CanvasMsg>)>,
|
||||
|
||||
/// The workers that we use for parallel operation.
|
||||
parallel_traversal: Option<WorkQueue<SharedLayoutContext, WorkQueueData>>,
|
||||
|
||||
|
@ -406,7 +400,6 @@ impl LayoutThread {
|
|||
|
||||
// Create the channel on which new animations can be sent.
|
||||
let (new_animations_sender, new_animations_receiver) = channel();
|
||||
let (canvas_layers_sender, canvas_layers_receiver) = channel();
|
||||
|
||||
// Proxy IPC messages from the pipeline to the layout thread.
|
||||
let pipeline_receiver = ROUTER.route_ipc_receiver_to_new_mpsc_receiver(pipeline_port);
|
||||
|
@ -449,8 +442,6 @@ impl LayoutThread {
|
|||
image_cache_sender: ImageCacheChan(ipc_image_cache_sender),
|
||||
font_cache_receiver: font_cache_receiver,
|
||||
font_cache_sender: ipc_font_cache_sender,
|
||||
canvas_layers_receiver: canvas_layers_receiver,
|
||||
canvas_layers_sender: canvas_layers_sender,
|
||||
parallel_traversal: parallel_traversal,
|
||||
generation: 0,
|
||||
new_animations_sender: new_animations_sender,
|
||||
|
@ -521,7 +512,6 @@ impl LayoutThread {
|
|||
image_cache_thread: self.image_cache_thread.clone(),
|
||||
image_cache_sender: Mutex::new(self.image_cache_sender.clone()),
|
||||
font_cache_thread: Mutex::new(self.font_cache_thread.clone()),
|
||||
canvas_layers_sender: Mutex::new(self.canvas_layers_sender.clone()),
|
||||
url: (*url).clone(),
|
||||
visible_rects: self.visible_rects.clone(),
|
||||
webrender_image_cache: self.webrender_image_cache.clone(),
|
||||
|
@ -1148,12 +1138,6 @@ impl LayoutThread {
|
|||
self.root_flow = self.try_get_layout_root(node);
|
||||
}
|
||||
|
||||
// Send new canvas renderers to the paint thread
|
||||
while let Ok((layer_id, renderer)) = self.canvas_layers_receiver.try_recv() {
|
||||
// Just send if there's an actual renderer
|
||||
self.paint_chan.send(LayoutToPaintMsg::CanvasLayer(layer_id, renderer)).unwrap();
|
||||
}
|
||||
|
||||
// Perform post-style recalculation layout passes.
|
||||
self.perform_post_style_recalc_layout_passes(&data.reflow_info,
|
||||
&mut rw_data,
|
||||
|
|
|
@ -4,9 +4,6 @@
|
|||
|
||||
//! Traversals over the DOM and flow trees, running the layout computations.
|
||||
|
||||
// For thread_local.
|
||||
#![allow(unsafe_code)]
|
||||
|
||||
use construct::FlowConstructor;
|
||||
use context::{LayoutContext, SharedLayoutContext};
|
||||
use display_list_builder::DisplayListBuildState;
|
||||
|
@ -15,7 +12,7 @@ use flow::{self, Flow, CAN_BE_FRAGMENTED};
|
|||
use gfx::display_list::OpaqueNode;
|
||||
use incremental::{BUBBLE_ISIZES, REFLOW, REFLOW_OUT_OF_FLOW, REPAINT, RestyleDamage};
|
||||
use std::mem;
|
||||
use style::context::{StyleContext, ReflowGoal};
|
||||
use style::context::StyleContext;
|
||||
use style::matching::MatchMethods;
|
||||
use style::traversal::{DomTraversalContext, STYLE_BLOOM};
|
||||
use style::traversal::{put_thread_local_bloom_filter, recalc_style_at};
|
||||
|
|
|
@ -186,6 +186,9 @@ pub enum Key {
|
|||
RightAlt,
|
||||
RightSuper,
|
||||
Menu,
|
||||
|
||||
NavigateBackward,
|
||||
NavigateForward,
|
||||
}
|
||||
|
||||
bitflags! {
|
||||
|
|
|
@ -294,6 +294,7 @@ fn basic_fetch(request: Rc<Request>) -> Response {
|
|||
response.headers.set(ContentType(Mime(
|
||||
TopLevel::Text, SubLevel::Html,
|
||||
vec![(Attr::Charset, Value::Utf8)])));
|
||||
*response.body.lock().unwrap() = ResponseBody::Done(vec![]);
|
||||
response
|
||||
},
|
||||
_ => Response::network_error()
|
||||
|
|
|
@ -50,7 +50,7 @@ git = "https://github.com/servo/rust-mozjs"
|
|||
git = "https://github.com/ecoal95/rust-offscreen-rendering-context"
|
||||
|
||||
[dependencies.angle]
|
||||
git = "https://github.com/ecoal95/angle"
|
||||
git = "https://github.com/emilio/angle"
|
||||
branch = "servo"
|
||||
|
||||
[dependencies.ipc-channel]
|
||||
|
|
|
@ -5334,8 +5334,8 @@ class CGBindingRoot(CGThing):
|
|||
# Do codegen for all the typdefs
|
||||
for t in typedefs:
|
||||
if t.innerType.isUnion():
|
||||
cgthings.extend([CGGeneric("\npub type %s = %s;\n\n" % (t.identifier.name,
|
||||
"UnionTypes::" + str(t.innerType)))])
|
||||
cgthings.extend([CGGeneric("\npub use dom::bindings::codegen::UnionTypes::%s as %s;\n\n" %
|
||||
(t.innerType, t.identifier.name))])
|
||||
else:
|
||||
assert not typeNeedsRooting(t.innerType, config.getDescriptorProvider)
|
||||
cgthings.extend([CGGeneric("\npub type %s = " % (t.identifier.name)),
|
||||
|
|
|
@ -206,7 +206,7 @@ impl HTMLCanvasElement {
|
|||
CanvasData::Pixels(pixel_data)
|
||||
=> pixel_data.image_data.to_vec(),
|
||||
CanvasData::WebGL(_)
|
||||
// TODO(ecoal95): Not sure if WebGL canvas is required for 2d spec,
|
||||
// TODO(emilio): Not sure if WebGL canvas is required for 2d spec,
|
||||
// but I think it's not.
|
||||
=> return None,
|
||||
}
|
||||
|
|
|
@ -148,7 +148,7 @@ impl KeyboardEvent {
|
|||
}
|
||||
|
||||
|
||||
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3Events-key.html
|
||||
// https://w3c.github.io/uievents-key/#key-value-tables
|
||||
pub fn key_value(key: Key, mods: KeyModifiers) -> &'static str {
|
||||
let shift = mods.contains(constellation_msg::SHIFT);
|
||||
match key {
|
||||
|
@ -319,6 +319,8 @@ pub fn key_value(key: Key, mods: KeyModifiers) -> &'static str {
|
|||
Key::RightAlt => "Alt",
|
||||
Key::RightSuper => "Super",
|
||||
Key::Menu => "ContextMenu",
|
||||
Key::NavigateForward => "BrowserForward",
|
||||
Key::NavigateBackward => "BrowserBack",
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -489,11 +491,13 @@ fn key_from_string(key_string: &str, location: u32) -> Option<Key> {
|
|||
"Alt" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT => Some(Key::RightAlt),
|
||||
"Super" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT => Some(Key::RightSuper),
|
||||
"ContextMenu" => Some(Key::Menu),
|
||||
"BrowserForward" => Some(Key::NavigateForward),
|
||||
"BrowserBack" => Some(Key::NavigateBackward),
|
||||
_ => None
|
||||
}
|
||||
}
|
||||
|
||||
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3Events-code.html
|
||||
// https://w3c.github.io/uievents-code/#code-value-tables
|
||||
fn code_value(key: Key) -> &'static str {
|
||||
match key {
|
||||
Key::Space => "Space",
|
||||
|
@ -613,7 +617,10 @@ fn code_value(key: Key) -> &'static str {
|
|||
Key::LeftControl | Key::RightControl => "Control",
|
||||
Key::LeftAlt | Key::RightAlt => "Alt",
|
||||
Key::LeftSuper | Key::RightSuper => "Super",
|
||||
Key::Menu => "Menu",
|
||||
Key::Menu => "ContextMenu",
|
||||
|
||||
Key::NavigateForward => "BrowserForward",
|
||||
Key::NavigateBackward => "BrowserBackward",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ impl WebGLProgram {
|
|||
_ => return Err(WebGLError::InvalidOperation),
|
||||
};
|
||||
|
||||
// TODO(ecoal95): Differentiate between same shader already assigned and other previous
|
||||
// TODO(emilio): Differentiate between same shader already assigned and other previous
|
||||
// shader.
|
||||
if shader_slot.get().is_some() {
|
||||
return Err(WebGLError::InvalidOperation);
|
||||
|
|
|
@ -610,7 +610,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO(ecoal95): Probably in the future we should keep track of the
|
||||
// TODO(emilio): Probably in the future we should keep track of the
|
||||
// generated objects, either here or in the webgl thread
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5
|
||||
fn CreateBuffer(&self) -> Option<Root<WebGLBuffer>> {
|
||||
|
@ -1116,8 +1116,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
if texture.is_none() {
|
||||
return self.webgl_error(InvalidOperation);
|
||||
}
|
||||
// TODO(ecoal95): Validate more parameters
|
||||
|
||||
// TODO(emilio): Validate more parameters
|
||||
let source = match source {
|
||||
Some(s) => s,
|
||||
None => return,
|
||||
|
@ -1144,7 +1143,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
};
|
||||
|
||||
let size = Size2D::new(img.width as i32, img.height as i32);
|
||||
// TODO(ecoal95): Validate that the format argument is coherent with the image.
|
||||
// TODO(emilio): Validate that the format argument is coherent with the image.
|
||||
// RGB8 should be easy to support too
|
||||
let mut data = match img.format {
|
||||
PixelFormat::RGBA8 => img.bytes.to_vec(),
|
||||
|
@ -1155,7 +1154,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
|
||||
(data, size)
|
||||
},
|
||||
// TODO(ecoal95): Getting canvas data is implemented in CanvasRenderingContext2D, but
|
||||
// TODO(emilio): Getting canvas data is implemented in CanvasRenderingContext2D, but
|
||||
// we need to refactor it moving it to `HTMLCanvasElement` and supporting WebGLContext
|
||||
ImageDataOrHTMLImageElementOrHTMLCanvasElementOrHTMLVideoElement::HTMLCanvasElement(canvas) => {
|
||||
let canvas = canvas.r();
|
||||
|
@ -1170,7 +1169,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
=> unimplemented!(),
|
||||
};
|
||||
|
||||
// TODO(ecoal95): Invert axis, convert colorspace, premultiply alpha if requested
|
||||
// TODO(emilio): Invert axis, convert colorspace, premultiply alpha if requested
|
||||
let msg = CanvasWebGLMsg::TexImage2D(target, level, internal_format as i32,
|
||||
size.width, size.height,
|
||||
format, data_type, pixels);
|
||||
|
|
7
components/servo/Cargo.lock
generated
7
components/servo/Cargo.lock
generated
|
@ -72,7 +72,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
[[package]]
|
||||
name = "angle"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/ecoal95/angle?branch=servo#b31e70ef5cb675582de910d09b0c385ea2000a64"
|
||||
source = "git+https://github.com/emilio/angle?branch=servo#b31e70ef5cb675582de910d09b0c385ea2000a64"
|
||||
dependencies = [
|
||||
"libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -187,7 +187,6 @@ dependencies = [
|
|||
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)",
|
||||
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
|
||||
"offscreen_gl_context 0.1.0 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)",
|
||||
"plugins 0.0.1",
|
||||
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -681,7 +680,6 @@ dependencies = [
|
|||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"azure 0.4.3 (git+https://github.com/servo/rust-azure)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas_traits 0.0.1",
|
||||
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-text 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1048,7 +1046,6 @@ dependencies = [
|
|||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"azure 0.4.3 (git+https://github.com/servo/rust-azure)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas 0.0.1",
|
||||
"canvas_traits 0.0.1",
|
||||
"cssparser 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1689,7 +1686,7 @@ dependencies = [
|
|||
name = "script"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"angle 0.1.0 (git+https://github.com/ecoal95/angle?branch=servo)",
|
||||
"angle 0.1.0 (git+https://github.com/emilio/angle?branch=servo)",
|
||||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas 0.0.1",
|
||||
|
|
|
@ -266,7 +266,7 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
|
|||
let map = match pseudo_element {
|
||||
Some(ref pseudo) => match self.pseudos_map.get(pseudo) {
|
||||
Some(map) => map,
|
||||
// TODO(ecoal95): get non eagerly-cascaded pseudo-element rules here.
|
||||
// TODO(emilio): get non eagerly-cascaded pseudo-element rules here.
|
||||
// Actually assume there are no rules applicable.
|
||||
None => return true,
|
||||
},
|
||||
|
|
7
ports/cef/Cargo.lock
generated
7
ports/cef/Cargo.lock
generated
|
@ -57,7 +57,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
[[package]]
|
||||
name = "angle"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/ecoal95/angle?branch=servo#b31e70ef5cb675582de910d09b0c385ea2000a64"
|
||||
source = "git+https://github.com/emilio/angle?branch=servo#b31e70ef5cb675582de910d09b0c385ea2000a64"
|
||||
dependencies = [
|
||||
"libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -172,7 +172,6 @@ dependencies = [
|
|||
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)",
|
||||
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
|
||||
"offscreen_gl_context 0.1.0 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)",
|
||||
"plugins 0.0.1",
|
||||
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -610,7 +609,6 @@ dependencies = [
|
|||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"azure 0.4.3 (git+https://github.com/servo/rust-azure)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas_traits 0.0.1",
|
||||
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-text 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -968,7 +966,6 @@ dependencies = [
|
|||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"azure 0.4.3 (git+https://github.com/servo/rust-azure)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas 0.0.1",
|
||||
"canvas_traits 0.0.1",
|
||||
"cssparser 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1564,7 +1561,7 @@ dependencies = [
|
|||
name = "script"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"angle 0.1.0 (git+https://github.com/ecoal95/angle?branch=servo)",
|
||||
"angle 0.1.0 (git+https://github.com/emilio/angle?branch=servo)",
|
||||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas 0.0.1",
|
||||
|
|
|
@ -498,6 +498,8 @@ impl Window {
|
|||
VirtualKeyCode::Tab => Ok(Key::Tab),
|
||||
VirtualKeyCode::Subtract => Ok(Key::Minus),
|
||||
|
||||
VirtualKeyCode::NavigateBackward => Ok(Key::NavigateBackward),
|
||||
VirtualKeyCode::NavigateForward => Ok(Key::NavigateForward),
|
||||
_ => Err(()),
|
||||
}
|
||||
}
|
||||
|
@ -731,6 +733,12 @@ impl WindowMethods for Window {
|
|||
(NONE, Key::Backspace) => {
|
||||
self.event_queue.borrow_mut().push(WindowEvent::Navigation(WindowNavigateMsg::Back));
|
||||
}
|
||||
(SHIFT, Key::NavigateForward) => {
|
||||
self.event_queue.borrow_mut().push(WindowEvent::Navigation(WindowNavigateMsg::Forward));
|
||||
}
|
||||
(NONE, Key::NavigateBackward) => {
|
||||
self.event_queue.borrow_mut().push(WindowEvent::Navigation(WindowNavigateMsg::Back));
|
||||
}
|
||||
|
||||
(NONE, Key::Escape) => {
|
||||
self.event_queue.borrow_mut().push(WindowEvent::Quit);
|
||||
|
|
7
ports/gonk/Cargo.lock
generated
7
ports/gonk/Cargo.lock
generated
|
@ -50,7 +50,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
[[package]]
|
||||
name = "angle"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/ecoal95/angle?branch=servo#b31e70ef5cb675582de910d09b0c385ea2000a64"
|
||||
source = "git+https://github.com/emilio/angle?branch=servo#b31e70ef5cb675582de910d09b0c385ea2000a64"
|
||||
dependencies = [
|
||||
"libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -165,7 +165,6 @@ dependencies = [
|
|||
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)",
|
||||
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
|
||||
"offscreen_gl_context 0.1.0 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)",
|
||||
"plugins 0.0.1",
|
||||
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -613,7 +612,6 @@ dependencies = [
|
|||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"azure 0.4.3 (git+https://github.com/servo/rust-azure)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas_traits 0.0.1",
|
||||
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-text 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -950,7 +948,6 @@ dependencies = [
|
|||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"azure 0.4.3 (git+https://github.com/servo/rust-azure)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas 0.0.1",
|
||||
"canvas_traits 0.0.1",
|
||||
"cssparser 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1546,7 +1543,7 @@ dependencies = [
|
|||
name = "script"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"angle 0.1.0 (git+https://github.com/ecoal95/angle?branch=servo)",
|
||||
"angle 0.1.0 (git+https://github.com/emilio/angle?branch=servo)",
|
||||
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas 0.0.1",
|
||||
|
|
|
@ -270,15 +270,6 @@ class MachCommands(CommandBase):
|
|||
if result != 0:
|
||||
return result
|
||||
|
||||
@Command('test-ref',
|
||||
description='Run the reference tests',
|
||||
category='testing')
|
||||
@CommandArgument('params', default=None, nargs=argparse.REMAINDER)
|
||||
def test_ref(self, params=None):
|
||||
print("Ref tests have been replaced by web-platform-tests under "
|
||||
"tests/wpt/mozilla/.")
|
||||
return 0
|
||||
|
||||
@Command('test-content',
|
||||
description='Run the content tests',
|
||||
category='testing')
|
||||
|
|
|
@ -94,6 +94,20 @@ fn test_fetch_response_body_matches_const_message() {
|
|||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fetch_aboutblank() {
|
||||
|
||||
let url = Url::parse("about:blank").unwrap();
|
||||
let origin = Origin::Origin(url.origin());
|
||||
let mut request = Request::new(url, Some(origin), false);
|
||||
request.referer = Referer::NoReferer;
|
||||
let wrapped_request = Rc::new(request);
|
||||
|
||||
let fetch_response = fetch(wrapped_request);
|
||||
assert!(!fetch_response.is_network_error());
|
||||
assert!(*fetch_response.body.lock().unwrap() == ResponseBody::Done(vec![]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fetch_response_is_basic_filtered() {
|
||||
|
||||
|
|
|
@ -14,6 +14,6 @@
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img class="ex" src="rust.png">
|
||||
<img class="ex" src="rust-0.png">
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -13,6 +13,6 @@
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img class="ex" src="rust.png">
|
||||
<img class="ex" src="rust-0.png">
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@ecoal95
|
||||
@emilio
|
||||
@hallvors
|
||||
@kangxu
|
||||
@caitp
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue