From c844ed232a86fef873dc661de60e282fdb86c0d3 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Tue, 25 Feb 2025 09:38:28 +0100 Subject: [PATCH] servoshell: Fall back to PNG format when outputting an image (#35648) A recent change, #35538 added the ability to dump different output image formats. Unfortunately, this necessitated adding a file extension to the output image for WPT tests. This had two problems: 1. The original change never landed properly in WPT for unknown reasons. 2. It interfered with the way that temporary files were cleaned up during WPT runs. This change modifies the image dumping code to fall back to PNG format when there is no valid file extension on the output image and reverts the change made to the WPT runner. Fixes #35635. Signed-off-by: Martin Robinson --- ports/servoshell/desktop/app_state.rs | 7 +++++-- tests/wpt/meta/MANIFEST.json | 2 +- .../tools/wptrunner/wptrunner/executors/executorservo.py | 1 - 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ports/servoshell/desktop/app_state.rs b/ports/servoshell/desktop/app_state.rs index 6bbc124d8e5..e72580074b8 100644 --- a/ports/servoshell/desktop/app_state.rs +++ b/ports/servoshell/desktop/app_state.rs @@ -8,7 +8,7 @@ use std::path::PathBuf; use std::rc::Rc; use euclid::Vector2D; -use image::DynamicImage; +use image::{DynamicImage, ImageFormat}; use keyboard_types::{Key, KeyboardEvent, Modifiers, ShortcutMatcher}; use log::{error, info}; use servo::base::id::WebViewId; @@ -146,7 +146,10 @@ impl RunningAppState { return; }; - if let Err(error) = DynamicImage::ImageRgba8(image).save(output_path) { + let image_format = ImageFormat::from_path(output_path).unwrap_or(ImageFormat::Png); + if let Err(error) = + DynamicImage::ImageRgba8(image).save_with_format(output_path, image_format) + { error!("Failed to save {output_path}: {error}."); } } diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index a920226f3f1..ef97c1ac50c 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -506162,7 +506162,7 @@ [] ], "executorservo.py": [ - "2710b1b844c8e93c251c91c8809697d357bd4f06", + "e3369d24ebc6d6aac1b4632ef673a36602417745", [] ], "executorservodriver.py": [ diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorservo.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorservo.py index 2710b1b844c..e3369d24ebc 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorservo.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorservo.py @@ -226,7 +226,6 @@ class ServoRefTestExecutor(ServoExecutor): def screenshot(self, test, viewport_size, dpi, page_ranges): with TempFilename(self.tempdir) as output_path: - output_path = f"{output_path}.png" extra_args = ["--exit", "--output=%s" % output_path, "--window-size", viewport_size or "800x600"]