mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Auto merge of #15164 - mbrubeck:revert, r=emilio
Revert several changes that broke tests This is based on #15158 by @aneeshusa, with additional reverts. This reverts #15064, which is causing many tests not to run, and #15129 and #15155 which landed while tests were not running and may have caused some new failures in iframe tests. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/15164) <!-- Reviewable:end -->
This commit is contained in:
commit
185759f87a
26 changed files with 149 additions and 126 deletions
|
@ -342,13 +342,15 @@ fn initialize_png(width: usize, height: usize) -> RenderTargetInfo {
|
|||
|
||||
struct RenderNotifier {
|
||||
compositor_proxy: Box<CompositorProxy>,
|
||||
constellation_chan: Sender<ConstellationMsg>,
|
||||
}
|
||||
|
||||
impl RenderNotifier {
|
||||
fn new(compositor_proxy: Box<CompositorProxy>,
|
||||
_: Sender<ConstellationMsg>) -> RenderNotifier {
|
||||
constellation_chan: Sender<ConstellationMsg>) -> RenderNotifier {
|
||||
RenderNotifier {
|
||||
compositor_proxy: compositor_proxy,
|
||||
constellation_chan: constellation_chan,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -363,8 +365,16 @@ impl webrender_traits::RenderNotifier for RenderNotifier {
|
|||
}
|
||||
|
||||
fn pipeline_size_changed(&mut self,
|
||||
_: webrender_traits::PipelineId,
|
||||
_: Option<webrender_traits::LayoutSize>) {
|
||||
pipeline_id: webrender_traits::PipelineId,
|
||||
size: Option<webrender_traits::LayoutSize>) {
|
||||
let pipeline_id = pipeline_id.from_webrender();
|
||||
|
||||
if let Some(size) = size {
|
||||
let msg = ConstellationMsg::FrameSize(pipeline_id, size.to_untyped());
|
||||
if let Err(e) = self.constellation_chan.send(msg) {
|
||||
warn!("Compositor resize to constellation failed ({}).", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -573,6 +573,8 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
|
|||
let (app_name, args) = args.split_first().unwrap();
|
||||
|
||||
let mut opts = Options::new();
|
||||
opts.optflag("c", "cpu", "CPU painting");
|
||||
opts.optflag("g", "gpu", "GPU painting");
|
||||
opts.optopt("o", "output", "Output file", "output.png");
|
||||
opts.optopt("s", "size", "Size of tiles", "512");
|
||||
opts.optopt("", "device-pixel-ratio", "Device pixels per px", "");
|
||||
|
@ -618,6 +620,7 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
|
|||
opts.optmulti("", "pref",
|
||||
"A preference to set to enable", "dom.mozbrowser.enabled");
|
||||
opts.optflag("b", "no-native-titlebar", "Do not use native titlebar");
|
||||
opts.optflag("w", "webrender", "Use webrender backend");
|
||||
opts.optopt("G", "graphics", "Select graphics backend (gl or es2)", "gl");
|
||||
opts.optopt("", "config-dir",
|
||||
"config directory following xdg spec on linux platform", "");
|
||||
|
|
|
@ -817,6 +817,12 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
|
|||
debug!("constellation exiting");
|
||||
self.handle_exit();
|
||||
}
|
||||
// The compositor discovered the size of a subframe. This needs to be reflected by all
|
||||
// frame trees in the navigation context containing the subframe.
|
||||
FromCompositorMsg::FrameSize(pipeline_id, size) => {
|
||||
debug!("constellation got frame size message");
|
||||
self.handle_frame_size_msg(pipeline_id, &TypedSize2D::from_untyped(&size));
|
||||
}
|
||||
FromCompositorMsg::GetFrame(pipeline_id, resp_chan) => {
|
||||
debug!("constellation got get root pipeline message");
|
||||
self.handle_get_frame(pipeline_id, resp_chan);
|
||||
|
@ -1083,12 +1089,6 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
|
|||
FromLayoutMsg::ChangeRunningAnimationsState(pipeline_id, animation_state) => {
|
||||
self.handle_change_running_animations_state(pipeline_id, animation_state)
|
||||
}
|
||||
// Layout sends new sizes for all subframes. This needs to be reflected by all
|
||||
// frame trees in the navigation context containing the subframe.
|
||||
FromLayoutMsg::FrameSizes(iframe_sizes) => {
|
||||
debug!("constellation got frame size message");
|
||||
self.handle_frame_size_msg(iframe_sizes);
|
||||
}
|
||||
FromLayoutMsg::SetCursor(cursor) => {
|
||||
self.handle_set_cursor_msg(cursor)
|
||||
}
|
||||
|
@ -1327,32 +1327,32 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
|
|||
}
|
||||
|
||||
fn handle_frame_size_msg(&mut self,
|
||||
iframe_sizes: Vec<(PipelineId, TypedSize2D<f32, PagePx>)>) {
|
||||
for (pipeline_id, size) in iframe_sizes {
|
||||
let result = {
|
||||
let pipeline = match self.pipelines.get_mut(&pipeline_id) {
|
||||
Some(pipeline) => pipeline,
|
||||
None => continue,
|
||||
};
|
||||
|
||||
if pipeline.size == Some(size) {
|
||||
continue;
|
||||
}
|
||||
|
||||
pipeline.size = Some(size);
|
||||
pipeline_id: PipelineId,
|
||||
size: &TypedSize2D<f32, PagePx>) {
|
||||
let msg = ConstellationControlMsg::Resize(pipeline_id, WindowSizeData {
|
||||
visible_viewport: size,
|
||||
initial_viewport: size * ScaleFactor::new(1.0),
|
||||
visible_viewport: *size,
|
||||
initial_viewport: *size * ScaleFactor::new(1.0),
|
||||
device_pixel_ratio: self.window_size.device_pixel_ratio,
|
||||
}, WindowSizeType::Initial);
|
||||
|
||||
// Store the new rect inside the pipeline
|
||||
let result = {
|
||||
// Find the pipeline that corresponds to this rectangle. It's possible that this
|
||||
// pipeline may have already exited before we process this message, so just
|
||||
// early exit if that occurs.
|
||||
match self.pipelines.get_mut(&pipeline_id) {
|
||||
Some(pipeline) => {
|
||||
pipeline.size = Some(*size);
|
||||
pipeline.event_loop.send(msg)
|
||||
}
|
||||
None => return,
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(e) = result {
|
||||
self.handle_send_error(pipeline_id, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_subframe_loaded(&mut self, pipeline_id: PipelineId) {
|
||||
let (frame_id, parent_id) = match self.pipelines.get(&pipeline_id) {
|
||||
|
|
|
@ -14,7 +14,7 @@ use app_units::{AU_PER_PX, Au};
|
|||
use block::{BlockFlow, BlockStackingContextType};
|
||||
use canvas_traits::{CanvasData, CanvasMsg, FromLayoutMsg};
|
||||
use context::SharedLayoutContext;
|
||||
use euclid::{Point2D, Rect, SideOffsets2D, Size2D, TypedSize2D};
|
||||
use euclid::{Point2D, Rect, SideOffsets2D, Size2D};
|
||||
use flex::FlexFlow;
|
||||
use flow::{BaseFlow, Flow, IS_ABSOLUTELY_POSITIONED};
|
||||
use flow_ref::FlowRef;
|
||||
|
@ -32,7 +32,6 @@ use inline::{FIRST_FRAGMENT_OF_ELEMENT, InlineFlow, LAST_FRAGMENT_OF_ELEMENT};
|
|||
use ipc_channel::ipc;
|
||||
use list_item::ListItemFlow;
|
||||
use model::{self, MaybeAuto};
|
||||
use msg::constellation_msg::PipelineId;
|
||||
use net_traits::image::base::PixelFormat;
|
||||
use net_traits::image_cache_thread::UsePlaceholder;
|
||||
use range::Range;
|
||||
|
@ -57,7 +56,6 @@ use style::servo::restyle_damage::REPAINT;
|
|||
use style::values::{RGBA, computed};
|
||||
use style::values::computed::{AngleOrCorner, Gradient, GradientKind, LengthOrPercentage, LengthOrPercentageOrAuto};
|
||||
use style::values::specified::{HorizontalDirection, VerticalDirection};
|
||||
use style_traits::PagePx;
|
||||
use style_traits::cursor::Cursor;
|
||||
use table_cell::CollapsedBordersForCell;
|
||||
use webrender_traits::{ColorF, GradientStop, ScrollPolicy};
|
||||
|
@ -107,10 +105,6 @@ pub struct DisplayListBuildState<'a> {
|
|||
/// The current scroll root id, used to keep track of state when
|
||||
/// recursively building and processing the display list.
|
||||
pub current_scroll_root_id: ScrollRootId,
|
||||
|
||||
/// Vector containing iframe sizes, used to inform the constellation about
|
||||
/// new iframe sizes
|
||||
pub iframe_sizes: Vec<(PipelineId, TypedSize2D<f32, PagePx>)>,
|
||||
}
|
||||
|
||||
impl<'a> DisplayListBuildState<'a> {
|
||||
|
@ -124,7 +118,6 @@ impl<'a> DisplayListBuildState<'a> {
|
|||
processing_scroll_root_element: false,
|
||||
current_stacking_context_id: StackingContextId::root(),
|
||||
current_scroll_root_id: ScrollRootId::root(),
|
||||
iframe_sizes: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1450,10 +1443,6 @@ impl FragmentDisplayListBuilding for Fragment {
|
|||
iframe: fragment_info.pipeline_id,
|
||||
});
|
||||
|
||||
let size = Size2D::new(item.bounds().size.width.to_f32_px(),
|
||||
item.bounds().size.height.to_f32_px());
|
||||
state.iframe_sizes.push((fragment_info.pipeline_id, TypedSize2D::from_untyped(&size)));
|
||||
|
||||
state.add_display_item(item);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -933,17 +933,6 @@ impl LayoutThread {
|
|||
let origin = Rect::new(Point2D::new(Au(0), Au(0)), root_size);
|
||||
build_state.root_stacking_context.bounds = origin;
|
||||
build_state.root_stacking_context.overflow = origin;
|
||||
|
||||
if !build_state.iframe_sizes.is_empty() {
|
||||
// build_state.iframe_sizes is only used here, so its okay to replace
|
||||
// it with an empty vector
|
||||
let iframe_sizes = std::mem::replace(&mut build_state.iframe_sizes, vec![]);
|
||||
let msg = ConstellationMsg::FrameSizes(iframe_sizes);
|
||||
if let Err(e) = self.constellation_chan.send(msg) {
|
||||
warn!("Layout resize to constellation failed ({}).", e);
|
||||
}
|
||||
}
|
||||
|
||||
rw_data.display_list = Some(Arc::new(build_state.to_display_list()));
|
||||
}
|
||||
(ReflowGoal::ForScriptQuery, false) => {}
|
||||
|
|
|
@ -696,6 +696,8 @@ pub enum WebDriverCommandMsg {
|
|||
pub enum ConstellationMsg {
|
||||
/// Exit the constellation.
|
||||
Exit,
|
||||
/// Inform the constellation of the size of the viewport.
|
||||
FrameSize(PipelineId, Size2D<f32>),
|
||||
/// Request that the constellation send the FrameId corresponding to the document
|
||||
/// with the provided pipeline id
|
||||
GetFrame(PipelineId, IpcSender<Option<FrameId>>),
|
||||
|
|
|
@ -15,7 +15,7 @@ use WorkerScriptLoadOrigin;
|
|||
use canvas_traits::CanvasMsg;
|
||||
use devtools_traits::{ScriptToDevtoolsControlMsg, WorkerId};
|
||||
use euclid::point::Point2D;
|
||||
use euclid::size::{Size2D, TypedSize2D};
|
||||
use euclid::size::Size2D;
|
||||
use gfx_traits::ScrollRootId;
|
||||
use ipc_channel::ipc::IpcSender;
|
||||
use msg::constellation_msg::{FrameId, PipelineId, TraversalDirection};
|
||||
|
@ -24,7 +24,6 @@ use net_traits::CoreResourceMsg;
|
|||
use net_traits::storage_thread::StorageType;
|
||||
use offscreen_gl_context::{GLContextAttributes, GLLimits};
|
||||
use servo_url::ServoUrl;
|
||||
use style_traits::PagePx;
|
||||
use style_traits::cursor::Cursor;
|
||||
use style_traits::viewport::ViewportConstraints;
|
||||
|
||||
|
@ -33,8 +32,6 @@ use style_traits::viewport::ViewportConstraints;
|
|||
pub enum LayoutMsg {
|
||||
/// Indicates whether this pipeline is currently running animations.
|
||||
ChangeRunningAnimationsState(PipelineId, AnimationState),
|
||||
/// Inform the constellation of the size of the pipeline's viewport.
|
||||
FrameSizes(Vec<(PipelineId, TypedSize2D<f32, PagePx>)>),
|
||||
/// Requests that the constellation inform the compositor of the a cursor change.
|
||||
SetCursor(Cursor),
|
||||
/// Notifies the constellation that the viewport has been constrained in some manner
|
||||
|
|
|
@ -210,6 +210,9 @@ def main():
|
|||
parser.add_argument("-d", "--debug",
|
||||
action='store_true',
|
||||
help="Use debug build instead of release build")
|
||||
parser.add_argument("-w", "--webrender",
|
||||
action='store_true',
|
||||
help="Use webrender backend")
|
||||
parser.add_argument("-l", "--max_layout_threads",
|
||||
help="Specify the maximum number of threads for layout, for example \"-l 5\"")
|
||||
parser.add_argument("-o", "--output",
|
||||
|
@ -230,6 +233,8 @@ def main():
|
|||
benchmark = args.benchmark
|
||||
if args.debug:
|
||||
build_target = "debug"
|
||||
if args.webrender:
|
||||
renderer = "-w"
|
||||
if args.max_layout_threads:
|
||||
max_layout_threads = int(args.max_layout_threads)
|
||||
if args.output:
|
||||
|
|
|
@ -85,6 +85,9 @@ def main():
|
|||
parser.add_argument("-b", "--benchmark",
|
||||
default=benchmark,
|
||||
help="Gets the benchmark, for example \"-b http://www.example.com\"")
|
||||
parser.add_argument("-w", "--webrender",
|
||||
action='store_true',
|
||||
help="Use webrender backend")
|
||||
parser.add_argument("-l", "--layout_threads",
|
||||
help="Specify the number of threads for layout, for example \"-l 5\"")
|
||||
parser.add_argument("-o", "--output",
|
||||
|
@ -96,6 +99,8 @@ def main():
|
|||
args = parser.parse_args()
|
||||
if args.benchmark:
|
||||
benchmark = args.benchmark
|
||||
if args.webrender:
|
||||
renderer = "-w"
|
||||
if args.layout_threads:
|
||||
layout_threads = int(args.layout_threads)
|
||||
if args.output:
|
||||
|
|
|
@ -10,20 +10,17 @@ from ..executors.executorservo import ServoTestharnessExecutor, ServoRefTestExec
|
|||
|
||||
here = os.path.join(os.path.split(__file__)[0])
|
||||
|
||||
__wptrunner__ = {
|
||||
"product": "servo",
|
||||
__wptrunner__ = {"product": "servo",
|
||||
"check_args": "check_args",
|
||||
"browser": "ServoBrowser",
|
||||
"executor": {
|
||||
"testharness": "ServoTestharnessExecutor",
|
||||
"executor": {"testharness": "ServoTestharnessExecutor",
|
||||
"reftest": "ServoRefTestExecutor",
|
||||
"wdspec": "ServoWdspecExecutor",
|
||||
},
|
||||
"wdspec": "ServoWdspecExecutor"},
|
||||
"browser_kwargs": "browser_kwargs",
|
||||
"executor_kwargs": "executor_kwargs",
|
||||
"env_options": "env_options",
|
||||
"update_properties": "update_properties",
|
||||
}
|
||||
"run_info_extras": "run_info_extras",
|
||||
"update_properties": "update_properties"}
|
||||
|
||||
|
||||
def check_args(**kwargs):
|
||||
|
@ -31,12 +28,11 @@ def check_args(**kwargs):
|
|||
|
||||
|
||||
def browser_kwargs(**kwargs):
|
||||
return {
|
||||
"binary": kwargs["binary"],
|
||||
return {"binary": kwargs["binary"],
|
||||
"debug_info": kwargs["debug_info"],
|
||||
"binary_args": kwargs["binary_args"],
|
||||
"user_stylesheets": kwargs.get("user_stylesheets"),
|
||||
}
|
||||
"render_backend": kwargs.get("servo_backend")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
|
@ -55,23 +51,31 @@ def env_options():
|
|||
"supports_debugger": True}
|
||||
|
||||
|
||||
def run_info_extras(**kwargs):
|
||||
return {"backend": kwargs["servo_backend"]}
|
||||
|
||||
|
||||
def update_properties():
|
||||
return ["debug", "os", "version", "processor", "bits"], None
|
||||
return ["debug", "os", "version", "processor", "bits", "backend"], None
|
||||
|
||||
|
||||
def render_arg(render_backend):
|
||||
return {"cpu": "--cpu", "webrender": "-w"}[render_backend]
|
||||
|
||||
|
||||
class ServoBrowser(NullBrowser):
|
||||
def __init__(self, logger, binary, debug_info=None, binary_args=None,
|
||||
user_stylesheets=None):
|
||||
user_stylesheets=None, render_backend="webrender"):
|
||||
NullBrowser.__init__(self, logger)
|
||||
self.binary = binary
|
||||
self.debug_info = debug_info
|
||||
self.binary_args = binary_args or []
|
||||
self.user_stylesheets = user_stylesheets or []
|
||||
self.render_backend = render_backend
|
||||
|
||||
def executor_browser(self):
|
||||
return ExecutorBrowser, {
|
||||
"binary": self.binary,
|
||||
return ExecutorBrowser, {"binary": self.binary,
|
||||
"debug_info": self.debug_info,
|
||||
"binary_args": self.binary_args,
|
||||
"user_stylesheets": self.user_stylesheets,
|
||||
}
|
||||
"render_backend": self.render_backend}
|
||||
|
|
|
@ -9,25 +9,23 @@ import tempfile
|
|||
from mozprocess import ProcessHandler
|
||||
|
||||
from .base import Browser, require_arg, get_free_port, browser_command, ExecutorBrowser
|
||||
from .servo import render_arg
|
||||
from ..executors import executor_kwargs as base_executor_kwargs
|
||||
from ..executors.executorservodriver import (ServoWebDriverTestharnessExecutor,
|
||||
ServoWebDriverRefTestExecutor)
|
||||
|
||||
here = os.path.join(os.path.split(__file__)[0])
|
||||
|
||||
__wptrunner__ = {
|
||||
"product": "servodriver",
|
||||
__wptrunner__ = {"product": "servodriver",
|
||||
"check_args": "check_args",
|
||||
"browser": "ServoWebDriverBrowser",
|
||||
"executor": {
|
||||
"testharness": "ServoWebDriverTestharnessExecutor",
|
||||
"reftest": "ServoWebDriverRefTestExecutor",
|
||||
},
|
||||
"executor": {"testharness": "ServoWebDriverTestharnessExecutor",
|
||||
"reftest": "ServoWebDriverRefTestExecutor"},
|
||||
"browser_kwargs": "browser_kwargs",
|
||||
"executor_kwargs": "executor_kwargs",
|
||||
"env_options": "env_options",
|
||||
"update_properties": "update_properties",
|
||||
}
|
||||
"run_info_extras": "run_info_extras",
|
||||
"update_properties": "update_properties"}
|
||||
|
||||
hosts_text = """127.0.0.1 web-platform.test
|
||||
127.0.0.1 www.web-platform.test
|
||||
|
@ -43,11 +41,10 @@ def check_args(**kwargs):
|
|||
|
||||
|
||||
def browser_kwargs(**kwargs):
|
||||
return {
|
||||
"binary": kwargs["binary"],
|
||||
return {"binary": kwargs["binary"],
|
||||
"debug_info": kwargs["debug_info"],
|
||||
"user_stylesheets": kwargs.get("user_stylesheets"),
|
||||
}
|
||||
"render_backend": kwargs.get("servo_backend")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data, **kwargs):
|
||||
|
@ -64,8 +61,12 @@ def env_options():
|
|||
"supports_debugger": True}
|
||||
|
||||
|
||||
def run_info_extras(**kwargs):
|
||||
return {"backend": kwargs["servo_backend"]}
|
||||
|
||||
|
||||
def update_properties():
|
||||
return ["debug", "os", "version", "processor", "bits"], None
|
||||
return ["debug", "os", "version", "processor", "bits", "backend"], None
|
||||
|
||||
|
||||
def make_hosts_file():
|
||||
|
@ -79,7 +80,7 @@ class ServoWebDriverBrowser(Browser):
|
|||
used_ports = set()
|
||||
|
||||
def __init__(self, logger, binary, debug_info=None, webdriver_host="127.0.0.1",
|
||||
user_stylesheets=None):
|
||||
user_stylesheets=None, render_backend="webrender"):
|
||||
Browser.__init__(self, logger)
|
||||
self.binary = binary
|
||||
self.webdriver_host = webdriver_host
|
||||
|
@ -89,6 +90,7 @@ class ServoWebDriverBrowser(Browser):
|
|||
self.hosts_path = make_hosts_file()
|
||||
self.command = None
|
||||
self.user_stylesheets = user_stylesheets if user_stylesheets else []
|
||||
self.render_backend = render_backend
|
||||
|
||||
def start(self):
|
||||
self.webdriver_port = get_free_port(4444, exclude=self.used_ports)
|
||||
|
@ -98,15 +100,11 @@ class ServoWebDriverBrowser(Browser):
|
|||
env["HOST_FILE"] = self.hosts_path
|
||||
env["RUST_BACKTRACE"] = "1"
|
||||
|
||||
debug_args, command = browser_command(
|
||||
self.binary,
|
||||
[
|
||||
"--hard-fail",
|
||||
debug_args, command = browser_command(self.binary,
|
||||
[render_arg(self.render_backend), "--hard-fail",
|
||||
"--webdriver", str(self.webdriver_port),
|
||||
"about:blank",
|
||||
],
|
||||
self.debug_info
|
||||
)
|
||||
"about:blank"],
|
||||
self.debug_info)
|
||||
|
||||
for stylesheet in self.user_stylesheets:
|
||||
command += ["--user-stylesheet", stylesheet]
|
||||
|
|
|
@ -30,10 +30,15 @@ from ..webdriver_server import ServoDriverServer
|
|||
from .executormarionette import WdspecRun
|
||||
|
||||
pytestrunner = None
|
||||
render_arg = None
|
||||
webdriver = None
|
||||
|
||||
extra_timeout = 5 # seconds
|
||||
|
||||
def do_delayed_imports():
|
||||
global render_arg
|
||||
from ..browsers.servo import render_arg
|
||||
|
||||
hosts_text = """127.0.0.1 web-platform.test
|
||||
127.0.0.1 www.web-platform.test
|
||||
127.0.0.1 www1.web-platform.test
|
||||
|
@ -75,10 +80,8 @@ class ServoTestharnessExecutor(ProcessTestExecutor):
|
|||
self.result_data = None
|
||||
self.result_flag = threading.Event()
|
||||
|
||||
args = [
|
||||
"--hard-fail", "-u", "Servo/wptrunner",
|
||||
"-Z", "replace-surrogates", "-z", self.test_url(test),
|
||||
]
|
||||
args = [render_arg(self.browser.render_backend), "--hard-fail", "-u", "Servo/wptrunner",
|
||||
"-Z", "replace-surrogates", "-z", self.test_url(test)]
|
||||
for stylesheet in self.browser.user_stylesheets:
|
||||
args += ["--user-stylesheet", stylesheet]
|
||||
for pref, value in test.environment.get('prefs', {}).iteritems():
|
||||
|
@ -210,12 +213,9 @@ class ServoRefTestExecutor(ProcessTestExecutor):
|
|||
with TempFilename(self.tempdir) as output_path:
|
||||
debug_args, command = browser_command(
|
||||
self.binary,
|
||||
[
|
||||
"--hard-fail", "--exit",
|
||||
"-u", "Servo/wptrunner",
|
||||
"-Z", "disable-text-aa,load-webfonts-synchronously,replace-surrogates",
|
||||
"--output=%s" % output_path, full_url
|
||||
] + self.browser.binary_args,
|
||||
[render_arg(self.browser.render_backend), "--hard-fail", "--exit",
|
||||
"-u", "Servo/wptrunner", "-Z", "disable-text-aa,load-webfonts-synchronously,replace-surrogates",
|
||||
"--output=%s" % output_path, full_url] + self.browser.binary_args,
|
||||
self.debug_info)
|
||||
|
||||
for stylesheet in self.browser.user_stylesheets:
|
||||
|
@ -295,7 +295,7 @@ class ServoWdspecProtocol(Protocol):
|
|||
|
||||
def setup(self, runner):
|
||||
try:
|
||||
self.server = ServoDriverServer(self.logger, binary=self.browser.binary, binary_args=self.browser.binary_args)
|
||||
self.server = ServoDriverServer(self.logger, binary=self.browser.binary, binary_args=self.browser.binary_args, render_backend=self.browser.render_backend)
|
||||
self.server.start(block=False)
|
||||
self.logger.info(
|
||||
"WebDriver HTTP server listening at %s" % self.server.url)
|
||||
|
|
|
@ -165,11 +165,12 @@ class GeckoDriverServer(WebDriverServer):
|
|||
|
||||
|
||||
class ServoDriverServer(WebDriverServer):
|
||||
def __init__(self, logger, binary="servo", binary_args=None, host="127.0.0.1", port=None):
|
||||
def __init__(self, logger, binary="servo", binary_args=None, host="127.0.0.1", port=None, render_backend=None):
|
||||
env = os.environ.copy()
|
||||
env["RUST_BACKTRACE"] = "1"
|
||||
WebDriverServer.__init__(self, logger, binary, host=host, port=port, env=env)
|
||||
self.binary_args = binary_args
|
||||
self.render_backend = render_backend
|
||||
|
||||
def make_command(self):
|
||||
command = [self.binary,
|
||||
|
@ -178,6 +179,10 @@ class ServoDriverServer(WebDriverServer):
|
|||
"--headless"]
|
||||
if self.binary_args:
|
||||
command += self.binary_args
|
||||
if self.render_backend == "cpu":
|
||||
command += ["--cpu"]
|
||||
elif self.render_backend == "webrender":
|
||||
command += ["--webrender"]
|
||||
return command
|
||||
|
||||
|
||||
|
|
|
@ -178,6 +178,10 @@ scheme host and port.""")
|
|||
servo_group.add_argument("--user-stylesheet",
|
||||
default=[], action="append", dest="user_stylesheets",
|
||||
help="Inject a user CSS stylesheet into every test.")
|
||||
servo_group.add_argument("--servo-backend",
|
||||
default="webrender", choices=["cpu", "webrender"],
|
||||
help="Rendering backend to use with Servo.")
|
||||
|
||||
|
||||
parser.add_argument("test_list", nargs="*",
|
||||
help="List of URLs for tests to run, or paths including tests to run. "
|
||||
|
|
|
@ -3,3 +3,4 @@
|
|||
expected:
|
||||
if os == "linux": TIMEOUT
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
type: testharness
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -3,3 +3,4 @@
|
|||
expected:
|
||||
if os == "linux": TIMEOUT
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -3,3 +3,4 @@
|
|||
expected:
|
||||
if os == "linux": TIMEOUT
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -3,3 +3,4 @@
|
|||
expected:
|
||||
if os == "linux": TIMEOUT
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
type: testharness
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
type: testharness
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -3,3 +3,4 @@
|
|||
expected:
|
||||
if os == "linux": TIMEOUT
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -3,3 +3,4 @@
|
|||
expected:
|
||||
if os == "linux": TIMEOUT
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
type: testharness
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
type: testharness
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
type: testharness
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64) and (backend == "cpu"): CRASH
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue