diff --git a/BUILD.gn b/BUILD.gn index 932a881..75b942f 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -439,7 +439,6 @@ if (is_chromeos) { deps += [ - "//ash:ash_shell_with_content", "//ash:ash_unittests", "//ash/app_list:app_list_demo", "//ash/app_list:app_list_unittests",
diff --git a/DEPS b/DEPS index 6638734..c2bc108 100644 --- a/DEPS +++ b/DEPS
@@ -195,11 +195,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '16fbc2477205aa06efb03e9bdaa0e4a5e94ee865', + 'skia_revision': 'c8ae494401bc38b5d0d9c99c962d207f4668ad63', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '562c3f952c5d5fb397bbcdf89038febe321a9431', + 'v8_revision': '82a184f91dcfd6edad7d9e14424f9b64eb13d341', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -207,11 +207,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '08c4d09493bf22418d7eb75dd936ada79095e088', + 'angle_revision': '55e855496d00284c2cc0b28313578fd91ccde12e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. - 'swiftshader_revision': '9e46bb61c5d7fd6f839e53a51572fe2a64e32489', + 'swiftshader_revision': '5efa529cc1071cb89ef63dc5ee8ca8de9326e23d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -258,7 +258,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': '4ed789b24fc78f763332fe7dd2b4c31fdb1823ad', + 'catapult_revision': '6caaa1da7bfab8f2768d716c104e8c4d19c99138', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -318,11 +318,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': '92ebe87b74f1f7e80fb0e2133c9976715c1b6d46', + 'dawn_revision': '3ed44f56c5bfb58571608738c8bd6dd0461911c6', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'quiche_revision': '4de168715fa1e0c5909c570c3c01a762132c94aa', + 'quiche_revision': 'b3359b0b014d81e6986700478969af146e025155', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ios_webkit # and whatever else without interference from each other. @@ -875,7 +875,7 @@ # Build tools for Chrome OS. Note: This depends on third_party/pyelftools. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'c3a81f99020dd6ffd637f40562a9840b8dadf840', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'a7bd9cbfeffaacb664d700322dcf236029605282', 'condition': 'checkout_linux', }, @@ -895,7 +895,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '39d317835bd0c3eeeda24e394d9e58120c008ef1', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'b655a28e1097f393ba8f0519b43abb92bc38f69e', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1248,7 +1248,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '1dcc3cfc0639ebb0636c30a43e69f599f9c1a981', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '3c13bf1fa86551bce5a94b6c92f98bfe31f773e1', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1326,7 +1326,7 @@ 'packages': [ { 'package': 'fuchsia/third_party/aemu/linux-amd64', - 'version': 'cY2ImNSFGqld2lxLH7Yx4VM1eC-ObygJfhY_bExfcrAC' + 'version': '6quXnNFio6gU1CGVOtJ_6mL0qRXv_pYczOXIRhNaG7YC' }, ], 'condition': 'host_os == "linux" and checkout_fuchsia',
diff --git a/android_webview/browser/gfx/hardware_renderer_viz.cc b/android_webview/browser/gfx/hardware_renderer_viz.cc index f70c553..4d36f960 100644 --- a/android_webview/browser/gfx/hardware_renderer_viz.cc +++ b/android_webview/browser/gfx/hardware_renderer_viz.cc
@@ -172,7 +172,8 @@ // Create a frame with a single SurfaceDrawQuad referencing the child // Surface and transformed using the given transform. std::unique_ptr<viz::RenderPass> render_pass = viz::RenderPass::Create(); - render_pass->SetNew(1, gfx::Rect(viewport), clip, gfx::Transform()); + render_pass->SetNew(viz::RenderPassId{1}, gfx::Rect(viewport), clip, + gfx::Transform()); render_pass->has_transparent_background = false; viz::SharedQuadState* quad_state =
diff --git a/android_webview/browser/gfx/surfaces_instance.cc b/android_webview/browser/gfx/surfaces_instance.cc index 67c6820..67df054 100644 --- a/android_webview/browser/gfx/surfaces_instance.cc +++ b/android_webview/browser/gfx/surfaces_instance.cc
@@ -143,7 +143,8 @@ // Create a frame with a single SurfaceDrawQuad referencing the child // Surface and transformed using the given transform. std::unique_ptr<viz::RenderPass> render_pass = viz::RenderPass::Create(); - render_pass->SetNew(1, gfx::Rect(viewport), clip, gfx::Transform()); + render_pass->SetNew(viz::RenderPassId{1}, gfx::Rect(viewport), clip, + gfx::Transform()); render_pass->has_transparent_background = false; viz::SharedQuadState* quad_state = @@ -227,7 +228,7 @@ bool is_clipped = false; bool are_contents_opaque = true; std::unique_ptr<viz::RenderPass> render_pass = viz::RenderPass::Create(); - render_pass->SetNew(1, rect, rect, gfx::Transform()); + render_pass->SetNew(viz::RenderPassId{1}, rect, rect, gfx::Transform()); viz::SharedQuadState* quad_state = render_pass->CreateAndAppendSharedQuadState(); quad_state->SetAll(gfx::Transform(), rect, rect, gfx::RRectF(), rect,
diff --git a/android_webview/docs/test-instructions.md b/android_webview/docs/test-instructions.md index 2a38699..f6b06c2 100644 --- a/android_webview/docs/test-instructions.md +++ b/android_webview/docs/test-instructions.md
@@ -165,6 +165,11 @@ $ adb logcat ``` +*** promo +**Tip:** make sure your device locale is **English (United States)** per +[CTS setup requirements](https://source.android.com/compatibility/cts/setup). +*** + To disable failing CTS tests, please see the cts_config [README](../tools/cts_config/README.md) file.
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 9fe6cc5..d0fa8966 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1686,125 +1686,6 @@ } } -static_library("ash_shell_lib") { - testonly = true - sources = [ - "../ui/views/test/test_views_delegate_aura.cc", - "shell/bubble.cc", - "shell/example_app_list_client.cc", - "shell/example_app_list_client.h", - "shell/example_factory.h", - "shell/example_session_controller_client.cc", - "shell/example_session_controller_client.h", - "shell/lock_view.cc", - "shell/shell_delegate_impl.cc", - "shell/shell_delegate_impl.h", - "shell/shell_views_delegate.cc", - "shell/shell_views_delegate.h", - "shell/toplevel_window.cc", - "shell/toplevel_window.h", - "shell/widgets.cc", - "shell/window_type_launcher.cc", - "shell/window_type_launcher.h", - "shell/window_watcher.cc", - "shell/window_watcher.h", - "shell/window_watcher_shelf_item_delegate.cc", - "shell/window_watcher_shelf_item_delegate.h", - ] - - # Usage of content should be in ash_shell_lib_with_content. - assert_no_deps = [ - "//ash/public/cpp/external_arc", - "//components/arc", - "//components/exo", - "//content/public/browser", - "//content/public/common", - ] - - deps = [ - ":ash", - ":test_support", - "//ash/app_list", - "//ash/public/cpp", - "//base", - "//base:i18n", - "//components/user_manager", - "//skia", - "//ui/aura", - "//ui/base", - "//ui/gfx", - "//ui/gfx/geometry", - "//ui/message_center", - "//ui/views", - "//ui/views:test_support", - "//ui/views/examples:views_examples_lib", - "//ui/wm", - ] -} - -static_library("ash_shell_lib_with_content") { - testonly = true - sources = [ - "shell/content/client/shell_browser_main_parts.cc", - "shell/content/client/shell_browser_main_parts.h", - "shell/content/client/shell_content_browser_client.cc", - "shell/content/client/shell_content_browser_client.h", - "shell/content/client/shell_main_delegate.cc", - "shell/content/client/shell_main_delegate.h", - "shell/content/client/shell_new_window_delegate.cc", - "shell/content/client/shell_new_window_delegate.h", - "shell/content/embedded_browser.cc", - "shell/content/embedded_browser.h", - ] - - deps = [ - ":test_support", - "//ash/public/cpp", - "//ash/shortcut_viewer", - "//base:i18n", - "//chrome:packed_resources", - - # TODO(https://crbug.com/644336): Make CrasAudioHandler Chrome or Ash only. - "//chromeos/audio", - "//chromeos/constants", - "//chromeos/dbus/biod", - "//chromeos/dbus/power", - "//chromeos/dbus/shill", - "//chromeos/network", - "//chromeos/services/network_config", - "//chromeos/services/network_config/public/mojom", - "//chromeos/system", - "//components/discardable_memory/public/mojom", - "//components/services/font:lib", - "//components/services/font/public/mojom", - "//content", - "//content/shell:content_shell_lib", - "//device/bluetooth", - "//net", - "//services/device/public/mojom", - "//skia", - "//ui/aura", - "//ui/base", - "//ui/base/ime/chromeos", - "//ui/base/ime/init", - "//ui/chromeos/events", - "//ui/compositor", - "//ui/display", - "//ui/events/devices", - "//ui/message_center", - "//ui/views:test_support", - "//ui/views/controls/webview", - "//ui/views/examples:views_examples_with_content_lib", - "//ui/wm", - ] - public_deps = [ ":ash_shell_lib" ] - data_deps = [ - "//ash/resources:ash_test_resources_200_percent", - "//ash/resources:ash_test_resources_with_content_100_percent", - "//ash/strings:ash_test_strings", - ] -} - action("dbus_service_files") { sources = [ "dbus/org.chromium.DisplayService.conf", @@ -2369,53 +2250,6 @@ ] } -test("ash_ui_perftests") { - defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] - - sources = [ - "perftests/overview_animations_preftest.cc", - "shell/content/test/ash_content_perf_test_launcher.cc", - "shell/content/test/ash_content_test.cc", - "shell/content/test/ash_content_test.h", - ] - - deps = [ - ":ash_shell_lib_with_content", - ":test_support", - "//ash/public/cpp", - "//base/test:test_support", - "//cc/base", - "//chromeos/constants:constants", - "//content/shell:content_shell_app", - "//content/shell:content_shell_lib", - "//content/test:browsertest_support", - "//content/test:test_support", - "//mojo/core/embedder", - "//testing/gtest", - "//testing/perf", - "//ui/aura", - "//ui/base", - "//ui/base:test_support", - "//ui/compositor:test_support", - "//ui/events:test_support", - "//ui/gl:test_support", - ] -} - -executable("ash_shell_with_content") { - testonly = true - sources = [ "shell/content/shell_with_content_main.cc" ] - - deps = [ - ":ash_shell_lib_with_content", - "//base", - "//components/user_manager", - "//content", - "//content/public/app", - "//device/bluetooth", - ] -} - static_library("test_support") { testonly = true friend = [ @@ -2499,8 +2333,6 @@ "shelf/shelf_view_test_api.h", "shelf/test/widget_animation_waiter.cc", "shelf/test/widget_animation_waiter.h", - "shell/toplevel_window.cc", - "shell/toplevel_window.h", "shell_test_api.cc", "system/message_center/test_notifier_settings_controller.cc", "system/message_center/test_notifier_settings_controller.h", @@ -2527,6 +2359,8 @@ "test/ash_test_views_delegate.h", "test/fake_android_intent_helper.cc", "test/fake_android_intent_helper.h", + "test/toplevel_window.cc", + "test/toplevel_window.h", "test/ui_controls_factory_ash.cc", "test/ui_controls_factory_ash.h", "test_media_client.cc",
diff --git a/ash/fast_ink/fast_ink_host.cc b/ash/fast_ink/fast_ink_host.cc index 989e8d7..9b99803 100644 --- a/ash/fast_ink/fast_ink_host.cc +++ b/ash/fast_ink/fast_ink_host.cc
@@ -105,7 +105,7 @@ last_local_surface_id_allocation_time_; frame.metadata.frame_token = ++next_frame_token_; std::unique_ptr<viz::RenderPass> pass = viz::RenderPass::Create(); - pass->SetNew(1, gfx::Rect(last_frame_size_in_pixels_), + pass->SetNew(viz::RenderPassId{1}, gfx::Rect(last_frame_size_in_pixels_), gfx::Rect(last_frame_size_in_pixels_), gfx::Transform()); frame.render_pass_list.push_back(std::move(pass)); frame_sink_->SubmitCompositorFrame(std::move(frame), @@ -378,7 +378,7 @@ bool rv = target_to_buffer_transform.GetInverse(&buffer_to_target_transform); DCHECK(rv); - const int kRenderPassId = 1; + const viz::RenderPassId kRenderPassId{1}; std::unique_ptr<viz::RenderPass> render_pass = viz::RenderPass::Create(); render_pass->SetNew(kRenderPassId, output_rect, damage_rect, buffer_to_target_transform);
diff --git a/ash/fast_ink/view_tree_host_root_view.cc b/ash/fast_ink/view_tree_host_root_view.cc index b63988f..01908bf 100644 --- a/ash/fast_ink/view_tree_host_root_view.cc +++ b/ash/fast_ink/view_tree_host_root_view.cc
@@ -94,9 +94,9 @@ holder->last_local_surface_id_allocation_time_; frame.metadata.frame_token = ++holder->next_frame_token_; std::unique_ptr<viz::RenderPass> pass = viz::RenderPass::Create(); - pass->SetNew(1, gfx::Rect(holder->last_frame_size_in_pixels_), - gfx::Rect(holder->last_frame_size_in_pixels_), - gfx::Transform()); + pass->SetNew( + viz::RenderPassId{1}, gfx::Rect(holder->last_frame_size_in_pixels_), + gfx::Rect(holder->last_frame_size_in_pixels_), gfx::Transform()); frame.render_pass_list.push_back(std::move(pass)); holder->frame_sink_->SubmitCompositorFrame(std::move(frame), /*hit_test_data_changed=*/true, @@ -438,7 +438,7 @@ bool rv = rotate_transform_.GetInverse(&buffer_to_target_transform); DCHECK(rv); - const int kRenderPassId = 1; + const viz::RenderPassId kRenderPassId{1}; std::unique_ptr<viz::RenderPass> render_pass = viz::RenderPass::Create(); render_pass->SetNew(kRenderPassId, output_rect, damage_rect, buffer_to_target_transform);
diff --git a/ash/magnifier/magnifier_glass.cc b/ash/magnifier/magnifier_glass.cc index d959a32..3d70d8a 100644 --- a/ash/magnifier/magnifier_glass.cc +++ b/ash/magnifier/magnifier_glass.cc
@@ -64,55 +64,6 @@ } // namespace -// The border mask provides a clipping layer for the magnification window -// border so that there is no shadow in the center. -class MagnifierGlass::BorderMask : public ui::LayerDelegate { - public: - BorderMask(const gfx::Size& mask_bounds, int radius) - : radius_(radius), layer_(ui::LAYER_TEXTURED) { - layer_.set_delegate(this); - layer_.SetFillsBoundsOpaquely(false); - layer_.SetBounds(gfx::Rect(mask_bounds)); - } - - ~BorderMask() override { layer_.set_delegate(nullptr); } - - BorderMask(const BorderMask& other) = delete; - BorderMask& operator=(const BorderMask& rhs) = delete; - - ui::Layer* layer() { return &layer_; } - - private: - // ui::LayerDelegate: - void OnPaintLayer(const ui::PaintContext& context) override { - ui::PaintRecorder recorder(context, layer()->size()); - - cc::PaintFlags flags; - flags.setAlpha(255); - flags.setAntiAlias(true); - // Stroke is used for clipping the border which consists of the rendered - // border |kBorderSize| and the magnifier shadow |kShadowThickness| and - // |kShadowOffset|. - constexpr int kStrokeWidth = kBorderSize + kShadowThickness + kShadowOffset; - flags.setStrokeWidth(kStrokeWidth); - flags.setStyle(cc::PaintFlags::kStroke_Style); - - // We want to clip everything but the border, shadow and shadow offset, so - // set the clipping radius at the halfway point of the stroke width. - const int kClippingRadius = radius_ + (kStrokeWidth) / 2; - const gfx::Rect rect(layer()->bounds().size()); - recorder.canvas()->DrawCircle(rect.CenterPoint(), kClippingRadius, flags); - } - - void OnDeviceScaleFactorChanged(float old_device_scale_factor, - float new_device_scale_factor) override { - // Redrawing will take care of scale factor change. - } - - const int radius_; - ui::Layer layer_; -}; - // The border renderer draws the border as well as outline on both the outer and // inner radius to increase visibility. The border renderer also handles drawing // the shadow. @@ -144,13 +95,22 @@ shadow_bounds.width() / 2 - kShadowThickness - kShadowOffset, shadow_flags); + // The radius of the magnifier and its border. + const int magnifier_radius = radius_ + kBorderSize; + + // Clear the shadow for the magnified area. + cc::PaintFlags mask_flags; + mask_flags.setAntiAlias(true); + mask_flags.setBlendMode(SkBlendMode::kClear); + mask_flags.setStyle(cc::PaintFlags::kFill_Style); + recorder.canvas()->DrawCircle( + magnifier_window_bounds_.CenterPoint(), + magnifier_radius - kBorderOutlineThickness / 2, mask_flags); + cc::PaintFlags border_flags; border_flags.setAntiAlias(true); border_flags.setStyle(cc::PaintFlags::kStroke_Style); - // The radius of the magnifier and its border. - const int magnifier_radius = radius_ + kBorderSize; - // Draw the inner border. border_flags.setStrokeWidth(kBorderSize); border_flags.setColor(kBorderColor); @@ -265,9 +225,6 @@ border_layer_->SetFillsBoundsOpaquely(false); root_layer->Add(border_layer_.get()); - border_mask_ = std::make_unique<BorderMask>(window_size, params_.radius); - border_layer_->SetMaskLayer(border_mask_->layer()); - host_widget_->AddObserver(this); }
diff --git a/ash/magnifier/magnifier_glass.h b/ash/magnifier/magnifier_glass.h index 76f8fbe..f476002 100644 --- a/ash/magnifier/magnifier_glass.h +++ b/ash/magnifier/magnifier_glass.h
@@ -46,7 +46,6 @@ private: friend class PartialMagnificationControllerTestApi; - class BorderMask; class BorderRenderer; // aura::WindowObserver: @@ -78,9 +77,6 @@ // |border_layer_| so that it gets destroyed after |border_layer_|, otherwise // |border_layer_| will have a pointer to a deleted delegate. std::unique_ptr<BorderRenderer> border_renderer_; - // Masks the content of |border_layer_| so that only a circle outline is - // drawn. - std::unique_ptr<BorderMask> border_mask_; }; } // namespace ash
diff --git a/ash/perftests/overview_animations_preftest.cc b/ash/perftests/overview_animations_preftest.cc deleted file mode 100644 index 6872469c..0000000 --- a/ash/perftests/overview_animations_preftest.cc +++ /dev/null
@@ -1,98 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/public/cpp/test/shell_test_api.h" -#include "ash/shell/content/test/ash_content_test.h" -#include "base/macros.h" -#include "base/run_loop.h" -#include "base/system/sys_info.h" -#include "base/threading/thread_task_runner_handle.h" -#include "ui/base/test/ui_controls.h" - -// Test overview enter/exit animations with following conditions -// int: number of windows : 2, 8 -// bool: the window type (browser window with content, or non browser window) -// bool: tablet mode, if true. -// TODO(oshima): Add Tablet/SplitView mode. -class OverviewAnimationsTest - : public AshContentTest, - public testing::WithParamInterface<::testing::tuple<int, bool, bool>> { - public: - OverviewAnimationsTest() = default; - ~OverviewAnimationsTest() override = default; - - // AshContentTest: - void SetUpOnMainThread() override { - AshContentTest::SetUpOnMainThread(); - - int n_browsers = std::get<0>(GetParam()); - bool browser = std::get<1>(GetParam()); - tablet_mode_ = std::get<2>(GetParam()); - - if (tablet_mode_) - ash::ShellTestApi().SetTabletModeEnabledForTest(true); - - const GURL google_url("https://www.google.com"); - - for (int i = 0; i < n_browsers; ++i) { - auto* window = browser ? CreateBrowserWindow(google_url) - : CreateBrowserWindow(GURL()); - if (!window_) - window_ = window; - } - - float cost_per_browser = browser ? 0.5 : 0.1; - int wait_seconds = (base::SysInfo::IsRunningOnChromeOS() ? 5 : 0) + - n_browsers * cost_per_browser; - base::RunLoop run_loop; - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, run_loop.QuitClosure(), - base::TimeDelta::FromSeconds(wait_seconds)); - run_loop.Run(); - } - - // UIPerformanceTest: - std::vector<std::string> GetUMAHistogramNames() const override { - if (tablet_mode_) { - return {"Ash.Overview.AnimationSmoothness.Enter.TabletMode", - "Ash.Overview.AnimationSmoothness.Exit.TabletMode"}; - } - return {"Ash.Overview.AnimationSmoothness.Enter.ClamshellMode", - "Ash.Overview.AnimationSmoothness.Exit.ClamshellMode"}; - } - - aura::Window* window() { return window_; } - - private: - aura::Window* window_ = nullptr; - bool tablet_mode_ = false; - DISALLOW_COPY_AND_ASSIGN(OverviewAnimationsTest); -}; - -ASH_CONTENT_TEST_P(OverviewAnimationsTest, EnterExit) { - TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("ui", "Interaction.ui_Overview", this); - // Browser window is used just to identify display. - ui_controls::SendKeyPress(window(), ui::VKEY_MEDIA_LAUNCH_APP1, - /*control=*/false, - /*shift=*/false, - /*alt=*/false, - /*command=*/false); - ash::ShellTestApi().WaitForOverviewAnimationState( - ash::OverviewAnimationState::kEnterAnimationComplete); - // TODO(oshima): Wait until frame animation ends. - ui_controls::SendKeyPress(window(), ui::VKEY_MEDIA_LAUNCH_APP1, - /*control=*/false, - /*shift=*/false, - /*alt=*/false, - /*command=*/false); - ash::ShellTestApi().WaitForOverviewAnimationState( - ash::OverviewAnimationState::kExitAnimationComplete); - TRACE_EVENT_NESTABLE_ASYNC_END0("ui", "Interaction.ui_Overview", this); -} - -INSTANTIATE_TEST_SUITE_P(All, - OverviewAnimationsTest, - ::testing::Combine(::testing::Values(2, 8), - /*blank=*/testing::Bool(), - /*tablet=*/testing::Bool()));
diff --git a/ash/shell/DEPS b/ash/shell/DEPS deleted file mode 100644 index 2e87ae56..0000000 --- a/ash/shell/DEPS +++ /dev/null
@@ -1,6 +0,0 @@ -include_rules = [ - "+content/public", - "+content/shell", - "+gin", - "+sandbox", -]
diff --git a/ash/shell/OWNERS b/ash/shell/OWNERS deleted file mode 100644 index c8dc16e..0000000 --- a/ash/shell/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -per-file *app_list*=xiyuan@chromium.org
diff --git a/ash/shell/bubble.cc b/ash/shell/bubble.cc deleted file mode 100644 index 5d44e5e..0000000 --- a/ash/shell/bubble.cc +++ /dev/null
@@ -1,54 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/strings/utf_string_conversions.h" -#include "ui/views/bubble/bubble_border.h" -#include "ui/views/bubble/bubble_dialog_delegate_view.h" -#include "ui/views/controls/label.h" -#include "ui/views/layout/fill_layout.h" -#include "ui/views/widget/widget.h" - -namespace ash { -namespace shell { - -struct BubbleConfig { - base::string16 label; - views::View* anchor_view; - views::BubbleBorder::Arrow arrow; -}; - -class ExampleBubbleDialogDelegateView : public views::BubbleDialogDelegateView { - public: - explicit ExampleBubbleDialogDelegateView(const BubbleConfig& config); - ~ExampleBubbleDialogDelegateView() override; - - void Init() override { - SetLayoutManager(std::make_unique<views::FillLayout>()); - views::Label* label = new views::Label(label_); - AddChildView(label); - } - - private: - base::string16 label_; -}; - -ExampleBubbleDialogDelegateView::ExampleBubbleDialogDelegateView( - const BubbleConfig& config) - : BubbleDialogDelegateView(config.anchor_view, config.arrow), - label_(config.label) {} - -ExampleBubbleDialogDelegateView::~ExampleBubbleDialogDelegateView() = default; - -void CreatePointyBubble(views::View* anchor_view) { - BubbleConfig config; - config.label = base::ASCIIToUTF16("Pointy Dialog Bubble"); - config.anchor_view = anchor_view; - config.arrow = views::BubbleBorder::TOP_LEFT; - ExampleBubbleDialogDelegateView* bubble = - new ExampleBubbleDialogDelegateView(config); - views::BubbleDialogDelegateView::CreateBubble(bubble)->Show(); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/content/client/DEPS b/ash/shell/content/client/DEPS deleted file mode 100644 index fe45514..0000000 --- a/ash/shell/content/client/DEPS +++ /dev/null
@@ -1,10 +0,0 @@ -include_rules = [ - "+ash/components/shortcut_viewer", - "+chromeos/dbus/biod", - "+chromeos/services/network_config", - "+components/discardable_memory/public/interfaces", - "+content/public", - "+content/shell", - "+storage/browser/quota", - "+services/device/public", -]
diff --git a/ash/shell/content/client/shell_browser_main_parts.cc b/ash/shell/content/client/shell_browser_main_parts.cc deleted file mode 100644 index a1da343..0000000 --- a/ash/shell/content/client/shell_browser_main_parts.cc +++ /dev/null
@@ -1,168 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/content/client/shell_browser_main_parts.h" - -#include <memory> -#include <utility> - -#include "ash/display/privacy_screen_controller.h" -#include "ash/login_status.h" -#include "ash/public/cpp/event_rewriter_controller.h" -#include "ash/session/test_pref_service_provider.h" -#include "ash/shell.h" -#include "ash/shell/content/client/shell_new_window_delegate.h" -#include "ash/shell/content/embedded_browser.h" -#include "ash/shell/example_app_list_client.h" -#include "ash/shell/example_session_controller_client.h" -#include "ash/shell/shell_delegate_impl.h" -#include "ash/shell/shell_views_delegate.h" -#include "ash/shell/window_type_launcher.h" -#include "ash/shell/window_watcher.h" -#include "ash/sticky_keys/sticky_keys_controller.h" -#include "ash/test/ash_test_helper.h" -#include "base/bind.h" -#include "base/command_line.h" -#include "base/run_loop.h" -#include "chromeos/dbus/biod/biod_client.h" -#include "chromeos/dbus/shill/shill_clients.h" -#include "chromeos/network/network_handler.h" -#include "components/exo/file_helper.h" -#include "content/public/browser/context_factory.h" -#include "content/public/common/content_switches.h" -#include "content/shell/browser/shell_browser_context.h" -#include "net/base/net_module.h" -#include "ui/base/ui_base_features.h" -#include "ui/chromeos/events/event_rewriter_chromeos.h" -#include "ui/views/examples/examples_window_with_content.h" - -namespace ash { -namespace shell { -namespace { -ShellBrowserMainParts* main_parts = nullptr; -} - -// static -content::BrowserContext* ShellBrowserMainParts::GetBrowserContext() { - DCHECK(main_parts); - return main_parts->browser_context(); -} - -ShellBrowserMainParts::ShellBrowserMainParts( - const content::MainFunctionParams& parameters) - : parameters_(parameters) { - DCHECK(!main_parts); - main_parts = this; -} - -ShellBrowserMainParts::~ShellBrowserMainParts() { - DCHECK(main_parts); - main_parts = nullptr; -} - -void ShellBrowserMainParts::PostEarlyInitialization() { - content::BrowserMainParts::PostEarlyInitialization(); - chromeos::shill_clients::InitializeFakes(); - chromeos::NetworkHandler::Initialize(); -} - -void ShellBrowserMainParts::PreMainMessageLoopStart() {} - -void ShellBrowserMainParts::PostMainMessageLoopStart() { - chromeos::BiodClient::InitializeFake(); -} - -void ShellBrowserMainParts::ToolkitInitialized() { - // A ViewsDelegate is required. - views_delegate_ = std::make_unique<ShellViewsDelegate>(); -} - -void ShellBrowserMainParts::PreMainMessageLoopRun() { - browser_context_.reset(new content::ShellBrowserContext(false)); - - if (!parameters_.ui_task) - new_window_delegate_ = std::make_unique<ShellNewWindowDelegate>(); - - // TODO(oshima): Separate the class for ash_shell to reduce the test binary - // size. - ash_test_helper_ = std::make_unique<AshTestHelper>( - parameters_.ui_task ? AshTestHelper::kPerfTest : AshTestHelper::kShell, - content::GetContextFactory()); - AshTestHelper::InitParams init_params; - init_params.delegate = std::make_unique<ShellDelegateImpl>(); - ash_test_helper_->SetUp(std::move(init_params)); - - window_watcher_ = std::make_unique<WindowWatcher>(); - - if (!parameters_.ui_task) { - // Install Rewriter so that function keys are properly re-mapped. - auto* event_rewriter_controller = EventRewriterController::Get(); - bool privacy_screen_supported = false; - if (Shell::Get()->privacy_screen_controller() && - Shell::Get()->privacy_screen_controller()->IsSupported()) { - privacy_screen_supported = true; - } - event_rewriter_controller->AddEventRewriter( - std::make_unique<ui::EventRewriterChromeOS>( - nullptr, Shell::Get()->sticky_keys_controller(), - privacy_screen_supported)); - - // Initialize session controller client and create fake user sessions. The - // fake user sessions makes ash into the logged in state. - example_session_controller_client_ = - std::make_unique<ExampleSessionControllerClient>( - Shell::Get()->session_controller(), - ash_test_helper_->prefs_provider()); - example_session_controller_client_->Initialize(); - - example_app_list_client_ = std::make_unique<ExampleAppListClient>( - Shell::Get()->app_list_controller()); - - InitWindowTypeLauncher( - base::BindRepeating(views::examples::ShowExamplesWindowWithContent, - base::Passed(base::OnceClosure()), - base::Unretained(browser_context_.get()), nullptr), - base::BindRepeating(base::IgnoreResult(&EmbeddedBrowser::Create), - base::Unretained(browser_context_.get()), - GURL("https://www.google.com"), base::nullopt)); - } -} - -bool ShellBrowserMainParts::MainMessageLoopRun(int* result_code) { - if (parameters_.ui_task) { - std::move(*parameters_.ui_task).Run(); - delete parameters_.ui_task; - } else { - base::RunLoop run_loop; - example_session_controller_client_->set_quit_closure( - run_loop.QuitWhenIdleClosure()); - run_loop.Run(); - } - return true; -} - -void ShellBrowserMainParts::PostMainMessageLoopRun() { - window_watcher_.reset(); - example_app_list_client_.reset(); - example_session_controller_client_.reset(); - - ash_test_helper_.reset(); - - views_delegate_.reset(); - - // The keyboard may have created a WebContents. The WebContents is destroyed - // with the UI, and it needs the BrowserContext to be alive during its - // destruction. So destroy all of the UI elements before destroying the - // browser context. - browser_context_.reset(); -} - -void ShellBrowserMainParts::PostDestroyThreads() { - chromeos::NetworkHandler::Shutdown(); - chromeos::shill_clients::Shutdown(); - content::BrowserMainParts::PostDestroyThreads(); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/content/client/shell_browser_main_parts.h b/ash/shell/content/client/shell_browser_main_parts.h deleted file mode 100644 index d1b754f..0000000 --- a/ash/shell/content/client/shell_browser_main_parts.h +++ /dev/null
@@ -1,69 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_CONTENT_CLIENT_SHELL_BROWSER_MAIN_PARTS_H_ -#define ASH_SHELL_CONTENT_CLIENT_SHELL_BROWSER_MAIN_PARTS_H_ - -#include <memory> - -#include "base/macros.h" -#include "content/public/browser/browser_main_parts.h" -#include "content/public/common/main_function_params.h" -#include "mojo/public/cpp/system/message_pipe.h" - -namespace content { -class BrowserContext; -struct MainFunctionParams; -} // namespace content - -namespace views { -class ViewsDelegate; -} - -namespace ash { -class AshTestHelper; - -namespace shell { -class ExampleAppListClient; -class ExampleSessionControllerClient; -class ShellNewWindowDelegate; -class WindowWatcher; - -class ShellBrowserMainParts : public content::BrowserMainParts { - public: - static content::BrowserContext* GetBrowserContext(); - - explicit ShellBrowserMainParts(const content::MainFunctionParams& parameters); - ~ShellBrowserMainParts() override; - - // Overridden from content::BrowserMainParts: - void PostEarlyInitialization() override; - void PreMainMessageLoopStart() override; - void PostMainMessageLoopStart() override; - void ToolkitInitialized() override; - void PreMainMessageLoopRun() override; - bool MainMessageLoopRun(int* result_code) override; - void PostMainMessageLoopRun() override; - void PostDestroyThreads() override; - - content::BrowserContext* browser_context() { return browser_context_.get(); } - - private: - std::unique_ptr<content::BrowserContext> browser_context_; - std::unique_ptr<views::ViewsDelegate> views_delegate_; - std::unique_ptr<WindowWatcher> window_watcher_; - std::unique_ptr<ExampleSessionControllerClient> - example_session_controller_client_; - std::unique_ptr<ExampleAppListClient> example_app_list_client_; - std::unique_ptr<ash::AshTestHelper> ash_test_helper_; - std::unique_ptr<ShellNewWindowDelegate> new_window_delegate_; - content::MainFunctionParams parameters_; - - DISALLOW_COPY_AND_ASSIGN(ShellBrowserMainParts); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_CONTENT_CLIENT_SHELL_BROWSER_MAIN_PARTS_H_
diff --git a/ash/shell/content/client/shell_content_browser_client.cc b/ash/shell/content/client/shell_content_browser_client.cc deleted file mode 100644 index 83e5587..0000000 --- a/ash/shell/content/client/shell_content_browser_client.cc +++ /dev/null
@@ -1,37 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/content/client/shell_content_browser_client.h" - -#include <memory> -#include <utility> - -#include "ash/public/cpp/window_properties.h" -#include "ash/shell.h" -#include "ash/shell/content/client/shell_browser_main_parts.h" -#include "base/base_switches.h" -#include "base/bind.h" -#include "base/command_line.h" -#include "base/no_destructor.h" -#include "base/stl_util.h" -#include "base/strings/utf_string_conversions.h" -#include "content/public/browser/browser_context.h" -#include "content/public/utility/content_utility_client.h" -#include "third_party/skia/include/core/SkBitmap.h" - -namespace ash { -namespace shell { - -ShellContentBrowserClient::ShellContentBrowserClient() = default; - -ShellContentBrowserClient::~ShellContentBrowserClient() = default; - -std::unique_ptr<content::BrowserMainParts> -ShellContentBrowserClient::CreateBrowserMainParts( - const content::MainFunctionParams& parameters) { - return std::make_unique<ShellBrowserMainParts>(parameters); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/content/client/shell_content_browser_client.h b/ash/shell/content/client/shell_content_browser_client.h deleted file mode 100644 index c7c9fedd..0000000 --- a/ash/shell/content/client/shell_content_browser_client.h +++ /dev/null
@@ -1,34 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_CONTENT_CLIENT_SHELL_CONTENT_BROWSER_CLIENT_H_ -#define ASH_SHELL_CONTENT_CLIENT_SHELL_CONTENT_BROWSER_CLIENT_H_ - -#include <memory> -#include <string> - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "content/public/browser/content_browser_client.h" - -namespace ash { -namespace shell { - -class ShellContentBrowserClient : public content::ContentBrowserClient { - public: - ShellContentBrowserClient(); - ~ShellContentBrowserClient() override; - - // Overridden from content::ContentBrowserClient: - std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts( - const content::MainFunctionParams& parameters) override; - - private: - DISALLOW_COPY_AND_ASSIGN(ShellContentBrowserClient); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_CONTENT_CLIENT_SHELL_CONTENT_BROWSER_CLIENT_H_
diff --git a/ash/shell/content/client/shell_main_delegate.cc b/ash/shell/content/client/shell_main_delegate.cc deleted file mode 100644 index 1159e3c4..0000000 --- a/ash/shell/content/client/shell_main_delegate.cc +++ /dev/null
@@ -1,59 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/content/client/shell_main_delegate.h" - -#include "ash/shell/content/client/shell_content_browser_client.h" -#include "base/bind.h" -#include "base/command_line.h" -#include "base/files/file_path.h" -#include "base/path_service.h" -#include "content/public/utility/utility_thread.h" -#include "ui/base/ime/init/input_method_initializer.h" -#include "ui/base/resource/resource_bundle.h" - -namespace ash { -namespace shell { - -ShellMainDelegate::ShellMainDelegate() = default; - -ShellMainDelegate::~ShellMainDelegate() = default; - -void ShellMainDelegate::PreSandboxStartup() { - InitializeResourceBundle(); - ui::InitializeInputMethodForTesting(); -} - -content::ContentClient* ShellMainDelegate::CreateContentClient() { - return &content_client_; -} - -content::ContentBrowserClient* ShellMainDelegate::CreateContentBrowserClient() { - browser_client_.reset(new ShellContentBrowserClient); - return browser_client_.get(); -} - -void ShellMainDelegate::InitializeResourceBundle() { - // Load ash resources and strings; not 'common' (Chrome) resources. - base::FilePath path; - base::PathService::Get(base::DIR_MODULE, &path); - base::FilePath ash_test_strings = - path.Append(FILE_PATH_LITERAL("ash_test_strings.pak")); - - ui::ResourceBundle::InitSharedInstanceWithPakPath(ash_test_strings); - ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); - if (ui::ResourceBundle::IsScaleFactorSupported(ui::SCALE_FACTOR_100P)) { - base::FilePath ash_test_resources_100 = path.Append( - FILE_PATH_LITERAL("ash_test_resources_with_content_100_percent.pak")); - rb.AddDataPackFromPath(ash_test_resources_100, ui::SCALE_FACTOR_100P); - } - if (ui::ResourceBundle::IsScaleFactorSupported(ui::SCALE_FACTOR_200P)) { - base::FilePath ash_test_resources_200 = - path.Append(FILE_PATH_LITERAL("ash_test_resources_200_percent.pak")); - rb.AddDataPackFromPath(ash_test_resources_200, ui::SCALE_FACTOR_200P); - } -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/content/client/shell_main_delegate.h b/ash/shell/content/client/shell_main_delegate.h deleted file mode 100644 index 5200925..0000000 --- a/ash/shell/content/client/shell_main_delegate.h +++ /dev/null
@@ -1,41 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_CONTENT_CLIENT_SHELL_MAIN_DELEGATE_H_ -#define ASH_SHELL_CONTENT_CLIENT_SHELL_MAIN_DELEGATE_H_ - -#include <memory> - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "content/public/app/content_main_delegate.h" -#include "content/shell/common/shell_content_client.h" - -namespace ash { -namespace shell { - -class ShellContentBrowserClient; - -class ShellMainDelegate : public content::ContentMainDelegate { - public: - ShellMainDelegate(); - ~ShellMainDelegate() override; - - void PreSandboxStartup() override; - content::ContentClient* CreateContentClient() override; - content::ContentBrowserClient* CreateContentBrowserClient() override; - - private: - void InitializeResourceBundle(); - - std::unique_ptr<ShellContentBrowserClient> browser_client_; - content::ShellContentClient content_client_; - - DISALLOW_COPY_AND_ASSIGN(ShellMainDelegate); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_CONTENT_CLIENT_SHELL_MAIN_DELEGATE_H_
diff --git a/ash/shell/content/client/shell_new_window_delegate.cc b/ash/shell/content/client/shell_new_window_delegate.cc deleted file mode 100644 index c4d97442..0000000 --- a/ash/shell/content/client/shell_new_window_delegate.cc +++ /dev/null
@@ -1,52 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/content/client/shell_new_window_delegate.h" - -#include "ash/public/cpp/keyboard_shortcut_viewer.h" -#include "ash/shell/content/client/shell_browser_main_parts.h" -#include "ash/shell/content/embedded_browser.h" - -namespace ash { -namespace shell { - -ShellNewWindowDelegate::ShellNewWindowDelegate() = default; -ShellNewWindowDelegate::~ShellNewWindowDelegate() = default; - -void ShellNewWindowDelegate::NewTab() { - EmbeddedBrowser::Create( - ash::shell::ShellBrowserMainParts::GetBrowserContext(), - GURL("https://www.google.com")); -} - -void ShellNewWindowDelegate::NewTabWithUrl(const GURL& url, - bool from_user_interaction) { - EmbeddedBrowser::Create( - ash::shell::ShellBrowserMainParts::GetBrowserContext(), url); -} - -void ShellNewWindowDelegate::NewWindow(bool incognito) { - EmbeddedBrowser::Create( - ash::shell::ShellBrowserMainParts::GetBrowserContext(), - GURL("https://www.google.com")); -} - -void ShellNewWindowDelegate::OpenFileManager() {} - -void ShellNewWindowDelegate::OpenCrosh() {} - -void ShellNewWindowDelegate::OpenGetHelp() {} - -void ShellNewWindowDelegate::RestoreTab() {} - -void ShellNewWindowDelegate::ShowKeyboardShortcutViewer() { - ash::ToggleKeyboardShortcutViewer(); -} - -void ShellNewWindowDelegate::ShowTaskManager() {} - -void ShellNewWindowDelegate::OpenFeedbackPage(bool from_assistant) {} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/content/client/shell_new_window_delegate.h b/ash/shell/content/client/shell_new_window_delegate.h deleted file mode 100644 index c61a3be..0000000 --- a/ash/shell/content/client/shell_new_window_delegate.h +++ /dev/null
@@ -1,43 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_CONTENT_CLIENT_SHELL_NEW_WINDOW_DELEGATE_H_ -#define ASH_SHELL_CONTENT_CLIENT_SHELL_NEW_WINDOW_DELEGATE_H_ - -#include <memory> -#include <string> - -#include "ash/public/cpp/new_window_delegate.h" -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "content/public/browser/content_browser_client.h" - -namespace ash { -namespace shell { - -class ShellNewWindowDelegate : public ash::NewWindowDelegate { - public: - ShellNewWindowDelegate(); - ~ShellNewWindowDelegate() override; - - // ash::NewWindowDelegate: - void NewTab() override; - void NewTabWithUrl(const GURL& url, bool from_user_interaction) override; - void NewWindow(bool incognito) override; - void OpenFileManager() override; - void OpenCrosh() override; - void OpenGetHelp() override; - void RestoreTab() override; - void ShowKeyboardShortcutViewer() override; - void ShowTaskManager() override; - void OpenFeedbackPage(bool from_assistant) override; - - private: - DISALLOW_COPY_AND_ASSIGN(ShellNewWindowDelegate); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_CONTENT_CLIENT_SHELL_NEW_WINDOW_DELEGATE_H_
diff --git a/ash/shell/content/embedded_browser.cc b/ash/shell/content/embedded_browser.cc deleted file mode 100644 index f2bf2e0b..0000000 --- a/ash/shell/content/embedded_browser.cc +++ /dev/null
@@ -1,80 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/content/embedded_browser.h" - -#include "ash/public/cpp/app_types.h" -#include "ash/wm/window_state.h" -#include "ui/aura/client/aura_constants.h" -#include "ui/views/controls/webview/webview.h" -#include "ui/views/layout/fill_layout.h" -#include "ui/views/widget/widget.h" -#include "ui/views/widget/widget_delegate.h" -#include "url/gurl.h" - -namespace ash { -namespace shell { - -namespace { - -class BrowserWidgetDelegateView : public views::WidgetDelegateView { - public: - BrowserWidgetDelegateView(content::BrowserContext* context, const GURL& url) { - SetCanMaximize(true); - SetCanMinimize(true); - SetCanResize(true); - SetTitle(base::ASCIIToUTF16("WebView Browser")); - SetLayoutManager(std::make_unique<views::FillLayout>()); - auto* webview = new views::WebView(context); - AddChildView(webview); - Layout(); - webview->LoadInitialURL(url); - } - ~BrowserWidgetDelegateView() override = default; - - private: - DISALLOW_COPY_AND_ASSIGN(BrowserWidgetDelegateView); -}; - -} // namespace - -EmbeddedBrowser::EmbeddedBrowser(content::BrowserContext* context, - const GURL& url, - const gfx::Rect& bounds) - : widget_(new views::Widget) { - views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); - params.bounds = bounds; - params.delegate = new BrowserWidgetDelegateView(context, url); - widget_->Init(std::move(params)); - WindowState::Get(widget_->GetNativeWindow())->SetWindowPositionManaged(true); - widget_->Show(); -} - -EmbeddedBrowser::~EmbeddedBrowser() = default; - -aura::Window* EmbeddedBrowser::GetWindow() { - return widget_->GetNativeView(); -} - -// static -aura::Window* EmbeddedBrowser::Create(content::BrowserContext* context, - const GURL& url, - base::Optional<gfx::Rect> bounds) { - static const gfx::Rect default_bounds(20, 20, 800, 600); - - // EmbeddedBrowser deletes itself when the widget is closed. - aura::Window* browser_window = - (new EmbeddedBrowser(context, url, bounds ? *bounds : default_bounds)) - ->GetWindow(); - browser_window->SetProperty(aura::client::kAppType, - static_cast<int>(ash::AppType::BROWSER)); - return browser_window; -} - -void EmbeddedBrowser::OnUnembed() { - delete this; -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/content/embedded_browser.h b/ash/shell/content/embedded_browser.h deleted file mode 100644 index 70ae533..0000000 --- a/ash/shell/content/embedded_browser.h +++ /dev/null
@@ -1,58 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_CONTENT_EMBEDDED_BROWSER_H_ -#define ASH_SHELL_CONTENT_EMBEDDED_BROWSER_H_ - -#include <memory> - -#include "base/macros.h" -#include "base/optional.h" -#include "ui/gfx/geometry/rect.h" - -class GURL; - -namespace aura { -class Window; -} - -namespace content { -class BrowserContext; -} - -namespace views { -class Widget; -} - -namespace ash { -namespace shell { - -// Exercises ServerRemoteViewHost to embed a content::WebContents. -class EmbeddedBrowser { - public: - aura::Window* GetWindow(); - - // Factory. - static aura::Window* Create(content::BrowserContext* context, - const GURL& url, - base::Optional<gfx::Rect> bounds = base::nullopt); - - private: - EmbeddedBrowser(content::BrowserContext* context, - const GURL& url, - const gfx::Rect& bounds); - ~EmbeddedBrowser(); - - // Callback invoked when the embedding is broken. - void OnUnembed(); - - views::Widget* widget_ = nullptr; - - DISALLOW_COPY_AND_ASSIGN(EmbeddedBrowser); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_CONTENT_EMBEDDED_BROWSER_H_
diff --git a/ash/shell/content/shell_with_content_main.cc b/ash/shell/content/shell_with_content_main.cc deleted file mode 100644 index ce9ba21..0000000 --- a/ash/shell/content/shell_with_content_main.cc +++ /dev/null
@@ -1,33 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/content/client/shell_main_delegate.h" -#include "base/at_exit.h" -#include "base/command_line.h" -#include "base/files/file_path.h" -#include "base/logging.h" -#include "base/path_service.h" -#include "content/public/app/content_main.h" - -int main(int argc, const char** argv) { - base::CommandLine::Init(argc, argv); - base::AtExitManager exit_manager; - - base::FilePath log_filename; - base::PathService::Get(base::DIR_EXE, &log_filename); - log_filename = log_filename.AppendASCII("ash_shell.log"); - logging::LoggingSettings settings; - settings.logging_dest = logging::LOG_TO_ALL; - settings.log_file_path = log_filename.value().c_str(); - settings.delete_old = logging::DELETE_OLD_LOG_FILE; - logging::InitLogging(settings); - logging::SetLogItems(true /* process_id */, true /* thread_id */, - true /* timestamp */, false /* tick_count */); - ash::shell::ShellMainDelegate delegate; - content::ContentMainParams params(&delegate); - params.argc = argc; - params.argv = argv; - - return content::ContentMain(params); -}
diff --git a/ash/shell/content/test/DEPS b/ash/shell/content/test/DEPS deleted file mode 100644 index 99f2c5b1..0000000 --- a/ash/shell/content/test/DEPS +++ /dev/null
@@ -1,3 +0,0 @@ -include_rules = [ - "+services/tracing/public/cpp" -]
diff --git a/ash/shell/content/test/ash_content_perf_test_launcher.cc b/ash/shell/content/test/ash_content_perf_test_launcher.cc deleted file mode 100644 index 54de034..0000000 --- a/ash/shell/content/test/ash_content_perf_test_launcher.cc +++ /dev/null
@@ -1,72 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/public/test/test_launcher.h" - -#include "ash/shell/content/client/shell_main_delegate.h" -#include "ash/test/ui_controls_factory_ash.h" -#include "base/base_paths.h" -#include "base/command_line.h" -#include "base/i18n/icu_util.h" -#include "base/macros.h" -#include "base/system/sys_info.h" -#include "base/test/launcher/test_launcher.h" -#include "base/test/test_suite.h" -#include "content/public/common/content_switches.h" -#include "content/public/test/content_test_suite_base.h" -#include "content/shell/app/shell_main_delegate.h" -#include "content/shell/common/shell_switches.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "ui/base/test/ui_controls.h" - -namespace { - -class AshContentTestSuite : public content::ContentTestSuiteBase { - public: - AshContentTestSuite(int argc, char** argv) - : ContentTestSuiteBase(argc, argv) {} - ~AshContentTestSuite() override {} - - protected: - // content::ContentTestSuiteBase: - void Initialize() override { - // Browser tests are expected not to tear-down various globals. - base::TestSuite::DisableCheckForLeakedGlobals(); - ContentTestSuiteBase::Initialize(); - ui_controls::InstallUIControlsAura(ash::test::CreateAshUIControls()); - } - - DISALLOW_COPY_AND_ASSIGN(AshContentTestSuite); -}; - -class AshContentPerfTestLauncherDelegate : public content::TestLauncherDelegate { - public: - AshContentPerfTestLauncherDelegate() {} - ~AshContentPerfTestLauncherDelegate() override {} - - // content::TestLancherDelegate: - int RunTestSuite(int argc, char** argv) override { - return AshContentTestSuite(argc, argv).Run(); - } - std::string GetUserDataDirectoryCommandLineSwitch() override { - return switches::kContentShellDataPath; - } - - protected: - content::ContentMainDelegate* CreateContentMainDelegate() override { - return new ash::shell::ShellMainDelegate(); - } - - private: - DISALLOW_COPY_AND_ASSIGN(AshContentPerfTestLauncherDelegate); -}; - -} // namespace - -int main(int argc, char** argv) { - base::CommandLine::Init(argc, argv); - AshContentPerfTestLauncherDelegate launcher_delegate; - // Perf tests should run all tests sequentially. - return LaunchTests(&launcher_delegate, 1, argc, argv); -}
diff --git a/ash/shell/content/test/ash_content_test.cc b/ash/shell/content/test/ash_content_test.cc deleted file mode 100644 index 5a52a744..0000000 --- a/ash/shell/content/test/ash_content_test.cc +++ /dev/null
@@ -1,234 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/content/test/ash_content_test.h" - -#include <utility> -#include <vector> - -#include "ash/public/cpp/shelf_config.h" -#include "ash/shell.h" -#include "ash/shell/content/client/shell_browser_main_parts.h" -#include "ash/shell/content/embedded_browser.h" -#include "ash/shell/window_type_launcher.h" -#include "ash/wm/mru_window_tracker.h" -#include "base/auto_reset.h" -#include "base/bind.h" -#include "base/bind_helpers.h" -#include "base/command_line.h" -#include "base/feature_list.h" -#include "base/files/file_path.h" -#include "base/files/file_util.h" -#include "base/location.h" -#include "base/macros.h" -#include "base/metrics/histogram_samples.h" -#include "base/metrics/statistics_recorder.h" -#include "base/no_destructor.h" -#include "base/run_loop.h" -#include "base/system/sys_info.h" -#include "base/task/post_task.h" -#include "base/test/test_file_util.h" -#include "base/threading/thread_restrictions.h" -#include "base/trace_event/trace_event.h" -#include "build/build_config.h" -#include "chromeos/constants/chromeos_switches.h" -#include "components/user_manager/user_names.h" -#include "content/public/browser/tracing_controller.h" -#include "content/public/test/browser_test_utils.h" -#include "services/tracing/public/cpp/trace_event_agent.h" -#include "testing/perf/luci_test_result.h" -#include "ui/aura/window_tracker.h" -#include "ui/compositor/compositor_switches.h" -#include "ui/display/display_switches.h" -#include "ui/gl/gl_switches.h" -#include "ui/views/widget/widget.h" - -namespace { - -constexpr char kTraceDir[] = "trace-dir"; -constexpr char kPerfTestPrintUmaMeans[] = "perf-test-print-uma-means"; - -float GetHistogramMean(const std::string& name) { - auto* histogram = base::StatisticsRecorder::FindHistogram(name); - if (!histogram) - return 0; - // Use SnapshotFinalDelta() so that it won't contain the samples before the - // subclass invokes SnapshotDelta() during the test. - auto samples = histogram->SnapshotFinalDelta(); - DCHECK_NE(0, samples->TotalCount()); - return static_cast<float>(samples->sum()) / samples->TotalCount(); -} - -perf_test::LuciTestResult CreateTestResult( - const base::FilePath& trace_file, - const std::vector<std::string>& tbm_metrics) { - perf_test::LuciTestResult result = - perf_test::LuciTestResult::CreateForGTest(); - result.AddOutputArtifactFile("trace/1.json", trace_file, "application/json"); - for (auto& metric : tbm_metrics) - result.AddTag("tbmv2", metric); - - return result; -} - -} // namespace - -class AshContentTest::Tracer { - public: - Tracer(base::FilePath trace_dir, - std::string tracing_categories, - std::vector<std::string> histograms, - std::vector<std::string> tbm_metrics) - : trace_dir_(std::move(trace_dir)), - tracing_categories_(std::move(tracing_categories)), - tbm_metrics_(std::move(tbm_metrics)) { - auto* controller = content::TracingController::GetInstance(); - base::trace_event::TraceConfig config( - tracing_categories_, base::trace_event::RECORD_CONTINUOUSLY); - - for (const auto& histogram : histograms) - config.EnableHistogram(histogram); - - base::RunLoop runloop; - bool result = controller->StartTracing(config, runloop.QuitClosure()); - runloop.Run(); - CHECK(result); - } - - ~Tracer() { - base::ScopedAllowBlockingForTesting allow_io; - CreateTmp(); - - { - base::RunLoop runloop; - auto trace_data_endpoint = content::TracingController::CreateFileEndpoint( - trace_file_, runloop.QuitClosure()); - auto* controller = content::TracingController::GetInstance(); - bool result = controller->StopTracing(trace_data_endpoint); - runloop.Run(); - CHECK(result); - } - - base::FilePath report_file = - trace_file_.AddExtension(FILE_PATH_LITERAL("test_result.json")); - CreateTestResult(trace_file_, tbm_metrics_).WriteToFile(report_file); - } - - void CreateTmp() { - CHECK(base::CreateTemporaryFileInDir(trace_dir_, &trace_file_)); - } - - base::FilePath trace_dir_; - base::FilePath trace_file_; - std::string tracing_categories_; - std::vector<std::string> tbm_metrics_; -}; - -AshContentTest::AshContentTest() - : enable_trace_( - base::CommandLine::ForCurrentProcess()->HasSwitch(kTraceDir)) { - auto* cmd = base::CommandLine::ForCurrentProcess(); - if (enable_trace_) { - cmd->AppendSwitch(switches::kUseGpuInTests); - cmd->AppendSwitch(switches::kEnablePixelOutputInTests); - } -} - -AshContentTest::~AshContentTest() = default; - -void AshContentTest::SetUp() { - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); - // Add command line arguments that are used by all AshContentTests. - if (!command_line->HasSwitch(switches::kHostWindowBounds) && - !base::SysInfo::IsRunningOnChromeOS()) { - // Adjusting window location & size so that the ash desktop window fits - // inside the Xvfb's default resolution. Only do that when not running - // on device. Otherwise, device display is not properly configured. - command_line->AppendSwitchASCII(switches::kHostWindowBounds, - "0+0-1280x800"); - } - content::ContentBrowserTest::SetUp(); -} - -void AshContentTest::SetUpOnMainThread() { - content::ContentBrowserTest::SetUpOnMainThread(); - if (enable_trace_) { - base::FilePath dir = - base::CommandLine::ForCurrentProcess()->GetSwitchValuePath(kTraceDir); - tracer_ = std::make_unique<Tracer>( - std::move(dir), - std::move( - "benchmark,cc,viz,input,latency,gpu,rail,toplevel,ui,views,viz"), - GetUMAHistogramNames(), GetTimelineBasedMetrics()); - } - gfx::Size display_size = ash::Shell::GetPrimaryRootWindow()->bounds().size(); - test_window_size_.set_height( - (display_size.height() - ash::ShelfConfig::Get()->shelf_size()) * 0.95f); - test_window_size_.set_width(display_size.width() * 0.7f); -} - -void AshContentTest::TearDownOnMainThread() { - tracer_.reset(); - auto* command_line = base::CommandLine::ForCurrentProcess(); - const bool print = command_line->HasSwitch(kPerfTestPrintUmaMeans); - LOG_IF(INFO, print) << "=== Histogram Means ==="; - for (auto name : GetUMAHistogramNames()) { - EXPECT_TRUE(!!base::StatisticsRecorder::FindHistogram(name)) - << " missing histogram:" << name; - LOG_IF(INFO, print) << name << ": " << GetHistogramMean(name); - } - LOG_IF(INFO, print) << "=== End Histogram Means ==="; - - content::ContentBrowserTest::TearDownOnMainThread(); -} - -aura::Window* AshContentTest::CreateBrowserWindow(const GURL& url) { - return ash::shell::EmbeddedBrowser::Create( - ash::shell::ShellBrowserMainParts::GetBrowserContext(), url, - gfx::Rect(test_window_size_)); -} - -aura::Window* AshContentTest::CreateTestWindow() { - views::Widget* widget = views::Widget::CreateWindowWithContext( - new ash::shell::WindowTypeLauncher(base::NullCallback(), - base::NullCallback()), - ash::Shell::GetPrimaryRootWindow(), gfx::Rect(test_window_size_)); - widget->GetNativeView()->SetName("WindowTypeLauncher"); - widget->Show(); - - return widget->GetNativeWindow(); -} - -void AshContentTest::PreRunTestOnMainThread() { - // We're not calling ContentBrowserTest's method because it performs content - // shell initialization. Same in PostRunTestOnMainThread. - - // Pump startup related events. - base::RunLoop().RunUntilIdle(); -} - -void AshContentTest::PostRunTestOnMainThread() { - // Cleanup all application windows. - aura::WindowTracker tracker( - ash::Shell::Get()->mru_window_tracker()->BuildWindowForCycleList( - ash::kAllDesks)); - while (!tracker.windows().empty()) { - auto* widget = views::Widget::GetWidgetForNativeWindow(tracker.Pop()); - widget->Close(); - } - - // Sometimes tests leave Quit tasks in the MessageLoop (for shame), so let's - // run all pending messages here to avoid preempting the QuitBrowsers tasks. - // TODO(https://crbug.com/922118): Remove this once it is no longer possible - // to post QuitCurrent* tasks. - base::RunLoop().RunUntilIdle(); -} - -std::vector<std::string> AshContentTest::GetUMAHistogramNames() const { - return {}; -} - -std::vector<std::string> AshContentTest::GetTimelineBasedMetrics() const { - return {"renderingMetric", "umaMetric"}; -}
diff --git a/ash/shell/content/test/ash_content_test.h b/ash/shell/content/test/ash_content_test.h deleted file mode 100644 index 9958806..0000000 --- a/ash/shell/content/test/ash_content_test.h +++ /dev/null
@@ -1,57 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_CONTENT_TEST_ASH_CONTENT_TEST_H_ -#define ASH_SHELL_CONTENT_TEST_ASH_CONTENT_TEST_H_ - -#include <memory> -#include <string> -#include <vector> - -#include "base/macros.h" -#include "content/public/test/content_browser_test.h" - -// A base class for ash test with content. The test will run with multi process -// with gpu/viz process, much closer to real environment than ash_unittests. -class AshContentTest : public content::ContentBrowserTest { - public: - AshContentTest(); - ~AshContentTest() override; - - // contnet::ContentBrowserTest: - void SetUp() override; - void SetUpOnMainThread() override; - void TearDownOnMainThread() override; - void PreRunTestOnMainThread() override; - void PostRunTestOnMainThread() override; - - protected: - aura::Window* CreateBrowserWindow(const GURL& url); - aura::Window* CreateTestWindow(); - - virtual std::vector<std::string> GetUMAHistogramNames() const; - - // Returns the names of timeline based metrics (TBM) to be extracted from - // the generated trace. The metrics must be defined in telemetry - // third_party/catapult/tracing/tracing/metrics/ - // so that third_party/catapult/tracing/bin/run_metric could handle them. - // Default is "renderingMetric", "umaMetric". - virtual std::vector<std::string> GetTimelineBasedMetrics() const; - - private: - class Tracer; - - gfx::Size test_window_size_; - bool enable_trace_; - std::unique_ptr<Tracer> tracer_; - - DISALLOW_COPY_AND_ASSIGN(AshContentTest); -}; - -#define ASH_CONTENT_TEST_F(test_fixture, test_name) \ - IN_PROC_BROWSER_TEST_F(test_fixture, test_name) -#define ASH_CONTENT_TEST_P(test_fixture, test_name) \ - IN_PROC_BROWSER_TEST_P(test_fixture, test_name) - -#endif // ASH_SHELL_CONTENT_TEST_ASH_CONTENT_TEST_H_
diff --git a/ash/shell/example_app_list_client.cc b/ash/shell/example_app_list_client.cc deleted file mode 100644 index 8790a14b8..0000000 --- a/ash/shell/example_app_list_client.cc +++ /dev/null
@@ -1,260 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/example_app_list_client.h" - -#include <algorithm> -#include <utility> - -#include "ash/app_list/app_list_controller_impl.h" -#include "ash/app_list/model/app_list_item.h" -#include "ash/app_list/model/search/search_result.h" -#include "ash/session/session_controller_impl.h" -#include "ash/shell.h" -#include "ash/shell/example_factory.h" -#include "ash/shell/toplevel_window.h" -#include "base/bind_helpers.h" -#include "base/i18n/case_conversion.h" -#include "base/i18n/string_search.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/utf_string_conversions.h" -#include "ui/gfx/image/image_skia.h" -#include "ui/views/examples/example_base.h" -#include "ui/views/examples/examples_window.h" - -namespace ash { -namespace shell { - -// WindowTypeShelfItem is an app item of app list. It carries a window -// launch type and launches corresponding example window when activated. -class WindowTypeShelfItem : public AppListItem { - public: - enum Type { - TOPLEVEL_WINDOW = 0, - NON_RESIZABLE_WINDOW, - LOCK_SCREEN, - WIDGETS_WINDOW, - EXAMPLES_WINDOW, - LAST_TYPE, - }; - - WindowTypeShelfItem(const std::string& id, Type type); - ~WindowTypeShelfItem() override; - - static gfx::ImageSkia GetIcon(Type type) { - static const SkColor kColors[] = { - SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorYELLOW, SK_ColorCYAN, - }; - - const int kIconSize = 128; - SkBitmap icon; - icon.allocN32Pixels(kIconSize, kIconSize); - icon.eraseColor(kColors[static_cast<int>(type) % base::size(kColors)]); - return gfx::ImageSkia::CreateFrom1xBitmap(icon); - } - - // The text below is not localized as this is an example code. - static std::string GetTitle(Type type) { - switch (type) { - case TOPLEVEL_WINDOW: - return "Create Window"; - case NON_RESIZABLE_WINDOW: - return "Create Non-Resizable Window"; - case LOCK_SCREEN: - return "Lock Screen"; - case WIDGETS_WINDOW: - return "Show Example Widgets"; - case EXAMPLES_WINDOW: - return "Open Views Examples Window"; - default: - return "Unknown window type."; - } - } - - // The text below is not localized as this is an example code. - static std::string GetDetails(Type type) { - // Assigns details only to some types so that we see both one-line - // and two-line results. - switch (type) { - case WIDGETS_WINDOW: - return "Creates a window to show example widgets"; - case EXAMPLES_WINDOW: - return "Creates a window to show views example."; - default: - return std::string(); - } - } - - static void ActivateItem(Type type, int event_flags) { - switch (type) { - case TOPLEVEL_WINDOW: { - ToplevelWindow::CreateParams params; - params.can_resize = true; - ToplevelWindow::CreateToplevelWindow(params); - break; - } - case NON_RESIZABLE_WINDOW: { - ToplevelWindow::CreateToplevelWindow(ToplevelWindow::CreateParams()); - break; - } - case LOCK_SCREEN: { - Shell::Get()->session_controller()->LockScreen(); - break; - } - case WIDGETS_WINDOW: { - CreateWidgetsWindow(); - break; - } - case EXAMPLES_WINDOW: { - views::examples::ShowExamplesWindow(base::DoNothing()); - break; - } - default: - break; - } - } - - Type type() const { return type_; } - - private: - Type type_; - - DISALLOW_COPY_AND_ASSIGN(WindowTypeShelfItem); -}; - -WindowTypeShelfItem::WindowTypeShelfItem(const std::string& id, Type type) - : AppListItem(id), type_(type) { - std::string title(GetTitle(type)); - SetIcon(ash::AppListConfigType::kShared, GetIcon(type)); - SetName(title); -} - -WindowTypeShelfItem::~WindowTypeShelfItem() = default; - -// ExampleSearchResult is an app list search result. It provides what icon to -// show, what should title and details text look like. It also carries the -// matching window launch type so that AppListViewDelegate knows how to open -// it. -class ExampleSearchResult : public SearchResult { - public: - ExampleSearchResult(WindowTypeShelfItem::Type type, - const base::string16& query) - : type_(type) { - SetIcon(WindowTypeShelfItem::GetIcon(type_)); - - base::string16 title = - base::UTF8ToUTF16(WindowTypeShelfItem::GetTitle(type_)); - set_title(title); - - if (query.empty()) { - set_is_recommendation(true); - SetChipIcon(WindowTypeShelfItem::GetIcon(type_)); - } else { - Tags title_tags; - - // Highlight matching parts in title with bold. - // Note the following is not a proper way to handle i18n string. - title = base::i18n::ToLower(title); - const size_t match_len = query.length(); - size_t match_start = title.find(query); - while (match_start != base::string16::npos) { - title_tags.push_back( - Tag(Tag::MATCH, match_start, match_start + match_len)); - match_start = title.find(query, match_start + match_len); - } - set_title_tags(title_tags); - } - - base::string16 details = - base::UTF8ToUTF16(WindowTypeShelfItem::GetDetails(type_)); - set_details(details); - Tags details_tags; - details_tags.push_back(Tag(Tag::DIM, 0, details.length())); - set_details_tags(details_tags); - } - - WindowTypeShelfItem::Type type() const { return type_; } - - private: - WindowTypeShelfItem::Type type_; - - DISALLOW_COPY_AND_ASSIGN(ExampleSearchResult); -}; - -ExampleAppListClient::ExampleAppListClient(AppListControllerImpl* controller) - : controller_(controller) { - controller_->SetClient(this); - - PopulateApps(); -} - -ExampleAppListClient::~ExampleAppListClient() { - controller_->SetClient(nullptr); -} - -void ExampleAppListClient::PopulateApps() { - for (int i = 0; i < static_cast<int>(WindowTypeShelfItem::LAST_TYPE); ++i) { - WindowTypeShelfItem::Type type = static_cast<WindowTypeShelfItem::Type>(i); - const std::string id = base::NumberToString(i); - auto app = std::make_unique<WindowTypeShelfItem>(id, type); - controller_->AddItem(app->CloneMetadata()); - apps_.emplace_back(std::move(app)); - } -} - -void ExampleAppListClient::StartSearch(const base::string16& trimmed_query) { - base::string16 query; - query = base::i18n::ToLower(trimmed_query); - - search_results_.clear(); - std::vector<std::unique_ptr<ash::SearchResultMetadata>> result_data; - for (int i = 0; i < static_cast<int>(WindowTypeShelfItem::LAST_TYPE); ++i) { - WindowTypeShelfItem::Type type = static_cast<WindowTypeShelfItem::Type>(i); - - const base::string16 title = - base::UTF8ToUTF16(WindowTypeShelfItem::GetTitle(type)); - if (query.empty() || base::i18n::StringSearchIgnoringCaseAndAccents( - query, title, nullptr, nullptr)) { - search_results_.emplace_back( - std::make_unique<ExampleSearchResult>(type, query)); - result_data.emplace_back(search_results_.back()->CloneMetadata()); - } - } - controller_->PublishSearchResults(std::move(result_data)); -} - -void ExampleAppListClient::OpenSearchResult( - const std::string& result_id, - int event_flags, - ash::AppListLaunchedFrom launched_from, - ash::AppListLaunchType launch_type, - int suggestion_index, - bool launch_as_default) { - auto it = std::find_if( - search_results_.begin(), search_results_.end(), - [&result_id](const std::unique_ptr<ExampleSearchResult>& result) { - return result->id() == result_id; - }); - if (it == search_results_.end()) - return; - - WindowTypeShelfItem::ActivateItem((*it)->type(), event_flags); -} - -void ExampleAppListClient::ActivateItem(int profile_id, - const std::string& id, - int event_flags) { - auto it = - std::find_if(apps_.begin(), apps_.end(), - [&id](const std::unique_ptr<WindowTypeShelfItem>& app) { - return app->id() == id; - }); - if (it == apps_.end()) - return; - - WindowTypeShelfItem::ActivateItem((*it)->type(), event_flags); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/example_app_list_client.h b/ash/shell/example_app_list_client.h deleted file mode 100644 index f6800e95..0000000 --- a/ash/shell/example_app_list_client.h +++ /dev/null
@@ -1,55 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_EXAMPLE_APP_LIST_CLIENT_H_ -#define ASH_SHELL_EXAMPLE_APP_LIST_CLIENT_H_ - -#include <memory> -#include <string> -#include <vector> - -#include "ash/app_list/test/test_app_list_client.h" -#include "base/macros.h" - -namespace ash { - -class AppListControllerImpl; - -namespace shell { - -class WindowTypeShelfItem; -class ExampleSearchResult; - -class ExampleAppListClient : public TestAppListClient { - public: - explicit ExampleAppListClient(AppListControllerImpl* controller); - ~ExampleAppListClient() override; - - private: - void PopulateApps(); - - // TestAppListClient: - void StartSearch(const base::string16& trimmed_query) override; - void OpenSearchResult(const std::string& result_id, - int event_flags, - ash::AppListLaunchedFrom launched_from, - ash::AppListLaunchType launch_type, - int suggestion_index, - bool launch_as_default) override; - void ActivateItem(int profile_id, - const std::string& id, - int event_flags) override; - - AppListControllerImpl* controller_; - - std::vector<std::unique_ptr<WindowTypeShelfItem>> apps_; - std::vector<std::unique_ptr<ExampleSearchResult>> search_results_; - - DISALLOW_COPY_AND_ASSIGN(ExampleAppListClient); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_EXAMPLE_APP_LIST_CLIENT_H_
diff --git a/ash/shell/example_factory.h b/ash/shell/example_factory.h deleted file mode 100644 index a2e12d50..0000000 --- a/ash/shell/example_factory.h +++ /dev/null
@@ -1,29 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_EXAMPLE_FACTORY_H_ -#define ASH_SHELL_EXAMPLE_FACTORY_H_ - -namespace views { -class View; -} - -namespace ash { -class AppListViewDelegate; - -namespace shell { - -void CreatePointyBubble(views::View* anchor_view); - -void CreateLockScreen(); - -// Creates a window showing samples of commonly used widgets. -void CreateWidgetsWindow(); - -AppListViewDelegate* CreateAppListViewDelegate(); - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_EXAMPLE_FACTORY_H_
diff --git a/ash/shell/example_session_controller_client.cc b/ash/shell/example_session_controller_client.cc deleted file mode 100644 index 0e29e95e..0000000 --- a/ash/shell/example_session_controller_client.cc +++ /dev/null
@@ -1,64 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/example_session_controller_client.h" - -#include "ash/shell.h" -#include "ash/shell/example_factory.h" -#include "base/check_op.h" - -namespace ash { -namespace shell { - -namespace { - -ExampleSessionControllerClient* instance = nullptr; - -} // namespace - -ExampleSessionControllerClient::ExampleSessionControllerClient( - SessionControllerImpl* controller, - TestPrefServiceProvider* prefs_provider) - : TestSessionControllerClient(controller, prefs_provider) { - DCHECK_EQ(instance, nullptr); - DCHECK(controller); - instance = this; -} - -ExampleSessionControllerClient::~ExampleSessionControllerClient() { - DCHECK_EQ(instance, this); - instance = nullptr; -} - -// static -ExampleSessionControllerClient* ExampleSessionControllerClient::Get() { - return instance; -} - -void ExampleSessionControllerClient::Initialize() { - // Initialize and bind with the session controller. - InitializeAndSetClient(); - - // ash_shell has 2 users. - CreatePredefinedUserSessions(2); -} - -void ExampleSessionControllerClient::RequestLockScreen() { - TestSessionControllerClient::RequestLockScreen(); - CreateLockScreen(); - Shell::Get()->UpdateShelfVisibility(); -} - -void ExampleSessionControllerClient::UnlockScreen() { - TestSessionControllerClient::UnlockScreen(); - Shell::Get()->UpdateShelfVisibility(); -} - -void ExampleSessionControllerClient::RequestSignOut() { - DCHECK(quit_closure_); - std::move(quit_closure_).Run(); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/example_session_controller_client.h b/ash/shell/example_session_controller_client.h deleted file mode 100644 index ef8779f6..0000000 --- a/ash/shell/example_session_controller_client.h +++ /dev/null
@@ -1,48 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_EXAMPLE_SESSION_CONTROLLER_CLIENT_H_ -#define ASH_SHELL_EXAMPLE_SESSION_CONTROLLER_CLIENT_H_ - -#include <utility> - -#include "ash/session/test_session_controller_client.h" -#include "base/callback.h" -#include "base/macros.h" - -namespace ash { - -class SessionControllerImpl; - -namespace shell { - -class ExampleSessionControllerClient : public TestSessionControllerClient { - public: - ExampleSessionControllerClient(SessionControllerImpl* controller, - TestPrefServiceProvider* prefs_provider); - ~ExampleSessionControllerClient() override; - - static ExampleSessionControllerClient* Get(); - - void Initialize(); - - void set_quit_closure(base::OnceClosure quit_closure) { - quit_closure_ = std::move(quit_closure); - } - - // TestSessionControllerClient - void RequestLockScreen() override; - void UnlockScreen() override; - void RequestSignOut() override; - - private: - base::OnceClosure quit_closure_; - - DISALLOW_COPY_AND_ASSIGN(ExampleSessionControllerClient); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_EXAMPLE_SESSION_CONTROLLER_CLIENT_H_
diff --git a/ash/shell/lock_view.cc b/ash/shell/lock_view.cc deleted file mode 100644 index 089d822..0000000 --- a/ash/shell/lock_view.cc +++ /dev/null
@@ -1,109 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/public/cpp/shell_window_ids.h" -#include "ash/session/session_controller_impl.h" -#include "ash/shell.h" -#include "ash/shell/example_factory.h" -#include "ash/shell/example_session_controller_client.h" -#include "base/strings/utf_string_conversions.h" -#include "ui/aura/window.h" -#include "ui/aura/window_event_dispatcher.h" -#include "ui/gfx/canvas.h" -#include "ui/gfx/font_list.h" -#include "ui/gfx/geometry/rect.h" -#include "ui/gfx/text_utils.h" -#include "ui/views/controls/button/md_text_button.h" -#include "ui/views/controls/label.h" -#include "ui/views/corewm/tooltip_controller.h" -#include "ui/views/widget/widget.h" -#include "ui/views/widget/widget_delegate.h" - -namespace ash { -namespace shell { - -class LockView : public views::WidgetDelegateView, - public views::ButtonListener { - public: - LockView() : text_(new views::Label(base::ASCIIToUTF16("LOCKED!"))) { - text_->SetEnabledColor(SK_ColorRED); - AddChildView(text_); - unlock_button_ = AddChildView( - views::MdTextButton::Create(this, base::ASCIIToUTF16("Unlock"))); - } - ~LockView() override = default; - - // Overridden from views::View: - gfx::Size CalculatePreferredSize() const override { - return gfx::Size(500, 400); - } - - private: - // Overridden from views::View: - void OnPaint(gfx::Canvas* canvas) override { - canvas->FillRect(GetLocalBounds(), SK_ColorYELLOW); - } - - void Layout() override { - gfx::Rect bounds = GetLocalBounds(); - gfx::Size ts = text_->GetPreferredSize(); - text_->SetBoundsRect(gfx::Rect((bounds.width() - ts.width()) / 2, - (bounds.height() - ts.height()) / 2, - ts.width(), ts.height())); - - gfx::Size ps = unlock_button_->GetPreferredSize(); - bounds.set_y(bounds.bottom() - ps.height() - 5); - bounds.set_x((bounds.width() - ps.width()) / 2); - bounds.set_size(ps); - unlock_button_->SetBoundsRect(bounds); - } - - void ViewHierarchyChanged( - const views::ViewHierarchyChangedDetails& details) override { - if (details.is_add && details.child == this) - unlock_button_->RequestFocus(); - } - - // Overridden from views::WidgetDelegateView: - void WindowClosing() override { - ExampleSessionControllerClient::Get()->UnlockScreen(); - } - - // Overridden from views::ButtonListener: - void ButtonPressed(views::Button* sender, const ui::Event& event) override { - DCHECK(sender == unlock_button_); - GetWidget()->Close(); - } - - views::Label* text_; - views::Button* unlock_button_; - - DISALLOW_COPY_AND_ASSIGN(LockView); -}; - -void CreateLockScreen() { - LockView* lock_view = new LockView; - views::Widget* widget = new views::Widget; - views::Widget::InitParams params( - views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); - gfx::Size ps = lock_view->GetPreferredSize(); - - gfx::Size root_window_size = Shell::GetPrimaryRootWindow()->bounds().size(); - params.bounds = gfx::Rect((root_window_size.width() - ps.width()) / 2, - (root_window_size.height() - ps.height()) / 2, - ps.width(), ps.height()); - params.delegate = lock_view; - params.parent = Shell::GetContainer(Shell::GetPrimaryRootWindow(), - kShellWindowId_LockScreenContainer); - widget->Init(std::move(params)); - widget->Show(); - widget->GetNativeView()->SetName("LockView"); - widget->GetNativeView()->Focus(); - - // TODO: it shouldn't be necessary to invoke UpdateTooltip() here. - Shell::Get()->tooltip_controller()->UpdateTooltip(widget->GetNativeView()); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/shell_delegate_impl.cc b/ash/shell/shell_delegate_impl.cc deleted file mode 100644 index ba554f8..0000000 --- a/ash/shell/shell_delegate_impl.cc +++ /dev/null
@@ -1,51 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/shell_delegate_impl.h" - -#include <memory> - -#include "ash/accessibility/default_accessibility_delegate.h" -#include "ash/test_screenshot_delegate.h" -#include "ash/wm/gestures/back_gesture/test_back_gesture_contextual_nudge_delegate.h" - -namespace ash { -namespace shell { - -ShellDelegateImpl::ShellDelegateImpl() = default; - -ShellDelegateImpl::~ShellDelegateImpl() = default; - -bool ShellDelegateImpl::CanShowWindowForUser(const aura::Window* window) const { - return true; -} - -std::unique_ptr<ash::ScreenshotDelegate> -ShellDelegateImpl::CreateScreenshotDelegate() { - return std::make_unique<TestScreenshotDelegate>(); -} - -AccessibilityDelegate* ShellDelegateImpl::CreateAccessibilityDelegate() { - return new DefaultAccessibilityDelegate; -} - -std::unique_ptr<BackGestureContextualNudgeDelegate> -ShellDelegateImpl::CreateBackGestureContextualNudgeDelegate( - BackGestureContextualNudgeController* controller) { - return std::make_unique<TestBackGestureContextualNudgeDelegate>(controller); -} - -bool ShellDelegateImpl::CanGoBack(gfx::NativeWindow window) const { - return true; -} - -void ShellDelegateImpl::BindNavigableContentsFactory( - mojo::PendingReceiver<content::mojom::NavigableContentsFactory> receiver) {} - -void ShellDelegateImpl::BindMultiDeviceSetup( - mojo::PendingReceiver<chromeos::multidevice_setup::mojom::MultiDeviceSetup> - receiver) {} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/shell_delegate_impl.h b/ash/shell/shell_delegate_impl.h deleted file mode 100644 index 6c6a043..0000000 --- a/ash/shell/shell_delegate_impl.h +++ /dev/null
@@ -1,45 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_SHELL_DELEGATE_IMPL_H_ -#define ASH_SHELL_SHELL_DELEGATE_IMPL_H_ - -#include <memory> -#include <string> - -#include "ash/shell_delegate.h" -#include "base/macros.h" - -namespace ash { -namespace shell { - -class ShellDelegateImpl : public ShellDelegate { - public: - ShellDelegateImpl(); - ~ShellDelegateImpl() override; - - // ShellDelegate: - bool CanShowWindowForUser(const aura::Window* window) const override; - std::unique_ptr<ScreenshotDelegate> CreateScreenshotDelegate() override; - AccessibilityDelegate* CreateAccessibilityDelegate() override; - std::unique_ptr<BackGestureContextualNudgeDelegate> - CreateBackGestureContextualNudgeDelegate( - BackGestureContextualNudgeController* controller) override; - bool CanGoBack(gfx::NativeWindow window) const override; - void BindNavigableContentsFactory( - mojo::PendingReceiver<content::mojom::NavigableContentsFactory> receiver) - override; - void BindMultiDeviceSetup( - mojo::PendingReceiver< - chromeos::multidevice_setup::mojom::MultiDeviceSetup> receiver) - override; - - private: - DISALLOW_COPY_AND_ASSIGN(ShellDelegateImpl); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_SHELL_DELEGATE_IMPL_H_
diff --git a/ash/shell/shell_views_delegate.cc b/ash/shell/shell_views_delegate.cc deleted file mode 100644 index 8401186..0000000 --- a/ash/shell/shell_views_delegate.cc +++ /dev/null
@@ -1,35 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/shell_views_delegate.h" - -#include "ash/shell.h" - -namespace ash { -namespace shell { - -ShellViewsDelegate::ShellViewsDelegate() = default; - -ShellViewsDelegate::~ShellViewsDelegate() = default; - -std::unique_ptr<views::NonClientFrameView> -ShellViewsDelegate::CreateDefaultNonClientFrameView(views::Widget* widget) { - return ash::Shell::Get()->CreateDefaultNonClientFrameView(widget); -} - -void ShellViewsDelegate::OnBeforeWidgetInit( - views::Widget::InitParams* params, - views::internal::NativeWidgetDelegate* delegate) { - if (params->opacity == views::Widget::InitParams::WindowOpacity::kInferred) - params->opacity = views::Widget::InitParams::WindowOpacity::kTranslucent; - - if (params->native_widget) - return; - - if (!params->parent && !params->context && !params->child) - params->context = Shell::GetPrimaryRootWindow(); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/shell_views_delegate.h b/ash/shell/shell_views_delegate.h deleted file mode 100644 index 69ec21ba..0000000 --- a/ash/shell/shell_views_delegate.h +++ /dev/null
@@ -1,32 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_SHELL_VIEWS_DELEGATE_H_ -#define ASH_SHELL_SHELL_VIEWS_DELEGATE_H_ - -#include "ui/views/test/test_views_delegate.h" - -namespace ash { -namespace shell { - -class ShellViewsDelegate : public views::TestViewsDelegate { - public: - ShellViewsDelegate(); - ~ShellViewsDelegate() override; - - // views::TestViewsDelegate: - std::unique_ptr<views::NonClientFrameView> CreateDefaultNonClientFrameView( - views::Widget* widget) override; - void OnBeforeWidgetInit( - views::Widget::InitParams* params, - views::internal::NativeWidgetDelegate* delegate) override; - - private: - DISALLOW_COPY_AND_ASSIGN(ShellViewsDelegate); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_SHELL_VIEWS_DELEGATE_H_
diff --git a/ash/shell/toplevel_window.cc b/ash/shell/toplevel_window.cc deleted file mode 100644 index 392197a..0000000 --- a/ash/shell/toplevel_window.cc +++ /dev/null
@@ -1,92 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/toplevel_window.h" - -#include "ash/shell.h" -#include "ash/wm/window_positioner.h" -#include "ash/wm/window_state.h" -#include "base/strings/utf_string_conversions.h" -#include "ui/aura/window.h" -#include "ui/aura/window_event_dispatcher.h" -#include "ui/gfx/canvas.h" -#include "ui/views/widget/widget.h" - -namespace ash { -namespace shell { -namespace { - -struct SavedState { - gfx::Rect bounds; - ui::WindowShowState show_state; -}; - -// The last window state in ash_shell. We don't bother deleting -// this on shutdown. -SavedState* saved_state = NULL; - -} // namespace - -ToplevelWindow::CreateParams::CreateParams() - : can_resize(false), can_maximize(false), use_saved_placement(true) {} - -// static -views::Widget* ToplevelWindow::CreateToplevelWindow( - const CreateParams& params) { - views::Widget* widget = views::Widget::CreateWindowWithContext( - new ToplevelWindow(params), Shell::GetPrimaryRootWindow()); - widget->GetNativeView()->SetName("Examples:ToplevelWindow"); - WindowState* window_state = WindowState::Get(widget->GetNativeView()); - window_state->SetWindowPositionManaged(true); - widget->Show(); - return widget; -} - -// static -void ToplevelWindow::ClearSavedStateForTest() { - delete saved_state; - saved_state = NULL; -} - -ToplevelWindow::ToplevelWindow(const CreateParams& params) - : use_saved_placement_(params.use_saved_placement) { - SetCanMaximize(params.can_maximize); - SetCanMinimize(params.can_maximize); - SetCanResize(params.can_resize); - SetTitle(base::ASCIIToUTF16("Examples: Toplevel Window")); -} - -ToplevelWindow::~ToplevelWindow() = default; - -void ToplevelWindow::OnPaint(gfx::Canvas* canvas) { - canvas->FillRect(GetLocalBounds(), SK_ColorDKGRAY); -} - -void ToplevelWindow::SaveWindowPlacement(const gfx::Rect& bounds, - ui::WindowShowState show_state) { - if (!saved_state) - saved_state = new SavedState; - saved_state->bounds = bounds; - saved_state->show_state = show_state; -} - -bool ToplevelWindow::GetSavedWindowPlacement( - const views::Widget* widget, - gfx::Rect* bounds, - ui::WindowShowState* show_state) const { - bool is_saved_bounds = !!saved_state; - if (saved_state && use_saved_placement_) { - *bounds = saved_state->bounds; - *show_state = saved_state->show_state; - } else { - // Initial default bounds. - bounds->SetRect(10, 150, 300, 300); - } - WindowPositioner::GetBoundsAndShowStateForNewWindow( - is_saved_bounds, *show_state, bounds, show_state); - return true; -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/toplevel_window.h b/ash/shell/toplevel_window.h deleted file mode 100644 index 77dc048..0000000 --- a/ash/shell/toplevel_window.h +++ /dev/null
@@ -1,51 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_TOPLEVEL_WINDOW_H_ -#define ASH_SHELL_TOPLEVEL_WINDOW_H_ - -#include "base/macros.h" -#include "ui/views/widget/widget_delegate.h" - -namespace ash { -namespace shell { - -class ToplevelWindow : public views::WidgetDelegateView { - public: - struct CreateParams { - CreateParams(); - - bool can_resize; - bool can_maximize; - bool use_saved_placement; - }; - static views::Widget* CreateToplevelWindow(const CreateParams& params); - - // Clears saved show state and bounds used to position - // a new window. - static void ClearSavedStateForTest(); - - private: - explicit ToplevelWindow(const CreateParams& params); - ~ToplevelWindow() override; - - // Overridden from views::View: - void OnPaint(gfx::Canvas* canvas) override; - - // Overridden from views::WidgetDelegate: - void SaveWindowPlacement(const gfx::Rect& bounds, - ui::WindowShowState show_state) override; - bool GetSavedWindowPlacement(const views::Widget* widget, - gfx::Rect* bounds, - ui::WindowShowState* show_state) const override; - - bool use_saved_placement_ = true; - - DISALLOW_COPY_AND_ASSIGN(ToplevelWindow); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_TOPLEVEL_WINDOW_H_
diff --git a/ash/shell/widgets.cc b/ash/shell/widgets.cc deleted file mode 100644 index 2b486c4..0000000 --- a/ash/shell/widgets.cc +++ /dev/null
@@ -1,135 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell.h" -#include "base/strings/utf_string_conversions.h" -#include "ui/aura/window.h" -#include "ui/aura/window_event_dispatcher.h" -#include "ui/gfx/canvas.h" -#include "ui/views/controls/button/checkbox.h" -#include "ui/views/controls/button/md_text_button.h" -#include "ui/views/controls/button/radio_button.h" -#include "ui/views/widget/widget.h" -#include "ui/views/widget/widget_delegate.h" - -namespace { - -// Default window position. -const int kWindowLeft = 170; -const int kWindowTop = 200; - -// Default window size. -const int kWindowWidth = 400; -const int kWindowHeight = 400; - -// A window showing samples of commonly used widgets. -class WidgetsWindow : public views::WidgetDelegateView { - public: - WidgetsWindow(); - ~WidgetsWindow() override; - - // Overridden from views::View: - void OnPaint(gfx::Canvas* canvas) override; - void Layout() override; - gfx::Size CalculatePreferredSize() const override; - - // Overridden from views::WidgetDelegate: - bool CanResize() const override; - - private: - views::LabelButton* button_; - views::LabelButton* disabled_button_; - views::Checkbox* checkbox_; - views::Checkbox* checkbox_disabled_; - views::Checkbox* checkbox_checked_; - views::Checkbox* checkbox_checked_disabled_; - views::RadioButton* radio_button_; - views::RadioButton* radio_button_disabled_; - views::RadioButton* radio_button_selected_; - views::RadioButton* radio_button_selected_disabled_; -}; - -WidgetsWindow::WidgetsWindow() - : checkbox_(new views::Checkbox(base::ASCIIToUTF16("Checkbox"))), - checkbox_disabled_( - new views::Checkbox(base::ASCIIToUTF16("Checkbox disabled"))), - checkbox_checked_( - new views::Checkbox(base::ASCIIToUTF16("Checkbox checked"))), - checkbox_checked_disabled_( - new views::Checkbox(base::ASCIIToUTF16("Checkbox checked disabled"))), - radio_button_( - new views::RadioButton(base::ASCIIToUTF16("Radio button"), 0)), - radio_button_disabled_( - new views::RadioButton(base::ASCIIToUTF16("Radio button disabled"), - 0)), - radio_button_selected_( - new views::RadioButton(base::ASCIIToUTF16("Radio button selected"), - 0)), - radio_button_selected_disabled_(new views::RadioButton( - base::ASCIIToUTF16("Radio button selected disabled"), - 1)) { - SetTitle(base::ASCIIToUTF16("Examples: Widgets")); - button_ = AddChildView( - views::MdTextButton::Create(nullptr, base::ASCIIToUTF16("Button"))); - disabled_button_ = AddChildView(views::MdTextButton::Create( - nullptr, base::ASCIIToUTF16("Disabled button"))); - disabled_button_->SetEnabled(false); - AddChildView(checkbox_); - checkbox_disabled_->SetEnabled(false); - AddChildView(checkbox_disabled_); - checkbox_checked_->SetChecked(true); - AddChildView(checkbox_checked_); - checkbox_checked_disabled_->SetChecked(true); - checkbox_checked_disabled_->SetEnabled(false); - AddChildView(checkbox_checked_disabled_); - AddChildView(radio_button_); - radio_button_disabled_->SetEnabled(false); - AddChildView(radio_button_disabled_); - radio_button_selected_->SetChecked(true); - AddChildView(radio_button_selected_); - radio_button_selected_disabled_->SetChecked(true); - radio_button_selected_disabled_->SetEnabled(false); - AddChildView(radio_button_selected_disabled_); -} - -WidgetsWindow::~WidgetsWindow() = default; - -void WidgetsWindow::OnPaint(gfx::Canvas* canvas) { - canvas->FillRect(GetLocalBounds(), SK_ColorWHITE); -} - -void WidgetsWindow::Layout() { - const int kVerticalPad = 5; - int left = 5; - int top = kVerticalPad; - for (auto* view : children()) { - gfx::Size preferred = view->GetPreferredSize(); - view->SetBounds(left, top, preferred.width(), preferred.height()); - top += preferred.height() + kVerticalPad; - } -} - -gfx::Size WidgetsWindow::CalculatePreferredSize() const { - return gfx::Size(kWindowWidth, kWindowHeight); -} - -bool WidgetsWindow::CanResize() const { - return true; -} - -} // namespace - -namespace ash { -namespace shell { - -void CreateWidgetsWindow() { - views::Widget* widget = views::Widget::CreateWindowWithContext( - new WidgetsWindow, Shell::GetPrimaryRootWindow(), - gfx::Rect(kWindowLeft, kWindowTop, kWindowWidth, kWindowHeight)); - widget->GetNativeView()->SetName("WidgetsWindow"); - widget->Show(); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/window_type_launcher.cc b/ash/shell/window_type_launcher.cc deleted file mode 100644 index 56e4485..0000000 --- a/ash/shell/window_type_launcher.cc +++ /dev/null
@@ -1,319 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/window_type_launcher.h" - -#include <utility> - -#include "ash/public/cpp/shell_window_ids.h" -#include "ash/root_window_controller.h" -#include "ash/session/session_controller_impl.h" -#include "ash/shell.h" -#include "ash/shell/example_factory.h" -#include "ash/shell/toplevel_window.h" -#include "ash/wm/test_child_modal_parent.h" -#include "base/stl_util.h" -#include "base/strings/utf_string_conversions.h" -#include "ui/aura/window.h" -#include "ui/aura/window_event_dispatcher.h" -#include "ui/compositor/layer.h" -#include "ui/gfx/canvas.h" -#include "ui/message_center/message_center.h" -#include "ui/message_center/public/cpp/notification_types.h" -#include "ui/views/border.h" -#include "ui/views/controls/button/md_text_button.h" -#include "ui/views/controls/menu/menu_item_view.h" -#include "ui/views/controls/menu/menu_runner.h" -#include "ui/views/layout/grid_layout.h" -#include "ui/views/widget/widget.h" -#include "ui/wm/core/shadow_types.h" - -using views::MdTextButton; -using views::MenuItemView; -using views::MenuRunner; - -namespace ash { -namespace shell { - -namespace { - -constexpr int kWindowShadowElevation = 8; -constexpr const SkColor kColors[] = {SK_ColorRED, SK_ColorYELLOW, SK_ColorBLUE, - SK_ColorGREEN}; - -int g_color_index = 0; - -class ModalWindow : public views::WidgetDelegateView, - public views::ButtonListener { - public: - explicit ModalWindow(ui::ModalType modal_type) - : modal_type_(modal_type), color_(kColors[g_color_index]) { - SetTitle(base::ASCIIToUTF16("Modal Window")); - ++g_color_index %= base::size(kColors); - open_button_ = - AddChildView(MdTextButton::Create(this, base::ASCIIToUTF16("Moar!"))); - } - ~ModalWindow() override = default; - - static void OpenModalWindow(aura::Window* parent, ui::ModalType modal_type) { - views::Widget* widget = views::Widget::CreateWindowWithParent( - new ModalWindow(modal_type), parent); - widget->GetNativeView()->SetName("ModalWindow"); - widget->Show(); - } - - // Overridden from views::View: - void OnPaint(gfx::Canvas* canvas) override { - canvas->FillRect(GetLocalBounds(), color_); - } - gfx::Size CalculatePreferredSize() const override { - return gfx::Size(200, 200); - } - void Layout() override { - gfx::Size open_ps = open_button_->GetPreferredSize(); - gfx::Rect local_bounds = GetLocalBounds(); - open_button_->SetBounds(5, local_bounds.bottom() - open_ps.height() - 5, - open_ps.width(), open_ps.height()); - } - - // Overridden from views::WidgetDelegate: - bool CanResize() const override { return true; } - ui::ModalType GetModalType() const override { return modal_type_; } - - // Overridden from views::ButtonListener: - void ButtonPressed(views::Button* sender, const ui::Event& event) override { - DCHECK(sender == open_button_); - OpenModalWindow(GetWidget()->GetNativeView(), modal_type_); - } - - private: - ui::ModalType modal_type_; - SkColor color_; - views::Button* open_button_; - - DISALLOW_COPY_AND_ASSIGN(ModalWindow); -}; - -class NonModalTransient : public views::WidgetDelegateView { - public: - NonModalTransient() : color_(kColors[g_color_index]) { - SetTitle(base::ASCIIToUTF16("Non-Modal Transient")); - ++g_color_index %= base::size(kColors); - } - ~NonModalTransient() override = default; - - static void OpenNonModalTransient(aura::Window* parent) { - views::Widget* widget = - views::Widget::CreateWindowWithParent(new NonModalTransient, parent); - widget->GetNativeView()->SetName("NonModalTransient"); - widget->Show(); - } - - static void ToggleNonModalTransient(aura::Window* parent) { - if (!non_modal_transient_) { - non_modal_transient_ = - views::Widget::CreateWindowWithParent(new NonModalTransient, parent); - non_modal_transient_->GetNativeView()->SetName("NonModalTransient"); - } - if (non_modal_transient_->IsVisible()) - non_modal_transient_->Hide(); - else - non_modal_transient_->Show(); - } - - // Overridden from views::View: - void OnPaint(gfx::Canvas* canvas) override { - canvas->FillRect(GetLocalBounds(), color_); - } - gfx::Size CalculatePreferredSize() const override { - return gfx::Size(250, 250); - } - - // Overridden from views::WidgetDelegate: - bool CanResize() const override { return true; } - void DeleteDelegate() override { - if (GetWidget() == non_modal_transient_) - non_modal_transient_ = nullptr; - - delete this; - } - - private: - SkColor color_; - - static views::Widget* non_modal_transient_; - - DISALLOW_COPY_AND_ASSIGN(NonModalTransient); -}; - -// static -views::Widget* NonModalTransient::non_modal_transient_ = nullptr; - -template <class T> -T* AddViewToLayout(views::GridLayout* layout, std::unique_ptr<T> view) { - layout->StartRow(0, 0); - T* result = layout->AddView(std::move(view)); - layout->AddPaddingRow(0, 5); - return result; -} - -} // namespace - -void InitWindowTypeLauncher( - base::RepeatingClosure show_views_examples_callback, - base::RepeatingClosure create_embedded_browser_callback) { - views::Widget* widget = views::Widget::CreateWindowWithContext( - new WindowTypeLauncher(show_views_examples_callback, - create_embedded_browser_callback), - Shell::GetPrimaryRootWindow(), gfx::Rect(120, 120, 300, 410)); - widget->GetNativeView()->SetName("WindowTypeLauncher"); - ::wm::SetShadowElevation(widget->GetNativeView(), kWindowShadowElevation); - widget->Show(); -} - -WindowTypeLauncher::WindowTypeLauncher( - base::RepeatingClosure show_views_examples_callback, - base::RepeatingClosure create_embedded_browser_callback) - : show_views_examples_callback_(std::move(show_views_examples_callback)), - create_embedded_browser_callback_( - std::move(create_embedded_browser_callback)) { - SetCanMaximize(true); - SetCanMinimize(true); - SetCanResize(true); - SetTitle(base::ASCIIToUTF16("Examples: Window Builder")); - views::GridLayout* layout = - SetLayoutManager(std::make_unique<views::GridLayout>()); - SetBorder(views::CreateEmptyBorder(gfx::Insets(5))); - views::ColumnSet* column_set = layout->AddColumnSet(0); - column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, - 0, views::GridLayout::ColumnSize::kUsePreferred, 0, 0); - create_button_ = AddViewToLayout( - layout, MdTextButton::Create(this, base::ASCIIToUTF16("Create Window"))); - create_nonresizable_button_ = AddViewToLayout( - layout, MdTextButton::Create( - this, base::ASCIIToUTF16("Create Non-Resizable Window"))); - bubble_button_ = AddViewToLayout( - layout, - MdTextButton::Create(this, base::ASCIIToUTF16("Create Pointy Bubble"))); - lock_button_ = AddViewToLayout( - layout, MdTextButton::Create(this, base::ASCIIToUTF16("Lock Screen"))); - widgets_button_ = AddViewToLayout( - layout, - MdTextButton::Create(this, base::ASCIIToUTF16("Show Example Widgets"))); - system_modal_button_ = AddViewToLayout( - layout, MdTextButton::Create( - this, base::ASCIIToUTF16("Open System Modal Window"))); - window_modal_button_ = AddViewToLayout( - layout, MdTextButton::Create( - this, base::ASCIIToUTF16("Open Window Modal Window"))); - child_modal_button_ = AddViewToLayout( - layout, MdTextButton::Create( - this, base::ASCIIToUTF16("Open Child Modal Window"))); - transient_button_ = AddViewToLayout( - layout, MdTextButton::Create( - this, base::ASCIIToUTF16("Open Non-Modal Transient Window"))); - examples_button_ = AddViewToLayout( - layout, MdTextButton::Create( - this, base::ASCIIToUTF16("Open Views Examples Window"))); - show_hide_window_button_ = AddViewToLayout( - layout, - MdTextButton::Create(this, base::ASCIIToUTF16("Show/Hide a Window"))); - show_web_notification_ = AddViewToLayout( - layout, MdTextButton::Create( - this, base::ASCIIToUTF16("Show a web/app notification"))); - embedded_browser_button_ = AddViewToLayout( - layout, - MdTextButton::Create(this, base::ASCIIToUTF16("Embedded Browser"))); - set_context_menu_controller(this); -} - -WindowTypeLauncher::~WindowTypeLauncher() = default; - -void WindowTypeLauncher::OnPaint(gfx::Canvas* canvas) { - canvas->FillRect(GetLocalBounds(), SK_ColorWHITE); -} - -bool WindowTypeLauncher::OnMousePressed(const ui::MouseEvent& event) { - // Overridden so we get OnMouseReleased and can show the context menu. - return true; -} - -void WindowTypeLauncher::ButtonPressed(views::Button* sender, - const ui::Event& event) { - if (sender == create_button_) { - ToplevelWindow::CreateParams params; - params.can_resize = true; - params.can_maximize = true; - ToplevelWindow::CreateToplevelWindow(params); - } else if (sender == create_nonresizable_button_) { - ToplevelWindow::CreateToplevelWindow(ToplevelWindow::CreateParams()); - } else if (sender == embedded_browser_button_) { - create_embedded_browser_callback_.Run(); - } else if (sender == bubble_button_) { - CreatePointyBubble(sender); - } else if (sender == lock_button_) { - Shell::Get()->session_controller()->LockScreen(); - } else if (sender == widgets_button_) { - CreateWidgetsWindow(); - } else if (sender == system_modal_button_) { - ModalWindow::OpenModalWindow(GetWidget()->GetNativeView(), - ui::MODAL_TYPE_SYSTEM); - } else if (sender == window_modal_button_) { - ModalWindow::OpenModalWindow(GetWidget()->GetNativeView(), - ui::MODAL_TYPE_WINDOW); - } else if (sender == child_modal_button_) { - TestChildModalParent::Show(GetWidget()->GetNativeView()->GetRootWindow()); - } else if (sender == transient_button_) { - NonModalTransient::OpenNonModalTransient(GetWidget()->GetNativeView()); - } else if (sender == show_hide_window_button_) { - NonModalTransient::ToggleNonModalTransient(GetWidget()->GetNativeView()); - } else if (sender == show_web_notification_) { - std::unique_ptr<message_center::Notification> notification = - std::make_unique<message_center::Notification>( - message_center::NOTIFICATION_TYPE_SIMPLE, "id0", - base::ASCIIToUTF16("Test Shell Web Notification"), - base::ASCIIToUTF16("Notification message body."), gfx::Image(), - base::ASCIIToUTF16("www.testshell.org"), GURL(), - message_center::NotifierId( - message_center::NotifierType::APPLICATION, "test-id"), - message_center::RichNotificationData(), nullptr /* delegate */); - - message_center::MessageCenter::Get()->AddNotification( - std::move(notification)); - } else if (sender == examples_button_) { - show_views_examples_callback_.Run(); - } -} - -void WindowTypeLauncher::ExecuteCommand(int id, int event_flags) { - switch (id) { - case COMMAND_NEW_WINDOW: - InitWindowTypeLauncher(show_views_examples_callback_, - create_embedded_browser_callback_); - break; - case COMMAND_TOGGLE_FULLSCREEN: - GetWidget()->SetFullscreen(!GetWidget()->IsFullscreen()); - break; - default: - break; - } -} - -void WindowTypeLauncher::ShowContextMenuForViewImpl( - views::View* source, - const gfx::Point& point, - ui::MenuSourceType source_type) { - MenuItemView* root = new MenuItemView(this); - root->AppendMenuItem(COMMAND_NEW_WINDOW, base::ASCIIToUTF16("New Window")); - root->AppendMenuItem(COMMAND_TOGGLE_FULLSCREEN, - base::ASCIIToUTF16("Toggle FullScreen")); - // MenuRunner takes ownership of root. - menu_runner_.reset(new MenuRunner( - root, MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU)); - menu_runner_->RunMenuAt(GetWidget(), nullptr, gfx::Rect(point, gfx::Size()), - views::MenuAnchorPosition::kTopLeft, source_type); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/window_type_launcher.h b/ash/shell/window_type_launcher.h deleted file mode 100644 index d75f08ba..0000000 --- a/ash/shell/window_type_launcher.h +++ /dev/null
@@ -1,93 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_WINDOW_TYPE_LAUNCHER_H_ -#define ASH_SHELL_WINDOW_TYPE_LAUNCHER_H_ - -#include <memory> - -#include "base/callback_forward.h" -#include "base/macros.h" -#include "ui/views/context_menu_controller.h" -#include "ui/views/controls/button/button.h" -#include "ui/views/controls/menu/menu_delegate.h" -#include "ui/views/widget/widget_delegate.h" - -namespace views { -class MenuRunner; -} - -namespace ash { -namespace shell { - -// Creates a Widget to host WindowTypeLauncher. |show_views_examples_callback| -// is Run() when the user clicks on the views examples button. This should -// be bound to either views::examples::ShowExamplesWindow() or -// views::examples::ShowExamplesWindowWithContent(). -// |create_embedded_browser_callback| is Run when user clicks the "embedded -// browser" button. -void InitWindowTypeLauncher( - base::RepeatingClosure show_views_examples_callback, - base::RepeatingClosure create_embedded_browser_callback); - -// The contents view/delegate of a window that shows some buttons that create -// various window types. -class WindowTypeLauncher : public views::WidgetDelegateView, - public views::ButtonListener, - public views::MenuDelegate, - public views::ContextMenuController { - public: - WindowTypeLauncher(base::RepeatingClosure show_views_examples_callback, - base::RepeatingClosure create_embedded_browser_callback); - ~WindowTypeLauncher() override; - - private: - typedef std::pair<aura::Window*, gfx::Rect> WindowAndBoundsPair; - - enum MenuCommands { - COMMAND_NEW_WINDOW = 1, - COMMAND_TOGGLE_FULLSCREEN = 3, - }; - - // Overridden from views::View: - void OnPaint(gfx::Canvas* canvas) override; - bool OnMousePressed(const ui::MouseEvent& event) override; - - // Overridden from views::ButtonListener: - void ButtonPressed(views::Button* sender, const ui::Event& event) override; - - // Overridden from views::MenuDelegate: - void ExecuteCommand(int id, int event_flags) override; - - // Override from views::ContextMenuController: - void ShowContextMenuForViewImpl(views::View* source, - const gfx::Point& point, - ui::MenuSourceType source_type) override; - - views::Button* create_button_; - views::Button* create_nonresizable_button_; - views::Button* bubble_button_; - views::Button* lock_button_; - views::Button* widgets_button_; - views::Button* system_modal_button_; - views::Button* window_modal_button_; - views::Button* child_modal_button_; - views::Button* transient_button_; - views::Button* examples_button_; - views::Button* show_hide_window_button_; - views::Button* show_web_notification_; - views::Button* embedded_browser_button_; - - std::unique_ptr<views::MenuRunner> menu_runner_; - - base::RepeatingClosure show_views_examples_callback_; - base::RepeatingClosure create_embedded_browser_callback_; - - DISALLOW_COPY_AND_ASSIGN(WindowTypeLauncher); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_WINDOW_TYPE_LAUNCHER_H_
diff --git a/ash/shell/window_watcher.cc b/ash/shell/window_watcher.cc deleted file mode 100644 index 06a4f25..0000000 --- a/ash/shell/window_watcher.cc +++ /dev/null
@@ -1,130 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/window_watcher.h" - -#include <memory> -#include <utility> - -#include "ash/public/cpp/shelf_item.h" -#include "ash/public/cpp/shelf_model.h" -#include "ash/public/cpp/shell_window_ids.h" -#include "ash/public/cpp/window_properties.h" -#include "ash/shelf/shelf_widget.h" -#include "ash/shell.h" -#include "ash/shell/window_watcher_shelf_item_delegate.h" -#include "ash/wm/desks/desks_util.h" -#include "ash/wm/window_util.h" -#include "base/strings/string_number_conversions.h" -#include "third_party/skia/include/core/SkColor.h" -#include "ui/aura/window.h" - -namespace ash { -namespace shell { - -namespace { - -} // namespace - -class WindowWatcher::WorkspaceWindowWatcher : public aura::WindowObserver { - public: - explicit WorkspaceWindowWatcher(WindowWatcher* watcher) : watcher_(watcher) {} - - ~WorkspaceWindowWatcher() override = default; - - void OnWindowAdded(aura::Window* new_window) override { - new_window->AddObserver(watcher_); - } - - void OnWillRemoveWindow(aura::Window* window) override { - DCHECK(window->children().empty()); - window->RemoveObserver(watcher_); - } - - void RootWindowAdded(aura::Window* root) { - // The shelf is globally observing all active and inactive desks containers. - for (aura::Window* container : desks_util::GetDesksContainers(root)) { - container->AddObserver(watcher_); - for (aura::Window* window : container->children()) - watcher_->OnWindowAdded(window); - } - } - - void RootWindowRemoved(aura::Window* root) { - for (aura::Window* container : desks_util::GetDesksContainers(root)) { - container->RemoveObserver(watcher_); - for (aura::Window* window : container->children()) - watcher_->OnWillRemoveWindow(window); - } - } - - private: - WindowWatcher* watcher_; - - DISALLOW_COPY_AND_ASSIGN(WorkspaceWindowWatcher); -}; - -WindowWatcher::WindowWatcher() { - Shell::Get()->AddShellObserver(this); - workspace_window_watcher_ = std::make_unique<WorkspaceWindowWatcher>(this); - for (aura::Window* root : Shell::GetAllRootWindows()) - workspace_window_watcher_->RootWindowAdded(root); -} - -WindowWatcher::~WindowWatcher() { - for (aura::Window* root : Shell::GetAllRootWindows()) - workspace_window_watcher_->RootWindowRemoved(root); - Shell::Get()->RemoveShellObserver(this); -} - -aura::Window* WindowWatcher::GetWindowByID(const ShelfID& id) { - IDToWindow::const_iterator i = id_to_window_.find(id); - return i != id_to_window_.end() ? i->second : NULL; -} - -// aura::WindowObserver overrides: -void WindowWatcher::OnWindowAdded(aura::Window* new_window) { - if (!window_util::IsWindowUserPositionable(new_window)) - return; - - ShelfModel* model = ShelfModel::Get(); - ShelfItem item; - item.type = TYPE_APP; - static int shelf_id = 0; - item.id = ShelfID(base::NumberToString(shelf_id++)); - id_to_window_[item.id] = new_window; - - SkBitmap icon_bitmap; - icon_bitmap.allocN32Pixels(16, 16); - constexpr SkColor colors[] = {SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE}; - icon_bitmap.eraseColor(colors[shelf_id % 3]); - item.image = gfx::ImageSkia(gfx::ImageSkiaRep(icon_bitmap, 1.0f)); - item.title = base::NumberToString16(shelf_id); - model->Add(item); - - model->SetShelfItemDelegate( - item.id, std::make_unique<WindowWatcherShelfItemDelegate>(item.id, this)); - new_window->SetProperty(kShelfIDKey, item.id.Serialize()); -} - -void WindowWatcher::OnWillRemoveWindow(aura::Window* window) { - for (IDToWindow::iterator i = id_to_window_.begin(); i != id_to_window_.end(); - ++i) { - if (i->second == window) { - ShelfModel* model = ShelfModel::Get(); - int index = model->ItemIndexByID(i->first); - DCHECK_NE(-1, index); - model->RemoveItemAt(index); - id_to_window_.erase(i); - break; - } - } -} - -void WindowWatcher::OnRootWindowAdded(aura::Window* root_window) { - workspace_window_watcher_->RootWindowAdded(root_window); -} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/window_watcher.h b/ash/shell/window_watcher.h deleted file mode 100644 index 2c0e6f2..0000000 --- a/ash/shell/window_watcher.h +++ /dev/null
@@ -1,53 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_WINDOW_WATCHER_H_ -#define ASH_SHELL_WINDOW_WATCHER_H_ - -#include <stdint.h> - -#include <map> -#include <memory> - -#include "ash/public/cpp/shelf_types.h" -#include "ash/shell_observer.h" -#include "base/macros.h" -#include "ui/aura/window_observer.h" - -namespace ash { -namespace shell { - -// WindowWatcher is responsible for listening for newly created windows and -// creating items on the Shelf for them. -class WindowWatcher : public aura::WindowObserver, public ShellObserver { - public: - WindowWatcher(); - ~WindowWatcher() override; - - aura::Window* GetWindowByID(const ShelfID& id); - - // aura::WindowObserver overrides: - void OnWindowAdded(aura::Window* new_window) override; - void OnWillRemoveWindow(aura::Window* window) override; - - // ShellObserver: - void OnRootWindowAdded(aura::Window* root_window) override; - - private: - class WorkspaceWindowWatcher; - - typedef std::map<ShelfID, aura::Window*> IDToWindow; - - // Maps from window to the id we gave it. - IDToWindow id_to_window_; - - std::unique_ptr<WorkspaceWindowWatcher> workspace_window_watcher_; - - DISALLOW_COPY_AND_ASSIGN(WindowWatcher); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_WINDOW_WATCHER_H_
diff --git a/ash/shell/window_watcher_shelf_item_delegate.cc b/ash/shell/window_watcher_shelf_item_delegate.cc deleted file mode 100644 index e37349d..0000000 --- a/ash/shell/window_watcher_shelf_item_delegate.cc +++ /dev/null
@@ -1,49 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/shell/window_watcher_shelf_item_delegate.h" - -#include <utility> - -#include "ash/shell/window_watcher.h" -#include "ash/wm/window_util.h" -#include "ui/aura/window.h" - -namespace ash { -namespace shell { - -WindowWatcherShelfItemDelegate::WindowWatcherShelfItemDelegate( - ShelfID id, - WindowWatcher* watcher) - : ShelfItemDelegate(id), watcher_(watcher) { - DCHECK(!id.IsNull()); - DCHECK(watcher_); -} - -WindowWatcherShelfItemDelegate::~WindowWatcherShelfItemDelegate() = default; - -void WindowWatcherShelfItemDelegate::ItemSelected( - std::unique_ptr<ui::Event> event, - int64_t display_id, - ShelfLaunchSource source, - ItemSelectedCallback callback, - const ItemFilterPredicate& filter_predicate) { - aura::Window* window = watcher_->GetWindowByID(shelf_id()); - window->Show(); - wm::ActivateWindow(window); - std::move(callback).Run(SHELF_ACTION_WINDOW_ACTIVATED, {}); -} - -void WindowWatcherShelfItemDelegate::ExecuteCommand(bool from_context_menu, - int64_t command_id, - int32_t event_flags, - int64_t display_id) { - // This delegate does not show custom context or application menu items. - NOTIMPLEMENTED(); -} - -void WindowWatcherShelfItemDelegate::Close() {} - -} // namespace shell -} // namespace ash
diff --git a/ash/shell/window_watcher_shelf_item_delegate.h b/ash/shell/window_watcher_shelf_item_delegate.h deleted file mode 100644 index 50e076fa..0000000 --- a/ash/shell/window_watcher_shelf_item_delegate.h +++ /dev/null
@@ -1,45 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SHELL_WINDOW_WATCHER_SHELF_ITEM_DELEGATE_H_ -#define ASH_SHELL_WINDOW_WATCHER_SHELF_ITEM_DELEGATE_H_ - -#include "ash/public/cpp/shelf_item.h" -#include "ash/public/cpp/shelf_item_delegate.h" -#include "base/compiler_specific.h" -#include "base/macros.h" - -namespace ash { -namespace shell { - -class WindowWatcher; - -// ShelfItemDelegate implementation used by WindowWatcher. -class WindowWatcherShelfItemDelegate : public ShelfItemDelegate { - public: - WindowWatcherShelfItemDelegate(ShelfID id, WindowWatcher* watcher); - ~WindowWatcherShelfItemDelegate() override; - - // ShelfItemDelegate: - void ItemSelected(std::unique_ptr<ui::Event> event, - int64_t display_id, - ShelfLaunchSource source, - ItemSelectedCallback callback, - const ItemFilterPredicate& filter_predicate) override; - void ExecuteCommand(bool from_context_menu, - int64_t command_id, - int32_t event_flags, - int64_t display_id) override; - void Close() override; - - private: - WindowWatcher* watcher_; - - DISALLOW_COPY_AND_ASSIGN(WindowWatcherShelfItemDelegate); -}; - -} // namespace shell -} // namespace ash - -#endif // ASH_SHELL_WINDOW_WATCHER_SHELF_ITEM_DELEGATE_H_
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb index f18d7ee7..a993570 100644 --- a/ash/strings/ash_strings_bs.xtb +++ b/ash/strings/ash_strings_bs.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">fiksirano povećalo</translation> <translation id="2575685495496069081">Višestruke prijave su onemogućene</translation> <translation id="2582112259361606227">Ponovo pokrenite da biste ažurirali</translation> -<translation id="2595239820337756193">5 hiljada u miljama</translation> +<translation id="2595239820337756193">5 km u miljama</translation> <translation id="2617342710774726426">SIM kartica je zaključana</translation> <translation id="2621713457727696555">Osigurano</translation> <translation id="2653659639078652383">Pošalji</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index 036cc2b0..a7af65b 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">den fastgjorte lup</translation> <translation id="2575685495496069081">Samlet login fra flere konti er deaktiveret</translation> <translation id="2582112259361606227">Genstart for at opdatere</translation> -<translation id="2595239820337756193">5000 i mil</translation> +<translation id="2595239820337756193">5 kilometer i miles</translation> <translation id="2617342710774726426">SIM-kortet er låst</translation> <translation id="2621713457727696555">Beskyttet</translation> <translation id="2653659639078652383">Indsend</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index 3d9dee85..33244c6 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -211,7 +211,7 @@ <translation id="3308453408813785101"><ph name="USER_EMAIL_ADDRESS" /> podrá iniciar sesión después de la eliminación.</translation> <translation id="3321628682574733415">Código parental incorrecto</translation> <translation id="332587331255250389">Cambia la batería</translation> -<translation id="334252345105450327">Hacer una captura de pantalla</translation> +<translation id="334252345105450327">Haz una captura de pantalla</translation> <translation id="3351879221545518001">Estás enviando la pantalla.</translation> <translation id="3364721542077212959">Herramientas del lápiz óptico</translation> <translation id="3368922792935385530">Con conexión</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb index 7ce0ad4..6092bd7 100644 --- a/ash/strings/ash_strings_iw.xtb +++ b/ash/strings/ash_strings_iw.xtb
@@ -114,7 +114,7 @@ <translation id="2268813581635650749">הוצא את כולם</translation> <translation id="2277103315734023688">הרצה קדימה</translation> <translation id="2292698582925480719">קנה המידה של התצוגה</translation> -<translation id="229397294990920565">כיבוי של הנתונים הסלולריים מתבצע...</translation> +<translation id="229397294990920565">מתבצע כיבוי של הנתונים הסלולריים…</translation> <translation id="2295777434187870477">המיקרופון פועל. החלפת המצב תשתיק אותו.</translation> <translation id="2298170939937364391">הגדלה של כל המסך הופעלה. כדי להשבית אותה יש להקיש שוב על Ctrl+Search+M.</translation> <translation id="2302092602801625023">החשבון הזה מנוהל באמצעות Family Link</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index 0f7fb3df..c4d1154 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -98,6 +98,7 @@ <translation id="1995660704900986789">電源を切る</translation> <translation id="2012624427112548395">Ctrl+検索+H</translation> <translation id="2016340657076538683">メッセージを入力</translation> +<translation id="2018630726571919839">面白いこと言って</translation> <translation id="2050339315714019657">縦</translation> <translation id="2067602449040652523">キーボードの明るさ</translation> <translation id="209965399369889474">ネットワークに接続されていません</translation> @@ -125,6 +126,7 @@ <translation id="2354174487190027830"><ph name="NAME" /> を有効にしています</translation> <translation id="2359808026110333948">続行</translation> <translation id="2365393535144473978">モバイルデータ通信を有効にすると、Bluetooth も有効になります。</translation> +<translation id="2369165858548251131">中国語で「こんにちは」ってどう言うの</translation> <translation id="2390318262976603432">言語 / 地域設定</translation> <translation id="2391579633712104609">180°</translation> <translation id="2412593942846481727">アップデートが利用可能</translation> @@ -142,6 +144,7 @@ <translation id="256712445991462162">ドッキング拡大鏡</translation> <translation id="2575685495496069081">マルチログインは無効にされています</translation> <translation id="2582112259361606227">再起動して更新</translation> +<translation id="2595239820337756193">5 km は何マイル</translation> <translation id="2617342710774726426">SIM カードはロックされています</translation> <translation id="2621713457727696555">保護あり</translation> <translation id="2653659639078652383">送信</translation> @@ -195,6 +198,7 @@ <translation id="3154351730702813399">デバイス管理者が閲覧アクティビティを監視している可能性があります。</translation> <translation id="3181441307743005334">再起動には時間がかかる場合があります</translation> <translation id="3202010236269062730">{NUM_DEVICES,plural, =1{1 台のデバイスと接続されています}other{# 台のデバイスと接続されています}}</translation> +<translation id="320207200541803018">タイマーを設定して</translation> <translation id="3203405173652969239">スイッチ アクセスが有効になりました</translation> <translation id="3207953481422525583">ユーザー設定</translation> <translation id="3217205077783620295">音量はオンになっています。切り替えると音声がミュートされます。</translation> @@ -207,6 +211,7 @@ <translation id="3308453408813785101"><ph name="USER_EMAIL_ADDRESS" /> が後でログインすることは引き続き可能です。</translation> <translation id="3321628682574733415">保護者のコードが間違っています</translation> <translation id="332587331255250389">バッテリーを交換してください</translation> +<translation id="334252345105450327">スクリーンショットを撮って</translation> <translation id="3351879221545518001">現在、画面をキャストしています。</translation> <translation id="3364721542077212959">タッチペン ツール</translation> <translation id="3368922792935385530">接続済み</translation> @@ -239,6 +244,7 @@ <translation id="3631369015426612114">以下からの通知を許可</translation> <translation id="3638400994746983214">プライバシー スクリーンを切り替えます。<ph name="STATE_TEXT" />。</translation> <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> の管理対象ユーザー</translation> +<translation id="3702846122927433391">ナイジェリアの人口を教えて</translation> <translation id="3705722231355495246">-</translation> <translation id="3712407551474845318">一部分をキャプチャ</translation> <translation id="371370241367527062">前方のマイク</translation> @@ -519,6 +525,7 @@ <translation id="7165278925115064263">Alt+Shift+K</translation> <translation id="7168224885072002358"><ph name="TIMEOUT_SECONDS" /> 秒後に元の解像度に戻ります</translation> <translation id="7188494361780961876">メニューは画面左上に移動しました。</translation> +<translation id="7189412385142492784">金星までの距離はどれくらい</translation> <translation id="7246071203293827765"><ph name="UPDATE_TEXT" />。アップデートを適用するには、Chromebook を再起動する必要があります。再起動には最長で 1 分ほどかかります。</translation> <translation id="7256634071279256947">後方のマイク</translation> <translation id="726276584504105859">分割画面を使用するにはここにドラッグします</translation> @@ -646,6 +653,7 @@ <translation id="8649101189709089199">選択して読み上げ</translation> <translation id="8652175077544655965">設定を閉じます</translation> <translation id="8653151467777939995">通知設定を表示します。通知はオンです</translation> +<translation id="8660331759611631213">71 の平方根は</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />、信号強度 <ph name="SIGNAL_STRENGTH" /></translation> <translation id="8664753092453405566">ネットワーク リストを表示します。<ph name="STATE_TEXT" /></translation> <translation id="8673028979667498656">270°</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index 8cd0c714..793e0b25 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">бекітілген ұлғайтқыш</translation> <translation id="2575685495496069081">Бірнеше есептік жазбаға кіру функциясы өшірілді</translation> <translation id="2582112259361606227">Жаңарту үшін қайта іске қосу</translation> -<translation id="2595239820337756193">5 мың миля</translation> +<translation id="2595239820337756193">5 км неше миляға тең</translation> <translation id="2617342710774726426">SIM картасы құлыпталған</translation> <translation id="2621713457727696555">Қорғалған</translation> <translation id="2653659639078652383">Жіберу</translation> @@ -525,7 +525,7 @@ <translation id="7165278925115064263">Alt+Shift+K</translation> <translation id="7168224885072002358"><ph name="TIMEOUT_SECONDS" /> уақыт ішінде ескі ажыратымдылыққа ауысады</translation> <translation id="7188494361780961876">Мәзір экранның жоғарғы сол жақ бұрышына жылжытылды.</translation> -<translation id="7189412385142492784">Шолпан Жерден қаншалықты алыс орналасқан?</translation> +<translation id="7189412385142492784">Шолпан қаншалықты алыс орналасқан?</translation> <translation id="7246071203293827765"><ph name="UPDATE_TEXT" />. Жаңартылған нұсқаны қолдану үшін бұл Chromebook-ті қайта қосу қажет. Оған 1 минуттай кетуі мүмкін.</translation> <translation id="7256634071279256947">Артқы микрофон</translation> <translation id="726276584504105859">Бөлінген экранды пайдалану үшін осында сүйреңіз</translation> @@ -652,7 +652,7 @@ <translation id="8649101189709089199">Select-to-Speak</translation> <translation id="8652175077544655965">Параметрлерді жабу</translation> <translation id="8653151467777939995">Хабарландыру параметрлерін көрсету. Хабарландырулар қосулы</translation> -<translation id="8660331759611631213">71 санының түбірі</translation> +<translation id="8660331759611631213">71 санының шаршы түбірі</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, сигнал күші: <ph name="SIGNAL_STRENGTH" /></translation> <translation id="8664753092453405566">Желі тізімін көрсету. <ph name="STATE_TEXT" /></translation> <translation id="8673028979667498656">270°</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb index f389a62..40f7f72 100644 --- a/ash/strings/ash_strings_km.xtb +++ b/ash/strings/ash_strings_km.xtb
@@ -525,7 +525,7 @@ <translation id="7165278925115064263">Alt+ប្ដូរ (Shift)+K</translation> <translation id="7168224885072002358">កំពុងត្រលប់ទៅកម្រិតច្បាស់ចាស់នៅក្នុង <ph name="TIMEOUT_SECONDS" /></translation> <translation id="7188494361780961876">ម៉ឺនុយត្រូវបានផ្លាស់ទីទៅជ្រុងខាងលើផ្នែកខាងឆ្វេងនៃអេក្រង់។</translation> -<translation id="7189412385142492784">តើភពសុក្រមានចម្ងាយប៉ុន្មាន</translation> +<translation id="7189412385142492784">តើភពសុក្រនៅឆ្ងាយប៉ុណ្ណា</translation> <translation id="7246071203293827765"><ph name="UPDATE_TEXT" />។ Chromebook នេះត្រូវចាប់ផ្ដើមឡើងវិញ ដើម្បីអនុវត្តកំណែថ្មី។ សកម្មភាពនេះអាចចំណាយពេលរហូតដល់ 1 នាទី។</translation> <translation id="7256634071279256947">មីក្រូហ្វូនខាងក្រោយ</translation> <translation id="726276584504105859">អូសនៅទីនេះដើម្បីប្រើអេក្រង់បំបែក</translation> @@ -652,7 +652,7 @@ <translation id="8649101189709089199">ជ្រើសរើសដើម្បីអាន</translation> <translation id="8652175077544655965">បិទការកំណត់</translation> <translation id="8653151467777939995">បង្ហាញការកំណត់ការជូនដំណឹង។ ការជូនដំណឹងត្រូវបានបើក</translation> -<translation id="8660331759611631213">ឬសការ៉េនៃ 71</translation> +<translation id="8660331759611631213">ឫសការ៉េនៃ 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, កម្លាំងរលកសញ្ញា <ph name="SIGNAL_STRENGTH" /></translation> <translation id="8664753092453405566">បង្ហាញបញ្ជីបណ្ដាញ។ <ph name="STATE_TEXT" /></translation> <translation id="8673028979667498656">270°</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb index f0f8986..4d03379 100644 --- a/ash/strings/ash_strings_kn.xtb +++ b/ash/strings/ash_strings_kn.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">ಡಾಕ್ ಮಾಡಿರುವ ವರ್ಧಕ</translation> <translation id="2575685495496069081">ಬಹು ಸೈನ್-ಇನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="2582112259361606227">ಅಪ್ಡೇಟ್ ಮಾಡಲು, ಮರುಪ್ರಾರಂಭಿಸಿ</translation> -<translation id="2595239820337756193">ಮೈಲಿಗಳಲ್ಲಿ 5K</translation> +<translation id="2595239820337756193">5 ಕಿ.ಮೀ. ಅನ್ನು ಮೈಲಿಗಳಲ್ಲಿ</translation> <translation id="2617342710774726426">ಸಿಮ್ ಕಾರ್ಡ್ ಲಾಕ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="2621713457727696555">ಸುರಕ್ಷಿತವಾಗಿದೆ</translation> <translation id="2653659639078652383">ಸಲ್ಲಿಸು</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb index bf969ba..17ce615 100644 --- a/ash/strings/ash_strings_ky.xtb +++ b/ash/strings/ash_strings_ky.xtb
@@ -525,7 +525,7 @@ <translation id="7165278925115064263">Alt+Shift+K</translation> <translation id="7168224885072002358"><ph name="TIMEOUT_SECONDS" /> кийин эски чечилишине кайтарылат</translation> <translation id="7188494361780961876">Меню экрандын жогорку сол бурчуна жылдырылды.</translation> -<translation id="7189412385142492784">Венера кандай аралыкта жайгашкан</translation> +<translation id="7189412385142492784">Венера канчалык алыс жайгашкан?</translation> <translation id="7246071203293827765"><ph name="UPDATE_TEXT" />. Жаңыртууну колдонуу үчүн Chromebook'ту өчүрүп күйгүзүү керек. Бул 1 мүнөткө созулушу мүмкүн.</translation> <translation id="7256634071279256947">Арткы микрофон</translation> <translation id="726276584504105859">Экранды бөлүү үчүн бул жерге сүйрөңүз</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb index b4d6789..7deac6f 100644 --- a/ash/strings/ash_strings_mk.xtb +++ b/ash/strings/ash_strings_mk.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">закотвена лупа</translation> <translation id="2575685495496069081">Повеќекратното најавување е оневозможено</translation> <translation id="2582112259361606227">Рестартирај за да се ажурира</translation> -<translation id="2595239820337756193">5000 во милји</translation> +<translation id="2595239820337756193">5 km во милји</translation> <translation id="2617342710774726426">SIM-картичката е заклучена</translation> <translation id="2621713457727696555">Заштитена</translation> <translation id="2653659639078652383">Поднеси</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb index 810283ec..dc52b4a8 100644 --- a/ash/strings/ash_strings_ml.xtb +++ b/ash/strings/ash_strings_ml.xtb
@@ -211,7 +211,7 @@ <translation id="3308453408813785101"><ph name="USER_EMAIL_ADDRESS" /> എന്നതിന് പിന്നീട്, തുടർന്നും സൈൻ ഇൻ ചെയ്യാനാവും.</translation> <translation id="3321628682574733415">രക്ഷാകർതൃ കോഡ് തെറ്റാണ്</translation> <translation id="332587331255250389">ബാറ്ററി മാറ്റി പുതിയത് വയ്ക്കുക</translation> -<translation id="334252345105450327">ഒരു സ്ക്രീൻഷോട്ട് എടുക്കൂ</translation> +<translation id="334252345105450327">സ്ക്രീൻഷോട്ട് എടുക്കൂ</translation> <translation id="3351879221545518001">നിലവിൽ നിങ്ങൾ സ്ക്രീൻ കാസ്റ്റ് ചെയ്യുന്നു.</translation> <translation id="3364721542077212959">സ്റ്റൈലസ് ടൂളുകൾ</translation> <translation id="3368922792935385530">ബന്ധിപ്പിച്ചു</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index 0e3329a..18c3574 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">ଡକ୍ ହୋଇଥିବା ମ୍ୟାଗ୍ନିଫାୟାର୍</translation> <translation id="2575685495496069081">ଏକାଧିକ ସାଇନ୍ ଇନ୍ ଅକ୍ଷମ କରାଯାଇଛି</translation> <translation id="2582112259361606227">ଅପ୍ଡେଟ୍ କରିବା ପାଇଁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation> -<translation id="2595239820337756193">5K ମାଇଲ</translation> +<translation id="2595239820337756193">5K ମାଇଲରେ</translation> <translation id="2617342710774726426">SIM କାର୍ଡ ଲକ୍ ହୋଇଯାଇଛି।</translation> <translation id="2621713457727696555">ସୁରକ୍ଷିତ</translation> <translation id="2653659639078652383">ଉପସ୍ଥାପନ</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index ab060f5..0d0bb33 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">ਡੌਕ ਕੀਤਾ ਵਿਸਤਾਰਕ</translation> <translation id="2575685495496069081">ਬਹੁ-ਗਿਣਤੀ ਸਾਈਨ-ਇਨ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ</translation> <translation id="2582112259361606227">ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation> -<translation id="2595239820337756193">5 ਕਿ.ਮੀ. ਵਿੱਚ ਮੀਲ</translation> +<translation id="2595239820337756193">ਮੀਲ ਵਿੱਚ 5K</translation> <translation id="2617342710774726426">ਸਿਮ ਕਾਰਡ ਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ</translation> <translation id="2621713457727696555">ਸੁਰੱਖਿਅਤ</translation> <translation id="2653659639078652383">ਪ੍ਰਸਤੁਤ ਕਰੋ</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index 7df0a17..1dc9883 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -211,7 +211,7 @@ <translation id="3308453408813785101"><ph name="USER_EMAIL_ADDRESS" /> se še vedno lahko prijavi pozneje.</translation> <translation id="3321628682574733415">Nepravilna koda starša</translation> <translation id="332587331255250389">Zamenjajte baterijo</translation> -<translation id="334252345105450327">Ustvarjanje posnetka zaslona</translation> +<translation id="334252345105450327">Ustvari posnetek zaslona</translation> <translation id="3351879221545518001">Trenutno predvajate vsebino zaslona.</translation> <translation id="3364721542077212959">Orodja pisala</translation> <translation id="3368922792935385530">Povezano</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index 0524369..32291cd 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">zmadhuesi i lidhur me stacionin</translation> <translation id="2575685495496069081">Identifikimi i shumëfishtë është çaktivizuar.</translation> <translation id="2582112259361606227">Rinise për të kryer përditësimin</translation> -<translation id="2595239820337756193">5 km në milje</translation> +<translation id="2595239820337756193">Sa milje janë 5 km</translation> <translation id="2617342710774726426">Karta SIM është e kyçur</translation> <translation id="2621713457727696555">I siguruar</translation> <translation id="2653659639078652383">Dërgoje</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index c26a9265..699a9ae 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">kikuzaji kilichoambatishwa</translation> <translation id="2575685495496069081">Umezima uwezo wa kuingia katika akaunti nyingi kwa wakati mmoja</translation> <translation id="2582112259361606227">Zima kisha uwashe ili usasishe</translation> -<translation id="2595239820337756193">Maili elfu tano</translation> +<translation id="2595239820337756193">Kilomita tano kwa maili</translation> <translation id="2617342710774726426">SIM kadi imefungwa</translation> <translation id="2621713457727696555">Umelindwa</translation> <translation id="2653659639078652383">Wasilisha</translation> @@ -244,7 +244,7 @@ <translation id="3631369015426612114">Ruhusu arifa kutoka vyanzo hivi</translation> <translation id="3638400994746983214">Weka skrini ya faragha. <ph name="STATE_TEXT" />.</translation> <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Mtumiaji anayesimamiwa</translation> -<translation id="3702846122927433391">Idadi ya watu nchini Naijeria</translation> +<translation id="3702846122927433391">Idadi ya watu nchini Nigeria</translation> <translation id="3705722231355495246">-</translation> <translation id="3712407551474845318">Piga eneo picha</translation> <translation id="371370241367527062">Maikrofoni ya mbele</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb index c3de193..4e501181 100644 --- a/ash/strings/ash_strings_ta.xtb +++ b/ash/strings/ash_strings_ta.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">டாக் செய்யப்பட்ட பெரிதாக்கி</translation> <translation id="2575685495496069081">பல உள்முழைவு முடக்கப்பட்டுள்ளது</translation> <translation id="2582112259361606227">புதுப்பிக்க, மீண்டும் தொடங்குக</translation> -<translation id="2595239820337756193">மைல்களில் 5ஆ</translation> +<translation id="2595239820337756193">5 கிமீ எத்தனை மைல்?</translation> <translation id="2617342710774726426">சிம் கார்டு பூட்டப்பட்டுள்ளது</translation> <translation id="2621713457727696555">பாதுகாக்கப்பட்ட வைஃபை நெட்வொர்க்</translation> <translation id="2653659639078652383">சமர்ப்பி</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index 1ce683fecc..0083b9b6 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -144,7 +144,7 @@ <translation id="256712445991462162">mahkamlangan lupa</translation> <translation id="2575685495496069081">Bir nechta hisobdan kirish funksiyasi yoqilmagan</translation> <translation id="2582112259361606227">Yangilash uchun qayta ishga tushiring</translation> -<translation id="2595239820337756193">5Km milyada</translation> +<translation id="2595239820337756193">5000 mil</translation> <translation id="2617342710774726426">SIM karta qulflangan</translation> <translation id="2621713457727696555">Qulflandi</translation> <translation id="2653659639078652383">Yuborish</translation>
diff --git a/ash/test/ash_test_helper.cc b/ash/test/ash_test_helper.cc index 415f8972..6bebed3 100644 --- a/ash/test/ash_test_helper.cc +++ b/ash/test/ash_test_helper.cc
@@ -19,11 +19,11 @@ #include "ash/public/cpp/test/test_new_window_delegate.h" #include "ash/session/test_session_controller_client.h" #include "ash/shell.h" -#include "ash/shell/toplevel_window.h" #include "ash/shell_init_params.h" #include "ash/system/model/system_tray_model.h" #include "ash/system/screen_layout_observer.h" #include "ash/test/ash_test_views_delegate.h" +#include "ash/test/toplevel_window.h" #include "ash/test_shell_delegate.h" #include "ash/wallpaper/wallpaper_controller_impl.h" #include "ash/wm/overview/overview_controller.h"
diff --git a/ash/test/toplevel_window.cc b/ash/test/toplevel_window.cc new file mode 100644 index 0000000..7bd204c2 --- /dev/null +++ b/ash/test/toplevel_window.cc
@@ -0,0 +1,92 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/test/toplevel_window.h" + +#include "ash/shell.h" +#include "ash/wm/window_positioner.h" +#include "ash/wm/window_state.h" +#include "base/strings/utf_string_conversions.h" +#include "ui/aura/window.h" +#include "ui/aura/window_event_dispatcher.h" +#include "ui/gfx/canvas.h" +#include "ui/views/widget/widget.h" + +namespace ash { +namespace shell { +namespace { + +struct SavedState { + gfx::Rect bounds; + ui::WindowShowState show_state; +}; + +// The last window state in ash_shell. We don't bother deleting +// this on shutdown. +SavedState* saved_state = nullptr; + +} // namespace + +ToplevelWindow::CreateParams::CreateParams() + : can_resize(false), can_maximize(false), use_saved_placement(true) {} + +// static +views::Widget* ToplevelWindow::CreateToplevelWindow( + const CreateParams& params) { + views::Widget* widget = views::Widget::CreateWindowWithContext( + new ToplevelWindow(params), Shell::GetPrimaryRootWindow()); + widget->GetNativeView()->SetName("Examples:ToplevelWindow"); + WindowState* window_state = WindowState::Get(widget->GetNativeView()); + window_state->SetWindowPositionManaged(true); + widget->Show(); + return widget; +} + +// static +void ToplevelWindow::ClearSavedStateForTest() { + delete saved_state; + saved_state = nullptr; +} + +ToplevelWindow::ToplevelWindow(const CreateParams& params) + : use_saved_placement_(params.use_saved_placement) { + SetCanMaximize(params.can_maximize); + SetCanMinimize(params.can_maximize); + SetCanResize(params.can_resize); + SetTitle(base::ASCIIToUTF16("Examples: Toplevel Window")); +} + +ToplevelWindow::~ToplevelWindow() = default; + +void ToplevelWindow::OnPaint(gfx::Canvas* canvas) { + canvas->FillRect(GetLocalBounds(), SK_ColorDKGRAY); +} + +void ToplevelWindow::SaveWindowPlacement(const gfx::Rect& bounds, + ui::WindowShowState show_state) { + if (!saved_state) + saved_state = new SavedState; + saved_state->bounds = bounds; + saved_state->show_state = show_state; +} + +bool ToplevelWindow::GetSavedWindowPlacement( + const views::Widget* widget, + gfx::Rect* bounds, + ui::WindowShowState* show_state) const { + bool is_saved_bounds = !!saved_state; + if (saved_state && use_saved_placement_) { + *bounds = saved_state->bounds; + *show_state = saved_state->show_state; + } else { + // Initial default bounds. + bounds->SetRect(10, 150, 300, 300); + } + WindowPositioner::GetBoundsAndShowStateForNewWindow( + is_saved_bounds, *show_state, bounds, show_state); + return true; +} + +} // namespace shell +} // namespace ash
diff --git a/ash/test/toplevel_window.h b/ash/test/toplevel_window.h new file mode 100644 index 0000000..bf07671d --- /dev/null +++ b/ash/test/toplevel_window.h
@@ -0,0 +1,51 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_TEST_TOPLEVEL_WINDOW_H_ +#define ASH_TEST_TOPLEVEL_WINDOW_H_ + +#include "base/macros.h" +#include "ui/views/widget/widget_delegate.h" + +namespace ash { +namespace shell { + +class ToplevelWindow : public views::WidgetDelegateView { + public: + struct CreateParams { + CreateParams(); + + bool can_resize; + bool can_maximize; + bool use_saved_placement; + }; + static views::Widget* CreateToplevelWindow(const CreateParams& params); + + // Clears saved show state and bounds used to position + // a new window. + static void ClearSavedStateForTest(); + + private: + explicit ToplevelWindow(const CreateParams& params); + ~ToplevelWindow() override; + + // Overridden from views::View: + void OnPaint(gfx::Canvas* canvas) override; + + // Overridden from views::WidgetDelegate: + void SaveWindowPlacement(const gfx::Rect& bounds, + ui::WindowShowState show_state) override; + bool GetSavedWindowPlacement(const views::Widget* widget, + gfx::Rect* bounds, + ui::WindowShowState* show_state) const override; + + bool use_saved_placement_ = true; + + DISALLOW_COPY_AND_ASSIGN(ToplevelWindow); +}; + +} // namespace shell +} // namespace ash + +#endif // ASH_TEST_TOPLEVEL_WINDOW_H_
diff --git a/ash/wm/overview/scoped_overview_transform_window.cc b/ash/wm/overview/scoped_overview_transform_window.cc index d4168cf7..fa4e306 100644 --- a/ash/wm/overview/scoped_overview_transform_window.cc +++ b/ash/wm/overview/scoped_overview_transform_window.cc
@@ -32,12 +32,11 @@ #include "ui/aura/scoped_window_event_targeting_blocker.h" #include "ui/aura/window.h" #include "ui/compositor/layer.h" -#include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animation_observer.h" -#include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/layer_animator.h" #include "ui/compositor/layer_observer.h" #include "ui/gfx/geometry/insets.h" +#include "ui/gfx/geometry/rect_conversions.h" #include "ui/gfx/geometry/vector2d_f.h" #include "ui/gfx/transform_util.h" #include "ui/views/layout/layout_provider.h" @@ -439,7 +438,11 @@ break; } - return new_bounds; + // If we do not use whole numbers, there may be some artifacts drawn (i.e. + // shadows, notches). This may be an effect of subpixel rendering. It's ok to + // round it here since this is the last calculation (we don't have to worry + // about roundoff error). + return gfx::RectF(gfx::ToRoundedRect(new_bounds)); } aura::Window* ScopedOverviewTransformWindow::GetOverviewWindow() const {
diff --git a/ash/wm/window_positioner_unittest.cc b/ash/wm/window_positioner_unittest.cc index e698657..bcd8ff3 100644 --- a/ash/wm/window_positioner_unittest.cc +++ b/ash/wm/window_positioner_unittest.cc
@@ -8,8 +8,8 @@ #include "ash/public/cpp/shelf_config.h" #include "ash/shell.h" -#include "ash/shell/toplevel_window.h" #include "ash/test/ash_test_base.h" +#include "ash/test/toplevel_window.h" #include "ash/test_shell_delegate.h" #include "ash/wm/window_positioner.h" #include "ash/wm/window_state.h"
diff --git a/base/i18n/file_util_icu_unittest.cc b/base/i18n/file_util_icu_unittest.cc index 72e65f2..e1517df 100644 --- a/base/i18n/file_util_icu_unittest.cc +++ b/base/i18n/file_util_icu_unittest.cc
@@ -7,6 +7,7 @@ #include <stddef.h> #include "base/files/file_util.h" +#include "base/logging.h" #include "base/stl_util.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h"
diff --git a/base/i18n/rtl_unittest.cc b/base/i18n/rtl_unittest.cc index 8722310..6846bac 100644 --- a/base/i18n/rtl_unittest.cc +++ b/base/i18n/rtl_unittest.cc
@@ -9,6 +9,7 @@ #include <algorithm> #include "base/files/file_path.h" +#include "base/logging.h" #include "base/macros.h" #include "base/strings/string_util.h" #include "base/strings/sys_string_conversions.h"
diff --git a/base/strings/string_util_win.h b/base/strings/string_util_win.h index cd4bb2f..0756608d 100644 --- a/base/strings/string_util_win.h +++ b/base/strings/string_util_win.h
@@ -147,7 +147,7 @@ BASE_EXPORT bool TrimString(WStringPiece input, WStringPiece trim_chars, - std::string* output); + std::wstring* output); BASE_EXPORT WStringPiece TrimString(WStringPiece input, WStringPiece trim_chars,
diff --git a/build/android/gyp/dex.py b/build/android/gyp/dex.py index 6fd0ab3..b8f60bff 100755 --- a/build/android/gyp/dex.py +++ b/build/android/gyp/dex.py
@@ -23,7 +23,7 @@ _IGNORE_WARNINGS = ( - # A play services library triggers this. + # Caused by Play Services: r'Type `libcore.io.Memory` was not found', # Filter out warnings caused by our fake main dex list used to enable # multidex on library targets. @@ -73,6 +73,9 @@ help='GN-list of bootclasspath. Needed for --desugar') parser.add_argument( '--desugar-jdk-libs-json', help='Path to desugar_jdk_libs.json.') + parser.add_argument('--show-desugar-default-interface-warnings', + action='store_true', + help='Enable desugaring warnings.') parser.add_argument( '--classpath', action='append', @@ -136,24 +139,21 @@ return options -def _RunD8(dex_cmd, input_paths, output_path): - dex_cmd = dex_cmd + ['--output', output_path] + input_paths - - def stderr_filter(output): +def CreateStderrFilter(show_desugar_default_interface_warnings): + def filter_stderr(output): patterns = _IGNORE_WARNINGS - # No classpath means we are using Bazel's Desugar tool to desugar lambdas - # and interface methods, in which case we intentionally do not pass a - # classpath to D8. + # When using Bazel's Desugar tool to desugar lambdas and interface methods, + # we do not provide D8 with a classpath, which causes a lot of warnings + # from D8's default interface desugaring pass. # Not having a classpath makes incremental dexing much more effective. - # D8 will still be used for backported method desugaring. - # We still use D8 for backported method desugaring. - if '--classpath' not in dex_cmd: + # D8 still does backported method desugaring. + if not show_desugar_default_interface_warnings: patterns = list(patterns) + ['default or static interface methods'] combined_pattern = '|'.join(re.escape(p) for p in patterns) output = build_utils.FilterLines(output, combined_pattern) - # Each warning has a prefix line of tthe file it's from. If we've filtered + # Each warning has a prefix line of the file it's from. If we've filtered # out the warning, then also filter out the file header. # E.g.: # Warning in path/to/Foo.class: @@ -162,6 +162,15 @@ output = re.sub(r'^Warning in .*?:\n(?! )', '', output, flags=re.MULTILINE) return output + return filter_stderr + + +def _RunD8(dex_cmd, input_paths, output_path, + show_desugar_default_interface_warnings): + dex_cmd = dex_cmd + ['--output', output_path] + input_paths + + stderr_filter = CreateStderrFilter(show_desugar_default_interface_warnings) + with tempfile.NamedTemporaryFile() as flag_file: # Chosen arbitrarily. Needed to avoid command-line length limits. MAX_ARGS = 50 @@ -353,7 +362,8 @@ tmp_dex_dir = os.path.join(tmp_dir, 'tmp_dex_dir') os.mkdir(tmp_dex_dir) - _RunD8(dex_cmd, d8_inputs, tmp_dex_dir) + _RunD8(dex_cmd, d8_inputs, tmp_dex_dir, + (options and options.show_desugar_default_interface_warnings)) logging.debug('Performed dex merging') dex_files = [os.path.join(tmp_dex_dir, f) for f in os.listdir(tmp_dex_dir)] @@ -435,7 +445,8 @@ if class_files: # Dex necessary classes into intermediate dex files. dex_cmd = dex_cmd + ['--intermediate', '--file-per-class-file'] - _RunD8(dex_cmd, class_files, options.incremental_dir) + _RunD8(dex_cmd, class_files, options.incremental_dir, + options.show_desugar_default_interface_warnings) logging.debug('Dexed class files.')
diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py index f0f28357..841a42d 100755 --- a/build/android/gyp/proguard.py +++ b/build/android/gyp/proguard.py
@@ -12,6 +12,7 @@ import tempfile import zipfile +import dex import dex_jdk_libs from util import build_utils from util import diff_utils @@ -31,48 +32,6 @@ _DIRECTIVE_RE = re.compile(r'^\s*-', re.MULTILINE) -class _ProguardOutputFilter(object): - """ProGuard outputs boring stuff to stdout (ProGuard version, jar path, etc) - as well as interesting stuff (notes, warnings, etc). If stdout is entirely - boring, this class suppresses the output. - """ - - IGNORE_RE = re.compile( - r'Pro.*version|Note:|Reading|Preparing|Printing|ProgramClass:|Searching|' - r'jar \[|\d+ class path entries checked') - - def __init__(self): - self._last_line_ignored = False - self._ignore_next_line = False - - def __call__(self, output): - ret = [] - for line in output.splitlines(True): - if self._ignore_next_line: - self._ignore_next_line = False - continue - - if '***BINARY RUN STATS***' in line: - self._last_line_ignored = True - self._ignore_next_line = True - elif not line.startswith(' '): - self._last_line_ignored = bool(self.IGNORE_RE.match(line)) - elif 'You should check if you need to specify' in line: - self._last_line_ignored = True - - if not self._last_line_ignored: - ret.append(line) - return ''.join(ret) - - -class ProguardProcessError(build_utils.CalledProcessError): - """Wraps CalledProcessError and enables adding extra output to failures.""" - - def __init__(self, cpe, output): - super(ProguardProcessError, self).__init__(cpe.cwd, cpe.args, - cpe.output + output) - - def _ValidateAndFilterCheckDiscards(configs): """Check for invalid -checkdiscard rules and filter out -checkdiscards. @@ -196,6 +155,9 @@ action='append', dest='feature_names', help='The name of the feature module.') + parser.add_argument('--show-desugar-default-interface-warnings', + action='store_true', + help='Enable desugaring warnings.') parser.add_argument( '--stamp', help='File to touch upon success. Mutually exclusive with --output-path') @@ -295,6 +257,16 @@ shutil.move(tmp_jar_output, self._final_output_path) +def _CreateStderrFilter(show_desugar_default_interface_warnings): + d8_filter = dex.CreateStderrFilter(show_desugar_default_interface_warnings) + + def filter_stderr(output): + output = re.sub(r'.*_JAVA_OPTIONS.*\n?', '', output) + return d8_filter(output) + + return filter_stderr + + def _OptimizeWithR8(options, config_paths, libraries, @@ -380,19 +352,23 @@ cmd += sorted(extra_jars) env = os.environ.copy() - stderr_filter = lambda l: re.sub(r'.*_JAVA_OPTIONS.*\n?', '', l) env['_JAVA_OPTIONS'] = '-Dcom.android.tools.r8.allowTestProguardOptions=1' if options.disable_outlining: env['_JAVA_OPTIONS'] += ' -Dcom.android.tools.r8.disableOutlining=1' try: - build_utils.CheckOutput( - cmd, env=env, print_stdout=print_stdout, stderr_filter=stderr_filter) + stderr_filter = _CreateStderrFilter( + options.show_desugar_default_interface_warnings) + build_utils.CheckOutput(cmd, + env=env, + print_stdout=print_stdout, + stderr_filter=stderr_filter) except build_utils.CalledProcessError as err: - debugging_link = ('R8 failed. Please see {}.'.format( + debugging_link = ('\n\nR8 failed. Please see {}.'.format( 'https://chromium.googlesource.com/chromium/src/+/HEAD/build/' 'android/docs/java_optimization.md#Debugging-common-failures\n')) - raise ProguardProcessError(err, debugging_link) + raise build_utils.CalledProcessError(err.cwd, err.args, + err.output + debugging_link) base_has_imported_lib = False if options.desugar_jdk_libs_json:
diff --git a/build/android/gyp/proguard.pydeps b/build/android/gyp/proguard.pydeps index 11f51cc0..fcfe7b4 100644 --- a/build/android/gyp/proguard.pydeps +++ b/build/android/gyp/proguard.pydeps
@@ -1,8 +1,13 @@ # Generated by running: # build/print_python_deps.py --root build/android/gyp --output build/android/gyp/proguard.pydeps build/android/gyp/proguard.py ../../gn_helpers.py +../../print_python_deps.py +../convert_dex_profile.py +dex.py dex_jdk_libs.py proguard.py util/__init__.py util/build_utils.py util/diff_utils.py +util/md5_check.py +util/zipalign.py
diff --git a/build/android/lint/suppressions.xml b/build/android/lint/suppressions.xml index 2350c429..4fbc7217 100644 --- a/build/android/lint/suppressions.xml +++ b/build/android/lint/suppressions.xml
@@ -42,9 +42,6 @@ <ignore regexp="remoting/android/host/res/layout/main.xml"/> </issue> <issue id="ClickableViewAccessibility" severity="ignore"/> - <issue id="CommitPrefEdits"> - <ignore regexp="third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidChannelPreferences.java"/> - </issue> <issue id="ContentDescription" severity="Error"> <ignore regexp="chromecast/internal"/> <ignore regexp="remoting/android/internal"/> @@ -62,7 +59,6 @@ <issue id="DefaultLocale"> <ignore regexp="clank"/> <ignore regexp="com/android/tv"/> - <ignore regexp="third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/AndroidListenerState.java"/> <!-- TODO(crbug.com/1081240): Fix --> <ignore regexp="chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java"/> <!-- TODO(crbug.com/1082222): Fix -->
diff --git a/build/android/pylib/local/device/local_device_instrumentation_test_run.py b/build/android/pylib/local/device/local_device_instrumentation_test_run.py index a91cf64..661b802 100644 --- a/build/android/pylib/local/device/local_device_instrumentation_test_run.py +++ b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
@@ -994,8 +994,8 @@ # Pull everything at once instead of pulling individually, as it's # slightly faster since each command over adb has some overhead compared # to doing the same thing locally. - device.PullFile(gold_dir, host_dir) host_dir = os.path.join(host_dir, _DEVICE_GOLD_DIR) + device.PullFile(gold_dir, host_dir) for image_name in os.listdir(host_dir): if not image_name.endswith('.png'): continue
diff --git a/build/check_gn_headers_whitelist.txt b/build/check_gn_headers_whitelist.txt index eaa38f5..376eba4 100644 --- a/build/check_gn_headers_whitelist.txt +++ b/build/check_gn_headers_whitelist.txt
@@ -186,7 +186,6 @@ sandbox/linux/system_headers/capability.h skia/ext/convolver_mips_dspr2.h skia/ext/skia_commit_hash.h -third_party/cacheinvalidation/src/google/cacheinvalidation/impl/build_constants.h third_party/hunspell/src/hunspell/hunvisapi.h third_party/khronos/EGL/egl.h third_party/khronos/EGL/eglext.h
diff --git a/build/chromeos/create_test_runner_script.py b/build/chromeos/create_test_runner_script.py index 6e3c186..60b7e67c 100755 --- a/build/chromeos/create_test_runner_script.py +++ b/build/chromeos/create_test_runner_script.py
@@ -53,7 +53,7 @@ parser.add_argument('--suite-name') parser.add_argument('--tast-attr-expr') parser.add_argument('--tast-tests', action='append') - args = parser.parse_args(args) + args, extra_args = parser.parse_known_args(args) def RelativizePathToScript(path): return os.path.relpath(path, os.path.dirname(args.script_output_path)) @@ -95,6 +95,8 @@ if args.use_vm: vm_test_args += ['--use-vm'] + vm_test_args += extra_args + vm_test_path_args = [ ('--cros-cache', RelativizePathToScript(args.cros_cache)), ]
diff --git a/build/chromeos/test_runner.py b/build/chromeos/test_runner.py index de88592..8db6ab72 100755 --- a/build/chromeos/test_runner.py +++ b/build/chromeos/test_runner.py
@@ -122,6 +122,8 @@ ] if args.flash: self._test_cmd += ['--flash'] + if args.public_image: + self._test_cmd += ['--public-image'] # This environment variable is set for tests that have been instrumented # for code coverage. Its incoming value is expected to be a location @@ -268,17 +270,12 @@ if not arg.startswith('--gtest_repeat') ] - if self._additional_args: - logging.error( - 'Tast tests should not have additional args. These will be ' - 'ignored: %s', self._additional_args) - self._test_cmd += [ '--deploy', '--mount', '--build-dir', os.path.relpath(self._path_to_outdir, CHROMIUM_SRC_PATH), - ] + ] + self._additional_args # Coverage tests require some special pre-test setup, so use an # on_device_script in that case. For all other tests, use cros_run_test's @@ -720,6 +717,8 @@ cros_run_test_cmd.append('--debug') if args.flash: cros_run_test_cmd.append('--flash') + if args.public_image: + cros_run_test_cmd += ['--public-image'] if args.logs_dir: for log in SYSTEM_LOG_LOCATIONS: @@ -811,6 +810,10 @@ action='store_true', help='Will flash the device to the current SDK version before running ' 'the test.') + parser.add_argument( + '--public-image', + action='store_true', + help='Will flash a public "full" image to the device.') vm_or_device_group = parser.add_mutually_exclusive_group() vm_or_device_group.add_argument(
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni index d8de047..a6448b41 100644 --- a/build/config/android/internal_rules.gni +++ b/build/config/android/internal_rules.gni
@@ -1211,6 +1211,9 @@ rebase_path(_desugared_library_keep_rule_output_path, root_build_dir), ] } + if (!enable_bazel_desugar) { + _args += [ "--show-desugar-default-interface-warnings" ] + } _enable_assert = is_java_debug || dcheck_always_on if (_enable_assert) { @@ -1656,6 +1659,9 @@ rebase_path(_desugar_jdk_libs_json, root_build_dir), ] } + if (!enable_bazel_desugar) { + _args += [ "--show-desugar-default-interface-warnings" ] + } } if (_desugar_needs_classpath) { args += [ @@ -3061,8 +3067,6 @@ filter_exclude( [ get_label_info(":$target_name", "label_no_toolchain") ], [ - "//chrome/browser*", - "//clank*", "//components*", # This is due to the "special group" bypass.
diff --git a/build/config/chromeos/rules.gni b/build/config/chromeos/rules.gni index f0c7620d..b6bfa64 100644 --- a/build/config/chromeos/rules.gni +++ b/build/config/chromeos/rules.gni
@@ -153,6 +153,12 @@ args += [ "--use-vm" ] } + # If we have public Chromium builds, use public Chromium OS images when + # flashing the test device. + if (!is_chrome_branded) { + args += [ "--public-image" ] + } + if (deploy_chrome) { args += [ "--deploy-chrome" ] }
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 45b8b89..66d6894 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -0.20200720.1.1 +0.20200720.2.2
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 45b8b89..66d6894 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -0.20200720.1.1 +0.20200720.2.2
diff --git a/build/toolchain/win/midl.gni b/build/toolchain/win/midl.gni index 72e79eba..9c107db 100644 --- a/build/toolchain/win/midl.gni +++ b/build/toolchain/win/midl.gni
@@ -55,7 +55,7 @@ } else { # midl.py expects 'gen' to be replaced with 'midl'. generated_dir = rebase_path("//third_party/win_build_output") + "/midl/" + - rebase_path(rebase_path(out_dir, root_build_dir), "gen") + rebase_path(out_dir, root_gen_dir) } if (defined(invoker.dynamic_guid)) {
diff --git a/cc/layers/mirror_layer_impl.cc b/cc/layers/mirror_layer_impl.cc index 5751ccb..a8c7d4f 100644 --- a/cc/layers/mirror_layer_impl.cc +++ b/cc/layers/mirror_layer_impl.cc
@@ -54,7 +54,7 @@ auto* mirrored_effect_node = mirrored_render_surface->OwningEffectNode(); auto* quad = render_pass->CreateAndAppendDrawQuad<viz::RenderPassDrawQuad>(); quad->SetNew(shared_quad_state, content_rect, unoccluded_content_rect, - mirrored_layer_id_, mask_resource_id, mask_uv_rect, + mirrored_layer_render_pass_id(), mask_resource_id, mask_uv_rect, mask_texture_size, mirrored_effect_node->surface_contents_scale, gfx::PointF(), gfx::RectF(gfx::Rect(content_rect.size())), !layer_tree_impl()->settings().enable_edge_anti_aliasing, 0.f);
diff --git a/cc/layers/mirror_layer_impl.h b/cc/layers/mirror_layer_impl.h index b2e6204..58c07eb 100644 --- a/cc/layers/mirror_layer_impl.h +++ b/cc/layers/mirror_layer_impl.h
@@ -54,6 +54,9 @@ private: const char* LayerTypeAsString() const override; + viz::RenderPassId mirrored_layer_render_pass_id() const { + return viz::RenderPassId{mirrored_layer_id()}; + } int mirrored_layer_id_ = 0; };
diff --git a/cc/layers/render_surface_impl.cc b/cc/layers/render_surface_impl.cc index f3cd766..48421224 100644 --- a/cc/layers/render_surface_impl.cc +++ b/cc/layers/render_surface_impl.cc
@@ -370,7 +370,7 @@ viz::RenderPass::Create(num_contributors_); gfx::Rect damage_rect = GetDamageRect(); damage_rect.Intersect(content_rect()); - pass->SetNew(id(), content_rect(), damage_rect, + pass->SetNew(render_pass_id(), content_rect(), damage_rect, draw_properties_.screen_space_transform); pass->filters = Filters(); pass->backdrop_filters = BackdropFilters(); @@ -451,9 +451,9 @@ gfx::RectF tex_coord_rect(gfx::Rect(content_rect().size())); auto* quad = render_pass->CreateAndAppendDrawQuad<viz::RenderPassDrawQuad>(); quad->SetAll(shared_quad_state, content_rect(), unoccluded_content_rect, - /*needs_blending=*/true, id(), mask_resource_id, mask_uv_rect, - mask_texture_size, surface_contents_scale, gfx::PointF(), - tex_coord_rect, + /*needs_blending=*/true, render_pass_id(), mask_resource_id, + mask_uv_rect, mask_texture_size, surface_contents_scale, + gfx::PointF(), tex_coord_rect, !layer_tree_impl_->settings().enable_edge_anti_aliasing, OwningEffectNode()->backdrop_filter_quality, can_use_cached_backdrop_filtered_result_);
diff --git a/cc/layers/render_surface_impl.h b/cc/layers/render_surface_impl.h index fac0274..9ce6bd5 100644 --- a/cc/layers/render_surface_impl.h +++ b/cc/layers/render_surface_impl.h
@@ -161,6 +161,7 @@ } uint64_t id() const { return stable_id_; } + viz::RenderPassId render_pass_id() const { return viz::RenderPassId{id()}; } bool HasMaskingContributingSurface() const;
diff --git a/cc/layers/render_surface_unittest.cc b/cc/layers/render_surface_unittest.cc index 30e41c9..ab56722 100644 --- a/cc/layers/render_surface_unittest.cc +++ b/cc/layers/render_surface_unittest.cc
@@ -205,7 +205,7 @@ auto pass = render_surface->CreateRenderPass(); - EXPECT_EQ(2u, pass->id); + EXPECT_EQ(viz::RenderPassId{2}, pass->id); EXPECT_EQ(content_rect, pass->output_rect); EXPECT_EQ(origin, pass->transform_to_root_target); }
diff --git a/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc b/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc index f5de6a66..469a4f18 100644 --- a/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc +++ b/cc/mojo_embedder/async_layer_tree_frame_sink_unittest.cc
@@ -5,6 +5,7 @@ #include "cc/mojo_embedder/async_layer_tree_frame_sink.h" #include <memory> +#include <utility> #include "base/bind.h" #include "base/memory/scoped_refptr.h" @@ -176,7 +177,7 @@ TEST_F(AsyncLayerTreeFrameSinkSimpleTest, HitTestRegionListEmpty) { viz::RenderPassList pass_list; auto pass = viz::RenderPass::Create(); - pass->id = 1; + pass->id = viz::RenderPassId{1}; pass->output_rect = display_rect_; pass_list.push_back(move(pass)); @@ -191,7 +192,7 @@ viz::RenderPassList pass_list; // Initial submission. auto pass1 = viz::RenderPass::Create(); - pass1->id = 1; + pass1->id = viz::RenderPassId{1}; pass1->output_rect = display_rect_; pass_list.push_back(move(pass1)); @@ -206,7 +207,7 @@ // Identical submission. auto pass2 = viz::RenderPass::Create(); - pass2->id = 2; + pass2->id = viz::RenderPassId{2}; pass2->output_rect = display_rect_; pass_list.push_back(move(pass2)); @@ -218,7 +219,7 @@ // Different submission. auto pass3 = viz::RenderPass::Create(); - pass3->id = 3; + pass3->id = viz::RenderPassId{3}; pass3->output_rect = display_rect_; pass_list.push_back(move(pass3)); @@ -239,7 +240,7 @@ // Initial submission. auto pass1 = viz::RenderPass::Create(); - pass1->id = 1; + pass1->id = viz::RenderPassId{1}; pass1->output_rect = display_rect_; pass_list.push_back(move(pass1)); @@ -254,7 +255,7 @@ // Different submission with |hit_test_data_changed| set to true. auto pass2 = viz::RenderPass::Create(); - pass2->id = 2; + pass2->id = viz::RenderPassId{2}; pass2->output_rect = display_rect_; pass_list.push_back(std::move(pass2)); @@ -273,7 +274,7 @@ // Different submission with |hit_test_data_changed| set back to false. We // expect the hit-data to still have been sent. auto pass3 = viz::RenderPass::Create(); - pass3->id = 3; + pass3->id = viz::RenderPassId{3}; pass3->output_rect = display_rect_; pass_list.push_back(move(pass3));
diff --git a/cc/test/render_pass_test_utils.cc b/cc/test/render_pass_test_utils.cc index 7ffffa9..ca6689b 100644 --- a/cc/test/render_pass_test_utils.cc +++ b/cc/test/render_pass_test_utils.cc
@@ -6,6 +6,11 @@ #include <stdint.h> +#include <memory> +#include <unordered_map> +#include <utility> +#include <vector> + #include "base/bind.h" #include "base/bind_helpers.h" #include "components/viz/client/client_resource_provider.h" @@ -45,7 +50,7 @@ } // anonymous namespace viz::RenderPass* AddRenderPass(viz::RenderPassList* pass_list, - int render_pass_id, + viz::RenderPassId render_pass_id, const gfx::Rect& output_rect, const gfx::Transform& root_transform, const FilterOperations& filters) { @@ -58,7 +63,7 @@ } viz::RenderPass* AddRenderPassWithDamage(viz::RenderPassList* pass_list, - int render_pass_id, + viz::RenderPassId render_pass_id, const gfx::Rect& output_rect, const gfx::Rect& damage_rect, const gfx::Transform& root_transform,
diff --git a/cc/test/render_pass_test_utils.h b/cc/test/render_pass_test_utils.h index 0b852b54..2a67689 100644 --- a/cc/test/render_pass_test_utils.h +++ b/cc/test/render_pass_test_utils.h
@@ -7,6 +7,8 @@ #include <stdint.h> +#include <vector> + #include "cc/paint/filter_operations.h" #include "components/viz/common/quads/render_pass.h" #include "third_party/skia/include/core/SkColor.h" @@ -33,7 +35,7 @@ // Adds a new render pass with the provided properties to the given // render pass list. viz::RenderPass* AddRenderPass(viz::RenderPassList* pass_list, - int render_pass_id, + viz::RenderPassId render_pass_id, const gfx::Rect& output_rect, const gfx::Transform& root_transform, const FilterOperations& filters); @@ -41,7 +43,7 @@ // Adds a new render pass with the provided properties to the given // render pass list. viz::RenderPass* AddRenderPassWithDamage(viz::RenderPassList* pass_list, - int render_pass_id, + viz::RenderPassId render_pass_id, const gfx::Rect& output_rect, const gfx::Rect& damage_rect, const gfx::Transform& root_transform,
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index 5361f07..3e77cb11 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc
@@ -1318,7 +1318,7 @@ for (EffectTreeLayerListIterator it(active_tree()); it.state() != EffectTreeLayerListIterator::State::END; ++it) { - auto target_render_pass_id = it.target_render_surface()->id(); + auto target_render_pass_id = it.target_render_surface()->render_pass_id(); viz::RenderPass* target_render_pass = FindRenderPassById(frame->render_passes, target_render_pass_id);
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc index cbd07774ac..4eaa429 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -14945,9 +14945,12 @@ frame.render_passes.push_back(viz::RenderPass::Create()); viz::RenderPass* pass1 = frame.render_passes.back().get(); - pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); - pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); - pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); + pass1->SetNew(viz::RenderPassId{1}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); + pass2->SetNew(viz::RenderPassId{2}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); + pass3->SetNew(viz::RenderPassId{3}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); // Add a quad to each pass so they aren't empty. auto* color_quad = pass1->CreateAndAppendDrawQuad<viz::SolidColorDrawQuad>(); @@ -14965,10 +14968,13 @@ // But pass2 is not referenced by pass1. So pass2 and pass3 should be culled. FakeLayerTreeHostImpl::RemoveRenderPasses(&frame); EXPECT_EQ(1u, frame.render_passes.size()); - EXPECT_EQ(1u, CountRenderPassesWithId(frame.render_passes, 1u)); - EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 2u)); - EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 3u)); - EXPECT_EQ(1u, frame.render_passes[0]->id); + EXPECT_EQ( + 1u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{1u})); + EXPECT_EQ( + 0u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{2u})); + EXPECT_EQ( + 0u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{3u})); + EXPECT_EQ(viz::RenderPassId{1u}, frame.render_passes[0]->id); } TEST_P(ScrollUnifiedLayerTreeHostImplTest, RemoveEmptyRenderPass) { @@ -14980,9 +14986,12 @@ frame.render_passes.push_back(viz::RenderPass::Create()); viz::RenderPass* pass1 = frame.render_passes.back().get(); - pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); - pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); - pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); + pass1->SetNew(viz::RenderPassId{1}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); + pass2->SetNew(viz::RenderPassId{2}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); + pass3->SetNew(viz::RenderPassId{3}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); // pass1 is not empty, but pass2 and pass3 are. auto* color_quad = pass1->CreateAndAppendDrawQuad<viz::SolidColorDrawQuad>(); @@ -15002,10 +15011,13 @@ // should be removed. FakeLayerTreeHostImpl::RemoveRenderPasses(&frame); EXPECT_EQ(1u, frame.render_passes.size()); - EXPECT_EQ(1u, CountRenderPassesWithId(frame.render_passes, 1u)); - EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 2u)); - EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 3u)); - EXPECT_EQ(1u, frame.render_passes[0]->id); + EXPECT_EQ( + 1u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{1u})); + EXPECT_EQ( + 0u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{2u})); + EXPECT_EQ( + 0u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{3u})); + EXPECT_EQ(viz::RenderPassId{1u}, frame.render_passes[0]->id); // The viz::RenderPassDrawQuad should be removed from pass1. EXPECT_EQ(1u, pass1->quad_list.size()); EXPECT_EQ(viz::DrawQuad::Material::kSolidColor, @@ -15021,9 +15033,12 @@ frame.render_passes.push_back(viz::RenderPass::Create()); viz::RenderPass* pass1 = frame.render_passes.back().get(); - pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); - pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); - pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); + pass1->SetNew(viz::RenderPassId{1}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); + pass2->SetNew(viz::RenderPassId{2}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); + pass3->SetNew(viz::RenderPassId{3}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); // pass3 is referenced by pass2. auto* rpdq = pass2->CreateAndAppendDrawQuad<viz::RenderPassDrawQuad>(); @@ -15040,10 +15055,13 @@ // not be removed. FakeLayerTreeHostImpl::RemoveRenderPasses(&frame); EXPECT_EQ(1u, frame.render_passes.size()); - EXPECT_EQ(1u, CountRenderPassesWithId(frame.render_passes, 1u)); - EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 2u)); - EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 3u)); - EXPECT_EQ(1u, frame.render_passes[0]->id); + EXPECT_EQ( + 1u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{1u})); + EXPECT_EQ( + 0u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{2u})); + EXPECT_EQ( + 0u, CountRenderPassesWithId(frame.render_passes, viz::RenderPassId{3u})); + EXPECT_EQ(viz::RenderPassId{1u}, frame.render_passes[0]->id); // The viz::RenderPassDrawQuad should be removed from pass1. EXPECT_EQ(0u, pass1->quad_list.size()); }
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc index 6281fee..3a2390d 100644 --- a/cc/trees/layer_tree_host_unittest.cc +++ b/cc/trees/layer_tree_host_unittest.cc
@@ -7956,15 +7956,15 @@ DrawResult draw_result) override { frame->render_passes.clear(); - viz::RenderPass* child_pass = - AddRenderPass(&frame->render_passes, 2, gfx::Rect(3, 3, 10, 10), - gfx::Transform(), FilterOperations()); - std::vector<viz::ResourceId> child_resources = - AddOneOfEveryQuadType(child_pass, host_impl->resource_provider(), 0); + viz::RenderPass* child_pass = AddRenderPass( + &frame->render_passes, viz::RenderPassId{2}, gfx::Rect(3, 3, 10, 10), + gfx::Transform(), FilterOperations()); + std::vector<viz::ResourceId> child_resources = AddOneOfEveryQuadType( + child_pass, host_impl->resource_provider(), viz::RenderPassId{0}); - viz::RenderPass* pass = - AddRenderPass(&frame->render_passes, 1, gfx::Rect(3, 3, 10, 10), - gfx::Transform(), FilterOperations()); + viz::RenderPass* pass = AddRenderPass( + &frame->render_passes, viz::RenderPassId{1}, gfx::Rect(3, 3, 10, 10), + gfx::Transform(), FilterOperations()); std::vector<viz::ResourceId> root_resources = AddOneOfEveryQuadType( pass, host_impl->resource_provider(), child_pass->id);
diff --git a/cc/trees/layer_tree_host_unittest_copyrequest.cc b/cc/trees/layer_tree_host_unittest_copyrequest.cc index 372d7c16..054bd6a 100644 --- a/cc/trees/layer_tree_host_unittest_copyrequest.cc +++ b/cc/trees/layer_tree_host_unittest_copyrequest.cc
@@ -590,8 +590,8 @@ void AfterTest() override { EXPECT_TRUE(did_swap_); } - viz::RenderPassId parent_render_pass_id = 0; - viz::RenderPassId copy_layer_render_pass_id = 0; + viz::RenderPassId parent_render_pass_id; + viz::RenderPassId copy_layer_render_pass_id; TestLayerTreeFrameSink* frame_sink_ = nullptr; bool did_swap_ = false; FakeContentLayerClient client_;
diff --git a/cc/trees/property_tree_builder_unittest.cc b/cc/trees/property_tree_builder_unittest.cc index 183c3342..7130f95 100644 --- a/cc/trees/property_tree_builder_unittest.cc +++ b/cc/trees/property_tree_builder_unittest.cc
@@ -4,6 +4,9 @@ #include "cc/trees/property_tree_builder.h" +#include <memory> +#include <utility> + #include "cc/animation/keyframed_animation_curve.h" #include "cc/layers/layer.h" #include "cc/layers/layer_impl.h" @@ -200,7 +203,7 @@ EXPECT_EQ(0, GetRenderSurfaceImpl(root)->num_contributors()); EXPECT_EQ(1U, GetRenderSurfaceList().size()); EXPECT_EQ(static_cast<viz::RenderPassId>(root->id()), - GetRenderSurfaceList().at(0)->id()); + GetRenderSurfaceList().at(0)->render_pass_id()); EXPECT_EQ(gfx::Rect(), ImplOf(root)->visible_drawable_content_rect()); }
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java index 0df8986e..7fac896 100644 --- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java +++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -250,11 +250,6 @@ TabUiTestHelper.createTabs(cta, true, 1); TabUiTestHelper.verifyTabModelTabCount(cta, 1, 1); - if (isInstantReturn()) { - // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar - // omnibox. - return; - } TabUiTestHelper.enterTabSwitcher(cta); if (!isInstantReturn()) { // TODO(crbug.com/1076274): fix toolbar to make incognito switch part of the view. @@ -310,11 +305,7 @@ TabUiTestHelper.createTabs(cta, true, 1); TabUiTestHelper.verifyTabModelTabCount(cta, 1, 1); - if (isInstantReturn()) { - // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar - // omnibox. - return; - } + TabUiTestHelper.enterTabSwitcher(cta); if (!isInstantReturn()) { // TODO(crbug.com/1076274): fix toolbar to make incognito switch part of the view. @@ -406,15 +397,16 @@ fail("Failed to tap 'more tabs' " + e.toString()); } onViewWaiting(withId(R.id.secondary_tasks_surface_view)); - if (isInstantReturn()) { - // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar - // omnibox. - return; - } pressBack(); onViewWaiting(withId(R.id.primary_tasks_surface_view)); + if (isInstantReturn()) { + // TODO(crbug.com/1092642): Fix androidx.test.espresso.PerformException issue when + // performing a single click on position: 0. See code below. + return; + } + OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(mActivityTestRule.getActivity()); onView(allOf(withParent(withId( @@ -473,15 +465,16 @@ fail("Failed to tap 'more tabs' " + e.toString()); } onViewWaiting(withId(R.id.secondary_tasks_surface_view)); - if (isInstantReturn()) { - // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar - // omnibox. - return; - } pressBack(); onViewWaiting(withId(R.id.primary_tasks_surface_view)); + if (isInstantReturn()) { + // TODO(crbug.com/1092642): Fix androidx.test.espresso.PerformException issue when + // performing a single click on position: 0. See code below. + return; + } + OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(mActivityTestRule.getActivity()); onView(allOf(withParent(withId( @@ -545,11 +538,6 @@ } onViewWaiting(withId(R.id.secondary_tasks_surface_view)); - if (isInstantReturn()) { - // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar - // omnibox. - return; - } pressBack(); onViewWaiting(withId(R.id.primary_tasks_surface_view)); @@ -635,14 +623,16 @@ // Single surface is shown as homepage. Exit in order to get into tab switcher later. pressBack(); } - if (isInstantReturn()) { - // TODO(crbug.com/1076274): fix toolbar to avoid wrongly focusing on the toolbar - // omnibox. - return; - } + TabUiTestHelper.enterTabSwitcher(mActivityTestRule.getActivity()); onViewWaiting(allOf(withId(R.id.secondary_tasks_surface_view), isDisplayed())); + if (isInstantReturn()) { + // TODO(crbug.com/1092642): Fix androidx.test.espresso.PerformException issue when + // performing a single click on position: 0. See code below. + return; + } + OverviewModeBehaviorWatcher hideWatcher = TabUiTestHelper.createOverviewHideWatcher(mActivityTestRule.getActivity()); onView(allOf(withParent(withId(org.chromium.chrome.tab_ui.R.id.tasks_surface_body)),
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_it.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_it.xtb index cd6517576..2cc5fe8 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_it.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_it.xtb
@@ -7,7 +7,7 @@ <translation id="1657719826150349398">Sposta scheda in basso</translation> <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> scheda}other{<ph name="TABS_COUNT_MANY" /> schede}}</translation> <translation id="2569352796411618312">Suggerimento: <ph name="NUMBER_OF_TABS" /> delle tue schede non sono state usate ultimamente. Vuoi chiuderle?</translation> -<translation id="257674075312929031">Gruppo</translation> +<translation id="257674075312929031">Raggruppa</translation> <translation id="2613747923081026172">Crea gruppo</translation> <translation id="2671423594960767771">Condividi gruppo</translation> <translation id="2977480621796371840">Rimuovi dal gruppo</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb index 7fddd4a..597fbca 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb
@@ -23,7 +23,7 @@ <translation id="5580090775658607195"><ph name="TAB_COUNT" /> separadores agrupados</translation> <translation id="58326064309361797">Arraste os separadores para os agrupar.</translation> <translation id="6040143037577758943">Fechar</translation> -<translation id="6193448654517602979">Selecione os separadores</translation> +<translation id="6193448654517602979">Selecione separadores</translation> <translation id="6510648526783655549">Fechar Faixa de separadores</translation> <translation id="6562820390860419811">Mover o separador para a esquerda</translation> <translation id="6615455863669487791">Mostrar</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ur.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ur.xtb index 718ef3db6..34cc026 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ur.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ur.xtb
@@ -20,7 +20,7 @@ <translation id="5073204694187207510">پوری اسکرین گرڈ کو چھپائیں</translation> <translation id="5082793167783849073">ایک گروپ بنا کر صفحات کا فوری طور پر موازنہ کریں۔ شروع کرنے کیلئے، کسی لنک کو ٹچ کریں اور دبائے رکھیں۔</translation> <translation id="5533021382642990449">بعد میں دکھائیں</translation> -<translation id="5580090775658607195"><ph name="TAB_COUNT" /> ٹیبز گروپ بند</translation> +<translation id="5580090775658607195"><ph name="TAB_COUNT" /> ٹیبز کا گروپ بن گیا</translation> <translation id="58326064309361797">ان کی گروپ بندی کرنے کے لیے ٹیبز کو گھسیٹیں</translation> <translation id="6040143037577758943">بند کریں</translation> <translation id="6193448654517602979">ٹیبز منتخب کریں</translation>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutController.java b/chrome/android/java/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutController.java index 88180a3..fe0f63c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutController.java
@@ -204,7 +204,7 @@ @VisibleForTesting protected LayoutParams getWindowAttributes() { - return mWindow.getAttributes(); + return mWindow == null ? null : mWindow.getAttributes(); } @VisibleForTesting @@ -218,6 +218,8 @@ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) return; LayoutParams attributes = getWindowAttributes(); + if (attributes == null) return; + attributes.layoutInDisplayCutoutMode = getDisplayCutoutMode(); setWindowAttributes(attributes); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java index 34c4782..b5d5563 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java
@@ -16,6 +16,7 @@ import org.chromium.base.Log; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.payments.PaymentManifestVerifier.ManifestVerifyCallback; +import org.chromium.components.payments.ErrorStrings; import org.chromium.components.payments.MethodStrings; import org.chromium.components.payments.PackageManagerDelegate; import org.chromium.components.payments.PaymentFeatureList; @@ -629,6 +630,20 @@ */ private void onValidPaymentAppForPaymentMethodName(ResolveInfo resolveInfo, String methodName) { String packageName = resolveInfo.activityInfo.packageName; + + SupportedDelegations appSupportedDelegations = + getAppsSupportedDelegations(resolveInfo.activityInfo); + // Allow-lists the Play Billing method for this feature in order for the Play Billing case + // to skip the sheet in this case. + if (PaymentFeatureList.isEnabled(PaymentFeatureList.ENFORCE_FULL_DELEGATION) + || methodName.equals(MethodStrings.GOOGLE_PLAY_BILLING)) { + if (!appSupportedDelegations.providesAll( + mFactoryDelegate.getParams().getPaymentOptions())) { + Log.e(TAG, ErrorStrings.SKIP_APP_FOR_PARTIAL_DELEGATION.replace("$1", packageName)); + return; + } + } + AndroidPaymentApp app = mValidApps.get(packageName); if (app == null) { CharSequence label = mPackageManagerDelegate.getAppLabel(resolveInfo); @@ -648,7 +663,7 @@ packageName, resolveInfo.activityInfo.name, mIsReadyToPayServices.get(packageName), label.toString(), mPackageManagerDelegate.getAppIcon(resolveInfo), mIsIncognito, - webAppIdCanDeduped, getAppsSupportedDelegations(resolveInfo.activityInfo)); + webAppIdCanDeduped, appSupportedDelegations); mValidApps.put(packageName, app); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentAppFactoryParams.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentAppFactoryParams.java index e14b9af..8d3e401a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentAppFactoryParams.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentAppFactoryParams.java
@@ -12,6 +12,7 @@ import org.chromium.content_public.browser.WebContents; import org.chromium.payments.mojom.PaymentDetailsModifier; import org.chromium.payments.mojom.PaymentMethodData; +import org.chromium.payments.mojom.PaymentOptions; import org.chromium.url.Origin; import java.util.Map; @@ -92,8 +93,10 @@ return null; } - /** @return The currency of the total amount. Should not be null. */ - default String getTotalAmountCurrency() { + /** + * @return The PaymentOptions of the payment request. + */ + default PaymentOptions getPaymentOptions() { return null; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java index 80668fa..f5a0fd7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java
@@ -2619,16 +2619,15 @@ // PaymentAppFactoryParams implementation. @Override - public String getTotalAmountCurrency() { - return mRawTotal.amount.currency; - } - - // PaymentAppFactoryParams implementation. - @Override public boolean requestShippingOrPayerContact() { return mRequestShipping || mRequestPayerName || mRequestPayerPhone || mRequestPayerEmail; } + @Override + public PaymentOptions getPaymentOptions() { + return mPaymentOptions; + } + // PaymentAppFactoryParams implementation. @Override public PaymentRequestSpec getSpec() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/SupportedDelegations.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/SupportedDelegations.java index 25cd339..feec826 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/SupportedDelegations.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/SupportedDelegations.java
@@ -32,6 +32,15 @@ mPayerEmail = false; } + public boolean providesAll(org.chromium.payments.mojom.PaymentOptions options) { + if (options == null) return true; + if (options.requestShipping && !mShippingAddress) return false; + if (options.requestPayerName && !mPayerName) return false; + if (options.requestPayerPhone && !mPayerPhone) return false; + if (options.requestPayerEmail && !mPayerEmail) return false; + return true; + } + public boolean getShippingAddress() { return mShippingAddress; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewManagerImpl.java index 69e3a87b..99fbc79 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewManagerImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewManagerImpl.java
@@ -122,6 +122,8 @@ if (currentTabViewProvider != null) { view = currentTabViewProvider.getView(); assert view != null; + view.setFocusable(true); + view.setFocusableInTouchMode(true); } mCurrentView = view; initMarginSupplier();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ServicificationBackgroundServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ServicificationBackgroundServiceTest.java index b550c84..05ff411 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ServicificationBackgroundServiceTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ServicificationBackgroundServiceTest.java
@@ -21,6 +21,7 @@ import org.chromium.base.StrictModeContext; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.Feature; +import org.chromium.base.test.util.Restriction; import org.chromium.chrome.browser.init.ServiceManagerStartupUtils; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; @@ -115,6 +116,10 @@ @LargeTest @Feature({"ServicificationStartup"}) @CommandLineFlags.Add({"force-fieldtrials=*Foo/Bar", "enable-features=UMABackgroundSessions"}) + @Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE}) // crbug.com/1096833 + // Verifies that the memory-mapped file for persistent histogram data exists and contains a + // valid SystemProfile. This test isn't run on low end devices which use local memory for + // storing histogram data. public void testHistogramsPersistedWithServiceManagerOnlyStart() { createBrowserMetricsSpareFile(); Assert.assertTrue(mSpareFile.exists());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java index 0e0b0ce..484c2386 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java
@@ -157,6 +157,7 @@ @LargeTest @Restriction(UiRestriction.RESTRICTION_TYPE_TABLET) @Feature({"TabStrip"}) + @DisabledTest(message = "crbug.com/1107543") public void testNewIncognitoTabFromMenuAtNormalStrip() throws Exception { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Assert.assertFalse("Expected normal strip to be selected", @@ -255,6 +256,7 @@ @LargeTest @Restriction(UiRestriction.RESTRICTION_TYPE_TABLET) @Feature({"TabStrip"}) + @DisabledTest(message = "crbug.com/1107543") public void testCloseTabWithManyTabs() throws Exception { ChromeTabUtils.newTabsFromMenu( InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 4); @@ -391,6 +393,7 @@ @LargeTest @Restriction(UiRestriction.RESTRICTION_TYPE_TABLET) @Feature({"TabStrip"}) + @DisabledTest(message = "crbug.com/1107543") public void testToggleIncognitoMode() throws Exception { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Assert.assertFalse("Expected normal strip to be selected", @@ -419,6 +422,7 @@ @LargeTest @Feature({"TabStrip"}) @Restriction(UiRestriction.RESTRICTION_TYPE_TABLET) + @DisabledTest(message = "crbug.com/1107543") public void testCloseLastIncognitoTab() { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Assert.assertFalse("Expected normal strip to be selected", @@ -448,6 +452,7 @@ @LargeTest @Feature({"TabStrip"}) @Restriction(UiRestriction.RESTRICTION_TYPE_TABLET) + @DisabledTest(message = "crbug.com/1107543") public void testCloseAllIncognitoTabsFromTabMenu() { //1. Create two incognito tabs InstrumentationRegistry.getInstrumentation().waitForIdleSync(); @@ -495,6 +500,7 @@ @LargeTest @Restriction(UiRestriction.RESTRICTION_TYPE_TABLET) @Feature({"TabStrip"}) + @DisabledTest(message = "crbug.com/1107543") public void testTabSelectionViewDoesNotBreakModelSwitch() { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Assert.assertFalse("Expected normal strip to be selected", @@ -523,6 +529,7 @@ @LargeTest @Restriction(UiRestriction.RESTRICTION_TYPE_TABLET) @Feature({"TabStrip"}) + @DisabledTest(message = "crbug.com/1107543") public void testSwitchStripStackersWithIncognito() throws Exception { // Open an incognito tab to switch to the incognito model. mActivityTestRule.newIncognitoTabFromMenu();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java index 2aa15707..f1589cd 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java
@@ -67,7 +67,7 @@ private GURL mTestServerUrl; /** - * @param uri The URL of the test server. + * @param url The URL of the test server. */ /* package */ void setTestServerUrl(GURL url) { assert mTestServerUrl == null : "Test server URL should be set only once";
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutControllerTest.java index 5e833d1..d12451b7 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutControllerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutControllerTest.java
@@ -199,6 +199,18 @@ @Test @SmallTest + public void testLayout_NoWindow() { + // Verify there's no crash when the tab's interactability changes after activity detachment. + verify(mTab).addObserver(mTabObserverCaptor.capture()); + reset(mTab); + + mTabObserverCaptor.getValue().onActivityAttachmentChanged(mTab, null); + mTabObserverCaptor.getValue().onInteractabilityChanged(mTab, false); + verify(mWindow, never()).getAttributes(); + } + + @Test + @SmallTest public void testLayoutOnShown() { // In this test we are checking for a side effect of maybeUpdateLayout. // This is because the tab observer holds a reference to the original
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb index b0f5731..5c01e63b 100644 --- a/chrome/app/resources/chromium_strings_bg.xtb +++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -99,6 +99,7 @@ <translation id="4943838377383847465">Chromium работи на заден план.</translation> <translation id="4987820182225656817">Гостите могат да използват Chromium, без да оставят следи.</translation> <translation id="4994636714258228724">Добавяне на вас към Chromium</translation> +<translation id="5037694917996535813">Влязохте със служебен профил. Искате ли да създадете в Chromium нов потребителски профил за служебни цели, за да поддържате данните си разделени?</translation> <translation id="5224391634244552924">Няма запазени пароли. Chromium може да проверява паролите ви, когато ги запазите.</translation> <translation id="5277894862589591112">За да приложите промените си, рестартирайте Chromium</translation> <translation id="5358375970380395591">Влизате с управляван профил и давате на администратора му контрол над потребителския си профил в Chromium. Данните ви там, като например приложения, отметки, история, пароли и други настройки, ще се свържат за постоянно с/ъс <ph name="USER_NAME" />. Ще можете да ги изтриете чрез таблото за управление на Google Профили, но не и да ги свържете с друг профил. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb index 5b35115..848b6a3 100644 --- a/chrome/app/resources/chromium_strings_bs.xtb +++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium je u pozadinskom načinu rada.</translation> <translation id="4987820182225656817">Gosti mogu koristiti Chromium, a da ne ostave tragove o korištenju.</translation> <translation id="4994636714258228724">Dodajte se u Chromium</translation> +<translation id="5037694917996535813">Prijavili ste se s poslovnim računom. Želite li kreirati novi Chromium profil za posao da odvojite podatke?</translation> <translation id="5224391634244552924">Nema sačuvanih lozinki. Chromium može provjeravati vaše lozinke kada ih sačuvate.</translation> <translation id="5277894862589591112">Za primjenu promjena, ponovo pokrenite Chromium</translation> <translation id="5358375970380395591">Prijavljujete se s upravljanim računom i dajete njegovom administratoru kontrolu nad svojim Chromium profilom. Vaši podaci iz Chromiuma, kao što su vaše aplikacije, oznake, historija, lozinke i druge postavke, trajno će se vezati za račun <ph name="USER_NAME" />. Moći ćete izbrisati ove podatke na kontrolnoj tabli Google računa, ali nećete moći povezati ove podatke s drugim računom. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_cs.xtb b/chrome/app/resources/chromium_strings_cs.xtb index ab4106c..e2c48ed 100644 --- a/chrome/app/resources/chromium_strings_cs.xtb +++ b/chrome/app/resources/chromium_strings_cs.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium je v režimu na pozadí.</translation> <translation id="4987820182225656817">Hosté mohou Chromium používat, aniž by po nich zůstaly jakékoliv stopy.</translation> <translation id="4994636714258228724">Přidejte do prohlížeče Chromium svůj účet</translation> +<translation id="5037694917996535813">Přihlásili jste se pomocí pracovního účtu. Chcete v prohlížeči Chromium vytvořit nový pracovní profil, aby data byla oddělená?</translation> <translation id="5224391634244552924">Nemáte žádná uložená hesla. Chromium může hesla zkontrolovat, pouze když si je uložíte.</translation> <translation id="5277894862589591112">Chcete-li změny použít, restartujte Chromium</translation> <translation id="5358375970380395591">Přihlašujete se pomocí spravovaného účtu a poskytujete jeho správci kontrolu nad vaším profilem prohlížeče Chromium. Vaše údaje prohlížeče Chromium, například aplikace, záložky, historie, hesla a jiná nastavení, budou trvale přidružena k účtu <ph name="USER_NAME" />. Tyto údaje budete moci smazat pomocí Hlavního panelu v Účtech Google, ale nebudete je moci přidružit k jinému účtu. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb index 0344d09..ef1e117b 100644 --- a/chrome/app/resources/chromium_strings_da.xtb +++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -101,10 +101,11 @@ <translation id="4943838377383847465">Chromium kører i baggrunden.</translation> <translation id="4987820182225656817">Gæster kan bruge Chromium uden at efterlade noget.</translation> <translation id="4994636714258228724">Tilføj dig selv i Chromium</translation> +<translation id="5037694917996535813">Du er logget ind med en arbejdskonto. Vi du oprette en ny Chromium-profil til dit arbejde for at holde dine data adskilt?</translation> <translation id="5224391634244552924">Der er ingen gemte adgangskoder. Chromium kan tjekke dine adgangskoder, når du gemmer dem.</translation> <translation id="5277894862589591112">Åbn Chromium igen for at anvende ændringerne</translation> <translation id="5358375970380395591">Du er ved at logge ind med en managerstyret konto og giver dens administrator kontrol over din profil i Chromium. Dine Chromium-data, f.eks. dine apps, bogmærker, historikdata, adgangskoder og andre indstillinger, knyttes permanent til <ph name="USER_NAME" />. Du kan slette disse data via kontrolpanelet for Google Konti, men du kan ikke knytte disse data til en anden konto. <ph name="LEARN_MORE" /></translation> -<translation id="5374145464979633459">Der opstod en fejl i Chromium ved scanningen af software</translation> +<translation id="5374145464979633459">Der opstod en fejl i Chromium ved scanningen af software på enheden</translation> <translation id="5386450000063123300">Opdaterer Chromium (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="538767207339317086">Tillad login via Chromium</translation> <translation id="5398878173008909840">Der er en ny version af Chromium til rådighed.</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb index da8dd15..41cdcf30 100644 --- a/chrome/app/resources/chromium_strings_el.xtb +++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -101,6 +101,7 @@ <translation id="4943838377383847465">Το Chromium εκτελείται στο παρασκήνιο.</translation> <translation id="4987820182225656817">Οι επισκέπτες μπορούν να χρησιμοποιούν το Chromium χωρίς να αφήνουν κανένα ίχνος.</translation> <translation id="4994636714258228724">Προσθήκη του εαυτού σας στο Chromium</translation> +<translation id="5037694917996535813">Συνδεθήκατε με έναν λογαριασμό εργασίας. Θέλετε να δημιουργήσετε ένα νέο προφίλ Chromium για την εργασία έτσι ώστε να διατηρείτε τα δεδομένα σας ξεχωριστά;</translation> <translation id="5224391634244552924">Δεν υπάρχουν αποθηκευμένοι κωδικοί πρόσβασης. Το Chromium μπορεί να ελέγξει τους κωδικούς πρόσβασής σας όταν τους αποθηκεύσετε.</translation> <translation id="5277894862589591112">Για να εφαρμόσετε τις αλλαγές σας, επανεκκινήστε το Chromium</translation> <translation id="5358375970380395591">Είστε συνδεδεμένοι με έναν διαχειριζόμενο λογαριασμό και παραχωρείτε στο διαχειριστή του τον έλεγχο του προφίλ σας στο Chromium. Τα δεδομένα σας στο Chromium, όπως οι εφαρμογές, οι σελιδοδείκτες, το ιστορικό, οι κωδικοί πρόσβασης και άλλες ρυθμίσεις θα συνδεθούν μόνιμα με το όνομα χρήστη <ph name="USER_NAME" />. Θα έχετε τη δυνατότητα να διαγράψετε αυτά τα δεδομένα μέσω του Πίνακα ελέγχου των Λογαριασμών Google, αλλά δεν θα μπορείτε να τα συσχετίσετε με άλλο λογαριασμό. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb index 93d3ee2..3d604e06 100644 --- a/chrome/app/resources/chromium_strings_en-GB.xtb +++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium is in background mode.</translation> <translation id="4987820182225656817">Guests can use Chromium without leaving anything behind.</translation> <translation id="4994636714258228724">Add yourself to Chromium</translation> +<translation id="5037694917996535813">You signed in with a work account. Would you like to create a new Chromium profile for work to keep your data separate?</translation> <translation id="5224391634244552924">No saved passwords. Chromium can check your passwords when you save them.</translation> <translation id="5277894862589591112">To apply your changes, relaunch Chromium</translation> <translation id="5358375970380395591">You are signing in with a managed account and giving its administrator control over your Chromium profile. Your Chromium data, such as your apps, bookmarks, history, passwords and other settings will become permanently tied to <ph name="USER_NAME" />. You will be able to delete this data via the Google Accounts Dashboard, but you will not be able to associate this data with another account. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb index 424ccb0..409c210 100644 --- a/chrome/app/resources/chromium_strings_hr.xtb +++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -101,6 +101,7 @@ <translation id="4943838377383847465">Chromium radi u pozadini.</translation> <translation id="4987820182225656817">Gosti mogu upotrebljavati Chromium bez ostavljanja tragova o upotrebi.</translation> <translation id="4994636714258228724">Dodajte sebe kao korisnika Chromiuma</translation> +<translation id="5037694917996535813">Prijavili ste se poslovnim računom. Želite li izraditi novi Chromiumov profil za posao da bi podaci ostali odvojeni?</translation> <translation id="5224391634244552924">Nema nijedne spremljene zaporke. Chromium može provjeriti vaše zaporke kad ih spremite.</translation> <translation id="5277894862589591112">Da bi se vaše promjene primijenile, ponovo pokrenite Chromium</translation> <translation id="5358375970380395591">Prijavljujete se upravljanim računom i dajete administratoru kontrolu nad svojim profilom u sustavu Chromium. Vaši podaci u sustavu Chromium, primjerice, aplikacije, oznake, povijest, zaporke i ostale postavke, trajno će se povezati s korisnikom <ph name="USER_NAME" />. Moći ćete izbrisati te podatke putem Nadzorne ploče Google računa, ali ih nećete moći povezati s nekim drugim računom. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb index a941482e..01d59bc3 100644 --- a/chrome/app/resources/chromium_strings_id.xtb +++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -11,7 +11,7 @@ <translation id="151962892725702025">Chromium OS tidak dapat menyinkronkan data Anda karena Sinkronisasi tidak tersedia untuk domain Anda.</translation> <translation id="1524282610922162960">Bagikan tab Chromium</translation> <translation id="1553461853655228091">Chromium memerlukan izin untuk mengakses kamera guna membuat peta 3D untuk area di sekeliling Anda.</translation> -<translation id="1607715478322902680">{COUNT,plural, =0{Administrator mewajibkan Anda meluncurkan kembali Chromium untuk menerapkan update}=1{Administrator mewajibkan Anda meluncurkan kembali Chromium untuk menerapkan update. Jendela samaran Anda tidak akan dibuka kembali.}other{Administrator mewajibkan Anda meluncurkan kembali Chromium untuk menerapkan update. # jendela samaran Anda tidak akan dibuka kembali.}}</translation> +<translation id="1607715478322902680">{COUNT,plural, =0{Administrator mewajibkan Anda meluncurkan kembali Chromium untuk menerapkan update}=1{Administrator mewajibkan Anda meluncurkan kembali Chromium untuk menerapkan update. Jendela Samaran Anda tidak akan dibuka kembali.}other{Administrator mewajibkan Anda meluncurkan kembali Chromium untuk menerapkan update. # jendela Samaran Anda tidak akan dibuka kembali.}}</translation> <translation id="1708666629004767631">Tersedia versi Chromium yang baru dan lebih aman.</translation> <translation id="1774152462503052664">Jalankan Chromium di latar belakang</translation> <translation id="1779356040007214683">Agar Chromium lebih aman, kami menonaktifkan beberapa ekstensi yang tidak tercantum dalam <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> dan mungkin telah ditambahkan tanpa sepengetahuan Anda.</translation> @@ -65,9 +65,9 @@ <translation id="3509308970982693815">Tutup semua jendela Chromium dan coba lagi.</translation> <translation id="3575459661164320785">Ada software berbahaya di komputer Anda. Chromium dapat menghapusnya, memulihkan setelan Anda, dan menonaktifkan ekstensi agar browser berfungsi kembali secara normal.</translation> <translation id="3639635944603682591">Data browsing pengguna ini akan dihapus dari perangkat ini. Untuk memulihkan data, login ke Chromium sebagai <ph name="USER_EMAIL" />.</translation> -<translation id="364817392622123556">{COUNT,plural, =0{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali.}=1{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. Jendela samaran Anda tidak akan dibuka kembali.}other{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. # jendela samaran Anda tidak akan dibuka kembali.}}</translation> +<translation id="364817392622123556">{COUNT,plural, =0{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali.}=1{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. Jendela Samaran Anda tidak akan dibuka kembali.}other{Update baru untuk Chromium telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. # jendela Samaran Anda tidak akan dibuka kembali.}}</translation> <translation id="3685209450716071127">Chromium tidak dapat memeriksa sandi Anda. Coba periksa koneksi internet Anda.</translation> -<translation id="370962675267501463">{COUNT,plural, =0{Administrator meminta Anda meluncurkan kembali Chromium untuk menerapkan update ini}=1{Administrator meminta Anda meluncurkan kembali Chromium untuk menerapkan update ini. Jendela samaran Anda tidak akan dibuka kembali.}other{Administrator meminta Anda meluncurkan kembali Chromium untuk menerapkan update ini. # jendela samaran Anda tidak akan dibuka kembali.}}</translation> +<translation id="370962675267501463">{COUNT,plural, =0{Administrator meminta Anda meluncurkan kembali Chromium untuk menerapkan update ini}=1{Administrator meminta Anda meluncurkan kembali Chromium untuk menerapkan update ini. Jendela Samaran Anda tidak akan dibuka kembali.}other{Administrator meminta Anda meluncurkan kembali Chromium untuk menerapkan update ini. # jendela Samaran Anda tidak akan dibuka kembali.}}</translation> <translation id="3713809861844741608">Buka link di &tab Chromium baru</translation> <translation id="3728336900324680424">Chromium akan mengakses Drive Anda untuk membuat saran di kolom URL</translation> <translation id="378917192836375108">Chromium memungkinkan Anda mengeklik nomor telepon pada web dan menghubunginya melalui Skype!</translation>
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb index c7c832e..f1fde7f89 100644 --- a/chrome/app/resources/chromium_strings_is.xtb +++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium er í bakgrunnsstillingu.</translation> <translation id="4987820182225656817">Gestir geta notað Chromium án þess að skilja eftir sig nokkur spor.</translation> <translation id="4994636714258228724">Bættu þér við Chromium</translation> +<translation id="5037694917996535813">Þú skráðir þig inn með vinnureikningi. Viltu búa til nýtt Chromium vinnusnið til að halda gögnunum þínum aðskildum?</translation> <translation id="5224391634244552924">Engin vistuð aðgangsorð. Chromium getur athugað aðgangsorðin þín þegar þú vistar þau.</translation> <translation id="5277894862589591112">Endurræstu Chromium til að breytingarnar taki gildi</translation> <translation id="5358375970380395591">Þú ert að skrá þig inn með stýrðum reikningi og veitir stjórnanda hans vald yfir Chromium prófílnum þínum. Chromium gögnin þín, s.s. forrit, bókamerki, ferill, aðgangsorð og aðrar stillingar, verða tengd varanlega við <ph name="USER_NAME" />. Þú getur eytt þessum gögnum á stjórnborði Google reikninga en getur ekki tengt þau öðrum reikningi. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb index c11065c..b7f46e0 100644 --- a/chrome/app/resources/chromium_strings_ja.xtb +++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -104,6 +104,7 @@ <translation id="5224391634244552924">保存されているパスワードがありません。パスワードを保存すると、Chromium で確認できるようになります。</translation> <translation id="5277894862589591112">変更を適用するには Chromium を再起動してください</translation> <translation id="5358375970380395591">現在、管理対象アカウントでログインしており、あなたの Chromium プロフィールを管理者が制御できる状態になっています。あなたの Chromium データ(アプリ、ブックマーク、履歴、パスワードなどの設定)は永続的に <ph name="USER_NAME" /> に関連付けられます。このデータは Google アカウントのダッシュボードを介して削除できますが、このデータを別のアカウントに関連付けることはできなくなります。<ph name="LEARN_MORE" /></translation> +<translation id="5374145464979633459">Chromium でデバイスのソフトウェアの確認中にエラーが発生しました</translation> <translation id="5386450000063123300">Chromium を更新しています(<ph name="PROGRESS_PERCENT" />)</translation> <translation id="538767207339317086">Chromium へのログインを許可する</translation> <translation id="5398878173008909840">Chromium の最新バージョンをぜひお試しください。</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb index 9fdb206..b7c9ffe 100644 --- a/chrome/app/resources/chromium_strings_lt.xtb +++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">„Chromium“ veikia fono režimu.</translation> <translation id="4987820182225656817">Svečiai gali naudoti „Chromium“ nepalikdami jokių duomenų.</translation> <translation id="4994636714258228724">Pridėkite save prie „Chromium“</translation> +<translation id="5037694917996535813">Prisijungėte naudodami darbo paskyrą. Ar norėtumėte sukurti naują „Chromium“ darbo profilį, kad duomenys būtų saugomi atskirai?</translation> <translation id="5224391634244552924">Nėra išsaugotų slaptažodžių. „Chromium“ gali tikrinti jūsų slaptažodžius, kai juos išsaugote.</translation> <translation id="5277894862589591112">Norėdami pritaikyti pakeitimus, paleiskite „Chromium“ iš naujo</translation> <translation id="5358375970380395591">Prisijungiate su valdoma paskyra ir leidžiate jos administratoriui valdyti jūsų „Chromium“ profilį. „Chromium“ duomenys, pvz., programos, žymės, istorija, slaptažodžiai ir kiti nustatymai, bus visam laikui susieti su <ph name="USER_NAME" />. Galėsite ištrinti šiuos duomenis naudodami „Google“ paskyrų informacijos suvestinę, bet negalėsite susieti šių duomenų su kita paskyra. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb index a86cc4d..9b8cbd72 100644 --- a/chrome/app/resources/chromium_strings_no.xtb +++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -101,6 +101,7 @@ <translation id="4943838377383847465">Chromium er i bakgrunnsmodus.</translation> <translation id="4987820182225656817">Gjester kan bruke Chromium uten å etterlate seg spor.</translation> <translation id="4994636714258228724">Legg til deg selv i Chromium</translation> +<translation id="5037694917996535813">Du har logget på med en jobbkonto. Vil du opprette en ny Chromium-profil for arbeid for å holde dataene dine atskilt?</translation> <translation id="5224391634244552924">Ingen lagrede passord. Chromium kan sjekke passordene dine når du lagrer dem.</translation> <translation id="5277894862589591112">For å bruke endringene dine må du starte Chromium på nytt</translation> <translation id="5358375970380395591">Du logger deg på med en administrert konto og gir tilhørende administratorer kontroll over Chromium-profilen din. Chromium-dataene dine, slik som apper, bokmerker, loggen, passord og andre innstillinger, knyttes permanent til <ph name="USER_NAME" />. Du kan slette disse dataene via oversikten for Google-kontoer, men du kan ikke knytte disse dataene til en annen konto. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb index ca7e60d..9d5ce22 100644 --- a/chrome/app/resources/chromium_strings_pl.xtb +++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -99,6 +99,7 @@ <translation id="4943838377383847465">Chromium jest w trybie działania w tle</translation> <translation id="4987820182225656817">Goście mogą korzystać z Chromium, nie pozostawiając żadnych danych.</translation> <translation id="4994636714258228724">Dodaj siebie do Chromium</translation> +<translation id="5037694917996535813">Używasz konta do pracy. Czy chcesz utworzyć nowy profil Chromium do pracy, by przechowywać dane oddzielnie?</translation> <translation id="5224391634244552924">Brak zapisanych haseł. Chromium może sprawdzać Twoje hasła, gdy je zapiszesz.</translation> <translation id="5277894862589591112">Aby zastosować zmiany, uruchom ponownie Chromium</translation> <translation id="5358375970380395591">Logujesz się na zarządzane konto i przekazujesz jego administratorowi kontrolę nad swoim profilem Chromium. Twoje dane Chromium, takie jak aplikacje, zakładki, historia, hasła i inne ustawienia, zostaną trwale powiązane z użytkownikiem <ph name="USER_NAME" />. Będzie można je usunąć w Panelu kont Google, ale nie będzie można ich powiązać z innym kontem. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb index 245318d1..c1a99fad 100644 --- a/chrome/app/resources/chromium_strings_pt-PT.xtb +++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -34,7 +34,7 @@ <translation id="2560420686485554789">O Chromium necessita de acesso ao armazenamento para transferir ficheiros.</translation> <translation id="2572494885440352020">Ajuda do Chromium</translation> <translation id="2587578672395088481">O SO Chromium tem de ser reiniciado para aplicar a atualização.</translation> -<translation id="2648074677641340862">Ocorreu um erro no sistema operativo durante a instalação. Transfira novamente o Chromium.</translation> +<translation id="2648074677641340862">Ocorreu um erro no sistema operativo durante a instalação. Descarregue novamente o Chromium.</translation> <translation id="2711502716910134313">Separador do Chromium</translation> <translation id="2718390899429598676">Para uma segurança adicional, o Chromium encripta os seus dados.</translation> <translation id="2770231113462710648">Alterar o navegador predefinido para:</translation> @@ -47,7 +47,7 @@ <translation id="3032706164202344641">O Chromium não consegue verificar as suas palavras-passe. Tente novamente mais tarde.</translation> <translation id="3032787606318309379">A adicionar ao Chromium...</translation> <translation id="3068515742935458733">Ajudar a melhorar o Chromium ao enviar relatórios de falhas e <ph name="UMA_LINK" /> à Google</translation> -<translation id="3103660991484857065">Houve uma falha no programa de instalação ao descompactar o arquivo. Transfira novamente o Chromium.</translation> +<translation id="3103660991484857065">Houve uma falha no programa de instalação ao descompactar o arquivo. Descarregue novamente o Chromium.</translation> <translation id="3130323860337406239">O Chromium está a utilizar o microfone.</translation> <translation id="3155163173539279776">Reiniciar o Chromium</translation> <translation id="3179665906251668410">Abrir link numa janela de nave&gação anónima do Chromium</translation> @@ -88,7 +88,7 @@ <translation id="4423735387467980091">Personalizar e controlar o Chromium</translation> <translation id="4544142686420020088">O Chromium não foi atualizado. Ocorreu um erro. <ph name="BEGIN_LINK" />Corrija problemas de atualização do Chrome e falhas nas atualizações<ph name="END_LINK" />.</translation> <translation id="4567424176335768812">Tem sessão iniciada como <ph name="USER_EMAIL_ADDRESS" />. Agora, pode aceder aos seus marcadores, ao histórico e a outras definições em todos os dispositivos com sessão iniciada.</translation> -<translation id="459535195905078186">Aplicações do Chromium</translation> +<translation id="459535195905078186">Apps do Chromium</translation> <translation id="4677944499843243528">O perfil parece estar a ser utilizado por outro processo do Chromium (<ph name="PROCESS_ID" />) noutro computador (<ph name="HOST_NAME" />). O Chromium bloqueou o perfil para que não seja danificado. Se tiver a certeza de que não existem outros processos a utilizar este perfil, pode desbloqueá-lo e reiniciar o Chromium.</translation> <translation id="469338717132742108">Obter ajuda relacionada com o SO Chromium</translation> <translation id="4708774505295300557">Alguém iniciou sessão no Chromium neste computador anteriormente com a conta <ph name="ACCOUNT_EMAIL_LAST" />. Crie um novo utilizador do Chromium para manter as informações em separado.</translation> @@ -101,6 +101,7 @@ <translation id="4943838377383847465">O Chromium está no modo em segundo plano.</translation> <translation id="4987820182225656817">Os convidados podem utilizar o Chromium sem perder qualquer funcionalidade.</translation> <translation id="4994636714258228724">Adicionar-se ao Chromium</translation> +<translation id="5037694917996535813">Iniciou sessão com uma conta profissional. Pretende criar um novo perfil do Chromium para trabalho para manter os seus dados separados?</translation> <translation id="5224391634244552924">Não existem palavras-passe guardadas. O Chromium consegue verificar as suas palavras-passe quando as guarda.</translation> <translation id="5277894862589591112">Para aplicar as alterações, reinicie o Chromium.</translation> <translation id="5358375970380395591">Está a iniciar sessão com uma conta gerida e a permitir que o gestor controle o seu perfil do Chromium. Os seus dados do Chromium, como aplicações, marcadores, histórico, palavras-passe e outras definições, ficarão associados definitivamente a <ph name="USER_NAME" />. Poderá eliminar estes dados através do Painel de Controlo das Contas Google, mas não poderá associá-los a outra conta. <ph name="LEARN_MORE" /></translation> @@ -219,13 +220,13 @@ <translation id="8330519371938183845">Inicie sessão para sincronizar e personalizar o Chromium em todos os dispositivos.</translation> <translation id="8340674089072921962"><ph name="USER_EMAIL_ADDRESS" /> estava a utilizar o Chromium</translation> <translation id="8417404458978023919">{0,plural, =1{Reinicie o Chromium dentro de um dia}other{Reinicie o Chromium dentro de # dias}}</translation> -<translation id="8453117565092476964">O arquivo do programa de instalação está corrompido ou não é válido. Transfira novamente o Chromium.</translation> +<translation id="8453117565092476964">O arquivo do programa de instalação está corrompido ou não é válido. Descarregue novamente o Chromium.</translation> <translation id="8493179195440786826">O Chromium Está Desatualizado</translation> <translation id="8558383651099478961">O teu pai/mãe desativou as "Autorizações para sites, apps e extensões" para o Chromium. Não é permitido adicionar esta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation> <translation id="8568283329061645092">O Chromium pode verificar as suas palavras-passe quando inicia sessão com a sua Conta Google.</translation> <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Os autores do Chromium. Todos os direitos reservados.</translation> <translation id="8619360774459241877">A iniciar o Chromium…</translation> -<translation id="8621669128220841554">A instalação falhou devido a um erro não especificado. Transfira novamente o Chromium .</translation> +<translation id="8621669128220841554">A instalação falhou devido a um erro não especificado. Descarregue novamente o Chromium .</translation> <translation id="8697124171261953979">Também controla a página apresentada quando inicia o Chromium ou pesquisa a partir da Caixa geral.</translation> <translation id="8704119203788522458">Este é o seu Chromium</translation> <translation id="8796602469536043152">O Chromium necessita de autorização de acesso à câmara e ao microfone para este site.</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb index 97882e8..8556cdc 100644 --- a/chrome/app/resources/chromium_strings_ro.xtb +++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -101,6 +101,7 @@ <translation id="4943838377383847465">Chromium este în modul fundal.</translation> <translation id="4987820182225656817">Invitații pot folosi Chromium fără a lăsa nicio urmă.</translation> <translation id="4994636714258228724">Adăugați-vă la Chromium</translation> +<translation id="5037694917996535813">Te-ai conectat cu un cont de serviciu. Vrei să creezi un profil Chromium pentru serviciu ca să păstrezi datele separat?</translation> <translation id="5224391634244552924">Nu există parole salvate. Chromium îți poate verifica parolele dacă le salvezi.</translation> <translation id="5277894862589591112">Pentru a aplica modificările, relansează Chromium</translation> <translation id="5358375970380395591">Vă conectați cu un cont gestionat și îi permiteți administratorului acestuia controlul asupra profilului dvs. Chromium. Datele Chromium, cum ar fi aplicațiile, marcajele, istoricul, parolele și alte setări vor fi asociate definitiv cu <ph name="USER_NAME" />. Veți putea să ștergeți aceste date prin intermediul Tabloului de bord pentru Conturi Google, însă nu veți putea să asociați aceste date cu alt cont. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb index e99da9f..29d1654 100644 --- a/chrome/app/resources/chromium_strings_si.xtb +++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium පසුබිම් ප්රකාරය තුළ ඇත.</translation> <translation id="4987820182225656817">අමුත්තන්ට කිසිවක් තබා යෑමෙන් තොරව Chromium භාවිත කළ හැක.</translation> <translation id="4994636714258228724">ඔබව Chromium වෙත එක් කරන්න</translation> +<translation id="5037694917996535813">ඔබ කාර්යාල ගිණුමක් සමගින් පුරා ඇත. ඔබගේ දත්ත වෙන් වෙන්ව තබා ගැනීම සඳහා කාර්යාලය සඳහා නව Chromium පැතිකඩක් තැනීමට ඔබ කැමතිද?</translation> <translation id="5224391634244552924">සුරැකි මුරපද නැත. ඔබ ඔබේ මුරපද පරීක්ෂා කරන විට Chromium හට ඒවා පරීක්ෂා කළ හැක.</translation> <translation id="5277894862589591112">ඔබේ වෙනස්කම් යෙදීමට, Chromium නැවත දියත් කරන්න</translation> <translation id="5358375970380395591">ඔබ කළමනාකරණය කළ ගිණුමක් සමගින් පුරමින් සිටින අතර ඔබේ Chromium පැතිකඩට වැඩියෙන් එහි පරිපාලක පාලනය ලබා දෙමින් සිටී. යෙදුම්, පිටු සලකුණු, ඉතිහාසය, රහස්වචන, සහ අනෙකුත් සැකසුම් වැනි ඔබේ Chromium දත්ත ස්ථිරවම <ph name="USER_NAME" /> වෙත බැඳෙනු ඇත. Google ගිණුම් පසුරු පුවරුව හරහා මෙම දත්ත මැකීමට ඔබට හැකි වනු ඇත, නමුත් ඔබට මෙම දත්ත වෙනත් ගිණුමක් සමඟ සම්බන්ධ කළ නොහැකි වනු ඇත. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb index aaade71..58feef6 100644 --- a/chrome/app/resources/chromium_strings_sl.xtb +++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium se izvaja v ozadju.</translation> <translation id="4987820182225656817">Gostje lahko uporabljajo Chromium, ne da bi za seboj pustili kar koli.</translation> <translation id="4994636714258228724">Dodajte se v Chromium</translation> +<translation id="5037694917996535813">Prijavili ste se s službenim računom. Ali želite v Chromiumu ustvariti nov službeni profil, da bodo podatki ločeni?</translation> <translation id="5224391634244552924">Ni shranjenih gesel. Chromium lahko preveri gesla, če jih shranite.</translation> <translation id="5277894862589591112">Če želite uporabiti spremembe, znova zaženite Chromium</translation> <translation id="5358375970380395591">Prijavljate se z upravljanim računom in s tem njegovemu skrbniku omogočate nadzor vašega profila v Chromiumu. Vaši podatki v Chromiumu, kot so aplikacije, zaznamki, zgodovina, gesla in druge nastavitve, bodo postali trajno povezani z uporabnikom <ph name="USER_NAME" />. Te podatke boste lahko izbrisali na nadzorni plošči za Google Račune, vendar jih ne boste mogli povezati z drugim računom. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_sr-Latn.xtb b/chrome/app/resources/chromium_strings_sr-Latn.xtb index 0d94c0f..4aae6e8 100644 --- a/chrome/app/resources/chromium_strings_sr-Latn.xtb +++ b/chrome/app/resources/chromium_strings_sr-Latn.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium je u pozadinskom režimu.</translation> <translation id="4987820182225656817">Gosti mogu da koriste Chromium a da ne ostavljaju nikakve tragove.</translation> <translation id="4994636714258228724">Dodajte sebe u Chromium</translation> +<translation id="5037694917996535813">Prijavljeni ste pomoću poslovnog naloga. Da li želite da napravite nov Chromium poslovni profil da bi podaci ostali odvojeni?</translation> <translation id="5224391634244552924">Nema sačuvanih lozinki. Chromium može da proverava lozinke kada ih sačuvate.</translation> <translation id="5277894862589591112">Da biste primenili promene, ponovo pokrenite Chromium</translation> <translation id="5358375970380395591">Prijavljujete se pomoću naloga kojim se upravlja i dajete njegovom administratoru kontrolu nad Chromium profilom. Chromium podaci, kao što su aplikacije, obeleživači, istorija, lozinke i druga podešavanja, biće trajno povezani sa nalogom <ph name="USER_NAME" />. Moći ćete da izbrišete te podatke preko Kontrolne table Google naloga, ali nećete moći da ih povežete sa nekim drugim nalogom. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb index 69ebb4fd..6b409698 100644 --- a/chrome/app/resources/chromium_strings_sr.xtb +++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium је у позадинском режиму.</translation> <translation id="4987820182225656817">Гости могу да користе Chromium а да не остављају никакве трагове.</translation> <translation id="4994636714258228724">Додајте себе у Chromium</translation> +<translation id="5037694917996535813">Пријављени сте помоћу пословног налога. Да ли желите да направите нов Chromium пословни профил да би подаци остали одвојени?</translation> <translation id="5224391634244552924">Нема сачуваних лозинки. Chromium може да проверава лозинке када их сачувате.</translation> <translation id="5277894862589591112">Да бисте применили промене, поново покрените Chromium</translation> <translation id="5358375970380395591">Пријављујете се помоћу налога којим се управља и дајете његовом администратору контролу над Chromium профилом. Chromium подаци, као што су апликације, обележивачи, историја, лозинке и друга подешавања, биће трајно повезани са налогом <ph name="USER_NAME" />. Моћи ћете да избришете те податке преко Контролне табле Google налога, али нећете моћи да их повежете са неким другим налогом. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb index cb003ddc..8b840d2 100644 --- a/chrome/app/resources/chromium_strings_sw.xtb +++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">Chromium iko katika hali ya chini chini.</translation> <translation id="4987820182225656817">Walioalikwa wanaweza kutumia Chromium bila kuacha kitu chochote nyuma.</translation> <translation id="4994636714258228724">Jiongeze kwenye Chrome</translation> +<translation id="5037694917996535813">Umeingia ukitumia akaunti ya kazini. Ungependa kufungua Wasifu mpya wa Kikazi kwenye Chromium ili utenganishe data yako?</translation> <translation id="5224391634244552924">Hakuna manenosiri yaliyohifadhiwa. Chromium inaweza kukagua manenosiri yako ukiyahifadhi.</translation> <translation id="5277894862589591112">Ili utumie mabadiliko uliyofanya, fungua Chromium upya</translation> <translation id="5358375970380395591">Unaingia katika akaunti inayodhibitiwa na kumpa msimamizi wa akaunti hiyo udhibiti wa wasifu wako kwenye Chromium. Data yako ya Chromium, kama vile programu zako, alamisho, historia, manenosiri, na mipangilio miingine itahusishwa na <ph name="USER_NAME" /> kabisa. Utaweza kufuta data hii kupitia Dashibodi ya Akaunti za Google, lakini hutaweza kuunganisha data hii na akaunti nyingine. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/chromium_strings_zu.xtb b/chrome/app/resources/chromium_strings_zu.xtb index 76f380d..4cbd61c4 100644 --- a/chrome/app/resources/chromium_strings_zu.xtb +++ b/chrome/app/resources/chromium_strings_zu.xtb
@@ -103,6 +103,7 @@ <translation id="4943838377383847465">I-Chromium kumodi yasemuva.</translation> <translation id="4987820182225656817">Izihambeli zingasebenzisa i-Chromium ngaphandle kokushiya noma yini ngemuva.</translation> <translation id="4994636714258228724">Zingeze ngokwakho ku-Chromium</translation> +<translation id="5037694917996535813">Ungene ngemvume nge-akhawunti yomsebenzi. Ingabe ungathanda ukudala Iphrofayela Yomsebenzi ye-Chromium entsha ukugcina idatha yakho yehlukile?</translation> <translation id="5224391634244552924">Awekho amaphasiwedi alondoloziwe. I-Chromium ingahlola amaphasiwedi akho lapho uwalondoloza khona.</translation> <translation id="5277894862589591112">Ukuze ufake izinguquko zakho, qalisa kabusha i-Chromium</translation> <translation id="5358375970380395591">Ungena ngemvume nge-akhawunti ephethwe futhi unikeza umlawuli wayo ukulawula okungaphezulu kwephrofayela yakho ye-Chromium. Idatha yakho ye-Chromium, efana nezinhlelo zakho zokusebenza, amabhukhimakhi, umlando, amaphasiwedi, nezinye izilungiselelo zizoboshezelwa unaphakade ku-<ph name="USER_NAME" />. Uzokwazi ukususa le datha nge-Ideshibhodi yama-Akhawunti we-Google, kodwa ngeke uze ukwazi ukuhlobanisa le datha nenye i-akhawunti. <ph name="LEARN_MORE" /></translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 0e1558544..2a4903a0 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -232,6 +232,7 @@ <translation id="1274997165432133392">কুকি আৰু অন্য ছাইট ডেটা</translation> <translation id="1275718070701477396">বাছনি কৰা আছে</translation> <translation id="1276994519141842946"><ph name="APP_NAME" /> ইনষ্টল কৰিব পৰা নগ’ল</translation> +<translation id="127946606521051357">ওচৰৰ ডিভাইচে শ্বেয়াৰ কৰি আছে</translation> <translation id="1280820357415527819">ম’বাইল নেটৱৰ্ক বিচাৰি থকা হৈছে</translation> <translation id="1280965841156951489">ফাইলসমূহ সম্পাদনা কৰক</translation> <translation id="1285320974508926690">এই ছাইটটো কেতিয়াও অনুবাদ নকৰিব</translation> @@ -535,7 +536,7 @@ <translation id="164936512206786300">ব্লুটুথ ডিভাইচ আনপেয়াৰ কৰক</translation> <translation id="1650371550981945235">ইনপুটৰ বিকল্প দেখুৱাওক</translation> <translation id="1651008383952180276">আপুনি একেটা পাছফ্ৰেজ দুবাৰ দিবই লাগিব</translation> -<translation id="1652326691684645429">নিকটৱৰ্তী ডিভাইচৰ সৈতে শ্বেয়াৰ কৰাৰ সুবিধাটো সক্ষম কৰক</translation> +<translation id="1652326691684645429">নীয়েৰবাই শ্বেয়াৰ সুবিধাটো সক্ষম কৰক</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{আপুনি যিকোনো ঠাইৰে পৰা প্ৰিণ্ট কৰিবলৈ Google ক্লাউড প্ৰিণ্টত প্ৰিণ্টাৰটো যোগ কৰক।}one{আপুনি যিকোনো ঠাইৰে পৰা প্ৰিণ্ট কৰিবলৈ Google ক্লাউড প্ৰিণ্টত #টা প্ৰিণ্টাৰ যোগ কৰক।}other{আপুনি যিকোনো ঠাইৰে পৰা প্ৰিণ্ট কৰিবলৈ Google ক্লাউড প্ৰিণ্টত #টা প্ৰিণ্টাৰ যোগ কৰক।}}</translation> <translation id="1656528038316521561">নেপথ্যৰ অস্বচ্ছতা</translation> <translation id="1657406563541664238">Googleলৈ ব্যৱহাৰৰ পৰিসংখ্যা আৰু ক্ৰেশ্বৰ অভিযোগ স্বয়ংক্ৰিয়ভাৱে পঠিয়াই <ph name="PRODUCT_NAME" />ক অধিক উন্নত কৰাত সহায় কৰক</translation> @@ -1216,6 +1217,7 @@ <translation id="2489918096470125693">&ফ’ল্ডাৰ যোগ দিয়ক...</translation> <translation id="2490481887078769936">সূচীৰ পৰা '<ph name="FILE_NAME" />' আঁতৰোৱা হ'ল</translation> <translation id="249113932447298600">দুঃখিত, এই সময়ত <ph name="DEVICE_LABEL" /> ডিভাইচটো সমৰ্থিত নহয়।</translation> +<translation id="2492308681814209210"><ph name="DEVICE_NAME" />এ আপোনৰ সৈতে <ph name="ATTACHMENTS" /> শ্বেয়াৰ কৰি আছে।</translation> <translation id="2492461744635776704">প্ৰমাণপত্ৰ স্বাক্ষৰ কৰাৰ অনুৰোধ প্ৰস্তুত কৰি থকা হৈছে</translation> <translation id="249303669840926644">পঞ্জীয়ন সম্পূৰ্ণ কৰিব পৰা নগ’ল</translation> <translation id="2495777824269688114">অধিক সুবিধা বিচাৰি পাওক বা উত্তৰ পাওক। সহায়ৰ বাবে “?” বাছনি কৰক।</translation> @@ -1663,7 +1665,7 @@ <translation id="3022978424994383087">কি ক'লে বুজি নাপালোঁ।</translation> <translation id="3023464535986383522">কথা ক'বলৈ বাছনি কৰক</translation> <translation id="3024374909719388945">২৪ ঘণ্টীয়া ঘড়ীৰ ফর্মেট ব্যৱহাৰ কৰক</translation> -<translation id="3027296729579831126">নিকটৱৰ্তী ডিভাইচৰ সৈতে শ্বেয়াৰ কৰাৰ সুবিধাটো অন কৰক</translation> +<translation id="3027296729579831126">নীয়েৰবাই শ্বেয়াৰ সুবিধাটো অন কৰক</translation> <translation id="3029466929721441205">শ্বেল্ফত ষ্টাইলাছ সঁজুলি দেখুৱাওক</translation> <translation id="3031417829280473749">এজেণ্ট X</translation> <translation id="3031557471081358569">আমদানি কৰিবলৈ বস্তু বাছনি কৰক:</translation> @@ -2955,7 +2957,7 @@ <translation id="4673442866648850031">ষ্টাইলাছ আঁতৰালে ষ্টাইলাছ সঁজুলিসমূহ খোলক</translation> <translation id="4677772697204437347">GPU মেম’ৰী</translation> <translation id="4680105648806843642">এই পৃষ্ঠাটোত শব্দ মিউট কৰা হৈছে</translation> -<translation id="4681453295291708042">নিকটৱৰ্তী ডিভাইচৰ সৈতে শ্বেয়াৰ কৰাৰ সুবিধাটো অক্ষম কৰক</translation> +<translation id="4681453295291708042">নীয়েৰবাই শ্বেয়াৰ সুবিধাটো অক্ষম কৰক</translation> <translation id="4681930562518940301">মূল &প্ৰতিচ্ছবি নতুন টেবত খোলক</translation> <translation id="4682551433947286597">ছাইন ইন কৰা স্ক্ৰীণত প্ৰদর্শন হোৱা ৱালপেপাৰ।</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (ডিফ’ল্ট)</translation> @@ -3771,7 +3773,7 @@ <translation id="5739017626473506901">বিদ্যালয়ৰ এটা একাউণ্ট যোগ দিয়াত <ph name="USER_NAME" />ক সহায় কৰিবলৈ ছাইন ইন কৰক</translation> <translation id="5739235828260127894">সত্যাপনৰ বাবে অপেক্ষা কৰি আছে। <ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation> <translation id="5739458112391494395">যথেষ্ট ডাঙৰ</translation> -<translation id="5740328398383587084">নিকটৱৰ্তী ডিভাইচৰ সৈতে শ্বেয়াৰ কৰাৰ সুবিধা</translation> +<translation id="5740328398383587084">নীয়েৰবাই শ্বেয়াৰ</translation> <translation id="574104302965107104">প্ৰতিবিম্বকৰণ দেখুৱাওক</translation> <translation id="574209121243317957">পিচ্চ</translation> <translation id="5746169159649715125">PDF হিচাপে ছেভ কৰক</translation> @@ -4141,6 +4143,7 @@ <translation id="6212039847102026977">নেটৱৰ্কৰ উচ্চখাপৰ বৈশিষ্ট্যসমূহ দেখুৱাওক</translation> <translation id="6212168817037875041">ডিছপ্লে’ অফ কৰক</translation> <translation id="6212752530110374741">লিংক ইমেইল কৰক</translation> +<translation id="6213230117190778270">গ্ৰহণ কৰক</translation> <translation id="6216696360484424239">স্বয়ংক্ৰিয়ভাৱে ছাইন ইন কৰক</translation> <translation id="6218058416316985984">’<ph name="DEVICE_TYPE" />’ অফলাইন আছে। ইণ্টাৰনেটৰ লগত সংযোগ কৰি আকৌ চেষ্টা কৰক।</translation> <translation id="6220413761270491930">এক্সটেনশ্বন ল’ড কৰোতে আসোঁৱাহ হৈছে</translation> @@ -4267,6 +4270,7 @@ <translation id="6362853299801475928">&কোনো সমস্যাৰ বিযয়ে অভিযোগ কৰক...</translation> <translation id="6365069501305898914">ফেচবুক</translation> <translation id="6365411474437319296">পৰিয়াল আৰু বন্ধুবর্গক যোগ কৰক</translation> +<translation id="6367985768157257101">নিকটৱৰ্তী ডিভাইচৰ সৈতে শ্বেয়াৰ কৰাৰ সুবিধাটোৰ জৰিয়তে গ্ৰহণ কৰিবনে?</translation> <translation id="636850387210749493">এন্টাৰপ্ৰাইজৰ পঞ্জীয়ন</translation> <translation id="6370021412472292592">মেনিফেষ্ট ল’ড কৰিব পৰা নগ’ল।</translation> <translation id="6374077068638737855">আইচৱিজল</translation> @@ -4720,7 +4724,7 @@ <translation id="6965978654500191972">ডিভাইচ</translation> <translation id="696780070563539690">আপুনি বিভিন্ন ছাইটসমূহত কৰা ব্ৰাউজিঙৰ কার্যকলাপ চাবলৈ ছাইটসমূহে কুকিসমূহ ব্যৱহাৰ কৰিব নোৱাৰে, যেনে, বিজ্ঞাপন ব্যক্তিগতকৃত কৰিবলৈ</translation> <translation id="6968288415730398122">স্ক্ৰীণ লক কনফিগাৰ কৰিবলৈ নিজৰ পাছৱৰ্ড দিয়ক</translation> -<translation id="6969047215179982698">নিকটৱৰ্তী ডিভাইচৰ সৈতে শ্বেয়াৰ কৰাৰ সুবিধাটো অফ কৰক</translation> +<translation id="6969047215179982698">নীয়েৰবাই শ্বেয়াৰ সুবিধাটো অফ কৰক</translation> <translation id="6970480684834282392">ষ্টার্ট আপৰ প্ৰকাৰ</translation> <translation id="6970856801391541997">নির্দিষ্ট পৃষ্ঠা প্ৰিণ্ট কৰক</translation> <translation id="6972180789171089114">অডিঅ’/ভিডিঅ’</translation> @@ -6561,6 +6565,7 @@ <translation id="939519157834106403">SSID</translation> <translation id="939598580284253335">পাছফ্ৰেজ দিয়ক</translation> <translation id="939736085109172342">নতুন ফ'ল্ডাৰ</translation> +<translation id="941070664607309480">দৃশ্যমান হ’বলৈ ক্লিক কৰক যাতে এইটোৱে আপোনাৰ সৈতে শ্বেয়াৰ কৰিব পাৰে</translation> <translation id="942532530371314860"><ph name="APP_NAME" />এ এটা Chrome টেব আৰু অডিঅ' শ্বেয়াৰ কৰি আছে।</translation> <translation id="945522503751344254">মতামত পঠিয়াওক</translation> <translation id="947329552760389097">উপাদানসমূহ &পৰীক্ষা কৰক</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index ba37da3..68fd326 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Премахването на тази парола няма да изтрие профила ви в(ъв) <ph name="DOMAIN" />. За да го защитите от други хора, променете паролата си или изтрийте профила си в(ъв) <ph name="DOMAIN_LINK" />.</translation> <translation id="1084824384139382525">Копиране на адреса на вр&ъзката</translation> <translation id="1085697365578766383">Грешка при стартирането на виртуалната машина. Моля, опитайте отново.</translation> +<translation id="1088659085457112967">Вход в режим за четене</translation> <translation id="1090126737595388931">Не се изпълняват приложения на заден план</translation> <translation id="1091767800771861448">Натиснете „ESCAPE“ за пропускане (само в неофициалните версии).</translation> <translation id="1093457606523402488">Видими мрежи:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Павилионното приложение е актуализирано. Моля, извадете USB паметта.</translation> <translation id="120368089816228251">Нота</translation> <translation id="1203942045716040624">Споделен изпълнител: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Забавяне на DNS</translation> <translation id="1205489148908752564">Четене и промяна на потребителите в белия списък</translation> <translation id="1206407435587370571">Запознайте се със своя Chromebook</translation> <translation id="1209796539517632982">Автоматично избиране на сървъри за имена</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Неочакван ли беше този резултат? <ph name="BEGIN_LINK" />Изпращане на отзиви<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Въведените от вас потребителско име и парола не съвпадат</translation> <translation id="1397500194120344683">Няма отговарящи на условията устройства. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Шлюзът отговаря на команда ping</translation> <translation id="1398853756734560583">Увеличаване</translation> <translation id="139911022479327130">Отключете телефона си и потвърдете, че това сте вие</translation> <translation id="1399511500114202393">Няма потребителски сертификат</translation> @@ -538,7 +541,7 @@ <translation id="164936512206786300">Прекратяване на сдвояването на устройство с Bluetooth</translation> <translation id="1650371550981945235">Показване на опциите за въвеждане</translation> <translation id="1651008383952180276">Трябва да въведете един и същ пропуск два пъти</translation> -<translation id="1652326691684645429">Активиране на „Споделяне в близост“</translation> +<translation id="1652326691684645429">Активиране на „Споделяне наблизо“</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Добавете принтера към Google Отпечатване в облак, за да можете да печатате от всяко място.}other{Добавете # принтера към Google Отпечатване в облак, за да можете да печатате от всяко място.}}</translation> <translation id="1656528038316521561">Плътност на фона</translation> <translation id="1657406563541664238">Помогнете ни да подобрим <ph name="PRODUCT_NAME" /> като автоматично изпращате на Google статистически данни за използването му и сигнали за сривове</translation> @@ -581,6 +584,7 @@ <translation id="1701062906490865540">Премахване на този човек</translation> <translation id="1703331064825191675">Никога повече не се тревожете за паролите си</translation> <translation id="1704970325597567340">Проверката на безопасността бе изпълнена на <ph name="DATE" /></translation> +<translation id="1706391837335750954">Налице е DNS резолвер</translation> <translation id="1706586824377653884">Добавено от администратора ви</translation> <translation id="1706625117072057435">Нива на мащаба</translation> <translation id="1708338024780164500">(Неактивно)</translation> @@ -872,6 +876,7 @@ <translation id="2065405795449409761">Chrome се контролира от автоматизиран софтуер за тестване.</translation> <translation id="2071393345806050157">Няма локален регистрационен файл.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Кликнете, за да го инсталирате}other{Кликнете, за да ги инсталирате}}</translation> +<translation id="2073505299004274893">Използвайте не повече от <ph name="CHARACTER_LIMIT" /> знака</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% батерия</translation> <translation id="2075959085554270910">Позволява ви да активирате/деактивирате кликването с докосване и преместването чрез докосване</translation> <translation id="2076269580855484719">Скриване на тази приставка</translation> @@ -1151,6 +1156,7 @@ <translation id="2408955596600435184">Въведете своя ПИН</translation> <translation id="241082044617551207">Неизвестна приставка</translation> <translation id="2412593942846481727">Налице е актуализация</translation> +<translation id="2414499877591062094">Активиране на автоматичното изпращане на ПИН</translation> <translation id="2416435988630956212">Функционални клавиши на клавиатурата</translation> <translation id="241727068219398187">Данните бяха шифровани с паролата ви за Google от <ph name="TIME" />. Това не включва начините на плащане и адресите от Google Pay.</translation> @@ -1305,6 +1311,7 @@ <translation id="2586672484245266891">Моля, въведете по-кратък URL адрес</translation> <translation id="2587922766792651800">Времето за изчакване изтече</translation> <translation id="2588636910004461974">Устройства от <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Изход от режима за четене</translation> <translation id="2594999711683503743">Потърсете с Google или въведете URL адрес</translation> <translation id="2602501489742255173">Прекарайте пръст нагоре, за да започнете</translation> <translation id="2603115962224169880">Почистване на компютъра</translation> @@ -1667,7 +1674,7 @@ <translation id="3022978424994383087">Не разбрахме това.</translation> <translation id="3023464535986383522">Прочитане на глас</translation> <translation id="3024374909719388945">Използване на 24-часов часовник</translation> -<translation id="3027296729579831126">Включване на „Споделяне в близост“</translation> +<translation id="3027296729579831126">Включване на „Споделяне наблизо“</translation> <translation id="3029466929721441205">Показване на инструментите за писане в лавицата</translation> <translation id="3031417829280473749">Агент „X“</translation> <translation id="3031557471081358569">Изберете елементи за импортиране:</translation> @@ -1874,6 +1881,7 @@ <translation id="3312424061798279731">Активирани езици</translation> <translation id="3313622045786997898">Стойност на подписа на сертификата</translation> <translation id="3315158641124845231">Скриване на <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Вход в режим за четене</translation> <translation id="3317459757438853210">Двустранно</translation> <translation id="3317678681329786349">Достъпът до камерата и микрофона е блокиран</translation> <translation id="3319048459796106952">Нов &прозорец в режим „инкогнито“</translation> @@ -2140,6 +2148,7 @@ <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – остава/т <ph name="TIME" /></translation> <translation id="3637682276779847508">SIM картата ви ще бъде деактивирана за постоянно, ако не успеете да въведете правилния PUK код</translation> +<translation id="3639220004740062347">Изход от режима за четене</translation> <translation id="3640214691812501263">Да се добави ли <ph name="EXTENSION_NAME" /> за <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Обучете Асистент да разпознава гласа ви</translation> <translation id="3645372836428131288">Преместете малко пръста си, за да бъде заснета друга част от отпечатъка.</translation> @@ -2150,6 +2159,7 @@ <translation id="3650845953328929506">Качването на регистрационния файл предстои.</translation> <translation id="3650952250015018111">Разрешаване на "<ph name="APP_NAME" />" да има достъп до:</translation> <translation id="3651488188562686558">прекрати връзката си с Wi-Fi</translation> +<translation id="3651952061994655768">Промяна на името</translation> <translation id="3652817283076144888">Подготвя се за работа</translation> <translation id="3653160965917900914">Споделени хранилища в мрежата</translation> <translation id="3653842108912548333">Работете със своя Асистент с помощта на Voice Match</translation> @@ -2239,6 +2249,7 @@ <translation id="3748706263662799310">Подаване на сигнал за програмна грешка</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Моите устройства</translation> +<translation id="3752757212511661046">Да се създаде ли служебен потребителски профил?</translation> <translation id="3753033997400164841">Съхранете веднъж. Използвайте навсякъде</translation> <translation id="3755411799582650620">Телефонът ви <ph name="PHONE_NAME" /> вече може да отключва и този <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Сайтът използва микрофона ви</translation> @@ -2361,6 +2372,7 @@ <translation id="3874164307099183178">Включване на Google Асистент</translation> <translation id="387531380970557479">Разширението <ph name="EXTENSION_NAME" /> е деактивирано, защото съдържа злонамерен софтуер.</translation> <translation id="3879748587602334249">Мениджър на изтеглянията</translation> +<translation id="3881478300875776315">Показване на по-малко редове</translation> <translation id="3882165008614329320">Съществуващ видеоклип от камерата или от файл</translation> <translation id="3886446263141354045">Заявката ви за достъп до този сайт бе изпратена до <ph name="NAME" /></translation> <translation id="3888550877729210209">Водене на бележки с/ъс <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2570,6 +2582,7 @@ <translation id="4130750466177569591">Приемам</translation> <translation id="413121957363593859">Компоненти</translation> <translation id="4131410914670010031">Черно-бяло</translation> +<translation id="413193092008917129">Процедури за диагностика на мрежата</translation> <translation id="4133076602192971179">Отворете приложението, за да промените паролата си</translation> <translation id="4136203100490971508">Нощното осветление ще се изключи автоматично по изгрев</translation> <translation id="41365691917097717">Ако продължите, отстраняването на грешки през ADB ще бъде активирано, за да създавате и тествате приложения за Android. Обърнете внимание, че това действие позволява инсталирането на приложения за Android, които не са удостоверени от Google. За деактивирането на ADB е необходимо да бъдат възстановени фабричните настройки.</translation> @@ -2727,6 +2740,7 @@ <translation id="4375035964737468845">Отваряне на изтеглени файлове</translation> <translation id="4377363674125277448">Имаше проблем със сертификата на сървъра.</translation> <translation id="4378154925671717803">Телефон</translation> +<translation id="4378373042927530923">Не е стартирано</translation> <translation id="4378551569595875038">Установява се връзка...</translation> <translation id="4378556263712303865">Заявка за устройството</translation> <translation id="4379281552162875326">Да се деинсталира ли <ph name="APP_NAME" />?</translation> @@ -2939,6 +2953,7 @@ <translation id="4643612240819915418">&Отваряне на видеоклипа в нов раздел</translation> <translation id="4645676300727003670">&Запазване</translation> <translation id="4646675363240786305">Портове</translation> +<translation id="4646949265910132906">Сигурна Wi-Fi връзка</translation> <translation id="4647090755847581616">&Затваряне на раздела</translation> <translation id="4647420311443994946">{0,select, tablet{Стартиране на приложение, когато влизате с профила си на таблета си}computer{Стартиране на приложение, когато влизате с профила си на компютъра си}other{Стартиране на приложение, когато влизате с профила си на устройството си}}</translation> <translation id="4647697156028544508">Моля, въведете ПИН кода за „<ph name="DEVICE_NAME" />“:</translation> @@ -2965,7 +2980,7 @@ <translation id="4673442866648850031">Отваряне на инструментите за писане при изваждане на писалката</translation> <translation id="4677772697204437347">Памет на графичния процесор</translation> <translation id="4680105648806843642">Звукът бе заглушен на тази страница</translation> -<translation id="4681453295291708042">Деактивиране на „Споделяне в близост“</translation> +<translation id="4681453295291708042">Деактивиране на „Споделяне наблизо“</translation> <translation id="4681930562518940301">Отваряне на оригиналното изображение в нов раздел</translation> <translation id="4682551433947286597">Тапетите се показват на екрана за вход.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (по подразбиране)</translation> @@ -2977,6 +2992,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> ще може да преглежда <ph name="FILENAME" />, докато не затворите всички раздели със сайта</translation> <translation id="4692623383562244444">Търсещи машини</translation> <translation id="4693155481716051732">Суши</translation> +<translation id="469379815867856270">Сила на сигнала</translation> <translation id="4694024090038830733">Конфигурирането на принтери се управлява от администратора.</translation> <translation id="4694604912444486114">Маймуна</translation> <translation id="4697551882387947560">При приключване на сесията на сърфиране</translation> @@ -3187,6 +3203,7 @@ <translation id="4980805016576257426">Това разширение съдържа злонамерен софтуер.</translation> <translation id="4981449534399733132">За да изчистите данните за сърфирането от всичките си синхронизирани устройства и от профила си в Google, <ph name="BEGIN_LINK" />влезте в него<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Софтуер на устройството</translation> +<translation id="4985509611418653372">Стартиране</translation> <translation id="4986728572522335985">Това ще изтрие всички данни на ключа за сигурност, включително ПИН кода му</translation> <translation id="4988526792673242964">Страници</translation> <translation id="49896407730300355">Завъртане о&братно на часовниковата стрелка</translation> @@ -3381,6 +3398,7 @@ <translation id="5241128660650683457">Четене на всичките ви данни от посещаваните от вас уебсайтове</translation> <translation id="5242724311594467048">Да се активира ли <ph name="EXTENSION_NAME" />?</translation> <translation id="5243522832766285132">Моля, опитайте отново след малко</translation> +<translation id="5244406554036143958">Въведете своя ПИН, за да активирате автоматичното изпращане</translation> <translation id="5244474230056479698">Синхронизира се със: <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Първи стъпки с профила от учебно заведение</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> претърпя срив. Кликнете върху това балонче, за да рестартирате приложението.</translation> @@ -3448,6 +3466,7 @@ <translation id="5315873049536339193">Самоличност</translation> <translation id="5317780077021120954">Запазване</translation> <translation id="5319359161174645648">Google препоръчва Chrome</translation> +<translation id="5320135788267874712">Ново име на устройството</translation> <translation id="532247166573571973">Възможно е да няма достъп до сървъра. Опитайте отново по-късно.</translation> <translation id="5324780743567488672">Автоматично задаване на часовата зона въз основа на местоположението ви</translation> <translation id="5327248766486351172">Име</translation> @@ -3461,6 +3480,7 @@ <translation id="5336126339807372270">Забраняване на сайтовете да осъществяват достъп до USB устройства</translation> <translation id="5336688142483283574">Тази страница също така ще бъде премахната от историята ви и от записите за активността ви в <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Инсталирано от трета страна.</translation> +<translation id="5337926771328966926">Настоящото име на устройството е <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Локално хранилище</translation> <translation id="5340638867532133571">Разрешаване на сайтовете да инсталират приложения за обработване на плащания (препоръчително)</translation> <translation id="5341793073192892252">Следните „бисквитки“ бяха блокирани („бисквитките“ на трети страни се блокират без изключение)</translation> @@ -3491,6 +3511,7 @@ <translation id="5379140238605961210">Достъпът до микрофона да продължи да се блокира</translation> <translation id="5382591305415226340">Управление на поддържаните връзки</translation> <translation id="5383377866517186886">Камерата е изключена в системните предпочитания за Mac</translation> +<translation id="5383740867328871413">Група без име – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Сдвоено</translation> <translation id="5389237414310520250">Новият потребител не можа да се създаде. Моля, проверете мястото на твърдия си диск и разрешенията и опитайте отново.</translation> <translation id="5390100381392048184">Разрешаване на сайтовете да възпроизвеждат звук</translation> @@ -3501,6 +3522,7 @@ <translation id="5398497406011404839">Скрити отметки</translation> <translation id="5398572795982417028">Посочената страница е извън обхват. Ограничението е <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Рекламите са блокирани</translation> +<translation id="5401938042319910061">Стартиране на всички процедури</translation> <translation id="5402815541704507626">Изтегляне на актуализацията посредством мобилни данни</translation> <translation id="540296380408672091">„Бисквитките“ от <ph name="HOST" /> да се блокират винаги</translation> <translation id="540495485885201800">Размяна с предишния елемент</translation> @@ -3817,6 +3839,7 @@ <translation id="57838592816432529">Заглушаване</translation> <translation id="5785583009707899920">Помощни програми за файлове на Chrome</translation> <translation id="5787146423283493983">Договаряне на ключ</translation> +<translation id="5787420647064736989">Име на устройството</translation> <translation id="5788367137662787332">За съжаление поне един дял на устройството <ph name="DEVICE_LABEL" /> не можа да бъде свързан.</translation> <translation id="5790085346892983794">Успех</translation> <translation id="5790651917470750848">Пренасочването на порта вече съществува</translation> @@ -4282,7 +4305,7 @@ <translation id="6362853299801475928">&Подаване на сигнал за проблем...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">Добавяне на близки и приятели</translation> -<translation id="6367985768157257101">Искате ли да получите чрез „Споделяне в близост“?</translation> +<translation id="6367985768157257101">Искате ли да получите чрез „Споделяне наблизо“?</translation> <translation id="636850387210749493">Корпоративно записване</translation> <translation id="6370021412472292592">Манифестът не можа да се зареди.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -4493,6 +4516,7 @@ <translation id="6648911618876616409">Критична актуализация е готова за инсталиране. Влезте в профила си, за да започнете.</translation> <translation id="6649018507441623493">Една секунда...</translation> <translation id="6649563841575838401">Форматът на архива не се поддържа или файлът е невалиден.</translation> +<translation id="6650234781371031356">Паролата ви за <ph name="WEBSITE" /> се съхранява на това устройство и в профила ви в Google. Откъде искате да бъде изтрита?</translation> <translation id="665061930738760572">Отваряне в &нов прозорец</translation> <translation id="6651237644330755633">Да се има доверие на този сертификат за идентифициране на уебсайтове</translation> <translation id="665355505818177700">Интегрирането на Chrome и <ph name="MS_AD_NAME" /> е възможно само на платформи x86_64. Устройствата Chromebook, базирани на платформа ARM или x86, не поддържат тази функционалност.</translation> @@ -4531,6 +4555,7 @@ <translation id="6701535245008341853">Потребителският профил не можа да се зареди.</translation> <translation id="6702639462873609204">&Редактиране...</translation> <translation id="6703966911896067184">Илюстрация за грешка при записването</translation> +<translation id="6704062477274546131">Преобразуване от DNS</translation> <translation id="6706210727756204531">Обхват</translation> <translation id="6707389671160270963">SSL сертификат на клиент</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> и още 1 раздел}other{<ph name="PAGE_TITLE" /> и още # раздела}}</translation> @@ -4588,6 +4613,7 @@ <translation id="677965093459947883">Много малък</translation> <translation id="6781284683813954823">Връзка към драскулката</translation> <translation id="6781978626986383437">Създаването на резервно копие на Linux бе анулирано</translation> +<translation id="6782067259631821405">Невалиден ПИН</translation> <translation id="6785915470941880363">Обратно превъртане <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Разширения</translation> <translation id="6787839852456839824">Клавишни комбинации</translation> @@ -4739,7 +4765,7 @@ <translation id="6965978654500191972">Устройство</translation> <translation id="696780070563539690">Сайтовете не могат да използват „бисквитките“ ви, за да следят активността ви при сърфиране в различни сайтове, например за да персонализират реклами</translation> <translation id="6968288415730398122">Въведете паролата си, за да конфигурирате заключването на екрана</translation> -<translation id="6969047215179982698">Изключване на „Споделяне в близост“</translation> +<translation id="6969047215179982698">Изключване на „Споделяне наблизо“</translation> <translation id="6970480684834282392">Тип стартиране</translation> <translation id="6970856801391541997">Отпечатване на конкретни страници</translation> <translation id="6972180789171089114">Аудио/видео</translation> @@ -4894,6 +4920,7 @@ <translation id="7141105143012495934">Влизането не бе успешно, тъй като данните за профила ви не можаха да се извлекат. Моля, свържете се с администратора си или опитайте отново.</translation> <translation id="7143207342074048698">Свързва се</translation> <translation id="7144878232160441200">Нов опит</translation> +<translation id="714876143603641390">Връзка с LAN</translation> <translation id="7149893636342594995">Последните 24 часа</translation> <translation id="715118844758971915">Традиционни принтери</translation> <translation id="7152478047064750137">Това разширение не изисква специални разрешения</translation> @@ -5031,6 +5058,7 @@ <translation id="7334274148831027933">Активиране на лупата в прикрепен режим</translation> <translation id="7335974957018254119">Проверка на правописа за</translation> <translation id="7336799713063880535">Известия – блокирани</translation> +<translation id="7337248890521463931">Показване на повече редове</translation> <translation id="7338630283264858612">Серийният номер на устройството е невалиден.</translation> <translation id="7339763383339757376">PKCS 7, единичен сертификат</translation> <translation id="7339785458027436441">Проверка на правописа при въвеждане</translation> @@ -5413,6 +5441,7 @@ <translation id="7807711621188256451">Достъпът на <ph name="HOST" /> до камерата ви винаги да е разрешен</translation> <translation id="7810202088502699111">Изскачащите прозорци са блокирани на тази страница.</translation> <translation id="781167124805380294">Предаване на „<ph name="FILE_NAME" />“</translation> +<translation id="7814277578404816512">Вижте новите неща в <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Копиране</translation> <translation id="7815680994978050279">Блокирано е опасно изтегляне</translation> <translation id="7817361223956157679">Екранната клавиатура още не работи в приложения за Linux</translation> @@ -5642,6 +5671,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 лист хартия}other{{COUNT} листа хартия}}</translation> <translation id="8063235345342641131">Стандартен зелен аватар</translation> <translation id="8063535366119089408">Преглед на файла</translation> +<translation id="8064279191081105977">Група <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Докоснете за вход в профила си</translation> <translation id="8069615408251337349">Google Отпечатване в облак</translation> <translation id="8071432093239591881">Отпечатване като изображение</translation> @@ -6387,6 +6417,7 @@ <translation id="8986362086234534611">Забравяне</translation> <translation id="8986494364107987395">Автоматично изпращане до Google на статистически данни за използването на Chrome и сигнали за сривове</translation> <translation id="8987927404178983737">Месец</translation> +<translation id="8990209962746788689">Не може да се създаде QR код</translation> <translation id="8991520179165052608">Сайтът може да използва микрофона ви</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 елемент}other{# елемента}}</translation> <translation id="899384117894244799">Премахване на потребител с ограничена функционалност</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index 142cbdc..6a35c4e 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -233,6 +233,7 @@ <translation id="1274997165432133392">কুকিজ এবং অন্য সাইট ডেটা</translation> <translation id="1275718070701477396">নির্বাচিত</translation> <translation id="1276994519141842946"><ph name="APP_NAME" /> আনইনস্টল করা যায়নি</translation> +<translation id="127946606521051357">আশেপাশে থাকা ডিভাইস ডেটা শেয়ার করছে</translation> <translation id="1280820357415527819">মোবাইল নেটওয়ার্কের জন্য সার্চ করা হচ্ছে</translation> <translation id="1280965841156951489">ফাইল এডিট করতে পারবে</translation> <translation id="1285320974508926690">কখনই এই সাইটটিকে অনুবাদ করবেন না</translation> @@ -540,7 +541,7 @@ <translation id="164936512206786300">ব্লুটুথ ডিভাইস আনপেয়ার করুন</translation> <translation id="1650371550981945235">ইনপুট বিকল্পগুলি দেখান</translation> <translation id="1651008383952180276">আপনাকে একই পাসফ্রেজ অবশ্যই দু'বার লিখতে হবে</translation> -<translation id="1652326691684645429">'আশেপাশের ডিভাইসে শেয়ার করা' ফিচারটি চালু করুন</translation> +<translation id="1652326691684645429">'নিয়ারবাই শেয়ার' ফিচারটি চালু করুন</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{আপনি যাতে যেকোনো জায়গা থেকে প্রিন্ট করতে পারেন সেই জন্য Google ক্লাউড প্রিন্টে প্রিন্টারটি যোগ করুন।}one{আপনি যাতে যেকোনো জায়গা থেকে প্রিন্ট করতে পারেন সেই জন্য Google ক্লাউড প্রিন্টে #টি প্রিন্টার যোগ করুন।}other{আপনি যাতে যেকোনো জায়গা থেকে প্রিন্ট করতে পারেন সেই জন্য Google ক্লাউড প্রিন্টে #টি প্রিন্টার যোগ করুন।}}</translation> <translation id="1656528038316521561">ব্যাকগ্রাউন্ডের অস্বচ্ছতা</translation> <translation id="1657406563541664238">Google-এ ব্যবহারের পরিসংখ্যান এবং ক্র্যাশ রিপোর্ট অটোমেটিক পাঠিয়ে <ph name="PRODUCT_NAME" />কে আরও ভালো করে তুলতে সাহায্য করুন</translation> @@ -1220,6 +1221,7 @@ <translation id="2489918096470125693">ফোল্ডার যুক্ত &করুন...</translation> <translation id="2490481887078769936">তালিকা থেকে '<ph name="FILE_NAME" />' সরানো হয়েছে</translation> <translation id="249113932447298600">দুঃখিত, <ph name="DEVICE_LABEL" /> ডিভাইসটি এই মুহুর্তে সমর্থিত নয়৷</translation> +<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> আপনার সাথে <ph name="ATTACHMENTS" /> শেয়ার করার চেষ্টা করছে।</translation> <translation id="2492461744635776704">সার্টিফিকেট স্বাক্ষর করার অনুরোধ তৈরি করা হচ্ছে</translation> <translation id="249303669840926644">নিবন্ধন সম্পূর্ণ করতে পারেনি</translation> <translation id="2495777824269688114">আরও বৈশিষ্ট্যের বিষয়ে জানুন অথবা উত্তর পান। সাহায্যের জন্য "?" বোতামটি বেছে নিন।</translation> @@ -1667,7 +1669,7 @@ <translation id="3022978424994383087">বুঝতে পারিনি।</translation> <translation id="3023464535986383522">বাছুন ও শুনুন</translation> <translation id="3024374909719388945">24-ঘন্টার ঘড়ি ব্যবহার করুন</translation> -<translation id="3027296729579831126">'আশেপাশের ডিভাইসে শেয়ার করা' ফিচারটি চালু করুন</translation> +<translation id="3027296729579831126">'নিয়ারবাই শেয়ার' ফিচারটি চালু করুন</translation> <translation id="3029466929721441205">শেল্ফে স্টাইলাস টুল দেখুন</translation> <translation id="3031417829280473749">এজেন্ট X</translation> <translation id="3031557471081358569">আমদানির জন্য আইটেম বেছে নিন:</translation> @@ -2962,7 +2964,7 @@ <translation id="4673442866648850031">স্টাইলাস সরানো হলে স্টাইলাস টুল খুলুন</translation> <translation id="4677772697204437347">GPU মেমোরি</translation> <translation id="4680105648806843642">এই পৃষ্ঠায় সাউন্ড মিউট করা আছে</translation> -<translation id="4681453295291708042">'আশেপাশের ডিভাইসে শেয়ার করা' ফিচারটি বন্ধ করে দিন</translation> +<translation id="4681453295291708042">'নিয়ারবাই শেয়ার' ফিচারটি বন্ধ করে দিন</translation> <translation id="4681930562518940301">নতুন ট্যাবে আসল ছবিটি খুলুন</translation> <translation id="4682551433947286597">সাইন-ইন করা স্ক্রিনে ওয়ালপেপার দেখানো হবে৷</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (ডিফল্ট)</translation> @@ -3581,7 +3583,7 @@ <translation id="5496587651328244253">সংগঠিত করুন</translation> <translation id="5497251278400702716">এই ফাইল</translation> <translation id="5499313591153584299">এই ফাইলটি আপনার কম্পিউটারের জন্য ক্ষতিকারক হতে পারে৷</translation> -<translation id="5499453227627332024">Linux কন্টেনারের আপগ্রেড ভার্সন এখন উপলভ্য। সেটিংস অ্যাপ থেকে পরে এটি আপগ্রেড করে নিতে পারবেন।</translation> +<translation id="5499453227627332024">Linux কন্টেনারের আপগ্রেড ভার্সন এখন উপলভ্য। 'সেটিংস' অ্যাপ থেকে পরে এটি আপগ্রেড করে নিতে পারবেন।</translation> <translation id="5500709606820808700">আজ নিরাপত্তা সংক্রান্ত পরীক্ষা চালানো হয়েছে</translation> <translation id="5502500733115278303">Firefox থেকে আমদানি করা</translation> <translation id="5503982651688210506">আপনার ক্যামেরা ব্যবহার করতে এবং সরাতে ও আপনার মাইক্রোফোন ব্যবহার করতে <ph name="HOST" />-কে অনুমতি দেওয়ার বিষয়টি চালিয়ে যান</translation> @@ -3780,7 +3782,7 @@ <translation id="5739017626473506901">একটি স্কুল অ্যাকাউন্ট যোগ করার জন্য <ph name="USER_NAME" />-কে সাহায্য করতে সাইন-ইন করুন</translation> <translation id="5739235828260127894">যাচাইকরণের জন্য অপেক্ষা করা হচ্ছে। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation> <translation id="5739458112391494395">খুব বড়</translation> -<translation id="5740328398383587084">আশেপাশের ডিভাইসে শেয়ার করা</translation> +<translation id="5740328398383587084">নিয়ারবাই শেয়ার</translation> <translation id="574104302965107104">ডিসপ্লে মিররিং</translation> <translation id="574209121243317957">পিচ</translation> <translation id="5746169159649715125">পিডিএফ হিসেবে সেভ করুন</translation> @@ -4152,6 +4154,7 @@ <translation id="6212039847102026977">উন্নত নেটওয়ার্ক বৈশিষ্ট্যগুলি দেখুন</translation> <translation id="6212168817037875041">ডিসপ্লে বন্ধ করুন</translation> <translation id="6212752530110374741">ইমেল লিঙ্ক</translation> +<translation id="6213230117190778270">পান</translation> <translation id="6216696360484424239">অটোমেটিক সাইন-ইন হয়ে যাবে</translation> <translation id="6218058416316985984"><ph name="DEVICE_TYPE" /> অফলাইন আছে৷ ইন্টারনেটে কানেক্ট করে আবার চেষ্টা করুন৷</translation> <translation id="6220413761270491930">এক্সটেনশন লোড হওয়ার সময় সমস্যা</translation> @@ -4279,6 +4282,7 @@ <translation id="6362853299801475928">&কোনও সমস্যা অভিযোগ করুন...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">পরিবার এবং বন্ধুদের যোগ করুন</translation> +<translation id="6367985768157257101">'নিয়ারবাই শেয়ার' ফিচারের মাধ্যমে আপনি কি ডেটা পেতে চান?</translation> <translation id="636850387210749493">এন্টারপ্রাইজ নথিভুক্তিকরণ</translation> <translation id="6370021412472292592">ম্যানিফেস্ট লোড করা যাবে না।</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -4735,7 +4739,7 @@ <translation id="6965978654500191972">ডিভাইস</translation> <translation id="696780070563539690">বিভিন্ন ওয়েবসাইট জুড়ে আপনার ব্রাউজিং অ্যাক্টিভিটি যেমন বিশেষভাবে বেছে নেওয়া বিজ্ঞাপন দেখার জন্য সাইট কুকি ব্যবহার করতে পারবে না</translation> <translation id="6968288415730398122">স্ক্রিন লক কনফিগার করতে আপনার পাসওয়ার্ড লিখুন</translation> -<translation id="6969047215179982698">'আশেপাশের ডিভাইসে শেয়ার করা' ফিচারটি বন্ধ করুন</translation> +<translation id="6969047215179982698">'নিয়ারবাই শেয়ার' ফিচারটি বন্ধ করুন</translation> <translation id="6970480684834282392">প্রারম্ভিক প্রকার</translation> <translation id="6970856801391541997">প্রিন্ট স্পেসিফিক পৃষ্ঠাসমূহ</translation> <translation id="6972180789171089114">অডিও/ভিডিও</translation> @@ -6579,6 +6583,7 @@ <translation id="939519157834106403">SSID</translation> <translation id="939598580284253335">পাসফ্রেজ প্রবেশ করান</translation> <translation id="939736085109172342">নতুন ফোল্ডার</translation> +<translation id="941070664607309480">অন্যরা যাতে আপনাকে দেখতে পায়, তার জন্য ক্লিক করুন, এর ফলে আপনার সাথে ডেটা শেয়ার করা যাবে</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> একটি Chrome ট্যাব ও অডিও শেয়ার করছে।</translation> <translation id="945522503751344254">মতামত জানান</translation> <translation id="947329552760389097">&এলিমেন্ট ইন্সপেক্ট করুন</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 173b716a..987aee3 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Ako uklonite ovu lozinku, neće se izbrisati račun na domeni <ph name="DOMAIN" />. Promijenite lozinku ili izbrišite račun na domeni <ph name="DOMAIN_LINK" /> da ga zaštitite od drugih.</translation> <translation id="1084824384139382525">Kopiraj adr&esu linka</translation> <translation id="1085697365578766383">Greška pri pokretanju virtuelne mašine. Pokušajte ponovo.</translation> +<translation id="1088659085457112967">Pokreni način rada za čitanje</translation> <translation id="1090126737595388931">Nema aplikacija koje rade u pozadini</translation> <translation id="1091767800771861448">Pritisnite tipku ESCAPE za preskakanje (samo neslužbene međuverzije).</translation> <translation id="1093457606523402488">Vidljive mreže:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Aplikacija za kiosk je ažurirana. Uklonite USB disk.</translation> <translation id="120368089816228251">Muzička nota</translation> <translation id="1203942045716040624">Dijeljeni radnik: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">DNS latentnost</translation> <translation id="1205489148908752564">Čitanje i izmjena dozvoljenih korisnika</translation> <translation id="1206407435587370571">Istražite svoj Chromebook</translation> <translation id="1209796539517632982">Serveri s automatskim nazivima</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Je li ovaj rezultat bio neočekivan? <ph name="BEGIN_LINK" />Pošaljite povratne informacije<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Korisničko ime i lozinka koje ste unijeli nisu podudarni</translation> <translation id="1397500194120344683">Nema uređaja koji ispunjavaju uslove. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Pristupnik se može provjeriti pingom</translation> <translation id="1398853756734560583">Povećaj maksimalno</translation> <translation id="139911022479327130">Otključajte telefon i potvrdite identitet</translation> <translation id="1399511500114202393">Nema korisničkog certifikata</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Ukloni ovu osobu</translation> <translation id="1703331064825191675">Nemojte nikada brinuti zbog svojih lozinki</translation> <translation id="1704970325597567340">Sigurnosna provjera je izvršena <ph name="DATE" /></translation> +<translation id="1706391837335750954">DNS razrješivač je prisutan</translation> <translation id="1706586824377653884">Dodao je vaš administrator</translation> <translation id="1706625117072057435">Nivoi zumiranja</translation> <translation id="1708338024780164500">(Neaktivan)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">Chromeom upravlja automatski testni softver.</translation> <translation id="2071393345806050157">Ne postoji lokalni fajl zapisnika.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Kliknite da instalirate ekstenziju}one{Kliknite da instalirate ekstenzije}few{Kliknite da instalirate ekstenzije}other{Kliknite da instalirate ekstenzije}}</translation> +<translation id="2073505299004274893">Možete koristiti maksimalno sljedeći broj znakova: <ph name="CHARACTER_LIMIT" /></translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% baterije</translation> <translation id="2075959085554270910">Omogućava da omogućite/onemogućite funkciju dodirni za klik i prevlačenje dodirom</translation> <translation id="2076269580855484719">Sakrij ovaj dodatak</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Unesite PIN</translation> <translation id="241082044617551207">Nepoznati dodatak</translation> <translation id="2412593942846481727">Ažuriranje je dostupno</translation> +<translation id="2414499877591062094">Omogući automatsko slanje PIN-a</translation> <translation id="2416435988630956212">Funkcijske tipke tastature</translation> <translation id="241727068219398187">Podaci su šifrirani vašom šifrom za Google od <ph name="TIME" />. Ovo ne uključuje načine plaćanja i adrese s Google Paya.</translation> @@ -1308,6 +1314,7 @@ <translation id="2586672484245266891">Unesite kraći URL</translation> <translation id="2587922766792651800">Vrijeme je isteklo</translation> <translation id="2588636910004461974">Uređaji dobavljača <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Izađi iz načina rada za čitanje</translation> <translation id="2594999711683503743">Pretražite Google ili upišite URL</translation> <translation id="2602501489742255173">Prevucite prema gore da počnete</translation> <translation id="2603115962224169880">Očisti računar</translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Omogućeni jezici</translation> <translation id="3313622045786997898">Vrijednost potpisa potvrde</translation> <translation id="3315158641124845231">Sakrij <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Pokreni način rada za čitanje</translation> <translation id="3317459757438853210">Obostrano</translation> <translation id="3317678681329786349">Kamera i mikrofon su blokirani</translation> <translation id="3319048459796106952">Novi &anonimni prozor</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Zdravo, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – preostalo <ph name="TIME" /></translation> <translation id="3637682276779847508">Vaša SIM kartica će se trajno onemogućiti ako ne možete unijeti ispravan ključ za otključavanje PIN-a.</translation> +<translation id="3639220004740062347">Izađi iz načina rada za čitanje</translation> <translation id="3640214691812501263">Dodati ekstenziju "<ph name="EXTENSION_NAME" />" za korisnika<ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Naučite Asistenta da prepoznaje vaš glas</translation> <translation id="3645372836428131288">Pomjerite malo udesno da snimite drugi dio otiska prsta.</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Čekanje na otpremanje zapisnika.</translation> <translation id="3650952250015018111">Dozvoli da "<ph name="APP_NAME" />" pristupi:</translation> <translation id="3651488188562686558">Prekini vezu s WiFi mrežom</translation> +<translation id="3651952061994655768">Promijeni naziv</translation> <translation id="3652817283076144888">Pokretanje</translation> <translation id="3653160965917900914">Dijeljenje fajlova na mreži</translation> <translation id="3653842108912548333">Pristupite Asistentu pomoću Voice Matcha</translation> @@ -2241,6 +2251,7 @@ <translation id="3748706263662799310">Prijava programske pogreške</translation> <translation id="3752582316358263300">Uredu...</translation> <translation id="3752673729237782832">Moji uređaji</translation> +<translation id="3752757212511661046">Kreirati radni profil?</translation> <translation id="3753033997400164841">Pohranite jednom. Koristite svugdje</translation> <translation id="3755411799582650620">Vaš telefon <ph name="PHONE_NAME" /> sada može otključati i ovaj uređaj <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Web lokacija koristi vaš mikrofon</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Uključite Google Asistenta</translation> <translation id="387531380970557479">Ekstenzija "<ph name="EXTENSION_NAME" />" je onemogućena jer sadrži zlonamjerni softver.</translation> <translation id="3879748587602334249">Upravitelj za preuzimanja</translation> +<translation id="3881478300875776315">Prikaži manje redova</translation> <translation id="3882165008614329320">Postojeći videozapis s kamere ili fajla</translation> <translation id="3886446263141354045">Vaš zahtjev za pristup ovoj web lokaciji je poslan korisniku <ph name="NAME" /></translation> <translation id="3888550877729210209">Kreiranje bilježaka pomoću aplikacije <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">Slažem se</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Crno-bijelo</translation> +<translation id="413193092008917129">Rutine dijagnostike mreže</translation> <translation id="4133076602192971179">Otvorite aplikaciju da promijenite lozinku</translation> <translation id="4136203100490971508">Noćno svjetlo će se automatski isključiti u svitanje</translation> <translation id="41365691917097717">Ako nastavite, omogućit ćete otklanjanje grešaka putem ADB-a za kreiranje i testiranje Android aplikacija. Imajte na umu da ova radnja omogućava instaliranje Android aplikacija koje Google nije potvrdio. Da onemogućite, vratite na fabričke postavke.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">Otvori preuzete fajlove</translation> <translation id="4377363674125277448">Došlo je do problema s potvrdom servera.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Nije pokrenuto</translation> <translation id="4378551569595875038">Povezivanje...</translation> <translation id="4378556263712303865">Zahtjev za uređajem</translation> <translation id="4379281552162875326">Deinstalirati "<ph name="APP_NAME" />"?</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">&Otvori videozapis u novoj kartici</translation> <translation id="4645676300727003670">&Zadrži</translation> <translation id="4646675363240786305">Priključci</translation> +<translation id="4646949265910132906">Sigurna WiFi veza</translation> <translation id="4647090755847581616">&Zatvori karticu</translation> <translation id="4647420311443994946">{0,select, tablet{Pokretanje aplikacije prilikom prijave na tabletu}computer{Pokretanje aplikacije prilikom prijave na računaru}other{Pokretanje aplikaciju prilikom prijave na uređaju}}</translation> <translation id="4647697156028544508">Unesite PIN za uređaj "<ph name="DEVICE_NAME" />":</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> će moći pregledavati fajl <ph name="FILENAME" /> dok ne zatvorite sve kartice za ovu web lokaciju</translation> <translation id="4692623383562244444">Pretraživači</translation> <translation id="4693155481716051732">Suši</translation> +<translation id="469379815867856270">Jačina signala</translation> <translation id="4694024090038830733">Administrator upravlja konfiguracijom štampača.</translation> <translation id="4694604912444486114">Majmun</translation> <translation id="4697551882387947560">Kada se sesija preglednika završi</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">Ova ekstenzija sadrži zlonamjeran softver.</translation> <translation id="4981449534399733132"><ph name="BEGIN_LINK" />Prijavite se<ph name="END_LINK" /> da obrišete podatke o pregledanju sa svih svojih sinhroniziranih uređaja i Google računa.</translation> <translation id="4982236238228587209">Softver uređaja</translation> +<translation id="4985509611418653372">Pokreni</translation> <translation id="4986728572522335985">Ovim će se izbrisati svi podaci na sigurnosnom ključu, uključujući njegov PIN</translation> <translation id="4988526792673242964">Stranice</translation> <translation id="49896407730300355">Rotiraj u smjeru suprotnom od k&azaljke na satu</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">Čitanje svih vaših podataka na web lokacijama koje posjećujete</translation> <translation id="5242724311594467048">Omogućiti "<ph name="EXTENSION_NAME" />"?</translation> <translation id="5243522832766285132">Pokušajte ponovo za nekoliko trenutaka</translation> +<translation id="5244406554036143958">Unesite PIN da omogućite automatsko slanje</translation> <translation id="5244474230056479698">Sinhroniziranje s korisničkim računom <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Počni koristiti školski račun</translation> <translation id="5246282308050205996">Došlo je do pada aplikacije <ph name="APP_NAME" />. Kliknite na ovaj balon da ponovo pokrenete aplikaciju.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Identitet</translation> <translation id="5317780077021120954">Sačuvaj</translation> <translation id="5319359161174645648">Google preporučuje Chrome</translation> +<translation id="5320135788267874712">Novi naziv uređaja</translation> <translation id="532247166573571973">Možda nije moguće doprijeti do servera. Pokušajte ponovo kasnije.</translation> <translation id="5324780743567488672">Automatski postavi vremensku zonu pomoću moje lokacije</translation> <translation id="5327248766486351172">Ime</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Onemogući web lokacijama pristup USB uređajima</translation> <translation id="5336688142483283574">Ova stranica će se ukloniti iz vaše historije i aktivnosti na pretraživaču <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Instalirala treća strana.</translation> +<translation id="5337926771328966926">Trenutni naziv uređaja je <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Lokalna pohrana</translation> <translation id="5340638867532133571">Dozvolite web lokacijama da instaliraju obrađivače uplata (preporučeno)</translation> <translation id="5341793073192892252">Blokirani su sljedeći kolačići (kolačići treće strane blokiraju se bez iznimke)</translation> @@ -3492,6 +3512,7 @@ <translation id="5379140238605961210">Nastavi blokirati pristup mikrofonu</translation> <translation id="5382591305415226340">Upravljajte podržanim linkovima</translation> <translation id="5383377866517186886">Kamera je isključena u Postavkama sustava na Macu</translation> +<translation id="5383740867328871413">Neimenovana grupa – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Upareno</translation> <translation id="5389237414310520250">Kreiranje novog korisnika nije uspjelo. Provjerite imate li dovoljno prostora na svom tvrdom disku i potrebna odobrenja, i pokušajte ponovo.</translation> <translation id="5390100381392048184">Dozvoli web lokacijama da reproduciraju zvuk</translation> @@ -3502,6 +3523,7 @@ <translation id="5398497406011404839">Skrivene oznake</translation> <translation id="5398572795982417028">Referenca za stranicu je izvan granica, a granica je <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Oglasi su blokirani</translation> +<translation id="5401938042319910061">Pokreni sve rutine</translation> <translation id="5402815541704507626">Preuzmite ažuriranja koristeći prijenos podataka na mobilnoj mreži</translation> <translation id="540296380408672091">Uvijek blokiraj kolačiće na <ph name="HOST" /></translation> <translation id="540495485885201800">Zamijeni s prethodnom stavkom</translation> @@ -3817,6 +3839,7 @@ <translation id="57838592816432529">Isključi zvuk</translation> <translation id="5785583009707899920">Chrome alati za fajlove</translation> <translation id="5787146423283493983">Usaglašavanje ključeva</translation> +<translation id="5787420647064736989">Naziv uređaja</translation> <translation id="5788367137662787332">Žao nam je, bar jedna particija uređaja <ph name="DEVICE_LABEL" /> ne može biti aktivirana</translation> <translation id="5790085346892983794">Uspjeh</translation> <translation id="5790651917470750848">Prosljeđivanje priključka već postoji</translation> @@ -4493,6 +4516,7 @@ <translation id="6648911618876616409">Važno ažuriranje je spremno za instaliranje. Prijavite se za pokretanje.</translation> <translation id="6649018507441623493">Samo trenutak...</translation> <translation id="6649563841575838401">Format arhive nije podržan ili je fajl oštećen.</translation> +<translation id="6650234781371031356">Vaša lozinka za <ph name="WEBSITE" /> je pohranjena na ovom uređaju i na vašem Google računu. Koju verziju lozinke želite izbrisati?</translation> <translation id="665061930738760572">Otvori u &novom prozoru</translation> <translation id="6651237644330755633">Vjeruj ovoj potvrdi za identifikaciju web lokacija</translation> <translation id="665355505818177700">Integracija<ph name="MS_AD_NAME" /> Chromea podržana je samo na x86_64 platformama. Chromebook uređaji izrađeni na platformama ARM ili x86 ne podržavaju ovu funkcionalnost.</translation> @@ -4531,6 +4555,7 @@ <translation id="6701535245008341853">Učitavanje profila nije uspjelo.</translation> <translation id="6702639462873609204">&Uredi…</translation> <translation id="6703966911896067184">Ilustracija greške prilikom prijave</translation> +<translation id="6704062477274546131">DNS razrješavanje</translation> <translation id="6706210727756204531">Opseg</translation> <translation id="6707389671160270963">Potvrda SSL klijenta</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> i još 1 kartica}one{<ph name="PAGE_TITLE" /> i još # kartica}few{<ph name="PAGE_TITLE" /> i još # kartice}other{<ph name="PAGE_TITLE" /> i još # kartica}}</translation> @@ -4588,6 +4613,7 @@ <translation id="677965093459947883">Vrlo mali</translation> <translation id="6781284683813954823">Veza za doodle logotip</translation> <translation id="6781978626986383437">Izrada sigurnosne kopije za Linux je otkazana</translation> +<translation id="6782067259631821405">Nevažeći PIN</translation> <translation id="6785915470941880363">Klizanje unazad <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Ekstenzije</translation> <translation id="6787839852456839824">Prečice tastature</translation> @@ -4894,6 +4920,7 @@ <translation id="7141105143012495934">Prijava nije uspjela jer nije bilo moguće preuzeti vaše podatke računa. Kontaktirajte administratora ili pokušajte ponovo.</translation> <translation id="7143207342074048698">Povezivanje</translation> <translation id="7144878232160441200">Pokušaj ponovo</translation> +<translation id="714876143603641390">Povezivost LAN-a</translation> <translation id="7149893636342594995">Posljednja 24 sata</translation> <translation id="715118844758971915">Klasični štampači</translation> <translation id="7152478047064750137">Za ovu ekstenziju nisu potrebna posebna odobrenja</translation> @@ -5031,6 +5058,7 @@ <translation id="7334274148831027933">Omogući priključeno uvećalo</translation> <translation id="7335974957018254119">Koristite provjeru pravopisa za</translation> <translation id="7336799713063880535">Obavješt. blokirana.</translation> +<translation id="7337248890521463931">Prikaži više redova</translation> <translation id="7338630283264858612">Serijski broj uređaja je nevažeći.</translation> <translation id="7339763383339757376">PKCS #7, pojedinačni certifikat</translation> <translation id="7339785458027436441">Provjeravaj pravopis prilikom pisanja</translation> @@ -5413,6 +5441,7 @@ <translation id="7807711621188256451">Uvijek dozvolite web lokaciji <ph name="HOST" /> da pristupa vašoj kameri</translation> <translation id="7810202088502699111">Skočni prozori su blokirani na ovoj stranici.</translation> <translation id="781167124805380294">Emitiranje datoteke <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Pogledajte šta je novo na uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Kopiraj</translation> <translation id="7815680994978050279">Opasno preuzimanje je blokirano</translation> <translation id="7817361223956157679">Tastatura na ekranu još uvijek ne radi u aplikacijama za Linux</translation> @@ -5642,6 +5671,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 list papira}one{{COUNT} list papira}few{{COUNT} lista papira}other{{COUNT} listova papira}}</translation> <translation id="8063235345342641131">Zadani zeleni avatar</translation> <translation id="8063535366119089408">Pregledaj fajl</translation> +<translation id="8064279191081105977">Grupa <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Dodirnite da se prijavite</translation> <translation id="8069615408251337349">Google štampanje u oblaku</translation> <translation id="8071432093239591881">Ispiši kao sliku</translation> @@ -6387,6 +6417,7 @@ <translation id="8986362086234534611">Zaboravi</translation> <translation id="8986494364107987395">Automatski šaljite statistiku korištenja i izvještaje o padovima aplikacije Googleu</translation> <translation id="8987927404178983737">Mjesec</translation> +<translation id="8990209962746788689">Nije moguće kreirati QR kôd</translation> <translation id="8991520179165052608">Web lokacija može koristiti vaš mikrofon</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 stavka}one{# stavka}few{# stavke}other{# stavki}}</translation> <translation id="899384117894244799">Ukloni korisnika s ograničenjem</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index fa691e3..6cc5de3 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Odstraněním tohoto hesla nesmažete svůj účet na <ph name="DOMAIN" />. Pokud chcete ochránit svá data, změňte své heslo nebo smažte účet na <ph name="DOMAIN_LINK" />.</translation> <translation id="1084824384139382525">Kopírovat a&dresu odkazu</translation> <translation id="1085697365578766383">Při spouštění virtuálního počítače došlo k chybě. Zkuste to znovu.</translation> +<translation id="1088659085457112967">Zapnout režim čtečky</translation> <translation id="1090126737595388931">Na pozadí nejsou spuštěny žádné aplikace</translation> <translation id="1091767800771861448">Akci přeskočíte stisknutím klávesy Esc (pouze neoficiální sestavení).</translation> <translation id="1093457606523402488">Viditelné sítě:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Terminálová aplikace byla aktualizována. Vyjměte jednotku USB.</translation> <translation id="120368089816228251">Hudební nota</translation> <translation id="1203942045716040624">Spolupracovník: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Latence DNS</translation> <translation id="1205489148908752564">Uživatelé s oprávněními ke čtení a provádění změn</translation> <translation id="1206407435587370571">Prozkoumejte svůj Chromebook</translation> <translation id="1209796539517632982">Automatické názvové servery</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Byl tento výsledek neočekávaný? <ph name="BEGIN_LINK" />Odeslat zpětnou vazbu<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Zadané uživatelské jméno a heslo se neshodují.</translation> <translation id="1397500194120344683">Žádná způsobilá zařízení. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Pingnutí brány</translation> <translation id="1398853756734560583">Maximalizovat</translation> <translation id="139911022479327130">Odemkněte telefon a potvrďte, že jste to skutečně vy</translation> <translation id="1399511500114202393">Žádný certifikát uživatele</translation> @@ -541,7 +544,7 @@ <translation id="164936512206786300">Zrušit spárování se zařízením Bluetooth</translation> <translation id="1650371550981945235">Zobrazit možnosti vstupu</translation> <translation id="1651008383952180276">Musíte zadat dvakrát stejnou heslovou frázi</translation> -<translation id="1652326691684645429">Aktivovat sdílení v okolí</translation> +<translation id="1652326691684645429">Aktivovat Sdílení nablízko</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Přidejte tiskárnu do služby Google Cloud Print a tiskněte odkudkoli.}few{Přidejte # tiskárny do služby Google Cloud Print a tiskněte odkudkoli.}many{Přidejte # tiskárny do služby Google Cloud Print a tiskněte odkudkoli.}other{Přidejte # tiskáren do služby Google Cloud Print a tiskněte odkudkoli.}}</translation> <translation id="1656528038316521561">Neprůhlednost pozadí</translation> <translation id="1657406563541664238">Pomozte <ph name="PRODUCT_NAME" /> zlepšit tím, že budete Googlu automaticky zasílat statistiky o využívání a zprávy o selhání aplikace</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Odebrat tohoto uživatele</translation> <translation id="1703331064825191675">Nedělejte si starosti s hesly</translation> <translation id="1704970325597567340">Bezpečnostní kontrola proběhla <ph name="DATE" /></translation> +<translation id="1706391837335750954">Přítomnost resolveru DNS</translation> <translation id="1706586824377653884">Přidáno administrátorem</translation> <translation id="1706625117072057435">Úrovně přiblížení</translation> <translation id="1708338024780164500">(Neaktivní)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">Chrome je právě kontrolován pomocí automatického testovacího softwaru.</translation> <translation id="2071393345806050157">Žádný místní soubor protokolu není k dispozici.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Kliknutím toto rozšíření nainstalujete}few{Kliknutím tato rozšíření nainstalujete}many{Kliknutím tato rozšíření nainstalujete}other{Kliknutím tato rozšíření nainstalujete}}</translation> +<translation id="2073505299004274893">Použijte maximálně <ph name="CHARACTER_LIMIT" /> znaků</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" /> % baterie</translation> <translation id="2075959085554270910">Umožňuje zapnout a vypnout funkci kliknutí klepnutím a přetahování klepnutím</translation> <translation id="2076269580855484719">Skrýt tento plugin</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Zadejte PIN</translation> <translation id="241082044617551207">Neznámý plugin</translation> <translation id="2412593942846481727">K dispozici je aktualizace</translation> +<translation id="2414499877591062094">Zapnout automatické odesílání kódu PIN</translation> <translation id="2416435988630956212">Funkční klávesy</translation> <translation id="241727068219398187">Všechny údaje byly zašifrovány pomocí hesla účtu Google ze dne <ph name="TIME" />. Toto šifrování se nevztahuje na platební metody a adresy z Google Pay.</translation> <translation id="2419131370336513030">Zobrazit nainstalované aplikace</translation> @@ -1307,6 +1313,7 @@ <translation id="2586672484245266891">Zadejte prosím kratší adresu URL</translation> <translation id="2587922766792651800">Časový limit vypršel</translation> <translation id="2588636910004461974">Zařízení od dodavatele <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Ukončit režim čtečky</translation> <translation id="2594999711683503743">Vyhledávejte na Googlu nebo zadejte adresu URL</translation> <translation id="2602501489742255173">Začněte přejetím nahoru</translation> <translation id="2603115962224169880">Vyčištění počítače</translation> @@ -1669,7 +1676,7 @@ <translation id="3022978424994383087">Nerozumím.</translation> <translation id="3023464535986383522">Poslech vybraného textu</translation> <translation id="3024374909719388945">Použít hodiny s formátem 24 h</translation> -<translation id="3027296729579831126">Zapnout Sdílení v okolí</translation> +<translation id="3027296729579831126">Zapnout Sdílení nablízko</translation> <translation id="3029466929721441205">Zobrazit v poličce nástroje pro dotykové pero</translation> <translation id="3031417829280473749">Agentka</translation> <translation id="3031557471081358569">Vyberte položky k importu:</translation> @@ -1876,6 +1883,7 @@ <translation id="3312424061798279731">Povolené jazyky</translation> <translation id="3313622045786997898">Hodnota podpisu certifikátu</translation> <translation id="3315158641124845231">Skrýt <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Zapnout režim čtečky</translation> <translation id="3317459757438853210">Oboustranně</translation> <translation id="3317678681329786349">Kamera a mikrofon jsou blokovány</translation> <translation id="3319048459796106952">Nové &anonymní okno</translation> @@ -2141,6 +2149,7 @@ <translation id="3636096452488277381">Ahoj uživateli <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" /> %, zbývá <ph name="TIME" /></translation> <translation id="3637682276779847508">Pokud správně nezadáte klíč k odemknutí kódu PIN, bude SIM karta natrvalo deaktivována</translation> +<translation id="3639220004740062347">Ukončit režim čtečky</translation> <translation id="3640214691812501263">Přidat aplikaci <ph name="EXTENSION_NAME" /> pro uživatele <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Naučte Asistenta rozpoznávat váš hlas</translation> <translation id="3645372836428131288">Lehce prst natočte, aby se zaznamenala jiná část otisku.</translation> @@ -2151,6 +2160,7 @@ <translation id="3650845953328929506">Čeká se na nahrání protokolu.</translation> <translation id="3650952250015018111">Povolte aplikaci "<ph name="APP_NAME" />" tyto přístupy:</translation> <translation id="3651488188562686558">Bude odpojen od sítě Wi-Fi</translation> +<translation id="3651952061994655768">Změnit název</translation> <translation id="3652817283076144888">Probíhá inicializace</translation> <translation id="3653160965917900914">Sdílená úložiště na síti</translation> <translation id="3653842108912548333">Aktivace Asistenta pomocí funkce Voice Match</translation> @@ -2240,6 +2250,7 @@ <translation id="3748706263662799310">Nahlásit chybu</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Má zařízení</translation> +<translation id="3752757212511661046">Vytvořit pracovní profil?</translation> <translation id="3753033997400164841">Uložte jednou. Používejte všude</translation> <translation id="3755411799582650620">Toto zařízení <ph name="DEVICE_TYPE" /> můžete odemknout také pomocí telefonu <ph name="PHONE_NAME" />.</translation> <translation id="375636864092143889">Web používá mikrofon</translation> @@ -2361,6 +2372,7 @@ <translation id="3874164307099183178">Zapnout Asistenta Google</translation> <translation id="387531380970557479">Rozšíření <ph name="EXTENSION_NAME" /> bylo zakázáno, protože obsahuje malware.</translation> <translation id="3879748587602334249">Správce stahování</translation> +<translation id="3881478300875776315">Zobrazit méně řádků</translation> <translation id="3882165008614329320">Existující video z fotoaparátu nebo soubor</translation> <translation id="3886446263141354045">Vaše žádost o přístup k tomuto webu byla odeslána uživateli <ph name="NAME" />.</translation> <translation id="3888550877729210209">Pořizování poznámek pomocí aplikace <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2569,6 +2581,7 @@ <translation id="4130750466177569591">Souhlasím</translation> <translation id="413121957363593859">Komponenty</translation> <translation id="4131410914670010031">Černobíle</translation> +<translation id="413193092008917129">Rutiny k diagnostice sítě</translation> <translation id="4133076602192971179">Heslo můžete změnit po otevření aplikace</translation> <translation id="4136203100490971508">Noční režim se vypne automaticky za úsvitu</translation> <translation id="41365691917097717">Pokračováním aktivujete ladění ADB k vytváření a testování aplikací pro Android. Upozorňujeme, že tato akce povoluje instalaci aplikací pro Android, které Google neověřil, a že je k její deaktivaci potřeba obnovení továrního nastavení.</translation> @@ -2726,6 +2739,7 @@ <translation id="4375035964737468845">Otevírání stažených souborů</translation> <translation id="4377363674125277448">Došlo k problému s certifikátem serveru.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Nespuštěno</translation> <translation id="4378551569595875038">Připojování...</translation> <translation id="4378556263712303865">Požadavek zařízení</translation> <translation id="4379281552162875326">Odinstalovat aplikaci <ph name="APP_NAME" />?</translation> @@ -2938,6 +2952,7 @@ <translation id="4643612240819915418">&Otevřít video v nové kartě</translation> <translation id="4645676300727003670">&Zachovat</translation> <translation id="4646675363240786305">Porty</translation> +<translation id="4646949265910132906">Zabezpečené připojení k Wi-Fi</translation> <translation id="4647090755847581616">&Zavřít kartu</translation> <translation id="4647420311443994946">{0,select, tablet{Spustit aplikaci, když se přihlásíte do tabletu}computer{Spustit aplikaci, když se přihlásíte do počítače}other{Spustit aplikaci, když se přihlásíte do zařízení}}</translation> <translation id="4647697156028544508">Zadejte prosím PIN pro zařízení <ph name="DEVICE_NAME" />:</translation> @@ -2964,7 +2979,7 @@ <translation id="4673442866648850031">Při vyjmutí dotykového pera automaticky otevřít nástroje pro dotykové pero</translation> <translation id="4677772697204437347">Paměť GPU</translation> <translation id="4680105648806843642">Na této stránce byl ztlumen zvuk</translation> -<translation id="4681453295291708042">Deaktivovat sdílení v okolí</translation> +<translation id="4681453295291708042">Deaktivovat Sdílení nablízko</translation> <translation id="4681930562518940301">Otevřít původní &obrázek na nové kartě</translation> <translation id="4682551433947286597">Tapety se zobrazí na přihlašovací obrazovce.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" /> % (výchozí)</translation> @@ -2976,6 +2991,7 @@ <translation id="4691791363716065510">Dokud nezavřete všechny karty webu <ph name="ORIGIN" />, bude moci číst soubor <ph name="FILENAME" /></translation> <translation id="4692623383562244444">Vyhledávače</translation> <translation id="4693155481716051732">Suši</translation> +<translation id="469379815867856270">Síla signálu</translation> <translation id="4694024090038830733">Konfiguraci tiskáren spravuje administrátor.</translation> <translation id="4694604912444486114">Opice</translation> <translation id="4697551882387947560">Při ukončení návštěvy prohlížení</translation> @@ -3186,6 +3202,7 @@ <translation id="4980805016576257426">Toto rozšíření obsahuje malware.</translation> <translation id="4981449534399733132">Chcete-li vymazat údaje o prohlížení ze všech synchronizovaných zařízení i z účtu Google, <ph name="BEGIN_LINK" />přihlaste se<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Software zařízení</translation> +<translation id="4985509611418653372">Spustit</translation> <translation id="4986728572522335985">Touto akcí vymažete veškerá data na bezpečnostním klíči, včetně jeho kódu PIN</translation> <translation id="4988526792673242964">Stránky</translation> <translation id="49896407730300355">Otočit &proti směru hodinových ručiček</translation> @@ -3380,6 +3397,7 @@ <translation id="5241128660650683457">Čtení veškerých dat na navštívených webových stránkách</translation> <translation id="5242724311594467048">Aktivovat rozšíření <ph name="EXTENSION_NAME" />?</translation> <translation id="5243522832766285132">Zkuste to znovu za okamžik</translation> +<translation id="5244406554036143958">Chcete-li zapnout automatické odesílání, zadejte PIN</translation> <translation id="5244474230056479698">Údaje se synchronizují do účtu <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Začínáme se školním účtem</translation> <translation id="5246282308050205996">Aplikace <ph name="APP_NAME" /> selhala. Klinutím na tuto bublinu aplikaci restartujete.</translation> @@ -3447,6 +3465,7 @@ <translation id="5315873049536339193">Identita</translation> <translation id="5317780077021120954">Uložit</translation> <translation id="5319359161174645648">Google doporučuje prohlížeč Chrome</translation> +<translation id="5320135788267874712">Nový název zařízení</translation> <translation id="532247166573571973">Server pravděpodobně není dostupný. Zkuste to znovu později.</translation> <translation id="5324780743567488672">Nastavit časové pásmo automaticky podle polohy</translation> <translation id="5327248766486351172">Jméno</translation> @@ -3460,6 +3479,7 @@ <translation id="5336126339807372270">Nepovolovat žádným webům přístup k zařízením USB</translation> <translation id="5336688142483283574">Tato stránka také bude odstraněna z vaší historie a aktivity ve vyhledávači <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Nainstalováno třetí stranou.</translation> +<translation id="5337926771328966926">Aktuální název zařízení je <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Místní úložiště</translation> <translation id="5340638867532133571">Povolit webům instalovat obslužné nástroje pro platby (doporučeno)</translation> <translation id="5341793073192892252">Následující soubory cookie byly zablokovány (soubory cookie třetí strany jsou blokovány bez výjimky)</translation> @@ -3490,6 +3510,7 @@ <translation id="5379140238605961210">Blokovat přístup k mikrofonu i nadále</translation> <translation id="5382591305415226340">Spravovat podporované odkazy</translation> <translation id="5383377866517186886">Fotoaparát je vypnutý v předvolbách systému Macu</translation> +<translation id="5383740867328871413">Skupina bez názvu – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Párováno</translation> <translation id="5389237414310520250">Vytvoření nového uživatele se nezdařilo. Zkontrolujte místo na disku a oprávnění a zkuste to znovu.</translation> <translation id="5390100381392048184">Povolit webům přehrávat zvuky</translation> @@ -3500,6 +3521,7 @@ <translation id="5398497406011404839">Skryté záložky</translation> <translation id="5398572795982417028">Odkaz na stránku mimo rozsah, limit je <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Byly zablokovány reklamy</translation> +<translation id="5401938042319910061">Spustit všechny rutiny</translation> <translation id="5402815541704507626">Stažení aktualizace pomocí mobilního datového připojení</translation> <translation id="540296380408672091">Vždy blokovat soubory cookie u hostitele <ph name="HOST" /></translation> <translation id="540495485885201800">Vyměnit s předchozí</translation> @@ -3781,7 +3803,7 @@ <translation id="5739017626473506901"><ph name="USER_NAME" /> potřebuje pomoc s přidáním školního účtu, přihlaste se prosím</translation> <translation id="5739235828260127894">Čeká na ověření. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation> <translation id="5739458112391494395">Velmi velké</translation> -<translation id="5740328398383587084">Sdílení v okolí</translation> +<translation id="5740328398383587084">Sdílení nablízko</translation> <translation id="574104302965107104">Zrcadlení displeje</translation> <translation id="574209121243317957">Výška</translation> <translation id="5746169159649715125">Uložit jako PDF</translation> @@ -3815,6 +3837,7 @@ <translation id="57838592816432529">Ztlumit</translation> <translation id="5785583009707899920">Nástroje Chrome pro práci se soubory</translation> <translation id="5787146423283493983">Smlouva o klíči</translation> +<translation id="5787420647064736989">Název zařízení</translation> <translation id="5788367137662787332">Je nám líto, minimálně jeden oddíl zařízení <ph name="DEVICE_LABEL" /> nelze připojit.</translation> <translation id="5790085346892983794">Úspěšně provedeno</translation> <translation id="5790651917470750848">Přesměrování portů již existuje</translation> @@ -4280,7 +4303,7 @@ <translation id="6362853299801475928">&Oznámení problému...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">Přidání rodiny a přátel</translation> -<translation id="6367985768157257101">Přijmout pomocí sdílení nablízko?</translation> +<translation id="6367985768157257101">Přijmout pomocí Sdílení nablízko</translation> <translation id="636850387210749493">Registrace podniku</translation> <translation id="6370021412472292592">Načtení manifestu se nezdařilo.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -4491,6 +4514,7 @@ <translation id="6648911618876616409">K instalaci je připravena kritická aktualizace. Začněte tím, že se přihlásíte.</translation> <translation id="6649018507441623493">Chviličku…</translation> <translation id="6649563841575838401">Formát archivu není podporován nebo je soubor poškozen.</translation> +<translation id="6650234781371031356">Vaše heslo pro web <ph name="WEBSITE" /> je uloženo v zařízení i v účtu Google. Odkud ho chcete smazat?</translation> <translation id="665061930738760572">Otevřít v &novém okně</translation> <translation id="6651237644330755633">Důvěřovat tomuto certifikátu k identifikaci webových stránek</translation> <translation id="665355505818177700">Integrace Chromu se službou <ph name="MS_AD_NAME" /> je podporována pouze na platformách x86_64. Chromebooky založené na platformě ARM nebo x86 ji nepodporují.</translation> @@ -4529,6 +4553,7 @@ <translation id="6701535245008341853">Profil nelze načíst.</translation> <translation id="6702639462873609204">&Upravit...</translation> <translation id="6703966911896067184">Ilustrace chyby registrace</translation> +<translation id="6704062477274546131">Překlad DNS</translation> <translation id="6706210727756204531">Rozsah</translation> <translation id="6707389671160270963">Klientský certifikát SSL</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> a 1 další karta}few{<ph name="PAGE_TITLE" /> a # další karty}many{<ph name="PAGE_TITLE" /> a # další karty}other{<ph name="PAGE_TITLE" /> a # dalších karet}}</translation> @@ -4586,6 +4611,7 @@ <translation id="677965093459947883">Velmi malé</translation> <translation id="6781284683813954823">Odkaz na sváteční logo</translation> <translation id="6781978626986383437">Zálohování kontejneru systému Linux bylo zrušeno</translation> +<translation id="6782067259631821405">Neplatný kód PIN</translation> <translation id="6785915470941880363">Reverzní posouvání <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Rozšíření</translation> <translation id="6787839852456839824">Klávesové zkratky</translation> @@ -4737,7 +4763,7 @@ <translation id="6965978654500191972">Zařízení</translation> <translation id="696780070563539690">Weby nemohou pomocí souborů sledovat vaši aktivitu prohlížení na různých webech, například k personalizaci reklam</translation> <translation id="6968288415730398122">Chcete-li nakonfigurovat zámek obrazovky, zadejte heslo</translation> -<translation id="6969047215179982698">Vypnout sdílení v okolí</translation> +<translation id="6969047215179982698">Vypnout Sdílení nablízko</translation> <translation id="6970480684834282392">Typ spouštění</translation> <translation id="6970856801391541997">Tisknout konkrétní stránky</translation> <translation id="6972180789171089114">Zvuk/video</translation> @@ -4892,6 +4918,7 @@ <translation id="7141105143012495934">Přihlášení selhalo, protože se nepodařilo načíst podrobnosti účtu. Kontaktujte administrátora nebo to zkuste znovu.</translation> <translation id="7143207342074048698">Připojování</translation> <translation id="7144878232160441200">Opakovat</translation> +<translation id="714876143603641390">Připojení k síti LAN</translation> <translation id="7149893636342594995">Posledních 24 hodin</translation> <translation id="715118844758971915">Klasické tiskárny</translation> <translation id="7152478047064750137">Toto rozšíření nevyžaduje žádná speciální oprávnění.</translation> @@ -5029,6 +5056,7 @@ <translation id="7334274148831027933">Zapnout zabudovanou lupu</translation> <translation id="7335974957018254119">Používat kontrolu pravopisu pro</translation> <translation id="7336799713063880535">Oznámení jsou blokována.</translation> +<translation id="7337248890521463931">Zobrazit další řádky</translation> <translation id="7338630283264858612">Sériové číslo zařízení je neplatné.</translation> <translation id="7339763383339757376">PKCS #7, jeden certifikát</translation> <translation id="7339785458027436441">Kontrolovat během psaní pravopis</translation> @@ -5411,6 +5439,7 @@ <translation id="7807711621188256451">Vždy povolit webu <ph name="HOST" /> přístup ke kameře</translation> <translation id="7810202088502699111">Na této stránce byla zablokována vyskakovací okna.</translation> <translation id="781167124805380294">Odeslat soubor <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Podívejte se, co je na zařízení <ph name="DEVICE_TYPE" /> nového</translation> <translation id="7814458197256864873">&Kopírovat</translation> <translation id="7815680994978050279">Bylo zablokováno stahování nebezpečného souboru</translation> <translation id="7817361223956157679">V aplikacích pro Linux softwarová klávesnice zatím nefunguje</translation> @@ -5640,6 +5669,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 list papíru}few{{COUNT} listy papíru}many{{COUNT} listu papíru}other{{COUNT} listů papíru}}</translation> <translation id="8063235345342641131">Výchozí zelený avatar</translation> <translation id="8063535366119089408">Zobrazit soubor</translation> +<translation id="8064279191081105977">Skupina <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Klepnutím se přihlásíte</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Vytisknout jako obrázek</translation> @@ -6384,6 +6414,7 @@ <translation id="8986362086234534611">Odstranit</translation> <translation id="8986494364107987395">Automaticky posílat společnosti Google statistiky používání a zprávy o selhání</translation> <translation id="8987927404178983737">Měsíc</translation> +<translation id="8990209962746788689">QR kód nelze vytvořit</translation> <translation id="8991520179165052608">Web může použít mikrofon</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 položky}few{# položek}many{# položky}other{# položek}}</translation> <translation id="899384117894244799">Odstranit uživatele s omezenými oprávněními</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 99cc968..0bbf1d5d 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Fjernelse af denne adgangskode sletter ikke din konto på <ph name="DOMAIN" />. Skift din adgangskode, eller slet din konto på <ph name="DOMAIN_LINK" /> for at beskytte den mod andre.</translation> <translation id="1084824384139382525">Kopier linkadr&esse</translation> <translation id="1085697365578766383">Der opstod en fejl ved opstarten af den virtuelle maskine. Prøv igen.</translation> +<translation id="1088659085457112967">Start Læser-tilstand</translation> <translation id="1090126737595388931">Ingen apps kører i baggrunden</translation> <translation id="1091767800771861448">Tryk på ESC for at springe over (kun uofficielle builds).</translation> <translation id="1093457606523402488">Synlige netværk:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Terminalappen er blevet opdateret. Fjern USB-stikket.</translation> <translation id="120368089816228251">Musiknode</translation> <translation id="1203942045716040624">Shared Worker: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">DNS-forsinkelse</translation> <translation id="1205489148908752564">Se og rediger brugerne på hvidlisten</translation> <translation id="1206407435587370571">Udforsk din Chromebook</translation> <translation id="1209796539517632982">Automatiske navneservere</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Var resultatet ikke som forventet? <ph name="BEGIN_LINK" />Send feedback<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Brugernavnet og adgangskoden, du har angivet, stemmer ikke overens.</translation> <translation id="1397500194120344683">Der er ingen kvalificerede enheder. <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Gatewayen kan pinges</translation> <translation id="1398853756734560583">Maksimér</translation> <translation id="139911022479327130">Lås din telefon op, og bekræft din identitet</translation> <translation id="1399511500114202393">Ikke noget brugercertifikat</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Fjern denne person</translation> <translation id="1703331064825191675">Glem aldrig dine adgangskoder igen</translation> <translation id="1704970325597567340">Sikkerhedstjekket blev udført <ph name="DATE" /></translation> +<translation id="1706391837335750954">DNS-resolver er til stede</translation> <translation id="1706586824377653884">Tilføjet af din administrator</translation> <translation id="1706625117072057435">Zoomniveauer</translation> <translation id="1708338024780164500">(inaktiv)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">Chrome kontrolleres af automatiseret testsoftware.</translation> <translation id="2071393345806050157">Ingen lokal logfil.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Klik for at installere udvidelsen}one{Klik for at installere udvidelsen}other{Klik for at installere disse udvidelser}}</translation> +<translation id="2073505299004274893">Brug højst <ph name="CHARACTER_LIMIT" /> tegn</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" /> % batteri</translation> <translation id="2075959085554270910">Giver dig mulighed for at aktivere/deaktivere tryk-hurtigt-for-at-klikke og Tryk og træk-funktionen</translation> <translation id="2076269580855484719">Skjul dette plugin</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Angiv din pinkode</translation> <translation id="241082044617551207">Ukendt plugin</translation> <translation id="2412593942846481727">Der er en tilgængelig opdatering</translation> +<translation id="2414499877591062094">Aktivér automatisk indsendelse af pinkode</translation> <translation id="2416435988630956212">Funktionstaster på tastaturet</translation> <translation id="241727068219398187">Dataene er krypteret med din Google-adgangskode fra <ph name="TIME" />. Dette omfatter ikke betalingsmetoder og adresser fra Google Pay.</translation> @@ -1274,7 +1280,7 @@ <translation id="2540449034743108469">Tryk på "Start" for at lytte efter udvidelsesaktiviteter</translation> <translation id="2541002089857695151">Vil du optimere casting til fuld skærm?</translation> <translation id="2541706104884128042">Ny sengetid er angivet</translation> -<translation id="2542050502251273923">Angiver fejlretningsniveauet for netværksforbindelsens administrator og andre tjenester, der anvender ff_debug.</translation> +<translation id="2542050502251273923">Angiver fejlretningsniveauet for netværksforbindelsens administrator og andre tjenester ved brug af ff_debug.</translation> <translation id="2544853746127077729">Godkendelsescertifikatet blev afvist af netværk</translation> <translation id="2546229857744484369">Du har 1 adgangskode gemt på denne enhed</translation> <translation id="2546283357679194313">Cookies og websitedata</translation> @@ -1308,6 +1314,7 @@ <translation id="2586672484245266891">Angiv en kortere webadresse</translation> <translation id="2587922766792651800">Der opstod timeout</translation> <translation id="2588636910004461974">Enheder fra <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Afslut Læser-tilstand</translation> <translation id="2594999711683503743">Søg på Google, eller angiv webadressen</translation> <translation id="2602501489742255173">Stryg opad for at komme i gang</translation> <translation id="2603115962224169880">Ryd op på computeren</translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Aktiverede sprog</translation> <translation id="3313622045786997898">Signaturværdi for certifikat</translation> <translation id="3315158641124845231">Skjul <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Start Læser-tilstand</translation> <translation id="3317459757438853210">Tosidet</translation> <translation id="3317678681329786349">Der er blokeret for adgang til kameraet og mikrofonen</translation> <translation id="3319048459796106952">Nyt &inkognito-vindue</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Goddag <ph name="USER_GIVEN_NAME" /></translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" /> % - <ph name="TIME" /> tilbage</translation> <translation id="3637682276779847508">Dit SIM-kort deaktiveres permanent, hvis du ikke kan angive den korrekte nøgle til oplåsning af pinkode.</translation> +<translation id="3639220004740062347">Afslut Læser-tilstand</translation> <translation id="3640214691812501263">Vil du tilføje "<ph name="EXTENSION_NAME" />" for <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Lær din assistent at genkende din stemme</translation> <translation id="3645372836428131288">Flyt fingeren en smule for at registrere en anden del af fingeraftrykket.</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Upload af logfil afventer.</translation> <translation id="3650952250015018111">Giv "<ph name="APP_NAME" />" tilladelse til at få adgang til:</translation> <translation id="3651488188562686558">Afbryd Wi-Fi-forbindelsen</translation> +<translation id="3651952061994655768">Skift navn</translation> <translation id="3652817283076144888">Initialiserer</translation> <translation id="3653160965917900914">Fildeling via netværk</translation> <translation id="3653842108912548333">Få adgang til Google Assistent med Voice Match</translation> @@ -2241,6 +2251,7 @@ <translation id="3748706263662799310">Rapporter en fejl</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Mine enheder</translation> +<translation id="3752757212511661046">Vil du oprette en arbejdsprofil?</translation> <translation id="3753033997400164841">Gem én gang. Brug overalt.</translation> <translation id="3755411799582650620">Din <ph name="PHONE_NAME" /> kan nu også låse denne <ph name="DEVICE_TYPE" /> op.</translation> <translation id="375636864092143889">Websitet anvender din mikrofon</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Slå Google Assistent til</translation> <translation id="387531380970557479">"<ph name="EXTENSION_NAME" />" er blevet deaktiveret, da den indeholder malware.</translation> <translation id="3879748587602334249">Downloadadministrator</translation> +<translation id="3881478300875776315">Vis færre linjer</translation> <translation id="3882165008614329320">Eksisterende video fra kamera eller fil</translation> <translation id="3886446263141354045">Din anmodning om adgang til dette website er blevet sendt til <ph name="NAME" />.</translation> <translation id="3888550877729210209">Notetagning med <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">Jeg accepterer</translation> <translation id="413121957363593859">Komponenter</translation> <translation id="4131410914670010031">Sort/hvid</translation> +<translation id="413193092008917129">Rutiner for netværksdiagnostik</translation> <translation id="4133076602192971179">Åbn appen for at ændre din adgangskode</translation> <translation id="4136203100490971508">Nattelys slukkes automatisk ved solopgang</translation> <translation id="41365691917097717">Hvis du fortsætter, aktiveres ADB-fejlretning til oprettelse og test af Android-apps. Bemærk! Denne handling tillader, at Android-apps, der ikke er blevet bekræftet af Google, kan installeres. Du skal gendanne fabriksindstillingerne for at deaktivere dette.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">Åbne downloadede filer</translation> <translation id="4377363674125277448">Der opstod et problem med serverens certifikat.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Kørte ikke</translation> <translation id="4378551569595875038">Opretter forbindelse...</translation> <translation id="4378556263712303865">Enhedsrekvisition</translation> <translation id="4379281552162875326">Vil du afinstallere "<ph name="APP_NAME" />"?</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">&Åbn video på ny fane</translation> <translation id="4645676300727003670">&Behold</translation> <translation id="4646675363240786305">Porte</translation> +<translation id="4646949265910132906">Sikker Wi-Fi-forbindelse</translation> <translation id="4647090755847581616">&Luk fanen</translation> <translation id="4647420311443994946">{0,select, tablet{Start appen. når du logger ind på din tablet}computer{Start appen, når du logger ind på din computer}other{Start appen, når du logger ind på din enhed}}</translation> <translation id="4647697156028544508">Angiv pinkoden for "<ph name="DEVICE_NAME" />":</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> vil kunne se <ph name="FILENAME" />, indtil du har lukket alle faner for dette website</translation> <translation id="4692623383562244444">Søgemaskiner</translation> <translation id="4693155481716051732">Sushi</translation> +<translation id="469379815867856270">Signalstyrke</translation> <translation id="4694024090038830733">Printerkonfigurationen håndteres af administratoren.</translation> <translation id="4694604912444486114">Abe</translation> <translation id="4697551882387947560">Når browsersessionen afsluttes</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">Denne udvidelse indeholder malware.</translation> <translation id="4981449534399733132"><ph name="BEGIN_LINK" />Log ind<ph name="END_LINK" /> for at rydde browserdata fra alle dine synkroniserede enheder og din Google-konto.</translation> <translation id="4982236238228587209">Enhedens software</translation> +<translation id="4985509611418653372">Kør</translation> <translation id="4986728572522335985">Denne handling sletter alle data på sikkerhedsnøglen, bl.a. pinkoden</translation> <translation id="4988526792673242964">Sider</translation> <translation id="49896407730300355">Roter m&od uret</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">Læs alle dine data på de websites, du besøger</translation> <translation id="5242724311594467048">Skal "<ph name="EXTENSION_NAME" />" aktiveres?</translation> <translation id="5243522832766285132">Prøv igen om et øjeblik</translation> +<translation id="5244406554036143958">Angiv din pinkode for at aktivere automatisk indsendelse</translation> <translation id="5244474230056479698">Synkroniserer til <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Kom godt i gang med en skolekonto</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> er gået ned. Klik her for at genstarte appen.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Identitet</translation> <translation id="5317780077021120954">Gem</translation> <translation id="5319359161174645648">Google anbefaler Chrome</translation> +<translation id="5320135788267874712">Navn på ny enhed</translation> <translation id="532247166573571973">Serveren kan være utilgængelig. Prøv igen senere.</translation> <translation id="5324780743567488672">Indstil tidszonen automatisk ved hjælp af din placering</translation> <translation id="5327248766486351172">Navn</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Tillad ikke, at websites kan få adgang til USB-enheder</translation> <translation id="5336688142483283574">Denne side fjernes også fra din historik og <ph name="SEARCH_ENGINE" />-aktivitet.</translation> <translation id="5337771866151525739">Den er installeret af en tredjepart.</translation> +<translation id="5337926771328966926">Navnet på den aktuelle enhed er <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Lokalt lager</translation> <translation id="5340638867532133571">Tillad, at websites installerer betalingshandlere (anbefales)</translation> <translation id="5341793073192892252">Følgende cookies blev blokeret (cookies fra tredjeparter blokeres uden undtagelse)</translation> @@ -3492,16 +3512,18 @@ <translation id="5379140238605961210">Fortsæt blokeringen af mikrofonadgang</translation> <translation id="5382591305415226340">Administrer understøttede links</translation> <translation id="5383377866517186886">Kameraet er deaktiveret i Systemindstillinger for Mac</translation> +<translation id="5383740867328871413">Unavngiven gruppe – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Parret</translation> <translation id="5389237414310520250">Den nye bruger kunne ikke oprettes. Kontrollér, om der er ledig plads på din harddisk, og at du har de rette tilladelser, og prøv igen.</translation> <translation id="5390100381392048184">Tillad, at websites afspiller lyd</translation> -<translation id="5390112241331447203">Medtag system_logs.txt-filen i feedbackrapporterne.</translation> +<translation id="5390112241331447203">Medtag system_logs.txt-filen, der sendes i feedbackrapporterne.</translation> <translation id="5390677308841849479">Mørkerød og orange</translation> <translation id="5390743329570580756">Send til</translation> <translation id="5397794290049113714">Dig</translation> <translation id="5398497406011404839">Skjulte bogmærker</translation> <translation id="5398572795982417028">Sidereferencen er ugyldig. Grænsen er <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Annoncer er blokeret</translation> +<translation id="5401938042319910061">Kør alle rutiner</translation> <translation id="5402815541704507626">Download opdateringen ved brug af mobildata</translation> <translation id="540296380408672091">Bloker altid cookies på <ph name="HOST" /></translation> <translation id="540495485885201800">Byt rundt med forrige</translation> @@ -3817,6 +3839,7 @@ <translation id="57838592816432529">Slå lyden fra</translation> <translation id="5785583009707899920">Filværktøjer til Chrome</translation> <translation id="5787146423283493983">Nøgleoverensstemmelse</translation> +<translation id="5787420647064736989">Enhedsnavn</translation> <translation id="5788367137662787332">Vi beklager, men der kunne ikke oprettes forbindelse til mindst én partition på enheden <ph name="DEVICE_LABEL" />.</translation> <translation id="5790085346892983794">Fuldført</translation> <translation id="5790651917470750848">Omdirigeringen af port findes allerede</translation> @@ -4494,6 +4517,7 @@ <translation id="6648911618876616409">En vigtig opdatering er klar til at blive installeret. Log ind for at komme godt i gang.</translation> <translation id="6649018507441623493">Vent et øjeblik…</translation> <translation id="6649563841575838401">Arkivformatet understøttes ikke, eller filen er beskadiget.</translation> +<translation id="6650234781371031356">Din adgangskode til <ph name="WEBSITE" /> er gemt på denne enhed og på din Google-konto. Hvilken en skal slettes?</translation> <translation id="665061930738760572">Åbn i &nyt vindue</translation> <translation id="6651237644330755633">Hav tillid til dette certifikat i forbindelse med identificering af websites</translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" />-integration understøttes kun på x86_64-platforme. Chromebooks, der er bygget på en ARM- eller x86-platform, understøtter ikke denne funktionalitet.</translation> @@ -4532,6 +4556,7 @@ <translation id="6701535245008341853">Profilen kunne ikke hentes.</translation> <translation id="6702639462873609204">&Rediger...</translation> <translation id="6703966911896067184">Illustration af tilmeldingsfejl</translation> +<translation id="6704062477274546131">DNS-udførelse</translation> <translation id="6706210727756204531">Omfang</translation> <translation id="6707389671160270963">SSL-klientcertifikat</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> og 1 anden fane}one{<ph name="PAGE_TITLE" /> og # anden fane}other{<ph name="PAGE_TITLE" /> og # andre faner}}</translation> @@ -4589,6 +4614,7 @@ <translation id="677965093459947883">Meget lille</translation> <translation id="6781284683813954823">Link til doodle</translation> <translation id="6781978626986383437">Linux-sikkerhedskopieringen blev annulleret</translation> +<translation id="6782067259631821405">Ugyldig pinkode</translation> <translation id="6785915470941880363">Omvendt rulning <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Udvidelser</translation> <translation id="6787839852456839824">Tastaturgenveje</translation> @@ -4747,7 +4773,7 @@ <translation id="6972553992270299730"><ph name="ORIGIN" /> kan ikke åbne filer i denne mappe, da den indeholder systemfiler</translation> <translation id="6972629891077993081">HID-enheder</translation> <translation id="6972754398087986839">Kom godt i gang</translation> -<translation id="6972887130317925583">Den kompromitterede adgangskode blev ændret. Du kan til enhver tid tjekke dine adgangskoder i <ph name="SETTINGS" />.</translation> +<translation id="6972887130317925583">Den kompromitterede adgangskode er blevet ændret. Du kan til enhver tid tjekke dine adgangskoder i <ph name="SETTINGS" />.</translation> <translation id="6973611239564315524">Der er en tilgængelig opdatering til Debian 10 (Buster)</translation> <translation id="6974609594866392343">Offline demotilstand</translation> <translation id="6977381486153291903">Firmwarerevision</translation> @@ -4895,6 +4921,7 @@ <translation id="7141105143012495934">Login mislykkedes, da dine kontooplysninger ikke kunne hentes. Kontakt din administrator, eller prøv igen.</translation> <translation id="7143207342074048698">Opretter forbindelse</translation> <translation id="7144878232160441200">Prøv igen</translation> +<translation id="714876143603641390">LAN-forbindelse</translation> <translation id="7149893636342594995">De seneste 24 timer</translation> <translation id="715118844758971915">Klassiske printere</translation> <translation id="7152478047064750137">Denne udvidelse kræver ikke nogen særlige tilladelser</translation> @@ -5032,6 +5059,7 @@ <translation id="7334274148831027933">Aktivér fastgjort lupvindue</translation> <translation id="7335974957018254119">Brug stavekontrol for</translation> <translation id="7336799713063880535">Notifikationer blokeres.</translation> +<translation id="7337248890521463931">Vis flere linjer</translation> <translation id="7338630283264858612">Enhedens serienummer er ugyldigt.</translation> <translation id="7339763383339757376">PKCS #7, enkeltcertifikat</translation> <translation id="7339785458027436441">Kontrollér stavning under indtastning</translation> @@ -5413,6 +5441,7 @@ <translation id="7807711621188256451">Tillad altid, at <ph name="HOST" /> har adgang til dit kamera</translation> <translation id="7810202088502699111">Pop op-vinduer blev blokeret på denne side.</translation> <translation id="781167124805380294">Cast <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Se nyheder på din <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Kopier</translation> <translation id="7815680994978050279">En farlig download blev blokeret</translation> <translation id="7817361223956157679">Skærmtastaturet fungerer endnu ikke i Linux-apps</translation> @@ -5642,6 +5671,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 ark papir}one{{COUNT} ark papir}other{{COUNT} ark papir}}</translation> <translation id="8063235345342641131">Grøn standardavatar</translation> <translation id="8063535366119089408">Se fil</translation> +<translation id="8064279191081105977">Gruppe <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Tryk for at logge ind</translation> <translation id="8069615408251337349">Google Cloudprinter</translation> <translation id="8071432093239591881">Udskriv i billedformat</translation> @@ -6388,6 +6418,7 @@ <translation id="8986362086234534611">Glem</translation> <translation id="8986494364107987395">Send automatisk brugsstatistikker og nedbrudsrapporter til Google</translation> <translation id="8987927404178983737">Måned</translation> +<translation id="8990209962746788689">QR-koden kan ikke oprettes</translation> <translation id="8991520179165052608">Websitet kan anvende din mikrofon</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 element}one{# element}other{# elementer}}</translation> <translation id="899384117894244799">Fjern begrænset bruger</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 39e7c82..8da50ca 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -538,7 +538,7 @@ <translation id="164936512206786300">Bluetooth-Gerät entkoppeln</translation> <translation id="1650371550981945235">Eingabeoptionen anzeigen</translation> <translation id="1651008383952180276">Sie müssen zweimal dieselbe Passphrase eingeben</translation> -<translation id="1652326691684645429">Nearby Share einschalten</translation> +<translation id="1652326691684645429">Nearby Share aktivieren</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Fügen Sie den Drucker zu Google Cloud Print hinzu, damit Sie von überall aus drucken können.}other{Fügen Sie # Drucker zu Google Cloud Print hinzu, damit Sie von überall aus drucken können.}}</translation> <translation id="1656528038316521561">Deckkraft des Hintergrunds</translation> <translation id="1657406563541664238">Zur Verbesserung von <ph name="PRODUCT_NAME" /> Nutzungsstatistiken und Absturzberichte automatisch an Google senden</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index 8eeec5db..220c395 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Η κατάργηση αυτού του κωδικού πρόσβασης δεν θα διαγράψει τον λογαριασμό σας σε <ph name="DOMAIN" />. Αλλάξτε τον κωδικό πρόσβασης ή διαγράψτε τον λογαριασμό σας σε <ph name="DOMAIN_LINK" /> για να τον διατηρήσετε ασφαλή.</translation> <translation id="1084824384139382525">Αντιγραφή διεύθυνσης &συνδέσμου</translation> <translation id="1085697365578766383">Σφάλμα έναρξης του εικονικού μηχανήματος. Προσπαθήστε ξανά.</translation> +<translation id="1088659085457112967">Είσοδος σε λειτουργία ανάγνωσης</translation> <translation id="1090126737595388931">Δεν εκτελούνται εφαρμογές φόντου</translation> <translation id="1091767800771861448">Πατήστε ESCAPE για παράλειψη (Μόνο για ανεπίσημες εκδόσεις).</translation> <translation id="1093457606523402488">Ορατά δίκτυα:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Η εφαρμογή kiosk έχει ενημερωθεί. Αφαιρέστε τη συσκευή σας USB.</translation> <translation id="120368089816228251">Μουσική νότα</translation> <translation id="1203942045716040624">Shared Worker: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Λανθάνων χρόνος DNS</translation> <translation id="1205489148908752564">Ανάγνωση και αλλαγή λίστας επιτρεπόμενων χρηστών</translation> <translation id="1206407435587370571">Εξερεύνηση του Chromebook</translation> <translation id="1209796539517632982">Αυτόματοι διακομιστές ονομάτων</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Δεν ήταν αναμενόμενο αυτό το αποτέλεσμα; <ph name="BEGIN_LINK" />Αποστολή σχολίων<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Το όνομα χρήστη και ο κωδικός πρόσβασης που καταχωρίσατε δεν ταιριάζουν</translation> <translation id="1397500194120344683">Δεν υπάρχουν κατάλληλες συσκευές. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Η πύλη λαμβάνει ping</translation> <translation id="1398853756734560583">Μεγιστοποίηση</translation> <translation id="139911022479327130">Ξεκλειδώστε το τηλέφωνό σας για την επιβεβαίωση της ταυτότητάς σας.</translation> <translation id="1399511500114202393">Δεν υπάρχει πιστοποιητικό χρήστη</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Κατάργηση αυτού του ατόμου</translation> <translation id="1703331064825191675">Δεν χρειάζεται να ανησυχείτε πλέον για τους κωδικούς πρόσβασής σας</translation> <translation id="1704970325597567340">Ο έλεγχος ασφαλείας εκτελέστηκε στις <ph name="DATE" /></translation> +<translation id="1706391837335750954">Παρουσία επίλυσης DNS</translation> <translation id="1706586824377653884">Προστέθηκε από τον διαχειριστή σας</translation> <translation id="1706625117072057435">Επίπεδα εστίασης</translation> <translation id="1708338024780164500">(Ανενεργή)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">Το Chrome ελέγχεται από λογισμικό αυτοματοποιημένου ελέγχου.</translation> <translation id="2071393345806050157">Δεν υπάρχει τοπικό αρχείο καταγραφής.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Κάντε κλικ, για να εγκασταστήσετε την επέκταση}other{Κάντε κλικ, για να εγκαταστήσετε αυτές τις επεκτάσεις}}</translation> +<translation id="2073505299004274893">Χρησιμοποιήστε έως και <ph name="CHARACTER_LIMIT" /> χαρακτήρες</translation> <translation id="2075474481720804517">Μπαταρία <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="2075959085554270910">Σας επιτρέπει να ενεργοποιήσετε/απενεργοποιήσετε τη λειτουργία "άγγιγμα για κλικ" και τη μεταφορά με πάτημα</translation> <translation id="2076269580855484719">Απόκρυψη αυτής της προσθήκης</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Εισαγάγετε το PIN</translation> <translation id="241082044617551207">Άγνωστη προσθήκη</translation> <translation id="2412593942846481727">Υπάρχει διαθέσιμη ενημέρωση</translation> +<translation id="2414499877591062094">Ενεργοποίηση αυτόματης υποβολής PIN</translation> <translation id="2416435988630956212">Πλήκτρα λειτουργίας πληκτρολογίου</translation> <translation id="241727068219398187">Τα δεδομένα κρυπτογραφήθηκαν με τον κωδικό πρόσβασης Google από τις <ph name="TIME" />. Αυτά τα δεδομένα δεν περιλαμβάνουν τρόπους πληρωμής και διευθύνσεις από το Google Pay.</translation> @@ -1308,6 +1314,7 @@ <translation id="2586672484245266891">Εισαγάγετε μια πιο σύντομη διεύθυνση URL</translation> <translation id="2587922766792651800">Το χρονικό όριο έληξε</translation> <translation id="2588636910004461974">Συσκευές από <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Έξοδος από τη λειτουργία ανάγνωσης</translation> <translation id="2594999711683503743">Κάντε αναζήτηση στο Google ή πληκτρολογήστε το URL</translation> <translation id="2602501489742255173">Σύρετε προς τα επάνω για να ξεκινήσετε</translation> <translation id="2603115962224169880">Εκκαθάριση υπολογιστή</translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Ενεργοποιημένες γλώσσες</translation> <translation id="3313622045786997898">Τιμή υπογραφής πιστοποιητικού</translation> <translation id="3315158641124845231">Απόκρυψη του <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Είσοδος σε λειτουργία ανάγνωσης</translation> <translation id="3317459757438853210">Διπλής όψης</translation> <translation id="3317678681329786349">Η κάμερα και το μικρόφωνο έχουν αποκλειστεί</translation> <translation id="3319048459796106952">Νέο &παράθυρο ανώνυμης περιήγησης</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Γεια σας, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - Απομένει <ph name="TIME" /></translation> <translation id="3637682276779847508">Η κάρτα SIM θα απενεργοποιηθεί οριστικά αν δεν καταφέρετε να πληκτρολογήσετε το σωστό κλειδί ξεκλειδώματος PIN.</translation> +<translation id="3639220004740062347">Έξοδος από τη Λειτουργία ανάγνωσης</translation> <translation id="3640214691812501263">Προσθήκη "<ph name="EXTENSION_NAME" />" για <ph name="USER_NAME" />;</translation> <translation id="3640613767643722554">Εκπαιδεύστε τον Βοηθό ώστε να αναγνωρίζει τη φωνή σας</translation> <translation id="3645372836428131288">Μετακινήστε ελαφρώς για να αποτυπώσετε ένα διαφορετικό τμήμα του δακτυλικού αποτυπώματος.</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Η μεταφόρτωση του αρχείου καταγραφής είναι σε εκκρεμότητα.</translation> <translation id="3650952250015018111">Να επιτρέπεται στην εφαρμογή "<ph name="APP_NAME" />" η πρόσβαση σε:</translation> <translation id="3651488188562686558">Αποσυνδεθεί από το Wi-Fi</translation> +<translation id="3651952061994655768">Αλλαγή ονόματος</translation> <translation id="3652817283076144888">Προετοιμασία</translation> <translation id="3653160965917900914">Κοινή χρήση αρχείων δικτύου</translation> <translation id="3653842108912548333">Μετάβαση στον Βοηθό με το Voice Match</translation> @@ -2241,6 +2251,7 @@ <translation id="3748706263662799310">Αναφορά σφάλματος</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Οι συσκευές μου</translation> +<translation id="3752757212511661046">Δημιουργία προφίλ εργασίας;</translation> <translation id="3753033997400164841">Αποθηκεύστε μία φορά. Χρησιμοποιήστε παντού.</translation> <translation id="3755411799582650620">Το τηλέφωνό σας <ph name="PHONE_NAME" /> μπορεί πλέον να απενεργοποιήσει και αυτή τη συσκευή <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Ο ιστότοπος χρησιμοποιεί το μικρόφωνό σας</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Ενεργοποίηση Βοηθού Google.</translation> <translation id="387531380970557479">Το στοιχείο "<ph name="EXTENSION_NAME" />" απενεργοποιήθηκε επειδή περιέχει κακόβουλο πρόγραμμα.</translation> <translation id="3879748587602334249">Διαχείριση λήψεων</translation> +<translation id="3881478300875776315">Εμφάνιση λιγότερων γραμμών</translation> <translation id="3882165008614329320">Υπάρχον βίντεο από την κάμερα ή από αρχείο</translation> <translation id="3886446263141354045">Το αίτημά σας για να αποκτήσετε πρόσβαση σε αυτόν τον ιστότοπο έχει σταλεί στον/η(ν) <ph name="NAME" /></translation> <translation id="3888550877729210209">Λήψη σημειώσεων με την εφαρμογή <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">Συμφωνώ</translation> <translation id="413121957363593859">Στοιχεία</translation> <translation id="4131410914670010031">Ασπρόμαυρο</translation> +<translation id="413193092008917129">Ρουτίνες διαγνωστικών στοιχείων δικτύου</translation> <translation id="4133076602192971179">Ανοίξτε την εφαρμογή για να αλλάξετε τον κωδικό πρόσβασής σας</translation> <translation id="4136203100490971508">Ο Νυχτερινός φωτισμός θα απενεργοποιείται αυτόματα κατά την ανατολή του ηλίου</translation> <translation id="41365691917097717">Εάν συνεχίσετε, θα ενεργοποιηθεί ο εντοπισμός και η διόρθωση σφαλμάτων ADB για δημιουργία και δοκιμή εφαρμογών Android. Σημειώστε ότι αυτή η ενέργεια επιτρέπει την εγκατάσταση εφαρμογών Android που δεν έχουν επαληθευτεί από τη Google. Επιπλέον, απαιτείται εργοστασιακή επαναφορά για την απενεργοποίησή της.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">Άνοιγμα ληφθέντων αρχείων</translation> <translation id="4377363674125277448">Παρουσιάστηκε κάποιο πρόβλημα με το πιστοποιητικό του διακομιστή.</translation> <translation id="4378154925671717803">Τηλέφωνο</translation> +<translation id="4378373042927530923">Δεν εκτελέστηκε</translation> <translation id="4378551569595875038">Σύνδεση…</translation> <translation id="4378556263712303865">Επίταξη συσκευής</translation> <translation id="4379281552162875326">Απεγκατάσταση της εφαρμογής <ph name="APP_NAME" />;</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">&Άνοιγμα Βίντεο σε Νέα Καρτέλα</translation> <translation id="4645676300727003670">&Διατήρηση</translation> <translation id="4646675363240786305">Θύρες</translation> +<translation id="4646949265910132906">Ασφαλής σύνδεση WiFi</translation> <translation id="4647090755847581616">&Κλείσιμο καρτέλας</translation> <translation id="4647420311443994946">{0,select, tablet{Εκκίνηση εφαρμογής κατά τη σύνδεση στο tablet σας}computer{Εκκίνηση εφαρμογής κατά τη σύνδεση στον υπολογιστή σας}other{Εκκίνηση εφαρμογής κατά τη σύνδεση στη συσκευή σας}}</translation> <translation id="4647697156028544508">Εισαγάγετε το PIN για τη συσκευή "<ph name="DEVICE_NAME" />":</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510">Ο ιστότοπος <ph name="ORIGIN" /> θα μπορεί να βλέπει το αρχείο <ph name="FILENAME" /> μέχρι να κλείσετε όλες τις καρτέλες για αυτόν τον ιστότοπο</translation> <translation id="4692623383562244444">Μηχανές αναζήτησης</translation> <translation id="4693155481716051732">Σούσι</translation> +<translation id="469379815867856270">Ισχύς σήματος</translation> <translation id="4694024090038830733">Η διαμόρφωση του εκτυπωτή γίνεται από τον διαχειριστή.</translation> <translation id="4694604912444486114">Πίθηκος</translation> <translation id="4697551882387947560">Όταν η περίοδος περιήγησης λήξει</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">Αυτή η επέκταση περιέχει κακόβουλο πρόγραμμα.</translation> <translation id="4981449534399733132">Για να διαγράψετε τα δεδομένα περιήγησης από όλες τις συγχρονισμένες συσκευές σας και τον Λογαριασμό σας Google, <ph name="BEGIN_LINK" />συνδεθείτε<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Λογισμικό συσκευής</translation> +<translation id="4985509611418653372">Εκτέλεση</translation> <translation id="4986728572522335985">Με αυτήν την ενέργεια θα διαγραφούν όλα τα δεδομένα στο κλειδί ασφαλείας, συμπεριλαμβανομένου του PIN του</translation> <translation id="4988526792673242964">Σελίδες</translation> <translation id="49896407730300355">Περιστροφή προς τα &αριστερά</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">Ανάγνωση όλων των δεδομένων των ιστοτόπων που επισκέπτεστε</translation> <translation id="5242724311594467048">Ενεργοποίηση "<ph name="EXTENSION_NAME" />";</translation> <translation id="5243522832766285132">Δοκιμάστε ξανά σε λίγο</translation> +<translation id="5244406554036143958">Εισαγάγετε το PIN για ενεργοποίηση της αυτόματης υποβολής</translation> <translation id="5244474230056479698">Συγχρονισμός με <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Ξεκινήστε με σχολικό λογαριασμό</translation> <translation id="5246282308050205996">Το <ph name="APP_NAME" /> παρουσίασε σφάλμα. Κάντε κλικ σε αυτό το πλαίσιο για να επανεκκινήσετε την εφαρμογή.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Ταυτότητα</translation> <translation id="5317780077021120954">Αποθήκευση</translation> <translation id="5319359161174645648">Η Google συνιστά το Chrome</translation> +<translation id="5320135788267874712">Νέο όνομα συσκευής</translation> <translation id="532247166573571973">Ο διακομιστής μπορεί να μην είναι προσβάσιμος. Δοκιμάστε ξανά αργότερα.</translation> <translation id="5324780743567488672">Αυτόματη ρύθμιση ζώνης ώρας με χρήση της τοποθεσίας σας</translation> <translation id="5327248766486351172">Όνομα</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Να μην επιτρέπεται η πρόσβαση των ιστοτόπων στις συσκευές USB</translation> <translation id="5336688142483283574">Αυτή η σελίδα θα καταργηθεί, επίσης, από το ιστορικό σας και από τη δραστηριότητα <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Εγκαταστάθηκε από τρίτο μέρος.</translation> +<translation id="5337926771328966926">Το τρέχον όνομα συσκευής είναι <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Τοπικός αποθηκευτικός χώρος</translation> <translation id="5340638867532133571">Να επιτρέπεται σε ιστοτόπους η εγκατάσταση δεικτών χειρισμού για πληρωμές (συνιστάται)</translation> <translation id="5341793073192892252">Τα ακόλουθα cookie αποκλείστηκαν (τα cookie τρίτων μερών αποκλείονται χωρίς εξαιρέσεις)</translation> @@ -3492,6 +3512,7 @@ <translation id="5379140238605961210">Να συνεχιστεί ο αποκλεισμός πρόσβασης στο μικρόφωνο</translation> <translation id="5382591305415226340">Διαχείριση υποστηριζόμενων συνδέσμων</translation> <translation id="5383377866517186886">Η κάμερα έχει απενεργοποιηθεί στις προτιμήσεις συστήματος Mac.</translation> +<translation id="5383740867328871413">Ομάδα χωρίς όνομα - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Με σύζευξη</translation> <translation id="5389237414310520250">Δεν ήταν δυνατή η δημιουργία του νέου χρήστη. Ελέγξτε τον ελεύθερο χώρο στο σκληρό δίσκο και τα δικαιώματά σας και προσπαθήστε ξανά.</translation> <translation id="5390100381392048184">Να επιτρέπεται στους ιστοτόπους να αναπαράγουν ήχο</translation> @@ -3502,6 +3523,7 @@ <translation id="5398497406011404839">Κρυφοί σελιδοδείκτες</translation> <translation id="5398572795982417028">Η αναφορά της σελίδας βρίσκεται εκτός ορίων, το όριο είναι <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Αποκλείστηκαν διαφημίσεις</translation> +<translation id="5401938042319910061">Εκτέλεση όλων των ρουτινών</translation> <translation id="5402815541704507626">Λήψη ενημέρωσης με χρήση δεδομένων κινητής τηλεφωνίας</translation> <translation id="540296380408672091">Να γίνεται πάντα αποκλεισμός των cookie για <ph name="HOST" /></translation> <translation id="540495485885201800">Αντικατάσταση με προηγούμενο</translation> @@ -3818,6 +3840,7 @@ <translation id="57838592816432529">Σίγαση</translation> <translation id="5785583009707899920">Βοηθητικά προγράμματα διαχείρισης αρχείων του Chrome</translation> <translation id="5787146423283493983">Βασική συμφωνία</translation> +<translation id="5787420647064736989">Όνομα συσκευής</translation> <translation id="5788367137662787332">Λυπούμαστε, δεν ήταν δυνατή η προσάρτηση τουλάχιστον ενός διαμερίσματος της συσκευής <ph name="DEVICE_LABEL" />.</translation> <translation id="5790085346892983794">Επιτυχία</translation> <translation id="5790651917470750848">Η προώθηση θύρας υπάρχει ήδη</translation> @@ -4494,6 +4517,7 @@ <translation id="6648911618876616409">Μια σημαντική ενημέρωση είναι έτοιμη για εγκατάσταση. Συνδεθείτε για να ξεκινήσετε.</translation> <translation id="6649018507441623493">Περιμένετε μια στιγμή…</translation> <translation id="6649563841575838401">Η μορφή αρχείου δεν υποστηρίζεται ή το αρχείο είναι κατεστραμμένο.</translation> +<translation id="6650234781371031356">Ο κωδικός πρόσβασής σας για τον ιστότοπο <ph name="WEBSITE" /> είναι αποθηκευμένος σε αυτήν τη συσκευή και στον Λογαριασμό σας Google. Ποιον θέλετε να διαγράψετε;</translation> <translation id="665061930738760572">Άνοιγμα σε &Νέο Παράθυρο</translation> <translation id="6651237644330755633">Να θεωρείται αξιόπιστο αυτό το πιστοποιητικό για τον προσδιορισμό ιστοτόπων</translation> <translation id="665355505818177700">Η ενοποίηση του Chrome <ph name="MS_AD_NAME" /> υποστηρίζεται μόνο σε πλατφόρμες x86_64. Τα Chromebook που έχουν κατασκευαστεί σε πλατφόρμα ARM ή x86 δεν υποστηρίζουν αυτήν τη λειτουργία.</translation> @@ -4532,6 +4556,7 @@ <translation id="6701535245008341853">Δεν ήταν δυνατή η λήψη του προφίλ.</translation> <translation id="6702639462873609204">Επε&ξεργασία...</translation> <translation id="6703966911896067184">Εικόνα σφάλματος εγγραφής</translation> +<translation id="6704062477274546131">Επίλυση DNS</translation> <translation id="6706210727756204531">Εύρος</translation> <translation id="6707389671160270963">Πιστοποιητικό πελάτη SSL</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> και μία ακόμη καρτέλα}other{<ph name="PAGE_TITLE" /> και # ακόμη καρτέλες}}</translation> @@ -4589,6 +4614,7 @@ <translation id="677965093459947883">Πολύ μικρό</translation> <translation id="6781284683813954823">Σύνδεσμος doodle</translation> <translation id="6781978626986383437">Η δημιουργία αντιγράφου ασφαλείας Linux ακυρώθηκε</translation> +<translation id="6782067259631821405">Μη έγκυρο PIN</translation> <translation id="6785915470941880363">Αντίστροφη κύλιση <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Επεκτάσεις</translation> <translation id="6787839852456839824">Συντομεύσεις πληκτρολογίου</translation> @@ -4895,6 +4921,7 @@ <translation id="7141105143012495934">Η σύνδεση απέτυχε επειδή δεν ήταν δυνατή η ανάκτηση των στοιχείων του λογαριασμού σας. Επικοινωνήστε με τον διαχειριστή σας ή προσπαθήστε ξανά.</translation> <translation id="7143207342074048698">Σύνδεση</translation> <translation id="7144878232160441200">Δοκιμάστε ξανά</translation> +<translation id="714876143603641390">Συνδεσιμότητα LAN</translation> <translation id="7149893636342594995">Τελευταίες 24 ώρες</translation> <translation id="715118844758971915">Συμβατικοί εκτυπωτές</translation> <translation id="7152478047064750137">Αυτή η επέκταση δεν απαιτεί ειδικές άδειες</translation> @@ -5032,6 +5059,7 @@ <translation id="7334274148831027933">Ενεργοποίηση μεγεθυντικού φακού σε παράθυρο</translation> <translation id="7335974957018254119">Χρήση ορθογραφικού ελέγχου για</translation> <translation id="7336799713063880535">Αποκλ. ειδοποιήσεων.</translation> +<translation id="7337248890521463931">Εμφάνιση περισσότερων γραμμών</translation> <translation id="7338630283264858612">Ο σειριακός αριθμός της συσκευής δεν είναι έγκυρος.</translation> <translation id="7339763383339757376">PKCS #7, πιστοποιητικό</translation> <translation id="7339785458027436441">Ορθογραφικός Έλεγχος Κατά την Πληκτρολόγηση</translation> @@ -5414,6 +5442,7 @@ <translation id="7807711621188256451">Να επιτρέπεται πάντα στο <ph name="HOST" /> η πρόσβαση στην κάμερά σας</translation> <translation id="7810202088502699111">Έγινε αποκλεισμός των αναδυόμενων παραθύρων σε αυτήν τη σελίδα.</translation> <translation id="781167124805380294">Μετάδοση <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Δείτε τι νέο υπάρχει στο <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Αντιγραφή</translation> <translation id="7815680994978050279">Αποκλεισμός επικίνδυνης λήψης</translation> <translation id="7817361223956157679">Το πληκτρολόγιο οθόνης δεν λειτουργεί ακόμη σε εφαρμογές Linux.</translation> @@ -5643,6 +5672,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 φύλλο χαρτιού}other{{COUNT} φύλλα χαρτιού}}</translation> <translation id="8063235345342641131">Προεπιλεγμένο πράσινο avatar</translation> <translation id="8063535366119089408">Προβολή αρχείου</translation> +<translation id="8064279191081105977">Ομάδα <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Αγγίξτε για να συνδεθείτε</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Εκτύπωση ως εικόνα</translation> @@ -6386,6 +6416,7 @@ <translation id="8986362086234534611">Διαγραφή από τη μνήμη</translation> <translation id="8986494364107987395">Αυτόματη αποστολή στατιστικών στοιχείων χρήσης και αναφορών σφαλμάτων στην Google</translation> <translation id="8987927404178983737">Μήνας</translation> +<translation id="8990209962746788689">Δεν είναι δυνατή η δημιουργία κωδικού QR</translation> <translation id="8991520179165052608">Ο ιστότοπος μπορεί να χρησιμοποιήσει το μικρόφωνό σας</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 στοιχείο}other{# στοιχεία}}</translation> <translation id="899384117894244799">Κατάργηση περιορισμένου χρήστη</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index ee8c03f..028d6ed 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Removing this password will not delete your account on <ph name="DOMAIN" />. Change your password or delete your account on <ph name="DOMAIN_LINK" /> to keep it safe from others.</translation> <translation id="1084824384139382525">Copy link addr&ess</translation> <translation id="1085697365578766383">Error starting the virtual machine. Please try again.</translation> +<translation id="1088659085457112967">Enter Reader Mode</translation> <translation id="1090126737595388931">No Background Apps Running</translation> <translation id="1091767800771861448">Press ESCAPE to skip (Non-official builds only).</translation> <translation id="1093457606523402488">Visible Networks:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Kiosk app has been updated. Please remove the USB stick.</translation> <translation id="120368089816228251">Music note</translation> <translation id="1203942045716040624">Shared worker: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">DNS latency</translation> <translation id="1205489148908752564">Read and change whitelisted users</translation> <translation id="1206407435587370571">Explore your Chromebook</translation> <translation id="1209796539517632982">Automatic name servers</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Was this result unexpected? <ph name="BEGIN_LINK" />Send feedback<ph name="END_LINK" /></translation> <translation id="1396963298126346194">The username and password that you entered do not match</translation> <translation id="1397500194120344683">No eligible devices. <ph name="LINK_BEGIN" />Find out more<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Gateway can be pinged</translation> <translation id="1398853756734560583">Maximise</translation> <translation id="139911022479327130">Unlock your phone and confirm that it's you</translation> <translation id="1399511500114202393">No user certificate</translation> @@ -541,7 +544,7 @@ <translation id="164936512206786300">Unpair Bluetooth device</translation> <translation id="1650371550981945235">Show input options</translation> <translation id="1651008383952180276">You must enter the same passphrase twice</translation> -<translation id="1652326691684645429">Enable Nearby Sharing</translation> +<translation id="1652326691684645429">Enable Nearby Share</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Add the printer to Google Cloud Print so that you can print from anywhere.}other{Add # printers to Google Cloud Print so that you can print from anywhere.}}</translation> <translation id="1656528038316521561">Background opacity</translation> <translation id="1657406563541664238">Help make <ph name="PRODUCT_NAME" /> better by automatically sending usage statistics and crash reports to Google.</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Remove this person</translation> <translation id="1703331064825191675">Never worry about your passwords</translation> <translation id="1704970325597567340">Safety check ran on <ph name="DATE" /></translation> +<translation id="1706391837335750954">DNS resolver present</translation> <translation id="1706586824377653884">Added by your administrator</translation> <translation id="1706625117072057435">Zoom levels</translation> <translation id="1708338024780164500">(Inactive)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">Chrome is being controlled by automated test software.</translation> <translation id="2071393345806050157">No local log file.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Click to install the extension}other{Click to install these extensions}}</translation> +<translation id="2073505299004274893">Use <ph name="CHARACTER_LIMIT" /> characters or fewer</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% Battery</translation> <translation id="2075959085554270910">Allows you to enable/disable tap-to-click and tap dragging</translation> <translation id="2076269580855484719">Hide this plug-in</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Enter your PIN</translation> <translation id="241082044617551207">Unknown plug-in</translation> <translation id="2412593942846481727">Update available</translation> +<translation id="2414499877591062094">Enable auto-submit PIN</translation> <translation id="2416435988630956212">Keyboard function keys</translation> <translation id="241727068219398187">Data was encrypted with your Google password as of <ph name="TIME" />. This doesn't include payment methods and addresses from Google Pay.</translation> @@ -1308,6 +1314,7 @@ <translation id="2586672484245266891">Please enter a shorter URL</translation> <translation id="2587922766792651800">Timed out</translation> <translation id="2588636910004461974">Devices from <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Exit reader mode</translation> <translation id="2594999711683503743">Search Google or type URL</translation> <translation id="2602501489742255173">Swipe up to get started</translation> <translation id="2603115962224169880">Clean up computer</translation> @@ -1670,7 +1677,7 @@ <translation id="3022978424994383087">Didn't get that.</translation> <translation id="3023464535986383522">Select to speak</translation> <translation id="3024374909719388945">Use 24-hour clock</translation> -<translation id="3027296729579831126">Turn on Nearby Sharing</translation> +<translation id="3027296729579831126">Turn on Nearby Share</translation> <translation id="3029466929721441205">Show stylus tools in shelf</translation> <translation id="3031417829280473749">Agent X</translation> <translation id="3031557471081358569">Select items to be imported:</translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Enabled languages</translation> <translation id="3313622045786997898">Certificate Signature Value</translation> <translation id="3315158641124845231">Hide <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Enter reader mode</translation> <translation id="3317459757438853210">Two-sided</translation> <translation id="3317678681329786349">Camera and microphone blocked</translation> <translation id="3319048459796106952">New &incognito window</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Hi, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> left</translation> <translation id="3637682276779847508">Your SIM card will be permanently disabled if you cannot enter the correct PIN Unlock Key.</translation> +<translation id="3639220004740062347">Exit Reader Mode</translation> <translation id="3640214691812501263">Add "<ph name="EXTENSION_NAME" />" for <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Teach your Assistant to recognise your voice</translation> <translation id="3645372836428131288">Move slightly to capture a different part of the fingerprint.</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Log upload pending.</translation> <translation id="3650952250015018111">Allow '<ph name="APP_NAME" />' to access:</translation> <translation id="3651488188562686558">Disconnect from Wi-Fi</translation> +<translation id="3651952061994655768">Change name</translation> <translation id="3652817283076144888">Initialising</translation> <translation id="3653160965917900914">Network file shares</translation> <translation id="3653842108912548333">Access your Assistant with Voice Match</translation> @@ -2241,6 +2251,7 @@ <translation id="3748706263662799310">Report a bug</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">My devices</translation> +<translation id="3752757212511661046">Create work profile?</translation> <translation id="3753033997400164841">Store once. Use everywhere</translation> <translation id="3755411799582650620">Your <ph name="PHONE_NAME" /> can now unlock this <ph name="DEVICE_TYPE" /> too.</translation> <translation id="375636864092143889">Site is using your microphone</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Turn on Google Assistant</translation> <translation id="387531380970557479">'<ph name="EXTENSION_NAME" />' has been disabled because it contains malware.</translation> <translation id="3879748587602334249">Download manager</translation> +<translation id="3881478300875776315">Show fewer lines</translation> <translation id="3882165008614329320">Existing video from camera or file</translation> <translation id="3886446263141354045">Your request to access this site has been sent to <ph name="NAME" /></translation> <translation id="3888550877729210209">Taking notes with <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">I agree</translation> <translation id="413121957363593859">Components</translation> <translation id="4131410914670010031">Black and white</translation> +<translation id="413193092008917129">Network diagnostic routines</translation> <translation id="4133076602192971179">Open the app to change your password</translation> <translation id="4136203100490971508">Night Light will turn off automatically at sunrise</translation> <translation id="41365691917097717">Continuing will enable ADB debugging for creating and testing Android apps. Note that this action allows installation of Android apps that haven't been verified by Google, and requires a factory reset to disable.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">Open downloaded files</translation> <translation id="4377363674125277448">There was a problem with server's certificate.</translation> <translation id="4378154925671717803">Phone</translation> +<translation id="4378373042927530923">Not run</translation> <translation id="4378551569595875038">Connecting...</translation> <translation id="4378556263712303865">Device requisition</translation> <translation id="4379281552162875326">Uninstall '<ph name="APP_NAME" />'?</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">&Open Video in New Tab</translation> <translation id="4645676300727003670">&Keep</translation> <translation id="4646675363240786305">Ports</translation> +<translation id="4646949265910132906">Secure Wi-Fi connection</translation> <translation id="4647090755847581616">&Close Tab</translation> <translation id="4647420311443994946">{0,select, tablet{Start app when you sign in to your tablet}computer{Start app when you sign in to your computer}other{Start app when you sign in to your device}}</translation> <translation id="4647697156028544508">Please enter the PIN for "<ph name="DEVICE_NAME" />":</translation> @@ -2966,7 +2981,7 @@ <translation id="4673442866648850031">Open stylus tools when the stylus is removed</translation> <translation id="4677772697204437347">GPU memory</translation> <translation id="4680105648806843642">Sound was muted on this page</translation> -<translation id="4681453295291708042">Disable Nearby Sharing</translation> +<translation id="4681453295291708042">Disable Nearby Share</translation> <translation id="4681930562518940301">Open original image in new tab</translation> <translation id="4682551433947286597">Wallpapers appear on the Sign-in Screen.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (default)</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> will be able to view <ph name="FILENAME" /> until you close all tabs for this site</translation> <translation id="4692623383562244444">Search engines</translation> <translation id="4693155481716051732">Sushi</translation> +<translation id="469379815867856270">Signal strength</translation> <translation id="4694024090038830733">Printer configuration is handled by the administrator.</translation> <translation id="4694604912444486114">Monkey</translation> <translation id="4697551882387947560">When the browsing session ends</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">This extension contains malware.</translation> <translation id="4981449534399733132">To clear browsing data from all of your synced devices and your Google Account, <ph name="BEGIN_LINK" />sign in<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Device software</translation> +<translation id="4985509611418653372">Run</translation> <translation id="4986728572522335985">This will delete all data on the security key, including its PIN</translation> <translation id="4988526792673242964">Pages</translation> <translation id="49896407730300355">Rotate a&nti-clockwise</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">Read all your data on the websites that you visit</translation> <translation id="5242724311594467048">Enable "<ph name="EXTENSION_NAME" />"?</translation> <translation id="5243522832766285132">Please try again in a few moments</translation> +<translation id="5244406554036143958">Enter your PIN to enable auto-submit</translation> <translation id="5244474230056479698">Syncing to <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Get started with a school account</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> has crashed. Click this balloon to restart the app.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Identity</translation> <translation id="5317780077021120954">Save</translation> <translation id="5319359161174645648">Google recommends Chrome</translation> +<translation id="5320135788267874712">New device name</translation> <translation id="532247166573571973">The server may be unreachable. Try again later.</translation> <translation id="5324780743567488672">Set time zone automatically using your location</translation> <translation id="5327248766486351172">Name</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Do not allow any sites to access USB devices</translation> <translation id="5336688142483283574">This page will also be removed from your history and <ph name="SEARCH_ENGINE" /> activity.</translation> <translation id="5337771866151525739">Installed by a third party.</translation> +<translation id="5337926771328966926">Current device name is <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Local storage</translation> <translation id="5340638867532133571">Allow sites to install payment handlers (recommended)</translation> <translation id="5341793073192892252">The following cookies were blocked (third-party cookies are being blocked without exception)</translation> @@ -3492,6 +3512,7 @@ <translation id="5379140238605961210">Continue blocking microphone access</translation> <translation id="5382591305415226340">Manage supported links</translation> <translation id="5383377866517186886">Camera is turned off in Mac System Preferences</translation> +<translation id="5383740867328871413">Unnamed group – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Paired</translation> <translation id="5389237414310520250">The new user couldn't be created. Please check your hard drive space and permissions and try again.</translation> <translation id="5390100381392048184">Allow sites to play sound</translation> @@ -3502,6 +3523,7 @@ <translation id="5398497406011404839">Hidden bookmarks</translation> <translation id="5398572795982417028">Out of bounds page reference, limit is <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Ads blocked</translation> +<translation id="5401938042319910061">Run all routines</translation> <translation id="5402815541704507626">Download update using mobile data</translation> <translation id="540296380408672091">Always block cookies on <ph name="HOST" /></translation> <translation id="540495485885201800">Swap with previous</translation> @@ -3783,7 +3805,7 @@ <translation id="5739017626473506901">Sign in to help <ph name="USER_NAME" /> add a school account</translation> <translation id="5739235828260127894">Waiting for verification. <ph name="LINK_BEGIN" />Find out more<ph name="LINK_END" /></translation> <translation id="5739458112391494395">Very large</translation> -<translation id="5740328398383587084">Nearby Sharing</translation> +<translation id="5740328398383587084">Nearby Share</translation> <translation id="574104302965107104">Display mirroring</translation> <translation id="574209121243317957">Pitch</translation> <translation id="5746169159649715125">Save as PDF</translation> @@ -3817,6 +3839,7 @@ <translation id="57838592816432529">Mute</translation> <translation id="5785583009707899920">Chrome File Utilities</translation> <translation id="5787146423283493983">Key Agreement</translation> +<translation id="5787420647064736989">Device name</translation> <translation id="5788367137662787332">Sorry, at least one partition on the device <ph name="DEVICE_LABEL" /> could not be mounted.</translation> <translation id="5790085346892983794">Success</translation> <translation id="5790651917470750848">Port forward already exists</translation> @@ -4493,6 +4516,7 @@ <translation id="6648911618876616409">A critical update is ready to install. Sign in to get started.</translation> <translation id="6649018507441623493">Just a sec...</translation> <translation id="6649563841575838401">The archive format is not supported, or the file is broken.</translation> +<translation id="6650234781371031356">Your password for <ph name="WEBSITE" /> is stored on this device and in your Google Account. Which one do you want to delete?</translation> <translation id="665061930738760572">Open in &New Window</translation> <translation id="6651237644330755633">Trust this certificate for identifying websites</translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> integration is only supported on x86_64 platforms. Chromebooks built on top of an ARM or x86 platform do not support this functionality.</translation> @@ -4531,6 +4555,7 @@ <translation id="6701535245008341853">Could not get profile.</translation> <translation id="6702639462873609204">&Edit...</translation> <translation id="6703966911896067184">Enrolment error illustration</translation> +<translation id="6704062477274546131">DNS resolution</translation> <translation id="6706210727756204531">Scope</translation> <translation id="6707389671160270963">SSL Client Certificate</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> and 1 Other Tab}other{<ph name="PAGE_TITLE" /> and # Other Tabs}}</translation> @@ -4588,6 +4613,7 @@ <translation id="677965093459947883">Very small</translation> <translation id="6781284683813954823">Doodle Link</translation> <translation id="6781978626986383437">Linux backup cancelled</translation> +<translation id="6782067259631821405">Invalid PIN</translation> <translation id="6785915470941880363">Reverse scrolling <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Extensions</translation> <translation id="6787839852456839824">Keyboard shortcuts</translation> @@ -4739,7 +4765,7 @@ <translation id="6965978654500191972">Device</translation> <translation id="696780070563539690">Sites can't use your cookies to see your browsing activity across different sites, for example, to personalise ads</translation> <translation id="6968288415730398122">Enter your password to configure screen lock</translation> -<translation id="6969047215179982698">Turn off Nearby Sharing</translation> +<translation id="6969047215179982698">Turn off Nearby Share</translation> <translation id="6970480684834282392">Startup type</translation> <translation id="6970856801391541997">Print Specific Pages</translation> <translation id="6972180789171089114">Audio/Video</translation> @@ -4894,6 +4920,7 @@ <translation id="7141105143012495934">Sign-in failed because your account details could not be retrieved. Please contact your administrator or try again.</translation> <translation id="7143207342074048698">Connecting ...</translation> <translation id="7144878232160441200">Retry</translation> +<translation id="714876143603641390">LAN connectivity</translation> <translation id="7149893636342594995">Last 24 Hours</translation> <translation id="715118844758971915">Classic printers</translation> <translation id="7152478047064750137">This extension requires no special permissions</translation> @@ -5031,6 +5058,7 @@ <translation id="7334274148831027933">Enable docked magnifier</translation> <translation id="7335974957018254119">Use spell check for</translation> <translation id="7336799713063880535">Notifications blocked.</translation> +<translation id="7337248890521463931">Show more lines</translation> <translation id="7338630283264858612">Device serial number is invalid.</translation> <translation id="7339763383339757376">PKCS #7, single certificate</translation> <translation id="7339785458027436441">Check Spelling While Typing</translation> @@ -5413,6 +5441,7 @@ <translation id="7807711621188256451">Always allow <ph name="HOST" /> to access your camera</translation> <translation id="7810202088502699111">Pop-ups were blocked on this page.</translation> <translation id="781167124805380294">Cast <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">See what's new on your <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Copy</translation> <translation id="7815680994978050279">Dangerous download blocked</translation> <translation id="7817361223956157679">The on-screen keyboard doesn’t work in Linux apps yet</translation> @@ -5642,6 +5671,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 sheet of paper}other{{COUNT} sheets of paper}}</translation> <translation id="8063235345342641131">Default green avatar</translation> <translation id="8063535366119089408">View file</translation> +<translation id="8064279191081105977">Group <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Touch to sign in</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Print as image</translation> @@ -6387,6 +6417,7 @@ <translation id="8986362086234534611">Forget</translation> <translation id="8986494364107987395">Automatically send usage statistics and crash reports to Google</translation> <translation id="8987927404178983737">Month</translation> +<translation id="8990209962746788689">Can't create QR code</translation> <translation id="8991520179165052608">Site can use your microphone</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 item}other{# items}}</translation> <translation id="899384117894244799">Remove restricted user</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 5845f2e8..1e092ee 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -233,6 +233,7 @@ <translation id="1274997165432133392">Cookies y otros datos de sitios</translation> <translation id="1275718070701477396">Seleccionado</translation> <translation id="1276994519141842946">No se ha podido desinstalar <ph name="APP_NAME" /></translation> +<translation id="127946606521051357">Un dispositivo cercano está compartiendo datos</translation> <translation id="1280820357415527819">Buscando redes móviles</translation> <translation id="1280965841156951489">Editar archivos</translation> <translation id="1285320974508926690">No traducir nunca este sitio</translation> @@ -1221,6 +1222,7 @@ <translation id="2489918096470125693">Añadir &carpeta...</translation> <translation id="2490481887078769936">Se ha quitado "<ph name="FILE_NAME" />" de la lista</translation> <translation id="249113932447298600">Lo sentimos, pero el dispositivo <ph name="DEVICE_LABEL" /> no se admite en este momento.</translation> +<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> está compartiendo <ph name="ATTACHMENTS" /> contigo.</translation> <translation id="2492461744635776704">Preparando solicitud de firma de certificado</translation> <translation id="249303669840926644">No se ha podido completar el registro</translation> <translation id="2495777824269688114">Descubre más funciones o consigue respuestas. Selecciona ? para obtener ayuda.</translation> @@ -4151,6 +4153,7 @@ <translation id="6212039847102026977">Mostrar propiedades de red avanzadas</translation> <translation id="6212168817037875041">Apagar la pantalla</translation> <translation id="6212752530110374741">Enviar enlace por correo electrónico</translation> +<translation id="6213230117190778270">Recibir</translation> <translation id="6216696360484424239">Iniciar sesión automáticamente</translation> <translation id="6218058416316985984"><ph name="DEVICE_TYPE" /> no tiene conexión. Conéctate a Internet e inténtalo de nuevo.</translation> <translation id="6220413761270491930">Error al cargar extensión</translation> @@ -4278,6 +4281,7 @@ <translation id="6362853299801475928">&Notificar un error...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">Añadir familiares y amigos</translation> +<translation id="6367985768157257101">¿Recibir a través de Compartir con Nearby?</translation> <translation id="636850387210749493">Registro de empresa</translation> <translation id="6370021412472292592">No se ha podido cargar el archivo de manifiesto.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -6580,6 +6584,7 @@ <translation id="939519157834106403">SSID</translation> <translation id="939598580284253335">Introducir frase de contraseña</translation> <translation id="939736085109172342">Nueva carpeta</translation> +<translation id="941070664607309480">Haz clic para hacer que tu dispositivo sea visible y permitir que el dispositivo cercano pueda compartir datos contigo.</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> está compartiendo audio y una pestaña de Chrome.</translation> <translation id="945522503751344254">Enviar comentarios</translation> <translation id="947329552760389097">&Inspeccionar elementos</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 170a46b1..5b9f6d8 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -541,7 +541,7 @@ <translation id="164936512206786300">Poista Bluetooth-laitteen pari</translation> <translation id="1650371550981945235">Näytä syöttöasetukset</translation> <translation id="1651008383952180276">Kirjoita sama tunnuslause kahdesti.</translation> -<translation id="1652326691684645429">Ota Lähijakaminen käyttöön</translation> +<translation id="1652326691684645429">Ota lähijakaminen käyttöön</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Lisää tulostin Google Cloud Printiin, jotta voit tulostaa mistä tahansa.}other{Lisää # tulostinta Google Cloud Printiin, jotta voit tulostaa mistä tahansa.}}</translation> <translation id="1656528038316521561">Taustan läpinäkyvyys</translation> <translation id="1657406563541664238">Auta parantamaan tuotetta <ph name="PRODUCT_NAME" /> lähettämällä automaattisesti käyttötilastoja ja virheraportteja Googlelle.</translation> @@ -1670,7 +1670,7 @@ <translation id="3022978424994383087">En ymmärtänyt.</translation> <translation id="3023464535986383522">Teksti puhuttuna</translation> <translation id="3024374909719388945">Käytä 24 tunnin kelloa</translation> -<translation id="3027296729579831126">Laita Lähijakaminen päälle</translation> +<translation id="3027296729579831126">Laita lähijakaminen päälle</translation> <translation id="3029466929721441205">Näytä näyttökynätyökalut hyllyssä</translation> <translation id="3031417829280473749">Agentti X</translation> <translation id="3031557471081358569">Valitse tuotavat kohteet:</translation> @@ -2963,7 +2963,7 @@ <translation id="4673442866648850031">Avaa näyttökynätyökalut, kun näyttökynä otetaan esille</translation> <translation id="4677772697204437347">GPU-muisti</translation> <translation id="4680105648806843642">Ääni mykistettiin tällä sivulla</translation> -<translation id="4681453295291708042">Poista Lähijakaminen käytöstä</translation> +<translation id="4681453295291708042">Poista lähijakaminen käytöstä</translation> <translation id="4681930562518940301">Avaa alkuperäinen &kuva uudessa välilehdessä</translation> <translation id="4682551433947286597">Taustakuva näytetään kirjautumisruudulla.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" /> % (oletus)</translation> @@ -4738,7 +4738,7 @@ <translation id="6965978654500191972">Laite</translation> <translation id="696780070563539690">Sivustot eivät voi nähdä evästeiden kautta selaustoimintaasi eri sivustoilla esim. personoidakseen mainoksia</translation> <translation id="6968288415730398122">Määritä näytön lukitus antamalla salasanasi.</translation> -<translation id="6969047215179982698">Laita Lähijakaminen pois päältä</translation> +<translation id="6969047215179982698">Laita lähijakaminen pois päältä</translation> <translation id="6970480684834282392">Käynnistystyyppi</translation> <translation id="6970856801391541997">Tulosta tietyt sivut</translation> <translation id="6972180789171089114">Ääni- ja videotiedostot</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index 806faa2..f74b204d 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -749,7 +749,7 @@ <translation id="1887850431809612466">Version du matériel</translation> <translation id="1888523338879380247">{0,plural, =1{Dernier jour pour mettre à jour l'appareil}one{Mettre à jour l'appareil sous # jour}other{Mettre à jour l'appareil sous # jours}}</translation> <translation id="1890674179660343635"><span>Identifiant</span> : <ph name="EXTENSION_ID" /></translation> -<translation id="1891760696839073783">Réception de <ph name="ATTACHMENTS" /> depuis le <ph name="DEVICE_NAME" /></translation> +<translation id="1891760696839073783">Réception de <ph name="ATTACHMENTS" /> depuis l'appareil <ph name="DEVICE_NAME" /></translation> <translation id="189210018541388520">Ouvrir en mode plein écran</translation> <translation id="1892341345406963517">Bonjour <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Autres langues</translation> @@ -1670,7 +1670,7 @@ <translation id="3022978424994383087">Je n'ai pas compris.</translation> <translation id="3023464535986383522">Sélectionner pour prononcer</translation> <translation id="3024374909719388945">Utiliser l'horloge au format 24 heures</translation> -<translation id="3027296729579831126">Activer le partage à proximité</translation> +<translation id="3027296729579831126">Activer le Partage à proximité</translation> <translation id="3029466929721441205">Afficher les outils de stylet sur l'étagère</translation> <translation id="3031417829280473749">Agent X</translation> <translation id="3031557471081358569">Sélectionnez les éléments à importer :</translation> @@ -2966,7 +2966,7 @@ <translation id="4673442866648850031">Ouvrir les outils de stylet lors du retrait du stylet</translation> <translation id="4677772697204437347">Mémoire du processeur graphique</translation> <translation id="4680105648806843642">Le son a été désactivé sur cette page</translation> -<translation id="4681453295291708042">Désactiver le partage à proximité</translation> +<translation id="4681453295291708042">Désactiver le Partage à proximité</translation> <translation id="4681930562518940301">Ouvrir l'image originale dans un nouvel onglet</translation> <translation id="4682551433947286597">Les fonds d'écran s'affichent sur l'écran de connexion.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" /> % (par défaut)</translation> @@ -4740,7 +4740,7 @@ <translation id="6965978654500191972">Périphérique</translation> <translation id="696780070563539690">Les sites ne peuvent pas utiliser vos cookies pour voir votre activité de navigation sur l'ensemble des différents sites (par exemple, pour personnaliser les annonces)</translation> <translation id="6968288415730398122">Saisissez votre mot de passe pour configurer le verrouillage de l'écran</translation> -<translation id="6969047215179982698">Désactiver le partage à proximité</translation> +<translation id="6969047215179982698">Désactiver le Partage à proximité</translation> <translation id="6970480684834282392">Type de démarrage</translation> <translation id="6970856801391541997">Imprimer des pages spécifiques</translation> <translation id="6972180789171089114">Audio/Vidéo</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 6f5a6e5..01ff63f 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -233,6 +233,7 @@ <translation id="1274997165432133392">કુકીઝ અને અન્ય સાઇટ ડેટા</translation> <translation id="1275718070701477396">પસંદ કરેલું</translation> <translation id="1276994519141842946"><ph name="APP_NAME" />ને અનઇન્સ્ટૉલ કરી શક્યાં નહીં</translation> +<translation id="127946606521051357">નજીકનું ડિવાઇસ શેર કરી રહ્યું છે</translation> <translation id="1280820357415527819">મોબાઇલ નેટવર્ક માટે શોધી રહ્યાં છીએ</translation> <translation id="1280965841156951489">ફાઇલોમાં ફેરફાર કરો</translation> <translation id="1285320974508926690">આ સાઇટનું ક્યારેય ભાષાંતર કરશો નહીં</translation> @@ -1217,6 +1218,7 @@ <translation id="2489918096470125693">&ફોલ્ડર ઉમેરો...</translation> <translation id="2490481887078769936"><ph name="FILE_NAME" />ને સૂચિમાંથી કાઢી નાખી</translation> <translation id="249113932447298600">માફ કરશો, આ સમયે ઉપકરણ <ph name="DEVICE_LABEL" /> ને સપોર્ટ નથી.</translation> +<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> તમારી સાથે <ph name="ATTACHMENTS" /> શેર કરી રહ્યું છે.</translation> <translation id="2492461744635776704">પ્રમાણપત્ર પર સહી કરવાની વિનંતીની પ્રક્રિયા ચાલુ છે</translation> <translation id="249303669840926644">નોંધણી પૂર્ણ કરી શકાઈ નથી</translation> <translation id="2495777824269688114">વધુ સુવિધાઓ શોધો અથવા જવાબ મેળવો. સહાય માટે "?"ને પસંદ કરો.</translation> @@ -4150,6 +4152,7 @@ <translation id="6212039847102026977">વિગતવાર નેટવર્ક ગુણધર્મો બતાવો</translation> <translation id="6212168817037875041">ડિસ્પ્લે બંધ કરો</translation> <translation id="6212752530110374741">લિંક ઇમેઇલ કરો</translation> +<translation id="6213230117190778270">મેળવો</translation> <translation id="6216696360484424239">ઑટોમેટિક રીતે સાઇન ઇન કરો</translation> <translation id="6218058416316985984"><ph name="DEVICE_TYPE" /> ઑફલાઇન છે. ઇન્ટરનેટથી કનેક્ટ કરો અને ફરી પ્રયાસ કરો.</translation> <translation id="6220413761270491930">એક્સ્ટેન્શન લોડ કરવામાં ભૂલ</translation> @@ -4277,6 +4280,7 @@ <translation id="6362853299801475928">&સમસ્યાની જાણ કરો...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">કુટુંબીજનો અને મિત્રોને ઉમેરો</translation> +<translation id="6367985768157257101">શું 'નજીકના શેર' સાથે મેળવવા માગો છો?</translation> <translation id="636850387210749493">સંગઠન નોંધણી</translation> <translation id="6370021412472292592">મેનિફેસ્ટ લોડ કરી શકાયું નથી.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -6573,6 +6577,7 @@ <translation id="939519157834106403">SSID</translation> <translation id="939598580284253335">પાસફ્રેઝ દાખલ કરો</translation> <translation id="939736085109172342">નવું ફોલ્ડર</translation> +<translation id="941070664607309480">તમારી સાથે તે શેર કરી શકે તે માટે, ક્લિક કરો જેથી તમે દેખાઈ શકો</translation> <translation id="942532530371314860"><ph name="APP_NAME" />, Chrome ટૅબ અને ઑડિઓને શેર કરી રહી છે.</translation> <translation id="945522503751344254">પ્રતિસાદ મોકલો</translation> <translation id="947329552760389097">&ઘટકોની તપાસ કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index 51527767..b766e85 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -4281,7 +4281,7 @@ <translation id="6362853299801475928">किसी समस्या की &रिपोर्ट करें...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">परिवार और मित्रों को जोड़ें</translation> -<translation id="6367985768157257101">क्या आप 'आस-पास शेयर करना' सुविधा की मदद से चीज़ें पाना चाहते हैं?</translation> +<translation id="6367985768157257101">क्या आप आस-पास शेयर करने की सुविधा से चीज़ें पाना चाहते हैं?</translation> <translation id="636850387210749493">एंटरप्राइज़ नामांकन</translation> <translation id="6370021412472292592">मेनिफ़ेस्ट लोड नहीं किया जा सका.</translation> <translation id="6374077068638737855">Iceweasel</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index 79e11335..6d196159 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Uklanjanjem zaporke neće se izbrisati vaš račun na <ph name="DOMAIN" />. Izmijenite zaporku ili izbrišite račun na <ph name="DOMAIN_LINK" /> da biste ga zaštitili od drugih.</translation> <translation id="1084824384139382525">Kopiraj adresu &veze</translation> <translation id="1085697365578766383">Došlo je do pogreške prilikom pokretanja virtualnog računala. Pokušajte ponovo.</translation> +<translation id="1088659085457112967">Pokreni način čitača</translation> <translation id="1090126737595388931">Nema pokrenutih pozadinskih aplikacija</translation> <translation id="1091767800771861448">Pritisnite tipku ESCAPE za preskakanje (samo neslužbene međuverzije).</translation> <translation id="1093457606523402488">Vidljive mreže:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Aplikacija kioska ažurirana je. Uklonite USB privjesak.</translation> <translation id="120368089816228251">Glazbena nota</translation> <translation id="1203942045716040624">Dijeljeni radnik: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Latencija DNS-a</translation> <translation id="1205489148908752564">čitati i mijenjati korisnike na popisu dopuštenih</translation> <translation id="1206407435587370571">Istražite svoj Chromebook</translation> <translation id="1209796539517632982">Automatski poslužitelji naziva</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Je li taj rezultat bio neočekivan? <ph name="BEGIN_LINK" />Pošaljite svoje dojmove<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Unijeli ste e-adresu i zaporku koje se ne podudaraju</translation> <translation id="1397500194120344683">Nema uređaja koji ispunjavaju uvjete. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Pristupnik se može pingati</translation> <translation id="1398853756734560583">Maksimiziraj</translation> <translation id="139911022479327130">Otključajte telefon i potvrdite da ste to vi</translation> <translation id="1399511500114202393">Nema korisničkog certifikata</translation> @@ -541,7 +544,7 @@ <translation id="164936512206786300">Rasparivanje Bluetooth uređaja</translation> <translation id="1650371550981945235">Prikaži opcije unosa</translation> <translation id="1651008383952180276">Morate dvaput unijeti istu šifru</translation> -<translation id="1652326691684645429">Omogućivanje značajke Dijeljenje s Android uređajima</translation> +<translation id="1652326691684645429">Omogući Dijeljenje s Android uređajima</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Dodajte pisač na Google Cloud Print kako biste mogli ispisivati s bilo kojeg mjesta.}one{Dodajte # pisač na Google Cloud Print kako biste mogli ispisivati s bilo kojeg mjesta.}few{Dodajte # pisača na Google Cloud Print kako biste mogli ispisivati s bilo kojeg mjesta.}other{Dodajte # pisača na Google Cloud Print kako biste mogli ispisivati s bilo kojeg mjesta.}}</translation> <translation id="1656528038316521561">Prozirnost pozadine</translation> <translation id="1657406563541664238">Olakšajte nam poboljšanje preglednika <ph name="PRODUCT_NAME" /> automatskim slanjem statistike o upotrebi i izvješća o padu programa Googleu</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Ukloni ovu osobu</translation> <translation id="1703331064825191675">Ne morate se brinuti za svoje zaporke</translation> <translation id="1704970325597567340">Sigurnosna provjera izvršena je <ph name="DATE" /></translation> +<translation id="1706391837335750954">Prisutnost DNS prevoditelja</translation> <translation id="1706586824377653884">Dodao vaš administrator</translation> <translation id="1706625117072057435">Razine zumiranja</translation> <translation id="1708338024780164500">(Neaktivno)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">Chromeom upravlja automatizirani testni softver.</translation> <translation id="2071393345806050157">Nema lokalne datoteke zapisnika.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Kliknite da biste instalirali proširenje}one{Kliknite da biste instalirali ova proširenja}few{Kliknite da biste instalirali ova proširenja}other{Kliknite da biste instalirali ova proširenja}}</translation> +<translation id="2073505299004274893">Broj znakova ne smije biti veći od <ph name="CHARACTER_LIMIT" /></translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% baterije</translation> <translation id="2075959085554270910">Omogućuje uključivanje i isključivanje klikanja dodirom i povlačenja dodirom</translation> <translation id="2076269580855484719">Sakrij ovaj dodatak</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Unesite PIN</translation> <translation id="241082044617551207">Nepoznati dodatak</translation> <translation id="2412593942846481727">Dostupno je ažuriranje</translation> +<translation id="2414499877591062094">Omogući automatsko slanje PIN-a</translation> <translation id="2416435988630956212">Funkcijske tipke na tipkovnici</translation> <translation id="241727068219398187">Podaci su kriptirani vašom Google zaporkom od <ph name="TIME" />. To ne uključuje načine plaćanja i adrese s Google Paya.</translation> @@ -1308,6 +1314,7 @@ <translation id="2586672484245266891">Unesite kraći URL</translation> <translation id="2587922766792651800">Vrijeme je isteklo</translation> <translation id="2588636910004461974">Uređaji dobavljača <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Zatvori način čitača</translation> <translation id="2594999711683503743">Pretražite na Googleu ili unesite URL</translation> <translation id="2602501489742255173">Prijeđite prstom prema gore za početak</translation> <translation id="2603115962224169880">Očistite računalo</translation> @@ -1670,7 +1677,7 @@ <translation id="3022978424994383087">Nisam shvatio.</translation> <translation id="3023464535986383522">Odabir za govor</translation> <translation id="3024374909719388945">Koristi 24-satni sat</translation> -<translation id="3027296729579831126">Uključite Dijeljenje s Android uređajima</translation> +<translation id="3027296729579831126">Uključi Dijeljenje s Android uređajima</translation> <translation id="3029466929721441205">Prikaz alata pisaljke na polici</translation> <translation id="3031417829280473749">Agentica X</translation> <translation id="3031557471081358569">Odaberi stavke za uvoz:</translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Omogućeni jezici</translation> <translation id="3313622045786997898">Vrijednost potpisa certifikata</translation> <translation id="3315158641124845231">Sakrij preglednik <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Pokreni način čitača</translation> <translation id="3317459757438853210">Obostrano</translation> <translation id="3317678681329786349">Blokirani su kamera i mikrofon</translation> <translation id="3319048459796106952">&Novi anonimni prozor</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Pozdrav, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – još <ph name="TIME" /></translation> <translation id="3637682276779847508">SIM kartica trajno će se onemogućiti ako ne unesete točan ključ za otključavanje PIN-a</translation> +<translation id="3639220004740062347">Zatvori način čitača</translation> <translation id="3640214691812501263">Želite li dodati proširenje "<ph name="EXTENSION_NAME" />" za korisnika <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Naučite Asistent da prepoznaje vaš glas</translation> <translation id="3645372836428131288">Lagano pomaknite prst da biste snimili različite dijelove otiska prsta.</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Prijenos zapisnika na čekanju.</translation> <translation id="3650952250015018111">Dopusti aplikaciji "<ph name="APP_NAME" />" da pristupi:</translation> <translation id="3651488188562686558">prekinuti vezu s Wi-Fijem</translation> +<translation id="3651952061994655768">Promijeni naziv</translation> <translation id="3652817283076144888">Inicijalizacija</translation> <translation id="3653160965917900914">Mrežna dijeljenja datoteka</translation> <translation id="3653842108912548333">Pristupite Asistentu pomoću Voice Matcha</translation> @@ -2241,6 +2251,7 @@ <translation id="3748706263662799310">Prijava programske pogreške</translation> <translation id="3752582316358263300">U redu...</translation> <translation id="3752673729237782832">Moji uređaji</translation> +<translation id="3752757212511661046">Izraditi poslovni profil?</translation> <translation id="3753033997400164841">Pohranite jedanput. Upotrebljavajte svugdje</translation> <translation id="3755411799582650620">Vaš <ph name="PHONE_NAME" /> sada može otključati i taj <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Web-lokacija upotrebljava vaš mikrofon</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Uključivanje Google asistenta</translation> <translation id="387531380970557479">Proširenje "<ph name="EXTENSION_NAME" />" je onemogućeno jer sadrži zlonamjerni softver.</translation> <translation id="3879748587602334249">Upravitelj preuzimanja</translation> +<translation id="3881478300875776315">Prikaži manje redaka</translation> <translation id="3882165008614329320">Postojeći videozapis s kamere ili iz datoteke</translation> <translation id="3886446263141354045">Zahtjev za pristup toj web-lokaciji poslan je korisniku <ph name="NAME" /></translation> <translation id="3888550877729210209">Izrada bilježaka pomoću aplikacije <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">Slažem se</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Crno-bijelo</translation> +<translation id="413193092008917129">Rutine za mrežnu dijagnostiku</translation> <translation id="4133076602192971179">Otvorite aplikaciju da biste promijenili zaporku</translation> <translation id="4136203100490971508">Noćno svjetlo automatski će se isključiti nakon izlaska sunca</translation> <translation id="41365691917097717">Nastavak će omogućiti ADB otklanjanje pogrešaka za izradu i testiranje Android aplikacija. Napominjemo da se time omogućuje instaliranje Android aplikacija koje Google nije potvrdio i da je za onemogućivanje potrebno vraćanje na tvorničke postavke.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">otvoriti preuzete datoteke</translation> <translation id="4377363674125277448">Pojavio se problem s certifikatom poslužitelja.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Nije pokrenuto</translation> <translation id="4378551569595875038">Povezivanje...</translation> <translation id="4378556263712303865">Zahtjev za uređaj</translation> <translation id="4379281552162875326">Deinstalirati "<ph name="APP_NAME" />"?</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">&Otvori videozapis na novoj kartici</translation> <translation id="4645676300727003670">&Zadrži</translation> <translation id="4646675363240786305">Priključci</translation> +<translation id="4646949265910132906">Sigurna Wi-Fi veza</translation> <translation id="4647090755847581616">&Close Tab (Zatvori karticu)</translation> <translation id="4647420311443994946">{0,select, tablet{Pokrenite aplikaciju kad se prijavite na svoj tablet}computer{Pokrenite aplikaciju kad se prijavite na svoje računalo}other{Pokrenite aplikaciju kad se prijavite na svoj uređaj}}</translation> <translation id="4647697156028544508">Unesite PIN-a za uređaj "<ph name="DEVICE_NAME" />":</translation> @@ -2966,7 +2981,7 @@ <translation id="4673442866648850031">Alati pisaljke otvaraju se i zatvaraju kad se umetne ili izbaci pisaljka</translation> <translation id="4677772697204437347">Memorija grafičkog procesora</translation> <translation id="4680105648806843642">Na ovoj je stranici isključen zvuk</translation> -<translation id="4681453295291708042">Onemogućivanje značajke Dijeljenje s Android uređajima</translation> +<translation id="4681453295291708042">Onemogući Dijeljenje s Android uređajima</translation> <translation id="4681930562518940301">Otvori izvornu sl&iku na novoj kartici</translation> <translation id="4682551433947286597">Pozadine se prikazuju na zaslonu za prijavu.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (zadano)</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> moći će pregledavati <ph name="FILENAME" /> dok ne zatvorite sve kartice za ovu web-lokaciju</translation> <translation id="4692623383562244444">Tražilice</translation> <translation id="4693155481716051732">Suši</translation> +<translation id="469379815867856270">Jakost signala</translation> <translation id="4694024090038830733">Konfiguracijom pisača upravlja administrator.</translation> <translation id="4694604912444486114">Majmun</translation> <translation id="4697551882387947560">Kad završi sesija pregledavanja</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">Proširenje sadrži zlonamjerni softver.</translation> <translation id="4981449534399733132">Da biste izbrisali podatke o pregledavanju sa svih svojih sinkroniziranih uređaja i svojeg Google računa, <ph name="BEGIN_LINK" />prijavite se<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Softver uređaja</translation> +<translation id="4985509611418653372">Pokreni</translation> <translation id="4986728572522335985">Time će se izbrisati svi podaci na sigurnosnom ključu, uključujući PIN</translation> <translation id="4988526792673242964">Stranice</translation> <translation id="49896407730300355">Zakreni u smjeru suprotnom od &kretanja kazaljke na satu</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">čitati sve vaše podatke s web-lokacija koje posjetite</translation> <translation id="5242724311594467048">Omogućiti proširenje "<ph name="EXTENSION_NAME" />"?</translation> <translation id="5243522832766285132">Pokušajte ponovo za nekoliko trenutaka.</translation> +<translation id="5244406554036143958">Unesite PIN da biste omogućili automatsko slanje</translation> <translation id="5244474230056479698">Sinkronizira se s računom <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Početak rada sa školskim računom</translation> <translation id="5246282308050205996">Aplikacija <ph name="APP_NAME" /> srušila se. Kliknite ovaj balon za ponovno pokretanje aplikacije.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Identitet</translation> <translation id="5317780077021120954">Spremi</translation> <translation id="5319359161174645648">Google preporučuje Chrome</translation> +<translation id="5320135788267874712">Novi naziv uređaja</translation> <translation id="532247166573571973">Poslužitelj možda nije dostupan. Pokušajte ponovo kasnije.</translation> <translation id="5324780743567488672">Automatski postavi vremensku zonu pomoću vlastite lokacije</translation> <translation id="5327248766486351172">Naziv</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Onemogući svim web-lokacijama pristup USB uređajima</translation> <translation id="5336688142483283574">Ta stranica uklonit će se i iz vaše povijesti i aktivnosti na tražilici <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Instalirala treća strana.</translation> +<translation id="5337926771328966926">Trenutačni je naziv uređaja <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Lokalna pohrana</translation> <translation id="5340638867532133571">Dopusti web-lokacijama instalaciju rukovatelja plaćanjem (preporučeno)</translation> <translation id="5341793073192892252">Blokirani su sljedeći kolačići (kolačići treće strane blokiraju se bez iznimke)</translation> @@ -3492,6 +3512,7 @@ <translation id="5379140238605961210">Nastavi blokirati pristup mikrofonu</translation> <translation id="5382591305415226340">Upravljanje podržanim vezama</translation> <translation id="5383377866517186886">Kamera je isključena u Postavkama sustava na Macu</translation> +<translation id="5383740867328871413">Neimenovana grupa – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Upareno</translation> <translation id="5389237414310520250">Izrada novog korisnika nije uspjela. Provjerite imate li dovoljno prostora na tvrdom disku i potrebna dopuštenja, pa pokušajte ponovo.</translation> <translation id="5390100381392048184">Dopusti web-lokacijama reprodukciju zvuka</translation> @@ -3502,6 +3523,7 @@ <translation id="5398497406011404839">Skrivene oznake</translation> <translation id="5398572795982417028">Referenca na stranicu izvan je granica, a granica je <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Oglasi su blokirani</translation> +<translation id="5401938042319910061">Pokreni sve rutine</translation> <translation id="5402815541704507626">Preuzimanje ažuriranja putem mobilne mreže</translation> <translation id="540296380408672091">Uvijek blokiraj kolačiće na <ph name="HOST" /></translation> <translation id="540495485885201800">Zamijeni prethodnim</translation> @@ -3817,6 +3839,7 @@ <translation id="57838592816432529">Isključi zvuk</translation> <translation id="5785583009707899920">Uslužni programi za datoteke u Chromeu</translation> <translation id="5787146423283493983">Sporazum ključa</translation> +<translation id="5787420647064736989">Naziv uređaja</translation> <translation id="5788367137662787332">Žao nam je, nije bilo moguće postaviti najmanje jednu particiju na uređaju <ph name="DEVICE_LABEL" />.</translation> <translation id="5790085346892983794">Uspjeh</translation> <translation id="5790651917470750848">Prosljeđivanje priključka već postoji</translation> @@ -4493,6 +4516,7 @@ <translation id="6648911618876616409">Kritično ažuriranje spremno je za instalaciju. Prijavite se za početak.</translation> <translation id="6649018507441623493">Samo tren...</translation> <translation id="6649563841575838401">Format arhive nije podržan ili je datoteka oštećena.</translation> +<translation id="6650234781371031356">Zaporka za <ph name="WEBSITE" /> pohranjena je na ovom uređaju i vašem Google računu. Gdje je želite izbrisati?</translation> <translation id="665061930738760572">Otvaranje u &novom prozoru</translation> <translation id="6651237644330755633">Vjeruj ovom certifikatu za identificiranje web-lokacija</translation> <translation id="665355505818177700">Integracija modela <ph name="MS_AD_NAME" /> s Chromeom podržana je samo na platformama x86_64. Chromebookovi izgrađeni na platformi ARM ili x86 ne podržavaju tu funkciju.</translation> @@ -4531,6 +4555,7 @@ <translation id="6701535245008341853">Nije bilo moguće dobiti profil.</translation> <translation id="6702639462873609204">&Uređivanje...</translation> <translation id="6703966911896067184">Ilustracija pogreške prilikom prijave</translation> +<translation id="6704062477274546131">Razrješavanje DNS-a</translation> <translation id="6706210727756204531">Opseg</translation> <translation id="6707389671160270963">Certifikat SSL klijenta</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> i još jedna kartica}one{<ph name="PAGE_TITLE" /> i još # kartica}few{<ph name="PAGE_TITLE" /> i # kartice}other{<ph name="PAGE_TITLE" /> i # kartica}}</translation> @@ -4588,6 +4613,7 @@ <translation id="677965093459947883">Vrlo mali</translation> <translation id="6781284683813954823">Veza za doodle logotip</translation> <translation id="6781978626986383437">Otkazano je sigurnosno kopiranje Linuxa</translation> +<translation id="6782067259631821405">Nevažeći PIN</translation> <translation id="6785915470941880363">Pomicanje u obratnom smjeru <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Proširenja</translation> <translation id="6787839852456839824">Tipkovnički prečaci</translation> @@ -4739,7 +4765,7 @@ <translation id="6965978654500191972">Uređaj</translation> <translation id="696780070563539690">Web-lokacije ne mogu upotrebljavati vaše kolačiće za uvid u vašu aktivnost pregledavanja, primjerice radi prilagođavanja oglasa</translation> <translation id="6968288415730398122">Unesite zaporku da biste konfigurirali zaključavanje zaslona</translation> -<translation id="6969047215179982698">Isključivanje značajke Dijeljenje s Android uređajima</translation> +<translation id="6969047215179982698">Isključi Dijeljenje s Android uređajima</translation> <translation id="6970480684834282392">Vrsta pokretanja</translation> <translation id="6970856801391541997">Ispis određenih stranica</translation> <translation id="6972180789171089114">Audiozapisi/videozapisi</translation> @@ -4894,6 +4920,7 @@ <translation id="7141105143012495934">Prijava nije uspjela jer nisu dohvaćeni podaci o vašem računu. Obratite se administratoru ili pokušajte ponovo.</translation> <translation id="7143207342074048698">Povezivanje</translation> <translation id="7144878232160441200">Pokušaj ponovo</translation> +<translation id="714876143603641390">LAN povezivost</translation> <translation id="7149893636342594995">Posljednja 24 sata</translation> <translation id="715118844758971915">Klasični pisači</translation> <translation id="7152478047064750137">To proširenje ne zahtijeva nikakva posebna dopuštenja</translation> @@ -5031,6 +5058,7 @@ <translation id="7334274148831027933">Omogući usidreno povećalo</translation> <translation id="7335974957018254119">Upotreba provjere pravopisa za</translation> <translation id="7336799713063880535">Obav. su blokirane.</translation> +<translation id="7337248890521463931">Prikaži više redaka</translation> <translation id="7338630283264858612">Serijski broj uređaja nije važeći.</translation> <translation id="7339763383339757376">PKCS br. 7, jedan certifikat</translation> <translation id="7339785458027436441">Provjeravaj pravopis tijekom pisanja</translation> @@ -5413,6 +5441,7 @@ <translation id="7807711621188256451">Uvijek dopusti hostu <ph name="HOST" /> pristup kameri</translation> <translation id="7810202088502699111">Na ovoj su stranici blokirani skočni prozori.</translation> <translation id="781167124805380294">Emitiranje datoteke <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Pogledajte što je novo na uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Kopiraj</translation> <translation id="7815680994978050279">Blokirano je opasno preuzimanje</translation> <translation id="7817361223956157679">Tipkovnica na zaslonu još uvijek ne funkcionira u Linux aplikacijama</translation> @@ -5642,6 +5671,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{Jedan list papira}one{{COUNT} list papira}few{{COUNT} lista papira}other{{COUNT} listova papira}}</translation> <translation id="8063235345342641131">Zadani zeleni avatar</translation> <translation id="8063535366119089408">Pregledaj datoteku</translation> +<translation id="8064279191081105977">Grupa <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Dodirnite za prijavu</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Ispiši kao sliku</translation> @@ -6387,6 +6417,7 @@ <translation id="8986362086234534611">Zaboravi</translation> <translation id="8986494364107987395">Automatski šalji Googleu statistiku o upotrebi i izvješća o padu programa</translation> <translation id="8987927404178983737">Mjesec</translation> +<translation id="8990209962746788689">Izrada QR koda nije uspjela</translation> <translation id="8991520179165052608">Web-lokacija može upotrebljavati vaš mikrofon</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 stavke}one{# stavke}few{# stavke}other{# stavki}}</translation> <translation id="899384117894244799">Uklanjanje ograničenog korisnika</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index d03eab0..d7a0f0d 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -105,7 +105,7 @@ <translation id="1124772482545689468">Pengguna</translation> <translation id="1125550662859510761">Sepertinya <ph name="WIDTH" /> x <ph name="HEIGHT" /> (Asli)</translation> <translation id="1126809382673880764">Tidak melindungi Anda terhadap situs, download, dan ekstensi berbahaya. Anda akan tetap mendapatkan perlindungan Safe Browsing, jika tersedia, di layanan Google lainnya, seperti Gmail dan Penelusuran.</translation> -<translation id="112752777279960360">Untuk menyiapkan ponsel Android agar dapat digunakan sebagai kunci keamanan untuk mengakses komputer ini pada kali pertama, buka "Setelan > Sandi > Gunakan ponsel sebagai kunci keamanan". Lalu ketuk "Hubungkan perangkat baru" dan pindai kode QR ini.</translation> +<translation id="112752777279960360">Untuk menyiapkan ponsel Android agar dapat digunakan sebagai kunci keamanan untuk mengakses komputer ini pada kali pertama, buka Chrome di ponsel lalu buka "Setelan > Sandi > Gunakan ponsel sebagai kunci keamanan". Lalu ketuk "Hubungkan perangkat baru" dan pindai kode QR ini.</translation> <translation id="1128109161498068552">Jangan izinkan situs apa pun untuk menggunakan pesan eksklusif sistem untuk mengakses perangkat MIDI</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1128591060186966949">Edit mesin telusur</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index cfc395d..371d5bf 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -37,6 +37,7 @@ <translation id="1038168778161626396">Aðeins dulrita</translation> <translation id="1038462104119736705">Mælt er með að minnsta kosti <ph name="INSTALL_SIZE" /> af lausu plássi til að nota Linux. Eyddu skrám úr tækinu til að auka geymslurýmið.</translation> <translation id="1039337018183941703">Ógild eða skemmd skrá</translation> +<translation id="104086161873270383">Nýr prófíll</translation> <translation id="1041175011127912238">Þessi síða svarar ekki.</translation> <translation id="1041263367839475438">Tæki í boði</translation> <translation id="1042174272890264476">RLZ-safn <ph name="SHORT_PRODUCT_NAME" /> er einnig innbyggt í tölvuna. RLZ úthlutar merki sem er ekki einkvæmt og ekki persónugreinanlegt til að mæla leitarvirkni og notkun <ph name="SHORT_PRODUCT_NAME" /> hjá tiltekinni auglýsingaherferð. Þessi merki birtast stundum í leitarfyrirspurnum á Google í <ph name="PRODUCT_NAME" />.</translation> @@ -73,6 +74,7 @@ <translation id="1084096383128641877">Reikningnum þínum á <ph name="DOMAIN" /> verður ekki eytt þó að þetta aðgangsorð verði fjarlægt. Breyttu aðgangsorðinu eða eyddu reikningnum þínum á <ph name="DOMAIN_LINK" /> til að halda honum öruggum fyrir öðrum.</translation> <translation id="1084824384139382525">Afrita slóð t&engils</translation> <translation id="1085697365578766383">Villa við að ræsa sýndarvél. Reyndu aftur.</translation> +<translation id="1088659085457112967">Opna lesstillingu</translation> <translation id="1090126737595388931">Engin bakgrunnsforrit í gangi</translation> <translation id="1091767800771861448">Ýttu á Esc til að sleppa þessu (ekki fyrir opinbera smíði).</translation> <translation id="1093457606523402488">Sýnileg net:</translation> @@ -168,6 +170,7 @@ <translation id="1202596434010270079">Sjálfsalaforrit var uppfært. Fjarlægðu USB-lykilinn.</translation> <translation id="120368089816228251">Nóta</translation> <translation id="1203942045716040624">Samnýttur vefvirki: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">DNS-biðtími</translation> <translation id="1205489148908752564">Lesa og breyta notendum á undanþágulista</translation> <translation id="1206407435587370571">Kannaðu Chromebook</translation> <translation id="1209796539517632982">Sjálfvirkir nafnaþjónar</translation> @@ -321,6 +324,7 @@ <translation id="1396259464226642517">Var þetta óvænt niðurstaða? <ph name="BEGIN_LINK" />Senda ábendingu<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Notandanafn og aðgangsorð sem þú færðir inn stemma ekki</translation> <translation id="1397500194120344683">Engin gjaldgeng tæki. <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Ekki er hægt að ping-prófa gátt</translation> <translation id="1398853756734560583">Stækka</translation> <translation id="139911022479327130">Taktu símann úr lás og staðfestu að þetta sért þú</translation> <translation id="1399511500114202393">Ekkert notandavottorð</translation> @@ -583,6 +587,7 @@ <translation id="1701062906490865540">Fjarlægja þennan notanda</translation> <translation id="1703331064825191675">Losnaðu undan áhyggjum af aðgangsorðum</translation> <translation id="1704970325597567340">Öryggisathugun var keyrð <ph name="DATE" /></translation> +<translation id="1706391837335750954">DNS-úrlausn til staðar</translation> <translation id="1706586824377653884">Kerfisstjórinn bætti þessu við</translation> <translation id="1706625117072057435">Aðdráttarstig</translation> <translation id="1708338024780164500">(Óvirk)</translation> @@ -874,6 +879,7 @@ <translation id="2065405795449409761">Sjálfvirkur prófunarhugbúnaður er að stýra Chrome.</translation> <translation id="2071393345806050157">Engin staðbundin annálsskrá.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Smelltu til að setja viðbótina upp}one{Smelltu til að setja þessar viðbætur upp}other{Smelltu til að setja þessar viðbætur upp}}</translation> +<translation id="2073505299004274893">Notaðu <ph name="CHARACTER_LIMIT" /> stafi eða færri</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% rafhlaða</translation> <translation id="2075959085554270910">Gerir þér kleift að kveikja/slökkva á eiginleikunum „ýta til að smella“ og „draga með snertingu“</translation> <translation id="2076269580855484719">Fela þessa viðbót</translation> @@ -1153,6 +1159,7 @@ <translation id="2408955596600435184">Sláðu inn PIN-númerið þitt</translation> <translation id="241082044617551207">Óþekkt viðbót</translation> <translation id="2412593942846481727">Uppfærsla í boði</translation> +<translation id="2414499877591062094">Kveikja á sjálfvirkri PIN-sendingu</translation> <translation id="2416435988630956212">Aðgerðalyklar á lyklaborði</translation> <translation id="241727068219398187">Gögnin voru dulkóðuð með aðgangsorði Google <ph name="TIME" />. Þetta gildir ekki um greiðslumáta og heimilisföng af Google Pay.</translation> @@ -1307,6 +1314,7 @@ <translation id="2586672484245266891">Sláðu inn styttri vefslóð</translation> <translation id="2587922766792651800">Rann út á tíma</translation> <translation id="2588636910004461974">Tæki frá <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Loka lesstillingu</translation> <translation id="2594999711683503743">Leitaðu með Google eða sláðu inn vefslóð</translation> <translation id="2602501489742255173">Strjúktu upp til að hefjast handa</translation> <translation id="2603115962224169880">Hreinsa tölvu</translation> @@ -1876,6 +1884,7 @@ <translation id="3312424061798279731">Virk tungumál</translation> <translation id="3313622045786997898">Gildi vottorðsundirritunar</translation> <translation id="3315158641124845231">Fela <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Opna lesstillingu</translation> <translation id="3317459757438853210">Tvíhliða</translation> <translation id="3317678681329786349">Lokað á myndavél og hljóðnema</translation> <translation id="3319048459796106952">Nýr hul&iðsgluggi</translation> @@ -2141,6 +2150,7 @@ <translation id="3636096452488277381">Sælinú, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – <ph name="TIME" /> eftir</translation> <translation id="3637682276779847508">SIM-kortið verður gert varanlega óvirkt ef þú slærð ekki inn rétt PUK-númer.</translation> +<translation id="3639220004740062347">Loka lesstillingu</translation> <translation id="3640214691812501263">Á að bæta „<ph name="EXTENSION_NAME" />“ við fyrir <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Kenna hjálparanum að þekkja röddina í þér</translation> <translation id="3645372836428131288">Færðu fingurinn örlítið til að skrá mismunandi hluta fingrafarsins.</translation> @@ -2151,6 +2161,7 @@ <translation id="3650845953328929506">Upphleðsla annáls í bið.</translation> <translation id="3650952250015018111">Leyfa „<ph name="APP_NAME" />“ að fá aðgang að:</translation> <translation id="3651488188562686558">Aftengjast Wi-Fi</translation> +<translation id="3651952061994655768">Breyta heiti</translation> <translation id="3652817283076144888">Frumstillir</translation> <translation id="3653160965917900914">Samnýttar skráageymslur</translation> <translation id="3653842108912548333">Opnaðu hjálparann með Voice Match</translation> @@ -2240,6 +2251,7 @@ <translation id="3748706263662799310">Tilkynna villu</translation> <translation id="3752582316358263300">Í lagi...</translation> <translation id="3752673729237782832">Tækin mín</translation> +<translation id="3752757212511661046">Búa til vinnusnið?</translation> <translation id="3753033997400164841">Vista einu sinni. Nota hvar sem er</translation> <translation id="3755411799582650620"><ph name="PHONE_NAME" /> getur nú einnig tekið þetta <ph name="DEVICE_TYPE" /> tæki úr lás.</translation> <translation id="375636864092143889">Vefsvæði er að nota hljóðnemann þinn</translation> @@ -2361,6 +2373,7 @@ <translation id="3874164307099183178">Kveikja á Google hjálpara</translation> <translation id="387531380970557479">Slökkt var á „<ph name="EXTENSION_NAME" />“ vegna þess að það inniheldur spilliforrit.</translation> <translation id="3879748587602334249">Niðurhalsstjórnun</translation> +<translation id="3881478300875776315">Sýna færri línur</translation> <translation id="3882165008614329320">Fyrirliggjandi myndskeið úr myndavél eða skrá</translation> <translation id="3886446263141354045">Beiðni þín um aðgang að þessu vefsvæði hefur verið send til <ph name="NAME" /></translation> <translation id="3888550877729210209">Glósur með <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2570,6 +2583,7 @@ <translation id="4130750466177569591">Ég samþykki</translation> <translation id="413121957363593859">Íhlutir</translation> <translation id="4131410914670010031">Svarthvítt</translation> +<translation id="413193092008917129">Rútínur netkerfisgreiningar</translation> <translation id="4133076602192971179">Opnaðu forritið til að breyta aðgangsorðinu þínu</translation> <translation id="4136203100490971508">Slekkur sjálfkrafa á næturljósi við sólsetur</translation> <translation id="41365691917097717">Ef þú heldur áfram kveikir þú á ADB-villuleit til að búa til og prófa Android forrit. Hafðu í huga að þessi aðgerð gerir þér kleift að setja upp Android forrit sem eru ekki staðfest af Google. Núllstilla þarf tækið til að slökkva á þessu.</translation> @@ -2727,6 +2741,7 @@ <translation id="4375035964737468845">Opna sóttar skrár</translation> <translation id="4377363674125277448">Vandamál kom upp með vottorð þjónsins.</translation> <translation id="4378154925671717803">Sími</translation> +<translation id="4378373042927530923">Keyra ekki</translation> <translation id="4378551569595875038">Tengist...</translation> <translation id="4378556263712303865">Tækjaúthlutun</translation> <translation id="4379281552162875326">Fjarlægja „<ph name="APP_NAME" />“?</translation> @@ -2939,6 +2954,7 @@ <translation id="4643612240819915418">&Opna myndskeið í nýjum flipa</translation> <translation id="4645676300727003670">Halda</translation> <translation id="4646675363240786305">Gáttir</translation> +<translation id="4646949265910132906">Örugg WiFi tenging</translation> <translation id="4647090755847581616">Loka flipa</translation> <translation id="4647420311443994946">{0,select, tablet{Ræsa forrit þegar þú skráir þig inn í spjaldtölvuna þína}computer{Ræsa forrit þegar þú skráir þig inn í tölvuna þína}other{Ræsa forrit þegar þú skráir þig inn í tækið þitt}}</translation> <translation id="4647697156028544508">Sláðu inn PIN-númer fyrir „<ph name="DEVICE_NAME" />“:</translation> @@ -2977,6 +2993,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> mun geta skoðað <ph name="FILENAME" /> þar til þú lokar öllum flipum þessa vefsvæðis</translation> <translation id="4692623383562244444">Leitarvélar</translation> <translation id="4693155481716051732">Sushi</translation> +<translation id="469379815867856270">Sendistyrkur</translation> <translation id="4694024090038830733">Stjórnandi hefur umsjón með stillingum prentara.</translation> <translation id="4694604912444486114">Api</translation> <translation id="4697551882387947560">Þegar vafralotu lýkur</translation> @@ -3187,6 +3204,7 @@ <translation id="4980805016576257426">Þessi viðbót inniheldur spilliforrit.</translation> <translation id="4981449534399733132">Til að hreinsa vafragögn úr öllum samstilltum tækjum og af Google reikningnum þínum skaltu <ph name="BEGIN_LINK" />skrá þig inn<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Hugbúnaður tækis</translation> +<translation id="4985509611418653372">Keyra</translation> <translation id="4986728572522335985">Þetta eyðir öllum gögnum á öryggislyklinum, þar á meðal PIN-númerinu</translation> <translation id="4988526792673242964">Síður</translation> <translation id="49896407730300355">Snúa rangsælis</translation> @@ -3381,6 +3399,7 @@ <translation id="5241128660650683457">Lesa öll gögnin þín á vefsvæðum sem þú heimsækir</translation> <translation id="5242724311594467048">Kveikja á „<ph name="EXTENSION_NAME" />“?</translation> <translation id="5243522832766285132">Reyndu aftur eftir smástund</translation> +<translation id="5244406554036143958">Sláðu inn PIN-númerið þitt til að kveikja á sjálfvirkri sendingu</translation> <translation id="5244474230056479698">Samstillir við <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Byrjaðu að nota skólareikning</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> hrundi. Smelltu á þessa blöðru til að endurræsa forritið.</translation> @@ -3448,6 +3467,7 @@ <translation id="5315873049536339193">Auðkenni</translation> <translation id="5317780077021120954">Vista</translation> <translation id="5319359161174645648">Google mælir með Chrome</translation> +<translation id="5320135788267874712">Nýtt heiti tækis</translation> <translation id="532247166573571973">Hugsanlega er ekki hægt að ná í þjóninn. Reyndu aftur síðar.</translation> <translation id="5324780743567488672">Stilla tímabelti sjálfkrafa eftir staðsetningunni þinni</translation> <translation id="5327248766486351172">Heiti</translation> @@ -3461,6 +3481,7 @@ <translation id="5336126339807372270">Ekki leyfa neinum vefsvæðum að opna USB-tæki</translation> <translation id="5336688142483283574">Þessi síða verður einnig fjarlægð úr ferlinum og aðgerðum á <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Sett upp af þriðja aðila.</translation> +<translation id="5337926771328966926">Núverandi heiti tækis er <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Staðbundin vistun</translation> <translation id="5340638867532133571">Leyfa vefsvæðum að setja upp greiðslumiðlara (ráðlagt)</translation> <translation id="5341793073192892252">Eftirfarandi fótspor voru útilokuð (fótspor þriðja aðila eru útilokuð án undantekninga)</translation> @@ -3491,6 +3512,7 @@ <translation id="5379140238605961210">Halda áfram að loka á aðgang að hljóðnema</translation> <translation id="5382591305415226340">Vinna með studda tengla</translation> <translation id="5383377866517186886">Slökkt er á myndavélinni í kerfisstillingum Mac</translation> +<translation id="5383740867328871413">Ónefndur hópur - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Pörun lokið</translation> <translation id="5389237414310520250">Ekki var hægt að stofna nýja notandann. Athugaðu laust pláss á harða disknum og heimildir áður en þú reynir aftur.</translation> <translation id="5390100381392048184">Leyfa vefsvæðum að spila hljóð</translation> @@ -3501,6 +3523,7 @@ <translation id="5398497406011404839">Falin bókamerki</translation> <translation id="5398572795982417028">Síðutilvísun er ekki innan réttra marka, hámarkið er <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Lokað á auglýsingar</translation> +<translation id="5401938042319910061">Keyra allar rútínur</translation> <translation id="5402815541704507626">Sækja uppfærslu með farsímagögnum</translation> <translation id="540296380408672091">Loka alltaf á fótspor á <ph name="HOST" /></translation> <translation id="540495485885201800">Skipta út fyrir fyrra</translation> @@ -3816,6 +3839,7 @@ <translation id="57838592816432529">Þagga</translation> <translation id="5785583009707899920">Hjálparforrit Chrome fyrir skrár</translation> <translation id="5787146423283493983">Lykilsamningur</translation> +<translation id="5787420647064736989">Heiti tækis</translation> <translation id="5788367137662787332">Því miður tókst ekki að tengja að minnsta kosti eina sneið tækisins <ph name="DEVICE_LABEL" />.</translation> <translation id="5790085346892983794">Tókst</translation> <translation id="5790651917470750848">Framsend gátt er þegar til</translation> @@ -4253,6 +4277,7 @@ <translation id="6322653941595359182">Sendu og taktu á móti textaskilaboðum frá Chromebook tækinu þínu</translation> <translation id="6324916366299863871">Breyta flýtileið</translation> <translation id="6325191661371220117">Slökkva á sjálfvirkri ræsingu</translation> +<translation id="6325525973963619867">Mistókst</translation> <translation id="6326175484149238433">Fjarlægja úr Chrome</translation> <translation id="6326855256003666642">Fjöldi sem heldur viðbót virkri</translation> <translation id="632707535499064463"><ph name="ORGANIZATION_NAME" /> krefst þess að þú uppfærir þetta tæki fyrir lokadaginn.</translation> @@ -4491,6 +4516,7 @@ <translation id="6648911618876616409">Áríðandi uppfærsla bíður uppsetningar. Skráðu þig inn til að hefjast handa.</translation> <translation id="6649018507441623493">Augnablik...</translation> <translation id="6649563841575838401">Geymslusniðið er ekki stutt eða villa er í skránni.</translation> +<translation id="6650234781371031356">Aðgangsorðið fyrir <ph name="WEBSITE" /> er vistað í þessu tæki og á Google reikningnum þínum. Hvoru þeirra viltu eyða?</translation> <translation id="665061930738760572">Opna í &nýjum glugga</translation> <translation id="6651237644330755633">Treysta þessu vottorði til að auðkenna vefsvæði</translation> <translation id="665355505818177700">Samþætting Chrome <ph name="MS_AD_NAME" /> er aðeins studd í x86_64 kerfum. Chromebook tæki sem eru byggð á ARM- eða x86-kerfi styðja ekki þennan eiginleika.</translation> @@ -4529,6 +4555,7 @@ <translation id="6701535245008341853">Ekki var hægt að sækja snið.</translation> <translation id="6702639462873609204">Br&eyta...</translation> <translation id="6703966911896067184">Mynd af skráningarvillu</translation> +<translation id="6704062477274546131">DNS-upplausn</translation> <translation id="6706210727756204531">Umfang</translation> <translation id="6707389671160270963">Vottorð SSL-biðlara</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> og 1 annar flipi}one{<ph name="PAGE_TITLE" /> og # annar flipi}other{<ph name="PAGE_TITLE" /> og # aðrir flipar}}</translation> @@ -4586,6 +4613,7 @@ <translation id="677965093459947883">Mjög lítið</translation> <translation id="6781284683813954823">Tengill dúllu</translation> <translation id="6781978626986383437">Hætt við Linux-afritun</translation> +<translation id="6782067259631821405">Ógilt PIN-númer</translation> <translation id="6785915470941880363">Öfug fletting <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Viðbætur</translation> <translation id="6787839852456839824">Flýtilyklar</translation> @@ -4892,6 +4920,7 @@ <translation id="7141105143012495934">Innskráning mistókst vegna þess að ekki tókst að sækja reikningsupplýsingar. Hafðu samband við kerfisstjóra eða reyndu aftur.</translation> <translation id="7143207342074048698">Tengist</translation> <translation id="7144878232160441200">Reyna aftur</translation> +<translation id="714876143603641390">LAN-tenging</translation> <translation id="7149893636342594995">Síðastliðinn sólarhring</translation> <translation id="715118844758971915">Hefðbundnir prentarar</translation> <translation id="7152478047064750137">Þessi viðbót þarf engar sérstakar heimildir</translation> @@ -5029,6 +5058,7 @@ <translation id="7334274148831027933">Kveikja á stækkunargleri í föstum glugga</translation> <translation id="7335974957018254119">Nota ritvilluleit fyrir</translation> <translation id="7336799713063880535">Lokað á tilkynningar</translation> +<translation id="7337248890521463931">Sýna fleiri línur</translation> <translation id="7338630283264858612">Raðnúmer tækisins er ógilt.</translation> <translation id="7339763383339757376">PKCS #7, stakt vottorð</translation> <translation id="7339785458027436441">Athuga stafsetningu meðan á innslætti stendur</translation> @@ -5411,6 +5441,7 @@ <translation id="7807711621188256451">Veita <ph name="HOST" /> alltaf aðgang að myndavélinni</translation> <translation id="7810202088502699111">Sprettigluggar voru útilokaðir á þessari síðu.</translation> <translation id="781167124805380294">Senda út <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Skoða nýjungar í <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">Afrita</translation> <translation id="7815680994978050279">Lokað á hættulegt niðurhal</translation> <translation id="7817361223956157679">Skjályklaborðið virkar ekki í Linux-forritum enn sem komið er</translation> @@ -5639,6 +5670,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 blaðsíða}one{{COUNT} blaðsíða}other{{COUNT} blaðsíður}}</translation> <translation id="8063235345342641131">Sjálfgefin græn notandamynd</translation> <translation id="8063535366119089408">Skoða skrá</translation> +<translation id="8064279191081105977">Hópur <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Snertu til að skrá þig inn</translation> <translation id="8069615408251337349">Google skýjaprentun</translation> <translation id="8071432093239591881">Prenta sem mynd</translation> @@ -6384,6 +6416,7 @@ <translation id="8986362086234534611">Gleyma</translation> <translation id="8986494364107987395">Senda sjálfkrafa talnagögn um notkun og tilkynningar um hrun til Google</translation> <translation id="8987927404178983737">Mánuður</translation> +<translation id="8990209962746788689">Ekki hægt að búa til QR-kóða</translation> <translation id="8991520179165052608">Vefsvæði getur notað hljóðnemann þinn</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 atriði}one{# atriði}other{# atriði}}</translation> <translation id="899384117894244799">Fjarlægja takmarkaðan notanda</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index f69ac86..6e2279fa 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1221,7 +1221,7 @@ <translation id="2489918096470125693">Aggiungi &cartella...</translation> <translation id="2490481887078769936">"<ph name="FILE_NAME" />" rimosso dall'elenco</translation> <translation id="249113932447298600">Spiacenti, il dispositivo <ph name="DEVICE_LABEL" /> non è al momento supportato.</translation> -<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> condivide <ph name="ATTACHMENTS" /> con te.</translation> +<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> sta cercando di condividere <ph name="ATTACHMENTS" /> con te.</translation> <translation id="2492461744635776704">Preparazione richiesta di firma certificato</translation> <translation id="249303669840926644">Impossibile completare la registrazione</translation> <translation id="2495777824269688114">Scopri altre funzioni o ricevi risposte. Seleziona "?" per ricevere assistenza.</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 4d264d0..5d62a20 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -105,6 +105,7 @@ <translation id="1124772482545689468">ユーザー</translation> <translation id="1125550662859510761">表示上のサイズ: <ph name="WIDTH" />x<ph name="HEIGHT" />(ネイティブ)</translation> <translation id="1126809382673880764">危険なウェブサイト、ダウンロード、拡張機能から保護されていません。セーフ ブラウジングによる保護については、Gmail や Google 検索といった他の Google サービスで利用可能な場合は引き続き保護されます。</translation> +<translation id="112752777279960360">このパソコンで、Android スマートフォンをセキュリティ キーとして使用できるように初めて設定する際は、スマートフォンで Chrome を開き、[設定] > [パスワード] > [スマートフォンをセキュリティ キーとして使用する] に移動します。そして、[新しいデバイスへの接続] をタップし、この QR コードをスキャンします。</translation> <translation id="1128109161498068552">システム エクスクルーシブ メッセージを使用して MIDI デバイスにアクセスすることをサイトに許可しない</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1128591060186966949">検索エンジンの編集</translation> @@ -511,6 +512,7 @@ <translation id="1622054403950683339">Wi-Fi ネットワークの削除</translation> <translation id="1623132449929929218">現在画像を利用することができません。壁紙のコレクションを表示するには、インターネットに接続しなおしてください。</translation> <translation id="1623723619460186680">ブルーライトの軽減</translation> +<translation id="1624012933569991823">設定</translation> <translation id="1627276047960621195">ファイル記述子</translation> <translation id="1627408615528139100">ダウンロード済み</translation> <translation id="1628948239858170093">ファイルを開く前にスキャンしますか?</translation> @@ -538,7 +540,7 @@ <translation id="164936512206786300">Bluetooth デバイスのペア設定の解除</translation> <translation id="1650371550981945235">入力オプションを表示</translation> <translation id="1651008383952180276">同じパスフレーズを 2 回入力する必要があります</translation> -<translation id="1652326691684645429">周辺ユーザーとの共有を有効にする</translation> +<translation id="1652326691684645429">ニアバイシェアを有効にする</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{プリンタを Google クラウド プリントに追加してください。登録したプリンタにはどこからでも印刷できます。}other{# 件のプリンタを Google クラウド プリントに追加してください。登録したプリンタにはどこからでも印刷できます。}}</translation> <translation id="1656528038316521561">背景の透明度</translation> <translation id="1657406563541664238">使用統計データや障害レポートを Google に自動送信して <ph name="PRODUCT_NAME" /> の機能向上に役立てる</translation> @@ -746,6 +748,7 @@ <translation id="1887850431809612466">ハードウェア リビジョン</translation> <translation id="1888523338879380247">{0,plural, =1{デバイスの更新は今日が期限です}other{# 日以内にデバイスを更新してください}}</translation> <translation id="1890674179660343635"><span>ID: </span><ph name="EXTENSION_ID" /></translation> +<translation id="1891760696839073783"><ph name="DEVICE_NAME" /> から <ph name="ATTACHMENTS" /> を受信しています</translation> <translation id="189210018541388520">全画面表示</translation> <translation id="1892341345406963517"><ph name="PARENT_NAME" /> さん</translation> <translation id="189358972401248634">その他の言語</translation> @@ -1665,7 +1668,7 @@ <translation id="3022978424994383087">聞き取れませんでした。</translation> <translation id="3023464535986383522">選択して読み上げ</translation> <translation id="3024374909719388945">24 時間形式を使用する</translation> -<translation id="3027296729579831126">周辺ユーザーとの共有をオンにする</translation> +<translation id="3027296729579831126">ニアバイシェアをオンにする</translation> <translation id="3029466929721441205">シェルフでのタッチペン ツールの表示</translation> <translation id="3031417829280473749">エージェント X</translation> <translation id="3031557471081358569">インポートするデータを選択:</translation> @@ -1818,6 +1821,7 @@ <translation id="3253225298092156258">利用できません</translation> <translation id="3253448572569133955">不明なアカウント</translation> <translation id="3254516606912442756">タイムゾーンの自動検出が無効です</translation> +<translation id="3254715652085014625">Android スマートフォンで Chrome を開き、[設定] > [パスワード] > [スマートフォンをセキュリティ キーとして使用する] に移動して、表示された手順を行います。</translation> <translation id="3255355328033513170"><ph name="SITE_GROUP_NAME" /> とその下位のすべてのサイトにより保存された全データが削除されます。これには Cookie も含まれ、これらのサイトからはログアウトすることになります(開いているタブも含まれます)。</translation> <translation id="3259723213051400722">もう一度お試しください。</translation> <translation id="3264544094376351444">Sans Serif フォント</translation> @@ -2960,7 +2964,7 @@ <translation id="4673442866648850031">タッチペンを取り外したらタッチペン ツールを開く</translation> <translation id="4677772697204437347">GPU メモリ</translation> <translation id="4680105648806843642">このページでは音声がミュートされています</translation> -<translation id="4681453295291708042">周辺ユーザーとの共有を無効にする</translation> +<translation id="4681453295291708042">ニアバイシェアを無効にする</translation> <translation id="4681930562518940301">元の画像を新しいタブで開く(&I)</translation> <translation id="4682551433947286597">壁紙はログイン画面に表示されます。</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />%(デフォルト)</translation> @@ -3493,6 +3497,7 @@ <translation id="5390677308841849479">暗い赤とオレンジ</translation> <translation id="5390743329570580756">送信先</translation> <translation id="5397794290049113714">あなた</translation> +<translation id="5398497406011404839">非表示のブックマーク</translation> <translation id="5398572795982417028">範囲外のページを参照しています。上限は <ph name="MAXIMUM_PAGE" /> です。</translation> <translation id="5398772614898833570">広告がブロックされました</translation> <translation id="5402815541704507626">モバイルデータ接続でのアップデートのダウンロード</translation> @@ -3578,6 +3583,7 @@ <translation id="5496587651328244253">管理</translation> <translation id="5497251278400702716">このファイル</translation> <translation id="5499313591153584299">このファイルはパソコンに危害を加える可能性があります。</translation> +<translation id="5499453227627332024">Linux コンテナのアップグレードが可能です。後で設定アプリからアップグレードすることもできます。</translation> <translation id="5500709606820808700">安全確認を今日実行しました</translation> <translation id="5502500733115278303">Firefox ブックマーク</translation> <translation id="5503982651688210506"><ph name="HOST" /> によるカメラの使用と移動、およびマイクの使用を引き続き許可する</translation> @@ -3775,7 +3781,7 @@ <translation id="5739017626473506901">ログインして、<ph name="USER_NAME" /> さんの学校アカウントの追加を許可してください</translation> <translation id="5739235828260127894">確認を待っています。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation> <translation id="5739458112391494395">極大</translation> -<translation id="5740328398383587084">周辺ユーザーとの共有</translation> +<translation id="5740328398383587084">ニアバイシェア</translation> <translation id="574104302965107104">ディスプレイ ミラーリング</translation> <translation id="574209121243317957">高さ</translation> <translation id="5746169159649715125">PDF に保存</translation> @@ -4563,6 +4569,7 @@ <translation id="6758056191028427665">アンケートにご協力ください。</translation> <translation id="6759193508432371551">初期状態へのリセット</translation> <translation id="6762833852331690540">オン</translation> +<translation id="676560328519657314">Google Pay でのお支払い方法</translation> <translation id="6767566652486411142">別の言語を選択...</translation> <translation id="6767639283522617719">ドメインを追加できません。組織部門の設定が正しいことをご確認ください。</translation> <translation id="6769557323306147204"><ph name="ORGANIZATION_NAME" /> がこのデバイスの更新をすすめています。</translation> @@ -4728,13 +4735,14 @@ <translation id="6965978654500191972">デバイス</translation> <translation id="696780070563539690">サイトは、Cookie を使用して別のサイトでのあなたの閲覧アクティビティを確認できません(広告のカスタマイズなどが行えません)</translation> <translation id="6968288415730398122">画面ロックを設定するにはパスワードを入力します</translation> -<translation id="6969047215179982698">周辺ユーザーとの共有をオフにする</translation> +<translation id="6969047215179982698">ニアバイシェアをオフにする</translation> <translation id="6970480684834282392">起動タイプ</translation> <translation id="6970856801391541997">指定したページを印刷</translation> <translation id="6972180789171089114">音声または動画</translation> <translation id="6972553992270299730">システム ファイルが含まれているため、<ph name="ORIGIN" /> はこのフォルダのファイルを開くことができません</translation> <translation id="6972629891077993081">HID デバイス</translation> <translation id="6972754398087986839">開始する</translation> +<translation id="6972887130317925583">不正使用されたパスワードを変更しました。パスワードは <ph name="SETTINGS" /> でいつでも確認できます。</translation> <translation id="6973611239564315524">Debian 10(Buster)にアップグレードできます</translation> <translation id="6974609594866392343">オフライン デモモード</translation> <translation id="6977381486153291903">ファームウェア リビジョン</translation> @@ -5593,6 +5601,7 @@ <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">ショートカットを編集しました</translation> <translation id="8018313076035239964">ウェブサイトに使用を許可する情報や、表示してもよいコンテンツを管理します</translation> +<translation id="8022688469248132790">エラーの詳細を確認します</translation> <translation id="8023801379949507775">拡張機能を今すぐ更新</translation> <translation id="8026334261755873520">閲覧履歴データの削除</translation> <translation id="8028060951694135607">Microsoft キー回復</translation> @@ -6532,6 +6541,7 @@ <translation id="9180380851667544951">サイトに画面の共有が許可されています</translation> <translation id="9188732951356337132">使用状況データや診断データを送信します。このデバイスは現在、診断データやデバイスとアプリの使用状況データを Google に自動送信するように設定されています。この情報を使ってお子様個人が特定されることはありません。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。お子様の [その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータはお子様の Google アカウントに保存されます。<ph name="BEGIN_LINK2" />詳細<ph name="END_LINK2" /></translation> <translation id="9190063653747922532">L2TP/IPSec + 事前共有鍵</translation> +<translation id="9198090666959937775">Android スマートフォンをセキュリティ キーとして使用する</translation> <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> で検索</translation> <translation id="9201023452444595544">オフライン データも削除されます</translation> <translation id="9201220332032049474">画面ロックの種類</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index 04f55b3..7e48f60a 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -104,7 +104,7 @@ <translation id="1124772482545689468">Пайдаланушы</translation> <translation id="1125550662859510761"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (жергілікті) болып көрінеді</translation> <translation id="1126809382673880764">Қауіпті веб-сайттардан, жүктеп алынатын файлдардан және кеңейтімдерден қорғамайды. Gmail және Search сияқты басқа Google қызметтерінде "Қауіпсіз шолу" функциясы қорғайтын болады.</translation> -<translation id="112752777279960360">Осы компьютермен алғаш рет қолданылған Android телефонын қауіпсіздік кілті ретінде орнату үшін, телефоныңыздан Chrome браузерін ашыңыз да, "Параметрлер > Құпия сөздер > Телефонды қауіпсіздік кілті ретінде пайдалану" тармағына өтіңіз. Содан кейін "Жаңа құрылғы қосу" функциясын түртіп, осы QR кодын сканерлеңіз.</translation> +<translation id="112752777279960360">Осы компьютермен алғаш рет қолданылған Android телефонын қауіпсіздік кілті ретінде орнату үшін телефоныңыздан Chrome браузерін ашыңыз да, "Параметрлер > Құпия сөздер > Телефонды қауіпсіздік кілті ретінде пайдалану" тармағына өтіңіз. Содан кейін "Жаңа құрылғы қосу" функциясын түртіп, осы QR кодын сканерлеңіз.</translation> <translation id="1128109161498068552">Кез келген сайттардың MIDI құрылғыларына қатынасу үшін жүйенің эксклюзивті хабарларын пайдалануына рұқсат етпеу</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1128591060186966949">Іздеу жүйесін өзгерту</translation> @@ -3581,7 +3581,7 @@ <translation id="5496587651328244253">Ұйымдастыру</translation> <translation id="5497251278400702716">Осы файл</translation> <translation id="5499313591153584299">Бұл файл компьютеріңізге зиянды болуы мүмкін.</translation> -<translation id="5499453227627332024">Linux Container үшін жаңа нұсқа қолжетімді. Жаңа нұсқаны "Параметрлер" қолданбасы арқылы кейінірек орнатуыңызға болады.</translation> +<translation id="5499453227627332024">Linux контейнері үшін жаңа нұсқа қолжетімді. Жаңа нұсқаны "Параметрлер" қолданбасы арқылы кейінірек орнатуыңызға болады.</translation> <translation id="5500709606820808700">Қауіпсіздік шарасы бүгін қолданылды.</translation> <translation id="5502500733115278303">Firefox браузерінен импортталған</translation> <translation id="5503982651688210506"><ph name="HOST" /> сайтына камераны пайдалануға және жылжытуға, микрофонды пайдалануға рұқсат ету</translation> @@ -4277,7 +4277,7 @@ <translation id="6362853299801475928">&Мәселе туралы хабарлау…</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">Отбасы мен достарды қосу</translation> -<translation id="6367985768157257101">Nearby Share сұрауын қабылдау керек пе?</translation> +<translation id="6367985768157257101">Nearby Share арқылы қабылдау керек пе?</translation> <translation id="636850387210749493">Кәсіпорынды тіркеу</translation> <translation id="6370021412472292592">Манифестті жүктеу мүмкін болмады.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -4568,7 +4568,7 @@ <translation id="6758056191028427665">Қал-жағдайыңызды айтып беріңіз.</translation> <translation id="6759193508432371551">Зауыттық параметрлерге қайта орнату</translation> <translation id="6762833852331690540">Қосулы</translation> -<translation id="676560328519657314">Google Pay қызметіндегі төлеу әдісіңіз</translation> +<translation id="676560328519657314">Google Pay қызметіндегі төлеу әдістеріңіз</translation> <translation id="6767566652486411142">Басқа тіл таңдау...</translation> <translation id="6767639283522617719">Құрылғыны доменге қосу мүмкін емес. Бұл ұйымдық бірлік үшін дұрыс параметрлер орнатылғанын тексеріңіз.</translation> <translation id="6769557323306147204"><ph name="ORGANIZATION_NAME" /> бұл құрылғыны жаңартуыңызды ұсынады.</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 46f73eb3..c00105e7 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -542,7 +542,7 @@ <translation id="164936512206786300">ಬ್ಲೂಟೂತ್ ಸಾಧನದ ಜೋಡಿ ರದ್ದುಗೊಳಿಸಿ</translation> <translation id="1650371550981945235">ಇನ್ಪುಟ್ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸು</translation> <translation id="1651008383952180276">ನೀವು ಒಂದೇ ಪಾಸ್ಫ್ರೇಸ್ ಅನ್ನು ಎರಡು ಬಾರಿ ನಮೂದಿಸಬೇಕು</translation> -<translation id="1652326691684645429">Nearby Share ಆನ್ ಮಾಡಿ</translation> +<translation id="1652326691684645429">Nearby ಶೇರ್ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Google ಕ್ಲೌಡ್ ಪ್ರಿಂಟ್ಗೆ ಪ್ರಿಂಟರ್ ಅನ್ನು ಸೇರಿಸಿ, ಈ ಮೂಲಕ ನೀವು ಎಲ್ಲಿಂದಲಾದರೂ ಪ್ರಿಂಟ್ ಮಾಡಬಹುದು.}one{Google ಕ್ಲೌಡ್ ಪ್ರಿಂಟ್ಗೆ # ಪ್ರಿಂಟರ್ಗಳನ್ನು ಸೇರಿಸಿ, ಈ ಮೂಲಕ ನೀವು ಎಲ್ಲಿಂದಲಾದರೂ ಪ್ರಿಂಟ್ ಮಾಡಬಹುದು.}other{Google ಕ್ಲೌಡ್ ಪ್ರಿಂಟ್ಗೆ # ಪ್ರಿಂಟರ್ಗಳನ್ನು ಸೇರಿಸಿ, ಈ ಮೂಲಕ ನೀವು ಎಲ್ಲಿಂದಲಾದರೂ ಪ್ರಿಂಟ್ ಮಾಡಬಹುದು.}}</translation> <translation id="1656528038316521561">ಹಿನ್ನೆಲೆ ಅಪಾರದರ್ಶಕತೆ</translation> <translation id="1657406563541664238">Google ಗೆ ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳು ಮತ್ತು ಕ್ರ್ಯಾಶ್ ವರದಿಯನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುವ ಮೂಲಕ <ph name="PRODUCT_NAME" /> ಅನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡಿ</translation> @@ -1670,7 +1670,7 @@ <translation id="3022978424994383087">ಅದು ಅರ್ಥವಾಗಲಿಲ್ಲ.</translation> <translation id="3023464535986383522">ಧ್ವನಿ ಆಯ್ಕೆ ಮಾಡಿ</translation> <translation id="3024374909719388945">24-ಗಂಟೆಯ ಕ್ಲಾಕ್ ಬಳಸಿ</translation> -<translation id="3027296729579831126">Nearby Share ಆನ್ ಮಾಡಿ</translation> +<translation id="3027296729579831126">Nearby ಶೇರ್ ಆನ್ ಮಾಡಿ</translation> <translation id="3029466929721441205">ಶೆಲ್ಫ್ನಲ್ಲಿ ಸ್ಟೈಲಸ್ ಪರಿಕರಗಳನ್ನು ತೋರಿಸಿ</translation> <translation id="3031417829280473749">ಏಜೆಂಟ್ X</translation> <translation id="3031557471081358569">ಆಮದು ಮಾಡಲು ಐಟಂಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಿ:</translation> @@ -2966,7 +2966,7 @@ <translation id="4673442866648850031">ಸ್ಟೈಲಸ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿದಾಗ ಸ್ಟೈಲಸ್ ಪರಿಕರಗಳನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="4677772697204437347">GPU ಮೆಮೊರಿ</translation> <translation id="4680105648806843642">ಈ ಪುಟದಲ್ಲಿ ಧ್ವನಿಯನ್ನು ಮ್ಯೂಟ್ ಮಾಡಲಾಗಿದೆ</translation> -<translation id="4681453295291708042">Nearby Share ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</translation> +<translation id="4681453295291708042">Nearby ಶೇರ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="4681930562518940301">ಹೊಸ ಟ್ಯಾಬ್ನಲ್ಲಿ ಮೂಲ &ಚಿತ್ರವನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="4682551433947286597">ಸೈನ್-ಇನ್ ಪರದೆಯ ಮೇಲೆ ವಾಲ್ಪೇಪರ್ಗಳು ಗೋಚರಿಸುತ್ತವೆ.</translation> <translation id="4683947955326903992">ಶೇಕಡಾ <ph name="PERCENTAGE" /> (ಡೀಫಾಲ್ಟ್)</translation> @@ -3785,7 +3785,7 @@ <translation id="5739017626473506901"><ph name="USER_NAME" /> ಅವರಿಗೆ ಶಾಲೆಯ ಖಾತೆಯನ್ನು ಸೇರಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಲು ಸೈನ್ ಇನ್ ಮಾಡಿ</translation> <translation id="5739235828260127894">ಪರಿಶೀಲನೆಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation> <translation id="5739458112391494395">ಅತ್ಯಂತ ದೊಡ್ಡದು</translation> -<translation id="5740328398383587084">Nearby Share</translation> +<translation id="5740328398383587084">Nearby ಶೇರ್</translation> <translation id="574104302965107104">ಡಿಸ್ಪ್ಲೇ ಪ್ರತಿಬಿಂಬಿಸುವಿಕೆ</translation> <translation id="574209121243317957">ಪಿಚ್</translation> <translation id="5746169159649715125">PDF ನಂತೆ ಉಳಿಸಿ</translation> @@ -4284,7 +4284,7 @@ <translation id="6362853299801475928">&ಸಮಸ್ಯೆಯನ್ನು ವರದಿಮಾಡಿ...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">ಸ್ನೇಹಿತರು ಮತ್ತು ಕುಟುಂಬದವರನ್ನು ಸೇರಿಸಿ</translation> -<translation id="6367985768157257101">Nearby Share ಮೂಲಕ ಸ್ವೀಕರಿಸಬೇಕೆ?</translation> +<translation id="6367985768157257101">Nearby ಶೇರ್ ಮೂಲಕ ಸ್ವೀಕರಿಸಬೇಕೆ?</translation> <translation id="636850387210749493">ಎಂಟರ್ಪ್ರೈಸ್ ದಾಖಲಾತಿ</translation> <translation id="6370021412472292592">ಮ್ಯಾನಿಫೆಸ್ಟ್ ಲೋಡ್ ಮಾಡಲಾಗಲಿಲ್ಲ.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -4741,7 +4741,7 @@ <translation id="6965978654500191972">ಸಾಧನ</translation> <translation id="696780070563539690">ವಿವಿಧ ಸೈಟ್ಗಳಾದ್ಯಂತ ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಚಟುವಟಿಕೆಯನ್ನು ನೋಡಲು, ಉದಾಹರಣೆಗೆ ಜಾಹೀರಾತುಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸುವುದಕ್ಕಾಗಿ, ನಿಮ್ಮ ಕುಕೀಗಳನ್ನು ಬಳಸಲು ಸೈಟ್ಗಳಿಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ</translation> <translation id="6968288415730398122">ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ</translation> -<translation id="6969047215179982698">Nearby Share ಆಫ್ ಮಾಡಿ</translation> +<translation id="6969047215179982698">Nearby ಶೇರ್ ಆಫ್ ಮಾಡಿ</translation> <translation id="6970480684834282392">ಸ್ಟಾರ್ಟ್ಅಪ್ ಪ್ರಕಾರ</translation> <translation id="6970856801391541997">ನಿರ್ದಿಷ್ಟ ಪುಟಗಳನ್ನು ಮುದ್ರಿಸಿ</translation> <translation id="6972180789171089114">ಆಡಿಯೋ/ವೀಡಿಯೊ</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index 89d7b8c9..d6d07b4 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -540,7 +540,7 @@ <translation id="164936512206786300">Bluetooth түзмөгүн ажыратуу</translation> <translation id="1650371550981945235">Киргизүү опцияларын көрсөтүү</translation> <translation id="1651008383952180276">Бир купуя сөз айкашын эки жолу киргизишиңиз керек</translation> -<translation id="1652326691684645429">Жакын арадагылар менен бөлүшүү функциясын иштетүү</translation> +<translation id="1652326691684645429">Nearby Share функциясын иштетүү</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Принтерди Google Булуттагы Принтерге кошуп, керектүү нерселериңизди каалаган жерден басып чыгара аласыз.}other{# принтерди Google Булуттагы Принтерге кошуп, керектүү нерселериңизди каалаган жерден басып чыгара аласыз.}}</translation> <translation id="1656528038316521561">Фондун тунуктугу</translation> <translation id="1657406563541664238">Google'га автоматтык түрдө колдонуу статистикасы жана каталар жөнүндө кабар берип, <ph name="PRODUCT_NAME" /> өркүндөткөнгө кол кабыш кылыңыз</translation> @@ -1669,7 +1669,7 @@ <translation id="3022978424994383087">Түшүнүксүз которулуп калды.</translation> <translation id="3023464535986383522">Басып туруп угуңуз</translation> <translation id="3024374909719388945">24 сааттык саатты колдонуу</translation> -<translation id="3027296729579831126">Жакын арадагылар менен бөлүшүү функциясын күйгүзүү</translation> +<translation id="3027296729579831126">Nearby Share функциясын күйгүзүү</translation> <translation id="3029466929721441205">Стилус куралдарын текчеде көрсөтүү</translation> <translation id="3031417829280473749">Агент X</translation> <translation id="3031557471081358569">Импорттоло турган нерселерди тандаңыз:</translation> @@ -2965,7 +2965,7 @@ <translation id="4673442866648850031">Стилус алынганда, стилус куралдары ачылсын</translation> <translation id="4677772697204437347">GPU эстутуму</translation> <translation id="4680105648806843642">Бул барактын үнү өчүрүлгөн</translation> -<translation id="4681453295291708042">Жакын арадагылар менен бөлүшүү функциясын өчүрүү</translation> +<translation id="4681453295291708042">Updated функциясын өчүрүү</translation> <translation id="4681930562518940301">Түпнуска &сүрөттү жаңы өтмөктө ачуу</translation> <translation id="4682551433947286597">Тушкагаздар Кирүү экранында көрүнөт.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (демейки)</translation> @@ -3782,7 +3782,7 @@ <translation id="5739017626473506901"><ph name="USER_NAME" /> балаңызга мектеп аккаунтун кошууга жардам берүү үчүн аккаунтуңузга кириңиз.</translation> <translation id="5739235828260127894">Ырастоо күтүлүүдө. <ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation> <translation id="5739458112391494395">Өтө чоң</translation> -<translation id="5740328398383587084">Жакын арадагылар менен бөлүшүү</translation> +<translation id="5740328398383587084">Nearby Share</translation> <translation id="574104302965107104">Дисплейди күзгүдөй чагылдыруу</translation> <translation id="574209121243317957">Тон</translation> <translation id="5746169159649715125">PDF катары сактоо</translation> @@ -4737,7 +4737,7 @@ <translation id="6965978654500191972">Түзмөк</translation> <translation id="696780070563539690">Сайттар жарнамаларды жекелештирүү үчүн башка сайттардагы серептөө аракеттериңизди көрүү үчүн cookie файлдарын колдоно алышпайт</translation> <translation id="6968288415730398122">Экран кулпусун конфигурациялоо үчүн сырсөзүңүздү киргизиңиз</translation> -<translation id="6969047215179982698">Жакын арадагылар менен бөлүшүү функциясын өчүрүү</translation> +<translation id="6969047215179982698">Nearby Share функциясын өчүрүү</translation> <translation id="6970480684834282392">Баштоо түрү</translation> <translation id="6970856801391541997">Белгилүү беттерди басып чыгаруу</translation> <translation id="6972180789171089114">Аудио/Видео</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 8943ea91..108e564a 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -538,7 +538,7 @@ <translation id="164936512206786300">ຍົກເລີກການຈັບຄູ່ອຸປະກອນ Bluetooth</translation> <translation id="1650371550981945235">ສະແດງຕົວເລືອກການປ້ອນຂໍ້ມູນ</translation> <translation id="1651008383952180276">ທ່ານຕ້ອງປ້ອນວະລີຜ່ານອັນດຽວກັນສອງເທື່ອ</translation> -<translation id="1652326691684645429">ເປີດການນຳໃຊ້ Nearby Share</translation> +<translation id="1652326691684645429">ເປີດການນຳໃຊ້ການແບ່ງປັນໃກ້ຄຽງ</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{ເພີ່ມເຄື່ອງພິມໃສ່ Google Cloud Print ເພື່ອໃຫ້ທ່ານສາມາດພິມໄດ້ຢູ່ທຸກບ່ອນ.}other{ເພີ່ມ # ເຄື່ອງພິມໃສ່ Google Cloud Print ເພື່ອໃຫ້ທ່ານສາມາດພິມໄດ້ຢູ່ທຸກບ່ອນ.}}</translation> <translation id="1656528038316521561">ຄວາມທຶບແສງຂອງພື້ນຫຼັງ</translation> <translation id="1657406563541664238">ຊ່ວຍເຮັດໃຫ້ <ph name="PRODUCT_NAME" /> ດີຂຶ້ນໂດຍການສົ່ງສະຖິຕິການນໍາໃຊ້ ແລະລາຍງານການຂັດຂ້ອງຫາ Google ໂດຍອັດຕະໂນມັດ</translation> @@ -1667,7 +1667,7 @@ <translation id="3022978424994383087">ບໍ່ເຂົ້າໃຈສິ່ງນັ້ນ.</translation> <translation id="3023464535986383522">ເລືອກເພື່ອເວົ້າ</translation> <translation id="3024374909719388945">ໃຊ້ໂມງແບບ 24 ຊົ່ວໂມງ</translation> -<translation id="3027296729579831126">ເປີດໃຊ້ Nearby Share</translation> +<translation id="3027296729579831126">ເປີດໃຊ້ການແບ່ງປັນໃກ້ຄຽງ</translation> <translation id="3029466929721441205">ສະແດງເຄື່ອງມືປາຍປາກກາໃນຖ້ານ</translation> <translation id="3031417829280473749">ຕົວແທນ X</translation> <translation id="3031557471081358569">ເລືອກລາຍການທີ່ຈະນໍາເຂົ້າ:</translation> @@ -2963,7 +2963,7 @@ <translation id="4673442866648850031">ເປີດເຄື່ອງມືປາຍປາກກາ ເມື່ອປາຍປາກກາຖືກລຶບອອກ</translation> <translation id="4677772697204437347">ຄວາມຈໍາ GPU</translation> <translation id="4680105648806843642">ປິດສຽງໄວ້ແລ້ວໃນໜ້ານີ້</translation> -<translation id="4681453295291708042">ປິດການນຳໃຊ້ Nearby Share</translation> +<translation id="4681453295291708042">ປິດການນຳໃຊ້ການແບ່ງປັນໃກ້ຄຽງ</translation> <translation id="4681930562518940301">ເປີດຮູບ&ເດີມຢູ່ໃນແຖບໃໝ່</translation> <translation id="4682551433947286597">ວອລເປເປີປະກົດຢູ່ໃນໜ້າຈໍລົງຊື່ເຂົ້າໃຊ້.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (ຄ່າເລີ່ມຕົ້ນ)</translation> @@ -3780,7 +3780,7 @@ <translation id="5739017626473506901">ເຂົ້າສູ່ລະບົບເພື່ອຊ່ວຍ <ph name="USER_NAME" /> ເພີ່ມບັນຊີໂຮງຮຽນ</translation> <translation id="5739235828260127894">ກຳລັງລໍຖ້າການຢັ້ງຢືນ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation> <translation id="5739458112391494395">ໃຫຍ່ຫຼາຍ</translation> -<translation id="5740328398383587084">Nearby Share</translation> +<translation id="5740328398383587084">ການແບ່ງປັນໃກ້ຄຽງ</translation> <translation id="574104302965107104">ການສາຍພາບຈໍສະແດງຜົນ</translation> <translation id="574209121243317957">ລະດັບສຽງ</translation> <translation id="5746169159649715125">ບັນທຶກເປັນ PDF</translation> @@ -4735,7 +4735,7 @@ <translation id="6965978654500191972">ອຸປະກອນ</translation> <translation id="696780070563539690">ເວັບໄຊບໍ່ສາມາດໃຊ້ຄຸກກີ້ຂອງທ່ານເພື່ອເບິ່ງການເຄື່ອນໄຫວທ່ອງເວັບຂອງທ່ານໃນທົ່ວເວັບໄຊຕ່າງໆ, ຕົວຢ່າງ: ເພື່ອປັບແຕ່ງໂຄສະນາໃຫ້ເປັນແບບສ່ວນຕົວໄດ້</translation> <translation id="6968288415730398122">ປ້ອນລະຫັດຜ່ານຂອງທ່ານເພື່ອກຳນົດຄ່າການລັອກໜ້າຈໍ</translation> -<translation id="6969047215179982698">ປິດ Nearby Share</translation> +<translation id="6969047215179982698">ປິດການແບ່ງປັນໃກ້ຄຽງ</translation> <translation id="6970480684834282392">ປະເພດເລີ່ມຕົ້ນ</translation> <translation id="6970856801391541997">ພິມໜ້າສະເພາະ</translation> <translation id="6972180789171089114">ສຽງ/ວິດີໂອ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 4de9f5b..9ac9941 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Pašalinus šį slaptažodį jūsų paskyra domene <ph name="DOMAIN" /> nebus ištrinta. Pakeiskite slaptažodį arba ištrinkite paskyrą domene <ph name="DOMAIN_LINK" />, kad apsaugotumėte ją nuo kitų.</translation> <translation id="1084824384139382525">Kopijuoti nuorodos adr&esą</translation> <translation id="1085697365578766383">Paleidžiant virtualų įrenginį įvyko klaida. Bandykite dar kartą.</translation> +<translation id="1088659085457112967">Įjungti skaitytojo režimą</translation> <translation id="1090126737595388931">Nėra vykdomų fono programų</translation> <translation id="1091767800771861448">Jei norite praleisti, paspauskite ESCAPE (galioja tik neoficialioms versijoms).</translation> <translation id="1093457606523402488">Matomi tinklai:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Viešojo terminalo buvo atnaujinta. Atjunkite USB atmintuką.</translation> <translation id="120368089816228251">Muzikos nata</translation> <translation id="1203942045716040624">Bendrinamas elementas: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">DNS delsa</translation> <translation id="1205489148908752564">Skaityti ir keisti į baltąjį sąrašą įtrauktus naudotojus</translation> <translation id="1206407435587370571">Tyrinėkite savo „Chromebook“ įrenginį</translation> <translation id="1209796539517632982">Automatiniai pavadinimų serveriai</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Ar šis rezultatas netikėtas? <ph name="BEGIN_LINK" />Siųsti atsiliepimą<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Įvesti naudotojo vardas ir slaptažodis neatitinka</translation> <translation id="1397500194120344683">Nėra tinkamų įrenginių. <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Galima patikrinti tinklų sietuvo ryšį</translation> <translation id="1398853756734560583">Išskleisti</translation> <translation id="139911022479327130">Telefono atrakinimas ir tapatybės patvirtinimas</translation> <translation id="1399511500114202393">Naudotojo sertifikato nereikia</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Pašalinti šį asmenį</translation> <translation id="1703331064825191675">Niekada nesijaudinkite dėl slaptažodžių</translation> <translation id="1704970325597567340">Saugos patikra atlikta <ph name="DATE" /></translation> +<translation id="1706391837335750954">DNS pavadinimų vertimo programos aptikimas</translation> <translation id="1706586824377653884">Pridėjo jūsų administratorius</translation> <translation id="1706625117072057435">Mastelio keitimo lygiai</translation> <translation id="1708338024780164500">(Neaktyvus)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">„Chrome“ valdoma naudojant automatinę bandomąją programinę įrangą.</translation> <translation id="2071393345806050157">Nėra vietinio žurnalo failo.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Spustelėkite ir įdiekite plėtinį}one{Spustelėkite ir įdiekite plėtinius}few{Spustelėkite ir įdiekite plėtinius}many{Spustelėkite ir įdiekite plėtinius}other{Spustelėkite ir įdiekite plėtinius}}</translation> +<translation id="2073505299004274893">Naudokite <ph name="CHARACTER_LIMIT" /> ar mažiau simbolių</translation> <translation id="2075474481720804517">Akumuliatorius: <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="2075959085554270910">Suteikia galimybę įgalinti / išjungti funkciją „Paliesti ir spustelėti“ bei vilkimo palietus veiksmus</translation> <translation id="2076269580855484719">Slėpti šį papildinį</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Įveskite PIN kodą</translation> <translation id="241082044617551207">Nežinomas papildinys</translation> <translation id="2412593942846481727">Pasiekiamas naujinys</translation> +<translation id="2414499877591062094">Įjungti automatinį PIN kodo pateikimą</translation> <translation id="2416435988630956212">Klaviatūros funkcijų klavišai</translation> <translation id="241727068219398187">Nuo <ph name="TIME" /> duomenys užšifruoti naudojant „Google“ slaptažodį. Neįtraukiami mokėjimo metodai ir adresai iš „Google Pay“.</translation> @@ -1308,6 +1314,7 @@ <translation id="2586672484245266891">Įveskite trumpesnį URL</translation> <translation id="2587922766792651800">Baigėsi skirtasis laikas</translation> <translation id="2588636910004461974">Įrenginiai iš „<ph name="VENDOR_NAME" />“</translation> +<translation id="25899519884572181">Išeiti iš skaitytojo režimo</translation> <translation id="2594999711683503743">Ieškokite „Google“ arba įveskite URL</translation> <translation id="2602501489742255173">Perbraukite aukštyn, jei norite pradėti</translation> <translation id="2603115962224169880">Išvalykite kompiuterį</translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Įgalintos kalbos</translation> <translation id="3313622045786997898">Sertifikato parašo vertė</translation> <translation id="3315158641124845231">Slėpti „<ph name="PRODUCT_NAME" />“</translation> +<translation id="3315442055907669208">Įjungti skaitytojo režimą</translation> <translation id="3317459757438853210">Dvipusis</translation> <translation id="3317678681329786349">Fotoaparatas ir mikrofonas užblokuoti</translation> <translation id="3319048459796106952">Naujas &nežinomas langas</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Sveiki, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" /> % – liko <ph name="TIME" /></translation> <translation id="3637682276779847508">SIM kortelė bus visam laikui išjungta, jei negalėsite įvesti tinkamo PIN kodo atrakinimo rakto.</translation> +<translation id="3639220004740062347">Išeiti iš skaitytojo režimo</translation> <translation id="3640214691812501263">Pridėti „<ph name="EXTENSION_NAME" />“ naudotojui <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Išmokykite Padėjėją atpažinti jūsų balsą</translation> <translation id="3645372836428131288">Truputį pajudinkite pirštą, kad būtų užfiksuota kita piršto antspaudo dalis.</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Laukiama, kol žurnalas bus įkeltas.</translation> <translation id="3650952250015018111">Leidimas „<ph name="APP_NAME" />“ pasiekti:</translation> <translation id="3651488188562686558">Atsijungti nuo „Wi-Fi“</translation> +<translation id="3651952061994655768">Keisti pavadinimą</translation> <translation id="3652817283076144888">Inicijuojama</translation> <translation id="3653160965917900914">Tinklo failų bendrinimas</translation> <translation id="3653842108912548333">Padėjėjo pasiekimas naudojant „Voice Match“</translation> @@ -2241,6 +2251,7 @@ <translation id="3748706263662799310">Pateikti ataskaitą apie triktį</translation> <translation id="3752582316358263300">Gerai...</translation> <translation id="3752673729237782832">Mano įrenginiai</translation> +<translation id="3752757212511661046">Sukurti darbo profilį?</translation> <translation id="3753033997400164841">Išsaugokite vieną kartą. Naudokite visur</translation> <translation id="3755411799582650620">„<ph name="PHONE_NAME" />“ taip pat gali atrakinti šį „<ph name="DEVICE_TYPE" />“ įrenginį.</translation> <translation id="375636864092143889">Svetainė naudoja jūsų mikrofoną</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Įjungti „Google“ padėjėją</translation> <translation id="387531380970557479">Plėtinys „<ph name="EXTENSION_NAME" />“ išjungtas, nes jame yra kenkėjiška programa.</translation> <translation id="3879748587602334249">Atsisiuntimų tvarkytuvė</translation> +<translation id="3881478300875776315">Rodyti mažiau eilučių</translation> <translation id="3882165008614329320">Esamas vaizdo įrašas iš kameros ar failo</translation> <translation id="3886446263141354045">Jūsų užklausa pasiekti šią svetainę išsiųsta <ph name="NAME" />.</translation> <translation id="3888550877729210209">Užrašų kūrimas naudojant „<ph name="LOCK_SCREEN_APP_NAME" />“</translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">Sutinku</translation> <translation id="413121957363593859">Komponentai</translation> <translation id="4131410914670010031">Nespalvotai</translation> +<translation id="413193092008917129">Tinklo diagnostikos veiksmų sekos</translation> <translation id="4133076602192971179">Atidarykite programą, kad pakeistumėte slaptažodį</translation> <translation id="4136203100490971508">Nakties šviesa bus išjungta automatiškai saulei tekant</translation> <translation id="41365691917097717">Tęsdami įgalinsite ADB derinimą, naudojamą „Android“ programoms kurti ir testuoti. Atminkite, kad atlikus šį veiksmą bus leidžiama įdiegti „Android“ programas, kurios nebuvo patvirtintos „Google“, o norint išjungti ADB, reikės atkurti gamyklinius nustatymus.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">Atidaryti atsisiųstus failus</translation> <translation id="4377363674125277448">Iškilo su serverio sertifikatu susijusi problema.</translation> <translation id="4378154925671717803">Telefonas</translation> +<translation id="4378373042927530923">Nevykdyti</translation> <translation id="4378551569595875038">Jungiamasi...</translation> <translation id="4378556263712303865">Įrenginio užklausų teikimas</translation> <translation id="4379281552162875326">Pašalinti „<ph name="APP_NAME" />“?</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">&Atidaryti vaizdo įrašą naujame skirtuke</translation> <translation id="4645676300727003670">&Palikti</translation> <translation id="4646675363240786305">Prievadai</translation> +<translation id="4646949265910132906">Saugus „Wi-Fi“ ryšys</translation> <translation id="4647090755847581616">&Uždaryti skirtuką</translation> <translation id="4647420311443994946">{0,select, tablet{Paleisti programą prisijungus prie planšetinio kompiuterio}computer{Paleisti programą prisijungus prie kompiuterio}other{Paleisti programą prisijungus prie įrenginio}}</translation> <translation id="4647697156028544508">Įveskite „<ph name="DEVICE_NAME" />“ PIN kodą:</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> galės peržiūrėti failą „<ph name="FILENAME" />“, kol uždarysite visus šios svetainės skirtukus</translation> <translation id="4692623383562244444">Paieškos varikliai</translation> <translation id="4693155481716051732">Sušis</translation> +<translation id="469379815867856270">Signalo stiprumas</translation> <translation id="4694024090038830733">Spausdintuvą konfigūruoja administratorius.</translation> <translation id="4694604912444486114">Beždžionė</translation> <translation id="4697551882387947560">Pasibaigus naršymo sesijai</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">Šiame plėtinyje yra kenkėjiškų programų.</translation> <translation id="4981449534399733132">Norėdami išvalyti naršymo duomenis iš sinchronizuotų įrenginių ir „Google“ paskyros, <ph name="BEGIN_LINK" />prisijunkite<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Įrenginio programinė įranga</translation> +<translation id="4985509611418653372">Vykdyti</translation> <translation id="4986728572522335985">Taip bus ištrinti visi saugos rakte išsaugoti duomenys, įskaitant jo PIN kodą</translation> <translation id="4988526792673242964">Psl.</translation> <translation id="49896407730300355">Sukti prieš l&aikrodžio rodyklę</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">Skaityti visus duomenis svetainėse, kuriose apsilankote</translation> <translation id="5242724311594467048">Įgalinti „<ph name="EXTENSION_NAME" />“?</translation> <translation id="5243522832766285132">Po kelių minučių bandykite dar kartą</translation> +<translation id="5244406554036143958">Įveskite PIN kodą, kad įgalintumėte automatinį pateikimą</translation> <translation id="5244474230056479698">Sinchronizavimas su <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Pradžia naudojant mokyklos paskyrą</translation> <translation id="5246282308050205996">„<ph name="APP_NAME" />“ užstrigo. Jei norite iš naujo paleisti programą, spustelėkite šį debesėlį.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Tapatybė</translation> <translation id="5317780077021120954">Išsaugoti</translation> <translation id="5319359161174645648">„Google“ rekomenduoja „Chrome“</translation> +<translation id="5320135788267874712">Naujas įrenginio pavadinimas</translation> <translation id="532247166573571973">Serveris gali būti nepasiekiamas. Vėliau bandykite dar kartą.</translation> <translation id="5324780743567488672">Automatiškai nustatyti laiko juostą pagal jūsų vietovę</translation> <translation id="5327248766486351172">Pavadinimas</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Neleisti svetainėms pasiekti USB įrenginių</translation> <translation id="5336688142483283574">Šis puslapis taip pat bus pašalintas iš jūsų istorijos ir „<ph name="SEARCH_ENGINE" />“ veiklos.</translation> <translation id="5337771866151525739">Įdiegė trečioji šalis.</translation> +<translation id="5337926771328966926">Dabartinis įrenginio pavadinimas yra „<ph name="DEVICE_NAME" />“</translation> <translation id="5338503421962489998">Vietinė atmintinė</translation> <translation id="5340638867532133571">Leisti svetainėms diegti mokėjimų dorokles (rekomenduojama)</translation> <translation id="5341793073192892252">Užblokuoti toliau nurodyti slapukai (trečiųjų šalių slapukai blokuojami be išimčių)</translation> @@ -3492,6 +3512,7 @@ <translation id="5379140238605961210">Toliau blokuoti prieigą prie mikrofono</translation> <translation id="5382591305415226340">Tvarkyti palaikomas nuorodas</translation> <translation id="5383377866517186886">Fotoaparatas išjungtas „Mac“ sistemos nuostatose</translation> +<translation id="5383740867328871413">Grupė be pavadinimo – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Susieta</translation> <translation id="5389237414310520250">Nepavyko sukurti naujo naudotojo. Patikrinkite, ar standžiajame diske yra vietos, ir leidimus ir bandykite dar kartą.</translation> <translation id="5390100381392048184">Leisti svetainėms leisti garsą</translation> @@ -3502,6 +3523,7 @@ <translation id="5398497406011404839">Paslėptos žymės</translation> <translation id="5398572795982417028">Puslapio už diapazono ribų nuoroda (apribojimas :<ph name="MAXIMUM_PAGE" />)</translation> <translation id="5398772614898833570">Skelbimai užblokuoti</translation> +<translation id="5401938042319910061">Vykdyti visas veiksmų sekas</translation> <translation id="5402815541704507626">Naujinio atsisiuntimas naudojant mobiliojo ryšio duomenis</translation> <translation id="540296380408672091">Visada blokuoti slapukus <ph name="HOST" /></translation> <translation id="540495485885201800">Apkeisti su ankstesniu</translation> @@ -3818,6 +3840,7 @@ <translation id="57838592816432529">Nutildyti</translation> <translation id="5785583009707899920">„Chrome“ failų paslaugų programos</translation> <translation id="5787146423283493983">Sutartis dėl rakto</translation> +<translation id="5787420647064736989">Įrenginio pavadinimas</translation> <translation id="5788367137662787332">Apgailestaujame, tačiau neįmanoma įrengti bent vieno įrenginio <ph name="DEVICE_LABEL" /> disko skaidinio.</translation> <translation id="5790085346892983794">Atlikta</translation> <translation id="5790651917470750848">Toks prievado numeris jau yra</translation> @@ -4494,6 +4517,7 @@ <translation id="6648911618876616409">Svarbus naujinys paruoštas įdiegti. Prisijunkite ir pradėkite.</translation> <translation id="6649018507441623493">Šiek tiek palaukite...</translation> <translation id="6649563841575838401">Archyvo formatas nepalaikomas arba failas yra sugadintas.</translation> +<translation id="6650234781371031356">Svetainės <ph name="WEBSITE" /> slaptažodis saugomas šiame įrenginyje ir „Google“ paskyroje. Kurį norite ištrinti?</translation> <translation id="665061930738760572">Atidaryti &naujame lange</translation> <translation id="6651237644330755633">Pasitikėti šiuo sertifikatu nustatant svetaines</translation> <translation id="665355505818177700">„Chrome“ <ph name="MS_AD_NAME" /> integravimas palaikomas tik x86_64 platformose. „Chromebook“, kurie sukurti veikti su ARM arba x86 platforma, šios funkcijos nepalaiko.</translation> @@ -4532,6 +4556,7 @@ <translation id="6701535245008341853">Profilio gauti nepavyko.</translation> <translation id="6702639462873609204">&Redaguoti...</translation> <translation id="6703966911896067184">Registracijos klaidos iliustracija</translation> +<translation id="6704062477274546131">DNS pavadinimų vertimas</translation> <translation id="6706210727756204531">Taikymo sritis</translation> <translation id="6707389671160270963">SSL kliento sertifikatas</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> ir dar 1 skirtukas}one{<ph name="PAGE_TITLE" /> ir dar # skirtukas}few{<ph name="PAGE_TITLE" /> ir dar # skirtukai}many{<ph name="PAGE_TITLE" /> ir dar # skirtuko}other{<ph name="PAGE_TITLE" /> ir dar # skirtukų}}</translation> @@ -4589,6 +4614,7 @@ <translation id="677965093459947883">Labai mažas</translation> <translation id="6781284683813954823">Papuošto logotipo nuoroda</translation> <translation id="6781978626986383437">„Linux“ atsarginės kopijos kūrimas atšauktas</translation> +<translation id="6782067259631821405">Netinkamas PIN kodas</translation> <translation id="6785915470941880363">Atvirkštinis slinkimas <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Plėtiniai</translation> <translation id="6787839852456839824">Spartieji klavišai</translation> @@ -4895,6 +4921,7 @@ <translation id="7141105143012495934">Nepavyko prisijungti, nes negalima gauti išsamios paskyros informacijos. Susisiekite su administratoriumi arba bandykite dar kartą.</translation> <translation id="7143207342074048698">Jungiama</translation> <translation id="7144878232160441200">Bandyti dar kartą</translation> +<translation id="714876143603641390">LAN ryšys</translation> <translation id="7149893636342594995">Pastarosios 24 valandos</translation> <translation id="715118844758971915">Įprasti spausdintuvai</translation> <translation id="7152478047064750137">Šiam plėtiniui nereikia specialių leidimų</translation> @@ -5032,6 +5059,7 @@ <translation id="7334274148831027933">Įgalinti prie doko prijungtą didintuvą</translation> <translation id="7335974957018254119">Naudoti rašybos tikrinimą</translation> <translation id="7336799713063880535">Praneš. užblokuoti.</translation> +<translation id="7337248890521463931">Rodyti daugiau eilučių</translation> <translation id="7338630283264858612">Netinkamas įrenginio serijos numeris.</translation> <translation id="7339763383339757376">PKCS Nr. 7, vienas sertifikatas</translation> <translation id="7339785458027436441">Rašant tikrinti rašybos klaidas</translation> @@ -5414,6 +5442,7 @@ <translation id="7807711621188256451">Visada leisti <ph name="HOST" /> pasiekti fotoaparatą</translation> <translation id="7810202088502699111">Šiame puslapyje iššokantieji langai buvo užblokuoti.</translation> <translation id="781167124805380294">„<ph name="FILE_NAME" />“ perdavimas</translation> +<translation id="7814277578404816512">Peržiūrėkite, kas naujo „<ph name="DEVICE_TYPE" />“</translation> <translation id="7814458197256864873">&Kopijuoti</translation> <translation id="7815680994978050279">Užblokuotas pavojingas atsisiuntimas</translation> <translation id="7817361223956157679">Ekrano klaviatūra „Linux“ programose kol kas neveikia</translation> @@ -5643,6 +5672,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 popieriaus lapas}one{{COUNT} popieriaus lapas}few{{COUNT} popieriaus lapai}many{{COUNT} popieriaus lapo}other{{COUNT} popieriaus lapų}}</translation> <translation id="8063235345342641131">Numatytasis žalias pseudoportretas</translation> <translation id="8063535366119089408">Peržiūrėti failą</translation> +<translation id="8064279191081105977">Grupė <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Palieskite, kad prisijungtumėte</translation> <translation id="8069615408251337349">„Google“ spausdinimas iš debesies</translation> <translation id="8071432093239591881">Spausdinti kaip vaizdą</translation> @@ -6388,6 +6418,7 @@ <translation id="8986362086234534611">Pamiršti</translation> <translation id="8986494364107987395">Automatiškai siųsti naudojimo statistiką ir strigčių ataskaitas „Google“</translation> <translation id="8987927404178983737">Mėnuo</translation> +<translation id="8990209962746788689">Nepavyko sukurti QR kodo</translation> <translation id="8991520179165052608">Svetainė gali naudoti jūsų mikrofoną</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 elementas}one{# elementas}few{# elementai}many{# elemento}other{# elementų}}</translation> <translation id="899384117894244799">Riboto naudotojo profilio pašalinimas</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index a4e25a1..20c898a 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -538,7 +538,7 @@ <translation id="164936512206786300">Bluetooth ഉപകരണം ജോടി പിരിക്കുക</translation> <translation id="1650371550981945235">ഇൻപുട്ട് ഓപ്ഷനുകൾ കാണിക്കുക</translation> <translation id="1651008383952180276">ഒരേ പാസ്ഫ്രെയ്സ് തന്നെ നിങ്ങള് രണ്ടുതവണ നല്കേണ്ടതുണ്ട്</translation> -<translation id="1652326691684645429">നിയർബൈ ഷെയർ പ്രവർത്തനക്ഷമമാക്കുക</translation> +<translation id="1652326691684645429">സമീപമുള്ള പങ്കിടൽ പ്രവർത്തനക്ഷമമാക്കുക</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{പ്രിന്റർ Google ക്ലൗഡ് പ്രിന്റിൽ ചേർക്കുന്നതിനാൽ നിങ്ങൾക്ക് എവിടെനിന്നും പ്രിന്റ് ചെയ്യാനാകും.}other{# പ്രിന്ററുകൾ Google ക്ലൗഡ് പ്രിന്റിൽ ചേർക്കുന്നതിനാൽ നിങ്ങൾക്ക് എവിടെനിന്നും പ്രിന്റ് ചെയ്യാനാകും.}}</translation> <translation id="1656528038316521561">പശ്ചാത്തല അതാര്യത</translation> <translation id="1657406563541664238">Google ലേക്ക് ഉപയോഗ സ്ഥിതിവിവരകണക്കുകളും ക്രാഷ് റിപ്പോര്ട്ടുകളും സ്വയമേവ അയച്ചുകൊണ്ട് <ph name="PRODUCT_NAME" /> മെച്ചപ്പെട്ട രീതിയില് നിര്മ്മിക്കാന് സഹായിക്കുക</translation> @@ -1667,7 +1667,7 @@ <translation id="3022978424994383087">അത് മനസ്സിലായില്ല.</translation> <translation id="3023464535986383522">വായിച്ചുകേൾക്കാൻ തിരഞ്ഞെടുക്കുക</translation> <translation id="3024374909719388945">24 മണിക്കൂര് ക്ലോക്ക് ഉപയോഗിക്കുക</translation> -<translation id="3027296729579831126">നിയർബൈ ഷെയർ ഓണാക്കുക</translation> +<translation id="3027296729579831126">സമീപമുള്ള പങ്കിടൽ ഓണാക്കുക</translation> <translation id="3029466929721441205">ഷെൽഫിലെ സ്റ്റൈലസ് ടൂളുകൾ കാണിക്കുക</translation> <translation id="3031417829280473749">ഏജന്റ് X</translation> <translation id="3031557471081358569">ഇറക്കുമതി ചെയ്യുന്നതിനായി ഇനങ്ങള് തിരഞ്ഞെടുക്കുക:</translation> @@ -2962,7 +2962,7 @@ <translation id="4673442866648850031">സ്റ്റൈലസ് നീക്കംചെയ്യുമ്പോൾ സ്റ്റൈലസ് ടൂളുകൾ തുറക്കുക</translation> <translation id="4677772697204437347">GPU മെമ്മറി</translation> <translation id="4680105648806843642">ഈ പേജിൽ ശബ്ദം മ്യൂട്ട് ചെയ്തു</translation> -<translation id="4681453295291708042">നിയർബൈ ഷെയർ പ്രവർത്തനരഹിതമാക്കുക</translation> +<translation id="4681453295291708042">സമീപമുള്ള പങ്കിടൽ പ്രവർത്തനരഹിതമാക്കുക</translation> <translation id="4681930562518940301">ഒറിജിനൽ ചിത്രം പുതിയ ടാബിൽ തുറക്കുക</translation> <translation id="4682551433947286597">സൈൻ-ഇൻ സ്ക്രീനിൽ ദൃശ്യമാകേണ്ട വാൾപേപ്പറുകൾ.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (ഡിഫോൾട്ട്)</translation> @@ -3780,7 +3780,7 @@ <translation id="5739017626473506901">സ്കൂൾ അക്കൗണ്ട് ചേർക്കുന്നതിന് <ph name="USER_NAME" /> എന്നയാളെ സഹായിക്കാൻ സൈൻ ഇൻ ചെയ്യുക</translation> <translation id="5739235828260127894">പരിശോധിച്ചുറപ്പിക്കാൻ കാത്തിരിക്കുന്നു. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation> <translation id="5739458112391494395">വളരെ വലുത്</translation> -<translation id="5740328398383587084">നിയർബൈ ഷെയർ</translation> +<translation id="5740328398383587084">സമീപമുള്ള പങ്കിടൽ</translation> <translation id="574104302965107104">ഡിസ്പ്ലേ മിററിംഗ്</translation> <translation id="574209121243317957">പിച്ച്</translation> <translation id="5746169159649715125">PDF ആയി സംരക്ഷിക്കുക</translation> @@ -4280,7 +4280,7 @@ <translation id="6362853299801475928">&ഒരു പ്രശ്നം റിപ്പോര്ട്ടുചെയ്യുക...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">കുടുംബാംഗങ്ങളെയും സുഹൃത്തുക്കളെയും ചേർക്കുക</translation> -<translation id="6367985768157257101">സമീപമുള്ള പങ്കിടൽ ഉപയോഗിച്ച് സ്വീകരിക്കണോ?</translation> +<translation id="6367985768157257101">സമീപമുള്ള പങ്കിടൽ വഴി സ്വീകരിക്കണോ?</translation> <translation id="636850387210749493">സംരംഭ വിവരപ്പട്ടിക</translation> <translation id="6370021412472292592">മാനിഫെസ്റ്റ് ലോഡ് ചെയ്യാനായില്ല.</translation> <translation id="6374077068638737855">ഐസ്വീസൽ</translation> @@ -4737,7 +4737,7 @@ <translation id="6965978654500191972">ഉപകരണം</translation> <translation id="696780070563539690">വ്യത്യസ്ത സൈറ്റുകളിലുടനീളമുള്ള നിങ്ങളുടെ ബ്രൗസിംഗ് ആക്റ്റിവിറ്റി കാണാൻ സൈറ്റുകൾക്ക് നിങ്ങളുടെ കുക്കികൾ ഉപയോഗിക്കാനാവില്ല, ഉദാഹരണത്തിന്, പരസ്യങ്ങൾ വ്യക്തിപരമാക്കാൻ</translation> <translation id="6968288415730398122">സ്ക്രീൻ ലോക്ക് കോൺഫിഗർ ചെയ്യാൻ പാസ്വേഡ് നൽകുക</translation> -<translation id="6969047215179982698">നിയർബൈ ഷെയർ ഓഫാക്കുക</translation> +<translation id="6969047215179982698">സമീപമുള്ള പങ്കിടൽ ഓഫാക്കുക</translation> <translation id="6970480684834282392">സ്റ്റാർട്ടപ്പ് തരം</translation> <translation id="6970856801391541997">പ്രിന്റ് പ്രത്യേക പേജുകൾ</translation> <translation id="6972180789171089114">ഓഡിയോ/വീഡിയോ</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index aa9648b..06bf67b 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -233,6 +233,7 @@ <translation id="1274997165432133392">कुकीज आणि इतर साइट डेटा</translation> <translation id="1275718070701477396">निवडलेले</translation> <translation id="1276994519141842946"><ph name="APP_NAME" /> अनइंस्टॉल करता आले नाही</translation> +<translation id="127946606521051357">जवळपासचे डिव्हाइस शेअर करत आहे</translation> <translation id="1280820357415527819">मोबाइल नेटवर्क शोधत आहे</translation> <translation id="1280965841156951489">फाइल संपादित करा</translation> <translation id="1285320974508926690">या साइटचा कधीही भाषांतर करु नका</translation> @@ -539,7 +540,7 @@ <translation id="164936512206786300">ब्लूटूथ डिव्हाइसचे पेअरिंग काढा</translation> <translation id="1650371550981945235">इनपुट पर्याय दर्शवा</translation> <translation id="1651008383952180276">समान सांकेतिक पासफ्रेझ दोनदा एंटर करणे आवश्यक आहे</translation> -<translation id="1652326691684645429">जवळपासचे शेअरिंग सुरू करा</translation> +<translation id="1652326691684645429">Nearby सह शेअरिंग सुरू करा</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Google क्लाउड प्रिंट वर प्रिंटर जोडा जेणेकरून तुम्ही कुठूनही प्रिंट करू शकता.}other{Google क्लाउड प्रिंट वर # प्रिंटर जोडा जेणेकरून तुम्ही कुठूनही प्रिंट करू शकता.}}</translation> <translation id="1656528038316521561">बॅकग्राउंडची अपारदर्शकता</translation> <translation id="1657406563541664238">वापर आकडेवारी आणि क्रॅश अहवाल आपोआप Google कडे पाठवून <ph name="PRODUCT_NAME" /> ला अधिक चांगले करण्यास मदत करा</translation> @@ -1220,6 +1221,7 @@ <translation id="2489918096470125693">&फोल्डर जोडा...</translation> <translation id="2490481887078769936">सूचीमधून '<ph name="FILE_NAME" />' काढून टाकले</translation> <translation id="249113932447298600">क्षमस्व, <ph name="DEVICE_LABEL" /> डिव्हाइस आत्ता समर्थित नाही.</translation> +<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> तुमच्यासोबत <ph name="ATTACHMENTS" /> शेअर करत आहे.</translation> <translation id="2492461744635776704">सर्टिफिकेटवर स्वाक्षरी करण्याची विनंती तयार करत आहे</translation> <translation id="249303669840926644">नोंदणी पूर्ण करू शकलो नाही</translation> <translation id="2495777824269688114">आणखी वैशिष्ट्ये शोधा किंवा उत्तरे मिळवा. मदतीसाठी “?” निवडा.</translation> @@ -1667,7 +1669,7 @@ <translation id="3022978424994383087">ते समजू शकले नाही.</translation> <translation id="3023464535986383522">बोलण्यासाठी निवडा</translation> <translation id="3024374909719388945">24-तासांचे घड्याळ वापरा</translation> -<translation id="3027296729579831126">जवळपासचे शेअरिंग सुरू करा</translation> +<translation id="3027296729579831126">Nearby सह शेअरिंग सुरू करा</translation> <translation id="3029466929721441205">शेल्फमध्ये स्टायलस टूल दाखवा</translation> <translation id="3031417829280473749">एजंट X</translation> <translation id="3031557471081358569">इंपोर्ट करण्यासाठी आयटम निवडा:</translation> @@ -2961,7 +2963,7 @@ <translation id="4673442866648850031">स्टायलस काढल्यानंतर स्टायलस टूल उघडा</translation> <translation id="4677772697204437347">GPU मेमरी</translation> <translation id="4680105648806843642">या पेजवर आवाज म्यूट केला होता</translation> -<translation id="4681453295291708042">जवळपासचे शेअरिंग बंद करा</translation> +<translation id="4681453295291708042">Nearby सह शेअरिंग बंद करा</translation> <translation id="4681930562518940301">नवीन टॅबमध्ये मूळ &प्रतिमा उघडा</translation> <translation id="4682551433947286597">साइन-इन स्क्रीनवर दिसणारे वॉलपेपर.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (डीफॉल्ट)</translation> @@ -3778,7 +3780,7 @@ <translation id="5739017626473506901"><ph name="USER_NAME" /> यांना शाळेच्या खात्यामध्ये जोडण्यात मदत करण्यासाठी साइन इन करा</translation> <translation id="5739235828260127894">पडताळणीसाठी वाट पाहत आहे. <ph name="LINK_BEGIN" />अधिक जाणून घ्या.<ph name="LINK_END" /></translation> <translation id="5739458112391494395">खूप मोठा</translation> -<translation id="5740328398383587084">जवळपासचे शेअरिंग</translation> +<translation id="5740328398383587084">Nearby सह शेअरिंग</translation> <translation id="574104302965107104">डिस्प्ले मिररिंग</translation> <translation id="574209121243317957">पिच</translation> <translation id="5746169159649715125">पीडीएफ म्हणून सेव्ह करा</translation> @@ -4150,6 +4152,7 @@ <translation id="6212039847102026977">प्रगत नेटवर्क वैशिष्ट्ये दर्शवा</translation> <translation id="6212168817037875041">डिस्प्ले बंद करा</translation> <translation id="6212752530110374741">ईमेल लिंक</translation> +<translation id="6213230117190778270">मिळवा</translation> <translation id="6216696360484424239">आपोआप साइन इन करा</translation> <translation id="6218058416316985984"><ph name="DEVICE_TYPE" /> ऑफलाइन आहे. इंटरनेटशी कनेक्ट करा आणि पुन्हा प्रयत्न करा.</translation> <translation id="6220413761270491930">एक्स्टेंशन लोड करताना एरर</translation> @@ -4277,6 +4280,7 @@ <translation id="6362853299801475928">&समस्या नोंदवणे...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">कुटुंब आणि मित्र जोडा</translation> +<translation id="6367985768157257101">Nearby सह शेअरिंग वापरून मिळवायचे आहे का?</translation> <translation id="636850387210749493">Enterprise नावनोंदणी</translation> <translation id="6370021412472292592">मॅनिफेस्ट लोड करू शकलो नाही.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -4733,7 +4737,7 @@ <translation id="6965978654500191972">डिव्हाइस</translation> <translation id="696780070563539690">वेगवेगळ्या साइटवरील तुमची ब्राउझिंग ॲक्टिव्हिटी पाहण्यासाठी साइट कुकी वापरू शकत नाहीत, उदाहरणार्थ, जाहिराती पर्सनलाइझ करण्यासाठी</translation> <translation id="6968288415730398122">स्क्रीन लॉक कॉन्फिगर करण्यासाठी तुमचा पासवर्ड एंटर करा</translation> -<translation id="6969047215179982698">जवळपासचे शेअरिंग बंद करा</translation> +<translation id="6969047215179982698">Nearby सह शेअरिंग बंद करा</translation> <translation id="6970480684834282392">प्रारंभ वेळ</translation> <translation id="6970856801391541997">विशिष्ट पेज प्रिंट करा</translation> <translation id="6972180789171089114">ऑडिओ/व्हिडिओ</translation> @@ -6578,6 +6582,7 @@ <translation id="939519157834106403">SSID</translation> <translation id="939598580284253335">सांकेतिक पासफ्रेझ एंटर करा</translation> <translation id="939736085109172342">नवीन फोल्डर</translation> +<translation id="941070664607309480">दृश्यमान होण्यासाठी क्लिक करा जेणेकरून ते तुमच्यासोबत शेअर करू शकेल</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> Chrome टॅब आणि ऑडिओ शेअर करीत आहे.</translation> <translation id="945522503751344254">अभिप्राय पाठवा</translation> <translation id="947329552760389097">&तपासणी घटक</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index e333f2d..a4226e5 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -540,7 +540,7 @@ <translation id="164936512206786300">ဘလူးတုသ်စက် ချိတ်ဆက်မှု ဖြုတ်ရန်</translation> <translation id="1650371550981945235">ထည့်သွင်းမှုဆိုင်ရာ ရွေးစရာများ ပြရန်</translation> <translation id="1651008383952180276">တူညီသည့် လျှို့ဝှက်စကားစုကို နှစ်ကြိမ်ထည့်ရပါမည်</translation> -<translation id="1652326691684645429">'အနီးတဝိုက်မျှဝေခြင်း' ကို ဖွင့်ရန်</translation> +<translation id="1652326691684645429">'အနီးတစ်ဝိုက် မျှဝေခြင်း' ကို ဖွင့်ရန်</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{သင့်အနေနှင့် ဘယ်နေရာမှမဆို ပရင့်ထုတ်ယူနိုင်ရန် ပရင်တာအား Google Cloud Print သို့ ထည့်ထားပါ။}other{ဘယ်နေရာမှမဆို သင် ပရင့်ထုတ်ယူနိုင်ရန် ပရင်တာ # အား Google Cloud Print သို့ ထည့်ထားပါ။ }}</translation> <translation id="1656528038316521561">နောက်ခံ အလင်းပိတ်နှုန်း</translation> @@ -2965,7 +2965,7 @@ <translation id="4673442866648850031">စတိုင်လက်စ်ခဲတံကို ဖယ်ရှားလိုက်သည့်အခါ စတိုင်လက်စ်ခဲတံတူးလ်စ်ကို ဖွင့်ရန်</translation> <translation id="4677772697204437347">GPU မှတ်ဉာဏ်</translation> <translation id="4680105648806843642">ဤစာမျက်နှာပေါ်တွင် အသံတိတ်ထားသည်</translation> -<translation id="4681453295291708042">'အနီးတဝိုက်မျှဝေခြင်း' ကို ပိတ်ရန်</translation> +<translation id="4681453295291708042">'အနီးတစ်ဝိုက် မျှဝေခြင်း' ကို ပိတ်ရန်</translation> <translation id="4681930562518940301">မူရင်းနှင့် ရုပ်ပုံကို တဲဘ်အသစ်တွင် ဖွင့်ရန်</translation> <translation id="4682551433947286597">ဝင်ရောက်ရန် စကရင်ပေါ်တွင် ပေါ်သည့် နောက်ခံပုံများ</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (မူလ)</translation> @@ -4280,7 +4280,7 @@ <translation id="6362853299801475928">&ပြဿနာ အစီရင်ခံရန်...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">မိသားစုနှင့် သူငယ်ချင်းများ ပေါင်းထည့်</translation> -<translation id="6367985768157257101">'အနီးတဝိုက် မျှဝေခြင်း' ဖြင့် လက်ခံမှာလား။</translation> +<translation id="6367985768157257101">'အနီးတစ်ဝိုက် မျှဝေခြင်း' ဖြင့် လက်ခံမလား။</translation> <translation id="636850387210749493">လုပ်ငန်း အမည်စာရင်းသွင်းခြင်း</translation> <translation id="6370021412472292592">ကြေညာစာတမ်းကို တင် မပေးနိုင်ခဲ့ပါ။</translation> <translation id="6374077068638737855">အိုင်စ်ဝါဆယ်လ</translation> @@ -4735,7 +4735,7 @@ <translation id="6965978654500191972">စက်ပစ္စည်း</translation> <translation id="696780070563539690">ဝဘ်ဆိုက်များသည် ကြော်ငြာများကို ပုဂ္ဂိုလ်ရေးသီးသန့်ပြုလုပ်ရန် ဥပမာအားဖြင့် မတူညီသည့် ဝဘ်ဆိုက်များတစ်လျှောက်တွင် ကွတ်ကီးများသုံးပြီး သင့်ကြည့်ရှုခြင်းများကို ကြည့်နိုင်မည်မဟုတ်ပါ</translation> <translation id="6968288415730398122">မျက်နှာပြင်လော့ခ်ကို စီစဉ်သတ်မှတ်ရန် စကားဝှက်ထည့်ပါ</translation> -<translation id="6969047215179982698">'အနီးတဝိုက်မျှဝေခြင်း' ကို ပိတ်ရန်</translation> +<translation id="6969047215179982698">'အနီးတစ်ဝိုက် မျှဝေခြင်း' ကို ပိတ်ရန်</translation> <translation id="6970480684834282392">အစပြု အမျိုးစား</translation> <translation id="6970856801391541997">တိကျသည့် စာမျက်နှာများ ပရင့်ထုတ်မည်</translation> <translation id="6972180789171089114">အသံ/ဗီဒီယို</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 94d2a1d..240397ab 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -105,7 +105,7 @@ <translation id="1124772482545689468">Gebruiker</translation> <translation id="1125550662859510761">Ziet eruit als <ph name="WIDTH" /> x <ph name="HEIGHT" /> (systeemeigen resolutie)</translation> <translation id="1126809382673880764">Beschermt je niet tegen gevaarlijke websites, downloads en extensies. Je wordt voor andere services, zoals Gmail en Zoeken, nog steeds beschermd door Safe Browsing als dat beschikbaar is.</translation> -<translation id="112752777279960360">Als je een Android-telefoon voor het eerst wilt instellen als beveiligingssleutel voor deze computer, open je Chrome op je telefoon en ga je naar Instellingen > Wachtwoorden > Telefoon gebruiken als beveiligingssleutel. Tik vervolgens op 'Nieuw apparaat verbinden' en scan deze QR-code.</translation> +<translation id="112752777279960360">Als je een Android-telefoon voor het eerst wilt instellen als beveiligingssleutel voor deze computer, open je Chrome op je telefoon en ga je naar 'Instellingen' > 'Wachtwoorden' > 'Telefoon gebruiken als beveiligingssleutel'. Tik vervolgens op 'Nieuw apparaat verbinden' en scan deze QR-code.</translation> <translation id="1128109161498068552">Sites niet toestaan berichten exclusief voor het systeem te gebruiken om toegang te krijgen tot MIDI-apparaten</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1128591060186966949">Zoekmachine bewerken</translation> @@ -1382,7 +1382,7 @@ <translation id="2682498795777673382">Update van je ouder</translation> <translation id="2683638487103917598">Map gesorteerd</translation> <translation id="2684004000387153598">Als je verder wilt gaan, klik je op 'OK' en vervolgens op 'Persoon toevoegen' om een nieuw profiel te maken voor je e-mailadres.</translation> -<translation id="2686222346846590368">Dit is de laatste automatische software- en beveiligingsupdate voor dit apparaat: <ph name="DEVICE_TYPE" />. Upgrade naar een nieuwer model om nieuwe updates te ontvangen. <a target="_blank" href="<ph name="URL" />">Meer informatie<ph name="LINK_END" /></translation> +<translation id="2686222346846590368">Dit is de laatste automatische software- en beveiligingsupdate voor deze <ph name="DEVICE_TYPE" />. Upgrade naar een nieuwer model om nieuwe updates te ontvangen. <a target="_blank" href="<ph name="URL" />">Meer informatie<ph name="LINK_END" /></translation> <translation id="2687403674020088961">Alle cookies blokkeren (niet aanbevolen)</translation> <translation id="2687407218262674387">Servicevoorwaarden van Google</translation> <translation id="2688196195245426394">Fout bij het registreren van het apparaat bij de server: <ph name="CLIENT_ERROR" />.</translation> @@ -1823,7 +1823,7 @@ <translation id="3253225298092156258">Niet beschikbaar</translation> <translation id="3253448572569133955">Onbekend account</translation> <translation id="3254516606912442756">Automatische tijdzonedetectie is uitgeschakeld</translation> -<translation id="3254715652085014625">Open Chrome op je Android-telefoon, ga naar Instellingen > Wachtwoorden > Telefoon gebruiken als beveiligingssleutel en volg de instructies.</translation> +<translation id="3254715652085014625">Open Chrome op je Android-telefoon, ga naar 'Instellingen' > 'Wachtwoorden' > 'Telefoon gebruiken als beveiligingssleutel' en volg de instructies.</translation> <translation id="3255355328033513170">Alle gegevens die door <ph name="SITE_GROUP_NAME" /> en onderliggende sites zijn opgeslagen, worden verwijderd. Dit geldt ook voor cookies. Je wordt uitgelogd bij deze sites, inclusief geopende tabbladen.</translation> <translation id="3259723213051400722">Probeer het opnieuw.</translation> <translation id="3264544094376351444">Sans-Serif-lettertype</translation> @@ -1986,7 +1986,7 @@ <translation id="3450157232394774192">Bezettingspercentage van inactieve status</translation> <translation id="3453612417627951340">Autorisatie vereist</translation> <translation id="3454157711543303649">Activering voltooid</translation> -<translation id="3454213325559396544">Dit is de laatste automatische software- en beveiligingsupdate voor dit <ph name="DEVICE_TYPE" />. Upgrade naar een nieuwer model om nieuwe updates te ontvangen.</translation> +<translation id="3454213325559396544">Dit is de laatste automatische software- en beveiligingsupdate voor deze <ph name="DEVICE_TYPE" />. Upgrade naar een nieuwer model om nieuwe updates te ontvangen.</translation> <translation id="3455436146814891176">Wachtwoord voor versleuteling synchroniseren</translation> <translation id="345693547134384690">&Afbeelding openen in nieuw tabblad</translation> <translation id="3458451003193188688">Kan de virtuele machine niet installeren door een netwerkfout. Probeer het opnieuw of neem contact op met je beheerder. Foutcode: <ph name="ERROR_CODE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 5196f3d..7b7088f 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Fjerning av dette passordet sletter ikke kontoen din på <ph name="DOMAIN" />. Endre passordet eller slett kontoen på <ph name="DOMAIN_LINK" /> for å beskytte den mot andre.</translation> <translation id="1084824384139382525">Kopiér linkadr&essen</translation> <translation id="1085697365578766383">Feil ved oppstart av den virtuelle maskinen. Prøv på nytt.</translation> +<translation id="1088659085457112967">Gå inn i lesermodus</translation> <translation id="1090126737595388931">Ingen bakgrunnsprogrammer kjører</translation> <translation id="1091767800771861448">Trykk på ESC for å hoppe over denne (bare uoffisielle delversjoner).</translation> <translation id="1093457606523402488">Synlige nettverk:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Kiosk-appen er oppdatert. Ta ut USB-pinnen.</translation> <translation id="120368089816228251">Note</translation> <translation id="1203942045716040624">Delt arbeider: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">DNS-tidsforsinkelse</translation> <translation id="1205489148908752564">Se gjennom og endre listen over godkjente brukere</translation> <translation id="1206407435587370571">Utforsk Chromebooken din</translation> <translation id="1209796539517632982">Automatiske navnetjenere</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Var dette resultatet uventet? <ph name="BEGIN_LINK" />Send tilbakemelding<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Brukernavnet og passordet du skrev inn, stemmer ikke overens</translation> <translation id="1397500194120344683">Ingen kompatible enheter. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Gatewayen kan pinges</translation> <translation id="1398853756734560583">Maksimer</translation> <translation id="139911022479327130">Lås opp telefonen, og bekreft at det er deg</translation> <translation id="1399511500114202393">Ingen brukersertifikater</translation> @@ -581,6 +584,7 @@ <translation id="1701062906490865540">Fjern denne personen</translation> <translation id="1703331064825191675">Slutt å bekymre deg for passordene dine</translation> <translation id="1704970325597567340">Sikkerhetssjekken ble kjørt <ph name="DATE" /></translation> +<translation id="1706391837335750954">DNS-resolveren er til stede</translation> <translation id="1706586824377653884">Lagt til av administratoren din</translation> <translation id="1706625117072057435">Zoomnivåer</translation> <translation id="1708338024780164500">(Inaktiv)</translation> @@ -872,6 +876,7 @@ <translation id="2065405795449409761">Chrome kontrolleres av programvare for automatisk testing.</translation> <translation id="2071393345806050157">Ingen lokal loggfil.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Klikk for å installere utvidelsen}other{Klikk for å installere disse utvidelsene}}</translation> +<translation id="2073505299004274893">Bruk maksimalt <ph name="CHARACTER_LIMIT" /> tegn</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" /> % batteri</translation> <translation id="2075959085554270910">Lar deg slå på og av berøringsklikk og trykk-og-dra</translation> <translation id="2076269580855484719">Skjul dette programtillegget</translation> @@ -1151,6 +1156,7 @@ <translation id="2408955596600435184">Skriv inn PIN-koden din</translation> <translation id="241082044617551207">Ukjent programtillegg</translation> <translation id="2412593942846481727">En oppdatering er tilgjengelig</translation> +<translation id="2414499877591062094">Slå på automatisk innsending av PIN-kode</translation> <translation id="2416435988630956212">Funksjonstaster på tastaturet</translation> <translation id="241727068219398187">Data ble kryptert med Google-passordet ditt <ph name="TIME" />. Dette inkluderer ikke betalingsmåter og adresser fra Google Pay.</translation> @@ -1305,6 +1311,7 @@ <translation id="2586672484245266891">Skriv inn en kortere nettadresse</translation> <translation id="2587922766792651800">Tidsavbrutt</translation> <translation id="2588636910004461974">Enheter fra <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Avslutt lesermodus</translation> <translation id="2594999711683503743">Søk på Google, eller skriv inn en nettadresse</translation> <translation id="2602501489742255173">Sveip opp for å komme i gang</translation> <translation id="2603115962224169880">Rydd opp i datamaskinen</translation> @@ -1874,6 +1881,7 @@ <translation id="3312424061798279731">Språk som er slått på</translation> <translation id="3313622045786997898">Sertifikatets signaturverdi</translation> <translation id="3315158641124845231">Skjul <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Gå inn i lesermodus</translation> <translation id="3317459757438853210">Tosidig</translation> <translation id="3317678681329786349">Kameraet og mikrofonen er blokkert</translation> <translation id="3319048459796106952">Nytt &inkognitovindu</translation> @@ -2139,6 +2147,7 @@ <translation id="3636096452488277381">Heisann, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" /> % – <ph name="TIME" /> til batteriet er tomt</translation> <translation id="3637682276779847508">SIM-kortet ditt blir deaktivert permanent hvis du ikke angir riktig PUK-kode.</translation> +<translation id="3639220004740062347">Avslutt lesermodus</translation> <translation id="3640214691812501263">Vil du legge til «<ph name="EXTENSION_NAME" />» for <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Lær assistenten å gjenkjenne stemmen din</translation> <translation id="3645372836428131288">Flytt litt på fingeren for å registrere en annen del av fingeravtrykket.</translation> @@ -2149,6 +2158,7 @@ <translation id="3650845953328929506">Venter på opplasting av logg.</translation> <translation id="3650952250015018111">Tillat at «<ph name="APP_NAME" />» får tilgang til</translation> <translation id="3651488188562686558">koble fra Wi-Fi</translation> +<translation id="3651952061994655768">Endre navn</translation> <translation id="3652817283076144888">Initialiserer</translation> <translation id="3653160965917900914">Fildelinger på nettverket</translation> <translation id="3653842108912548333">Få tilgang til assistenten med Voice Match</translation> @@ -2238,6 +2248,7 @@ <translation id="3748706263662799310">Rapporter feil</translation> <translation id="3752582316358263300">OK</translation> <translation id="3752673729237782832">Mine enheter</translation> +<translation id="3752757212511661046">Vil du opprette en jobbprofil?</translation> <translation id="3753033997400164841">Lagre én gang. Bruk overalt</translation> <translation id="3755411799582650620">Du kan nå også låse opp <ph name="DEVICE_TYPE" /> med <ph name="PHONE_NAME" />.</translation> <translation id="375636864092143889">Nettstedet bruker mikrofonen din</translation> @@ -2359,6 +2370,7 @@ <translation id="3874164307099183178">Slå på Google-assistenten</translation> <translation id="387531380970557479">«<ph name="EXTENSION_NAME" />» er deaktivert fordi den inneholder skadelig programvare.</translation> <translation id="3879748587602334249">Nedlastingsbehandling</translation> +<translation id="3881478300875776315">Vis færre linjer</translation> <translation id="3882165008614329320">Eksisterende video fra kamera eller fil</translation> <translation id="3886446263141354045">Forespørselen din om å få tilgang til dette nettstedet er sendt til <ph name="NAME" /></translation> <translation id="3888550877729210209">Tar notater med <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2566,6 +2578,7 @@ <translation id="4130750466177569591">Godta</translation> <translation id="413121957363593859">Komponenter</translation> <translation id="4131410914670010031">Svarthvitt</translation> +<translation id="413193092008917129">Rutiner for nettverksdiagnostikk</translation> <translation id="4133076602192971179">Åpne appen for å endre passordet</translation> <translation id="4136203100490971508">Nattlys blir slått av automatisk ved soloppgang</translation> <translation id="41365691917097717">Hvis du fortsetter, blir ADB-feilsøking slått på for utvikling og testing av Android-apper. Merk at dette gjør det mulig å installere Android-apper som ikke er verifisert av Google, og enheten må tilbakestilles til fabrikkinnstillingene hvis du vil slå av ADB igjen.</translation> @@ -2723,6 +2736,7 @@ <translation id="4375035964737468845">åpne nedlastede filer</translation> <translation id="4377363674125277448">Det oppsto et problem med sertifikatet til tjeneren.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Ikke kjørt</translation> <translation id="4378551569595875038">Kobler til …</translation> <translation id="4378556263712303865">Enhetsrekvisisjon</translation> <translation id="4379281552162875326">Vil du avinstallere «<ph name="APP_NAME" />»?</translation> @@ -2935,6 +2949,7 @@ <translation id="4643612240819915418">&Åpne video i ny fane</translation> <translation id="4645676300727003670">&Behold</translation> <translation id="4646675363240786305">Porter</translation> +<translation id="4646949265910132906">Sikker Wi-Fi-tilkobling</translation> <translation id="4647090755847581616">&Lukk fane</translation> <translation id="4647420311443994946">{0,select, tablet{Start appen når du logger på nettbrettet}computer{Start appen når du logger på datamaskinen}other{Start appen når du logger på enheten}}</translation> <translation id="4647697156028544508">Skriv inn PIN-koden for «<ph name="DEVICE_NAME" />»:</translation> @@ -2973,6 +2988,7 @@ <translation id="4691791363716065510">Da kan <ph name="ORIGIN" /> se <ph name="FILENAME" /> frem til du lukker alle fanene for dette nettstedet</translation> <translation id="4692623383562244444">Søkemotorer</translation> <translation id="4693155481716051732">Sushi</translation> +<translation id="469379815867856270">Signalstyrke</translation> <translation id="4694024090038830733">Administratoren håndterer konfigureringen av skrivere.</translation> <translation id="4694604912444486114">Ape</translation> <translation id="4697551882387947560">Når nettleserøkten avsluttes</translation> @@ -3183,6 +3199,7 @@ <translation id="4980805016576257426">Denne utvidelsen inneholder skadelig programvare.</translation> <translation id="4981449534399733132">For å slette nettleserdata på alle synkroniserte enheter og Google-kontoen din må du <ph name="BEGIN_LINK" />logge på<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Enhetsprogramvare</translation> +<translation id="4985509611418653372">Kjør</translation> <translation id="4986728572522335985">Dette fører til at alle dataene på sikkerhetsnøkkelen, inkludert PIN-koden, blir slettet</translation> <translation id="4988526792673242964">Sider</translation> <translation id="49896407730300355">Rotér m&ot klokken</translation> @@ -3377,6 +3394,7 @@ <translation id="5241128660650683457">Les alle dataene på nettstedene du besøker</translation> <translation id="5242724311594467048">Vil du slå på «<ph name="EXTENSION_NAME" />»?</translation> <translation id="5243522832766285132">Prøv på nytt om en liten stund</translation> +<translation id="5244406554036143958">Skriv inn PIN-koden for å slå på automatisk innsending</translation> <translation id="5244474230056479698">Synkroniserer til <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Kom i gang med en skolekonto</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> har fått programstopp. Klikk på denne ballongen for å starten programmet på nytt.</translation> @@ -3444,6 +3462,7 @@ <translation id="5315873049536339193">Identitet</translation> <translation id="5317780077021120954">Lagre</translation> <translation id="5319359161174645648">Google anbefaler Chrome</translation> +<translation id="5320135788267874712">Nytt enhetsnavn</translation> <translation id="532247166573571973">Det kan hende tjeneren ikke er tilgjengelig. Prøv igjen senere.</translation> <translation id="5324780743567488672">Angi tidssonen automatisk ved hjelp av posisjonen din</translation> <translation id="5327248766486351172">Navn</translation> @@ -3457,6 +3476,7 @@ <translation id="5336126339807372270">Ikke gi noen nettsteder tilgang til USB-enheter</translation> <translation id="5336688142483283574">Denne siden blir også fjernet fra loggen og <ph name="SEARCH_ENGINE" />-aktiviteten.</translation> <translation id="5337771866151525739">Installert av en tredjepart.</translation> +<translation id="5337926771328966926">Det nåværende enhetsnavnet er <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Lokal lagring</translation> <translation id="5340638867532133571">Tillat at nettsteder installerer betalingsbehandlere (anbefales)</translation> <translation id="5341793073192892252">Følgende informasjonskapsler er blokkert (informasjonskapsler fra tredjeparter blokkeres uten unntak)</translation> @@ -3487,6 +3507,7 @@ <translation id="5379140238605961210">Fortsett blokkering av mikrofontilgang</translation> <translation id="5382591305415226340">Administrer støttede linker</translation> <translation id="5383377866517186886">Kameraet er slått av i Mac-systemvalgene</translation> +<translation id="5383740867328871413">Gruppe uten navn – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Sammenkoblet</translation> <translation id="5389237414310520250">Den nye brukeren kunne ikke opprettes. Sjekk hvor mye plass du har på harddisken og hvilke tillatelser som er aktive, og prøv på nytt.</translation> <translation id="5390100381392048184">Tillat nettsteder å spille av lyd</translation> @@ -3497,6 +3518,7 @@ <translation id="5398497406011404839">Skjulte bokmerker</translation> <translation id="5398572795982417028">Sidereferansen ligger utenfor det gyldige området. Grensen er <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Annonser er blokkert</translation> +<translation id="5401938042319910061">Kjør alle rutinene</translation> <translation id="5402815541704507626">Last ned oppdateringen med mobildata</translation> <translation id="540296380408672091">Blokkér alltid informasjonskapsler på <ph name="HOST" /></translation> <translation id="540495485885201800">Bytt med forrige</translation> @@ -3812,6 +3834,7 @@ <translation id="57838592816432529">Kutt lyden</translation> <translation id="5785583009707899920">Chrome Filverktøy</translation> <translation id="5787146423283493983">Nøkkelavtale</translation> +<translation id="5787420647064736989">Enhetsnavn</translation> <translation id="5788367137662787332">Beklager, men minst én partisjon på enheten <ph name="DEVICE_LABEL" /> kunne ikke tilkobles.</translation> <translation id="5790085346892983794">Fullført</translation> <translation id="5790651917470750848">Porten er allerede viderekoblet</translation> @@ -4488,6 +4511,7 @@ <translation id="6648911618876616409">En kritisk oppdatering er klar for installasjon. Logg på for å komme i gang.</translation> <translation id="6649018507441623493">Vent litt</translation> <translation id="6649563841575838401">Arkivformatet støttes ikke, eller filen er ødelagt.</translation> +<translation id="6650234781371031356">Passordet ditt for <ph name="WEBSITE" /> er lagret på denne enheten og i Google-kontoen din. Hvilket vil du slette?</translation> <translation id="665061930738760572">Åpne i &nytt vindu</translation> <translation id="6651237644330755633">Stol på dette sertifikatet for identifisering av nettsteder.</translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" />-integrering støttes bare på x86_64-plattformer. Chromebook-enheter som er bygget på en ARM- eller x86-plattform, støtter ikke denne funksjonaliteten.</translation> @@ -4526,6 +4550,7 @@ <translation id="6701535245008341853">Kan ikke hente profil.</translation> <translation id="6702639462873609204">&Rediger</translation> <translation id="6703966911896067184">Illustrasjon av registreringsfeil</translation> +<translation id="6704062477274546131">DNS-konvertering</translation> <translation id="6706210727756204531">Omfang</translation> <translation id="6707389671160270963">SSL-klientsertifikat</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> og 1 fane til}other{<ph name="PAGE_TITLE" /> og # faner til}}</translation> @@ -4583,6 +4608,7 @@ <translation id="677965093459947883">Veldig liten</translation> <translation id="6781284683813954823">Doodle-link</translation> <translation id="6781978626986383437">Sikkerhetskopieringen av Linux er avbrutt</translation> +<translation id="6782067259631821405">Ugyldig PIN-kode</translation> <translation id="6785915470941880363">Baklengs rulling <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Utvidelser</translation> <translation id="6787839852456839824">Hurtigtaster</translation> @@ -4889,6 +4915,7 @@ <translation id="7141105143012495934">Påloggingen mislyktes fordi kontoopplysningene dine ikke kunne hentes ut. Kontakt administratoren din, eller prøv på nytt.</translation> <translation id="7143207342074048698">Kobler til</translation> <translation id="7144878232160441200">Prøv på nytt</translation> +<translation id="714876143603641390">LAN-tilkobling</translation> <translation id="7149893636342594995">Siste døgn</translation> <translation id="715118844758971915">Vanlige skrivere</translation> <translation id="7152478047064750137">Denne utvidelsen krever ingen spesielle tillatelser</translation> @@ -5026,6 +5053,7 @@ <translation id="7334274148831027933">Aktivér den dokkede lupen</translation> <translation id="7335974957018254119">Bruk stavekontroll for</translation> <translation id="7336799713063880535">Varsler er blokkert.</translation> +<translation id="7337248890521463931">Vis flere linjer</translation> <translation id="7338630283264858612">Enhetens serienummer er ugyldig.</translation> <translation id="7339763383339757376">PKCS #7, enkelt sertifikat</translation> <translation id="7339785458027436441">Kontroller staving mens du skriver</translation> @@ -5408,6 +5436,7 @@ <translation id="7807711621188256451">Tillat alltid at <ph name="HOST" /> bruker kameraet ditt</translation> <translation id="7810202088502699111">Forgrunnsvinduer er blokkert på siden.</translation> <translation id="781167124805380294">Cast <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Se hva som er nytt på <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Kopier</translation> <translation id="7815680994978050279">En farlig nedlasting er blokkert</translation> <translation id="7817361223956157679">Skjermtastaturet virker ikke i Linux-apper ennå</translation> @@ -5637,6 +5666,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 ark}other{{COUNT} ark}}</translation> <translation id="8063235345342641131">Grønt standardbrukerbilde</translation> <translation id="8063535366119089408">Se filen</translation> +<translation id="8064279191081105977">Gruppe <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Trykk for å logge på</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Skriv ut som bilde</translation> @@ -6382,6 +6412,7 @@ <translation id="8986362086234534611">Glem</translation> <translation id="8986494364107987395">Send bruksstatistikk og programstopprapporter automatisk til Google</translation> <translation id="8987927404178983737">Måned</translation> +<translation id="8990209962746788689">Kan ikke opprette QR-kode</translation> <translation id="8991520179165052608">Nettstedet kan bruke mikrofonen din</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 element}other{# elementer}}</translation> <translation id="899384117894244799">Fjern begrenset bruker</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index a6031bb1..0e968b59 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -535,7 +535,7 @@ <translation id="164936512206786300">ବ୍ଲୁଟୁଥ୍ ଡିଭାଇସ୍ ଅନପେୟାର୍ କରନ୍ତୁ</translation> <translation id="1650371550981945235">ଇନ୍ପୁଟ୍ ବିକଳ୍ପଗୁଡ଼ିକ ଦେଖାନ୍ତୁ</translation> <translation id="1651008383952180276">ଆପଣ ସେହି ଏକା ପାସ୍ଫ୍ରେଜ୍ ଦୁଇଥର ଲେଖିବା ଆବଶ୍ୟକ</translation> -<translation id="1652326691684645429">Nearby Share ଚାଲୁ କରନ୍ତୁ</translation> +<translation id="1652326691684645429">Nearby Share ସକ୍ଷମ କରନ୍ତୁ</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{'Google କ୍ଲାଉଡ୍ ପ୍ରିଣ୍ଟ'ରେ ପ୍ରିଣ୍ଟର୍ଟିକୁ ଯୋଗ କରନ୍ତୁ ଯାହାଫଳରେ ଆପଣ ଯେକୌଣସି ସ୍ଥାନରୁ ପ୍ରିଣ୍ଟ କରିପାରିବେ।}other{'Google କ୍ଲାଉଡ୍ ପ୍ରିଣ୍ଟ'ରେ #ଟି ପ୍ରିଣ୍ଟର୍କୁ ଯୋଗ କରନ୍ତୁ ଯାହାଫଳରେ ଆପଣ ଯେକୌଣସି ସ୍ଥାନରୁ ପ୍ରିଣ୍ଟ କରିପାରିବେ।}}</translation> <translation id="1656528038316521561">ପୃଷ୍ଠପଟ ଅସ୍ପଷ୍ଟତା</translation> <translation id="1657406563541664238">Googleକୁ ବ୍ୟବହାରର ସାଂଖ୍ୟିକ ତଥ୍ୟ ଓ କ୍ରାସ୍ ରିପୋର୍ଟ ସ୍ୱଚାଳିତ ଭାବେ ପଠାଇ <ph name="PRODUCT_NAME" />କୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ</translation> @@ -1814,7 +1814,7 @@ <translation id="3253225298092156258">ଉପଲବ୍ଧ ନାହିଁ</translation> <translation id="3253448572569133955">ଅଜଣା ଆକାଉଣ୍ଟ</translation> <translation id="3254516606912442756">ସ୍ୱଚାଳିତ ସମୟ କ୍ଷେତ୍ର ସନ୍ଧାନ ସୁବିଧା ଅକ୍ଷମ ଅଛି</translation> -<translation id="3254715652085014625">ଆପଣଙ୍କ Android ଫୋନରେ Chrome ଖୋଲନ୍ତୁ ଏବଂ "ସେଟିଂସ୍ > ପାସୱାର୍ଡ > ସୁରକ୍ଷା କୀ ଭାବେ ଫୋନ୍ ବ୍ୟବହାର କରନ୍ତୁ"କୁ ଯାଆନ୍ତୁ ଏବଂ ସେଠାରେ ଥିବା ନିର୍ଦ୍ଦେଶାବଳୀର ଅନୁସରଣ କରନ୍ତୁ।</translation> +<translation id="3254715652085014625">ଆପଣଙ୍କ Android ଫୋନରେ Chrome ଖୋଲନ୍ତୁ ଏବଂ "ସେଟିଂସ୍ > ପାସୱାର୍ଡ > ସୁରକ୍ଷା କୀ ଭାବେ ଫୋନ୍ ବ୍ୟବହାର କରନ୍ତୁ"କୁ ଯାଆନ୍ତୁ ଏବଂ ସେଠାରେ ଥିବା ନିର୍ଦ୍ଦେଶାବଳୀ ଅନୁସରଣ କରନ୍ତୁ।</translation> <translation id="3255355328033513170"><ph name="SITE_GROUP_NAME" /> ଦ୍ୱାରା ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ ଡାଟା ଏବଂ ଏହା ଅଧୀନରେ ଥିବା ଯେକୌଣସି ସାଇଟ୍ ଡିଲିଟ୍ ହୋଇଯିବ ଏଥିରେ କୁକୀଗୁଡ଼ିକ ମଧ୍ୟ ଅନ୍ତର୍ଭୁକ୍ତ ଅଛି। ଖୋଲାଥିବା ଟାବ୍ଗୁଡ଼ିକ ସମେତ ଆପଣ ଏହି ସାଇଟ୍ଗୁଡ଼ିକରୁ ସାଇନ୍ ଆଉଟ୍ ହୋଇଯିବେ।</translation> <translation id="3259723213051400722">ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="3264544094376351444">Sans-Serif ଫଣ୍ଟ</translation> @@ -4272,7 +4272,7 @@ <translation id="6362853299801475928">ଏକ ସମସ୍ୟା ରିପୋର୍ଟ କରନ୍ତୁ...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">ଫ୍ୟାମିଲି ଏବଂ ବନ୍ଧୁମାନଙ୍କୁ ଯୋଗ କରନ୍ତୁ</translation> -<translation id="6367985768157257101">Nearby Share ମାଧ୍ୟମରେ ପ୍ରାପ୍ତ କରନ୍ତୁ?</translation> +<translation id="6367985768157257101">Nearby Share ମାଧ୍ୟମରେ ପ୍ରାପ୍ତ କରିବେ?</translation> <translation id="636850387210749493">ଏଣ୍ଟର୍ପ୍ରାଇଜ୍ ନାମାଙ୍କନ</translation> <translation id="6370021412472292592">ମାନିଫେଷ୍ଟକୁ ଲୋଡ୍ କରାଯାଇପାରିଲା ନାହିଁ।</translation> <translation id="6374077068638737855">Iceweasel</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index c90ded1..a41890d 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -540,7 +540,7 @@ <translation id="164936512206786300">ਬਲੂਟੁੱਥ ਡੀਵਾਈਸ ਦਾ ਜੋੜਾਬੱਧ ਹਟਾਓ</translation> <translation id="1650371550981945235">ਇਨਪੁੱਟ ਵਿਕਲਪ ਦਿਖਾਓ </translation> <translation id="1651008383952180276">ਤੁਹਾਡੇ ਵੱਲੋਂ ਇੱਕੋ ਪਾਸਫਰੇਜ਼ ਦੋ ਵਾਰ ਦਾਖਲ ਕਰਨਾ ਲਾਜ਼ਮੀ ਹੈ</translation> -<translation id="1652326691684645429">ਨਜ਼ਦੀਕੀ ਸਾਂਝਾਕਰਨ ਨੂੰ ਚਾਲੂ ਕਰੋ</translation> +<translation id="1652326691684645429">ਨਜ਼ਦੀਕੀ ਸਾਂਝ ਚਾਲੂ ਕਰੋ</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{'Google ਕਲਾਊਡ ਪ੍ਰਿੰਟ' ਵਿੱਚ ਪ੍ਰਿੰਟਰ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਕਿਤੋਂ ਵੀ ਪ੍ਰਿੰਟ ਕਰ ਸਕੋ।}one{'Google ਕਲਾਊਡ ਪ੍ਰਿੰਟ' ਵਿੱਚ # ਪ੍ਰਿੰਟਰ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਕਿਤੋਂ ਵੀ ਪ੍ਰਿੰਟ ਕਰ ਸਕੋ।}other{'Google ਕਲਾਊਡ ਪ੍ਰਿੰਟ' ਵਿੱਚ # ਪ੍ਰਿੰਟਰ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਕਿਤੋਂ ਵੀ ਪ੍ਰਿੰਟ ਕਰ ਸਕੋ।}}</translation> <translation id="1656528038316521561">ਬੈਕਗ੍ਰਾਊਂਡ ਅਪਾਰਦਰਸ਼ਤਾ</translation> <translation id="1657406563541664238">Google ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਵਰਤੋਂ ਅੰਕੜੇ ਅਤੇ ਕ੍ਰੈਸ਼ ਰਿਪੋਰਟਾਂ ਭੇਜ ਕੇ <ph name="PRODUCT_NAME" /> ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੋ</translation> @@ -1667,7 +1667,7 @@ <translation id="3022978424994383087">ਸਮਝ ਨਹੀਂ ਆਇਆ।</translation> <translation id="3023464535986383522">ਚੁਣੋ ਅਤੇ ਸੁਣੋ</translation> <translation id="3024374909719388945">24-ਘੰਟੇ ਵਾਲੀ ਘੜੀ ਵਰਤੋ</translation> -<translation id="3027296729579831126">ਨਜ਼ਦੀਕੀ ਸਾਂਝਾਕਰਨ ਚਾਲੂ ਕਰੋ</translation> +<translation id="3027296729579831126">ਨਜ਼ਦੀਕੀ ਸਾਂਝ ਚਾਲੂ ਕਰੋ</translation> <translation id="3029466929721441205">ਸਟਾਈਲਸ ਟੂਲ ਨੂੰ ਸ਼ੈਲਫ ਵਿੱਚ ਦਿਖਾਓ</translation> <translation id="3031417829280473749">ਏਜੰਟ X</translation> <translation id="3031557471081358569">ਆਯਾਤ ਕਰਨ ਲਈ ਆਈਟਮਾਂ ਚੁਣੋ:</translation> @@ -2963,7 +2963,7 @@ <translation id="4673442866648850031">ਸਟਾਈਲਸ ਦੇ ਹਟਾਏ ਜਾਣ 'ਤੇ ਸਟਾਈਲਸ ਟੂਲ ਖੋਲ੍ਹੋ</translation> <translation id="4677772697204437347">GPU ਮੈਮਰੀ</translation> <translation id="4680105648806843642">ਇਸ ਪੰਨੇ 'ਤੇ ਧੁਨੀ ਨੂੰ ਮਿਊਟ ਕੀਤਾ ਗਿਆ</translation> -<translation id="4681453295291708042">ਨਜ਼ਦੀਕੀ ਸਾਂਝਾਕਰਨ ਨੂੰ ਬੰਦ ਕਰੋ</translation> +<translation id="4681453295291708042">ਨਜ਼ਦੀਕੀ ਸਾਂਝ ਬੰਦ ਕਰੋ</translation> <translation id="4681930562518940301">ਨਵੀਂ ਟੈਬ ਵਿੱਚ ਮੂਲ &ਚਿੱਤਰ ਖੋਲ੍ਹੋ</translation> <translation id="4682551433947286597">ਵਾਲਪੇਪਰ ਸਾਈਨ-ਇਨ ਸਕ੍ਰੀਨ 'ਤੇ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ।</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (ਪੂਰਵ-ਨਿਰਧਾਰਤ)</translation> @@ -3780,7 +3780,7 @@ <translation id="5739017626473506901">ਸਕੂਲੀ ਖਾਤਾ ਸ਼ਾਮਲ ਕਰਨ ਵਿੱਚ <ph name="USER_NAME" /> ਦੀ ਮਦਦ ਕਰਨ ਲਈ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="5739235828260127894">ਪੁਸ਼ਟੀਕਰਨ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ। <ph name="LINK_BEGIN" />ਹੋਰ ਜਾਣੋ<ph name="LINK_END" /></translation> <translation id="5739458112391494395">ਬਹੁਤ ਵੱਡਾ</translation> -<translation id="5740328398383587084">ਨਜ਼ਦੀਕੀ ਸਾਂਝਾਕਰਨ</translation> +<translation id="5740328398383587084">ਨਜ਼ਦੀਕੀ ਸਾਂਝ</translation> <translation id="574104302965107104">ਡਿਸਪਲੇ ਪ੍ਰਤਿਬਿੰਬੀਕਰਨ</translation> <translation id="574209121243317957">ਪਿਚ</translation> <translation id="5746169159649715125">PDF ਵਜੋਂ ਰੱਖਿਅਤ ਕਰੋ</translation> @@ -4735,7 +4735,7 @@ <translation id="6965978654500191972">ਡੀਵਾਈਸ</translation> <translation id="696780070563539690">ਸਾਈਟਾਂ ਵੱਖ-ਵੱਖ ਸਾਈਟਾਂ ਵਿਚਲੀ ਤੁਹਾਡੀ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਰਗਰਮੀ ਦੇਖਣ ਲਈ ਕੁਕੀਜ਼ ਨੂੰ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ, ਉਦਾਹਰਨ ਲਈ, ਵਿਗਿਆਪਨਾਂ ਨੂੰ ਵਿਅਕਤੀਗਤ ਬਣਾਉਣ ਲਈ</translation> <translation id="6968288415730398122">ਸਕ੍ਰੀਨ ਲਾਕ ਸੰਰੂਪਿਤ ਕਰਨ ਲਈ ਆਪਣਾ ਪਾਸਵਰਡ ਦਾਖਲ ਕਰੋ</translation> -<translation id="6969047215179982698">ਨਜ਼ਦੀਕੀ ਸਾਂਝਾਕਰਨ ਨੂੰ ਬੰਦ ਕਰੋ</translation> +<translation id="6969047215179982698">ਨਜ਼ਦੀਕੀ ਸਾਂਝ ਬੰਦ ਕਰੋ</translation> <translation id="6970480684834282392">ਸਟਾਰਟਅਪ ਪ੍ਰਕਾਰ</translation> <translation id="6970856801391541997">ਚੋਣਵੇਂ ਪੰਨੇ ਪ੍ਰਿੰਟ ਕਰੋ</translation> <translation id="6972180789171089114">ਆਡੀਓ /ਵੀਡੀਓ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 66f77fa..c5b36241 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Usunięcie tego hasła nie spowoduje usunięcia Twojego konta w serwisie <ph name="DOMAIN" />. Aby uniemożliwić innym osobom dostęp do konta w serwisie <ph name="DOMAIN_LINK" />, usuń je lub zmień do niego hasło.</translation> <translation id="1084824384139382525">Kopiuj adr&es linku</translation> <translation id="1085697365578766383">Błąd podczas uruchamiania maszyny wirtualnej. Spróbuj ponownie.</translation> +<translation id="1088659085457112967">Włącz tryb czytnika</translation> <translation id="1090126737595388931">Brak aplikacji uruchomionych w tle</translation> <translation id="1091767800771861448">Naciśnij ESCAPE, aby pominąć aktualizację (tylko nieoficjalne kompilacje).</translation> <translation id="1093457606523402488">Widoczne sieci:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Aplikacja kiosku została zaktualizowana. Odłącz pamięć USB.</translation> <translation id="120368089816228251">Nuta</translation> <translation id="1203942045716040624">Współdzielona instancja robocza: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Opóźnienie DNS</translation> <translation id="1205489148908752564">Odczytywanie i zmienianie użytkowników z białej listy</translation> <translation id="1206407435587370571">Poznaj swojego Chromebooka</translation> <translation id="1209796539517632982">Automatyczny wybór serwerów nazw</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Czy był to nieoczekiwany wynik? <ph name="BEGIN_LINK" />Prześlij opinię<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Wpisana nazwa użytkownika i hasło nie pasują do siebie</translation> <translation id="1397500194120344683">Brak odpowiednich urządzeń. <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Brama reaguje na ping</translation> <translation id="1398853756734560583">Maksymalizuj</translation> <translation id="139911022479327130">Odblokuj telefon i potwierdź, że to Ty</translation> <translation id="1399511500114202393">Brak certyfikatu użytkownika</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Usuń tę osobę</translation> <translation id="1703331064825191675">Nie musisz się już martwić o bezpieczeństwo swoich haseł</translation> <translation id="1704970325597567340">Potwierdzenie bezpieczeństwa zostało wykonane <ph name="DATE" /></translation> +<translation id="1706391837335750954">Resolver DNS – obecność</translation> <translation id="1706586824377653884">Dodane przez administratora</translation> <translation id="1706625117072057435">Poziomy powiększenia</translation> <translation id="1708338024780164500">(Nieaktywne)</translation> @@ -871,6 +875,7 @@ <translation id="2065405795449409761">Przeglądarką Chrome steruje zautomatyzowane oprogramowanie testowe.</translation> <translation id="2071393345806050157">Nie ma lokalnego pliku dziennika.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Kliknij, by zainstalować rozszerzenie}few{Kliknij, by zainstalować te rozszerzenia}many{Kliknij, by zainstalować te rozszerzenia}other{Kliknij, by zainstalować te rozszerzenia}}</translation> +<translation id="2073505299004274893">Użyj maksymalnie <ph name="CHARACTER_LIMIT" /> znaków</translation> <translation id="2075474481720804517">Bateria: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="2075959085554270910">Pozwala włączyć lub wyłączyć kliknięcie przez dotknięcie i przeciąganie dotykiem</translation> <translation id="2076269580855484719">Ukryj wtyczkę</translation> @@ -1150,6 +1155,7 @@ <translation id="2408955596600435184">Wpisz kod PIN</translation> <translation id="241082044617551207">Nieznana wtyczka</translation> <translation id="2412593942846481727">Dostępna aktualizacja</translation> +<translation id="2414499877591062094">Włącz kod PIN automatycznego przesyłania</translation> <translation id="2416435988630956212">Klawisze funkcyjne na klawiaturze</translation> <translation id="241727068219398187">Dane zostały zaszyfrowane Twoim hasłem Google z <ph name="TIME" />. Nie obejmuje to form płatności ani adresów w Google Pay.</translation> @@ -1304,6 +1310,7 @@ <translation id="2586672484245266891">Podaj krótszy adres URL</translation> <translation id="2587922766792651800">Przekroczono limit czasu</translation> <translation id="2588636910004461974">Urządzenia od dostawcy <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Zamknij tryb czytnika</translation> <translation id="2594999711683503743">Wyszukaj w Google lub wpisz URL</translation> <translation id="2602501489742255173">Przesuń palcem w górę, by rozpocząć</translation> <translation id="2603115962224169880">Oczyść komputer</translation> @@ -1873,6 +1880,7 @@ <translation id="3312424061798279731">Włączone języki</translation> <translation id="3313622045786997898">Wartość podpisu certyfikatu</translation> <translation id="3315158641124845231">Ukryj <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Włącz tryb czytnika</translation> <translation id="3317459757438853210">Druk dwustronny</translation> <translation id="3317678681329786349">Zablokowano dostęp do kamery i mikrofonu</translation> <translation id="3319048459796106952">Nowe okno &incognito</translation> @@ -2138,6 +2146,7 @@ <translation id="3636096452488277381">Cześć <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – pozostało <ph name="TIME" /></translation> <translation id="3637682276779847508">Jeśli nie wpiszesz prawidłowego klucza odblokowującego kod PIN, karta SIM zostanie trwale wyłączona.</translation> +<translation id="3639220004740062347">Zamknij tryb czytnika</translation> <translation id="3640214691812501263">Dodać „<ph name="EXTENSION_NAME" />” dla: <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Naucz Asystenta rozpoznawać Twój głos</translation> <translation id="3645372836428131288">Przesuń odrobinę, by zeskanować inną część odcisku palca.</translation> @@ -2148,6 +2157,7 @@ <translation id="3650845953328929506">Log oczekuje na przesłanie.</translation> <translation id="3650952250015018111">Zezwól aplikacji „<ph name="APP_NAME" />” na dostęp do:</translation> <translation id="3651488188562686558">rozłączy się z siecią Wi-Fi</translation> +<translation id="3651952061994655768">Zmień nazwę</translation> <translation id="3652817283076144888">Inicjuję</translation> <translation id="3653160965917900914">Sieciowe udziały plików</translation> <translation id="3653842108912548333">Dostęp do Asystenta przy użyciu funkcji Voice Match</translation> @@ -2237,6 +2247,7 @@ <translation id="3748706263662799310">Zgłoś błąd</translation> <translation id="3752582316358263300">OK</translation> <translation id="3752673729237782832">Moje urządzenia</translation> +<translation id="3752757212511661046">Utworzyć profil służbowy?</translation> <translation id="3753033997400164841">Zapisz raz – używaj w dowolnym miejscu</translation> <translation id="3755411799582650620">Telefon <ph name="PHONE_NAME" /> może teraz odblokowywać też urządzenie <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Strona używa mikrofonu</translation> @@ -2358,6 +2369,7 @@ <translation id="3874164307099183178">Włącz Asystenta Google</translation> <translation id="387531380970557479">Rozszerzenie „<ph name="EXTENSION_NAME" />” zostało wyłączone, bo zawiera złośliwe oprogramowanie.</translation> <translation id="3879748587602334249">Menedżer pobierania</translation> +<translation id="3881478300875776315">Pokaż mniej wierszy</translation> <translation id="3882165008614329320">Istniejący film z aparatu lub pliku</translation> <translation id="3886446263141354045">Twoja prośba o dostęp to tej strony została wysłana do: <ph name="NAME" /></translation> <translation id="3888550877729210209">Robienie notatek w aplikacji <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2567,6 +2579,7 @@ <translation id="4130750466177569591">Zgadzam się</translation> <translation id="413121957363593859">Komponenty</translation> <translation id="4131410914670010031">Czarno-biały</translation> +<translation id="413193092008917129">Testy diagnostyki sieci</translation> <translation id="4133076602192971179">Otwórz aplikację, by zmienić hasło</translation> <translation id="4136203100490971508">Podświetlenie nocne wyłączy się automatycznie o wschodzie słońca</translation> <translation id="41365691917097717">Jeśli będziesz kontynuować, włączone zostanie debugowanie ADB do tworzenia i testowania aplikacji na Androida. Pamiętaj, że to działanie wiąże się z zezwoleniem na instalowanie aplikacji na Androida, które nie zostały zweryfikowane przez Google, a do wyłączenia tej funkcji konieczne jest przywrócenie ustawień fabrycznych.</translation> @@ -2724,6 +2737,7 @@ <translation id="4375035964737468845">Otwieranie pobranych plików</translation> <translation id="4377363674125277448">Wystąpił problem z certyfikatem serwera.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Nie wykonano</translation> <translation id="4378551569595875038">Łączę...</translation> <translation id="4378556263712303865">Przeznaczenie urządzenia</translation> <translation id="4379281552162875326">Odinstalować: „<ph name="APP_NAME" />”?</translation> @@ -2936,6 +2950,7 @@ <translation id="4643612240819915418">&Otwórz film wideo w nowej karcie</translation> <translation id="4645676300727003670">&Zachowaj</translation> <translation id="4646675363240786305">Porty</translation> +<translation id="4646949265910132906">Bezpieczne połączenie z Wi-Fi</translation> <translation id="4647090755847581616">&Zamknij kartę</translation> <translation id="4647420311443994946">{0,select, tablet{Uruchom aplikację po zalogowaniu się na tablecie}computer{Uruchom aplikację po zalogowaniu się na komputerze}other{Uruchom aplikację po zalogowaniu się na urządzeniu}}</translation> <translation id="4647697156028544508">Wpisz PIN urządzenia „<ph name="DEVICE_NAME" />”:</translation> @@ -2974,6 +2989,7 @@ <translation id="4691791363716065510">Strona <ph name="ORIGIN" /> będzie mogła wyświetlać plik <ph name="FILENAME" />, dopóki nie zamkniesz wszystkich jej kart</translation> <translation id="4692623383562244444">Wyszukiwarki</translation> <translation id="4693155481716051732">Sushi</translation> +<translation id="469379815867856270">Siła sygnału</translation> <translation id="4694024090038830733">Konfiguracją drukarek zajmuje się administrator.</translation> <translation id="4694604912444486114">Małpa</translation> <translation id="4697551882387947560">Po zakończeniu sesji przeglądania</translation> @@ -3184,6 +3200,7 @@ <translation id="4980805016576257426">To rozszerzenie zawiera złośliwe oprogramowanie.</translation> <translation id="4981449534399733132">Aby wyczyścić dane przeglądania ze wszystkich zsynchronizowanych urządzeń i z konta Google, <ph name="BEGIN_LINK" />zaloguj się<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Oprogramowanie urządzenia</translation> +<translation id="4985509611418653372">Uruchom</translation> <translation id="4986728572522335985">Spowoduje to usunięcie z klucza bezpieczeństwa wszystkich danych, w tym kodu PIN</translation> <translation id="4988526792673242964">Strony</translation> <translation id="49896407730300355">&Obróć w lewo</translation> @@ -3378,6 +3395,7 @@ <translation id="5241128660650683457">Odczyt wszystkich Twoich danych na odwiedzanych stronach internetowych</translation> <translation id="5242724311594467048">Włączyć rozszerzenie „<ph name="EXTENSION_NAME" />”?</translation> <translation id="5243522832766285132">Spróbuj ponownie za kilka chwil</translation> +<translation id="5244406554036143958">Podaj kod PIN, by włączyć automatyczne przesyłanie</translation> <translation id="5244474230056479698">Synchronizacja z <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Pierwsze kroki z kontem szkolnym</translation> <translation id="5246282308050205996">Aplikacja <ph name="APP_NAME" /> uległa awarii. Kliknij ten dymek, aby uruchomić ją ponownie.</translation> @@ -3445,6 +3463,7 @@ <translation id="5315873049536339193">Tożsamość</translation> <translation id="5317780077021120954">Zapisz</translation> <translation id="5319359161174645648">Google zaleca Chrome</translation> +<translation id="5320135788267874712">Nowa nazwa urządzenia</translation> <translation id="532247166573571973">Serwer może być niedostępny. Spróbuj ponownie później.</translation> <translation id="5324780743567488672">Ustaw strefę czasową automatycznie na podstawie lokalizacji</translation> <translation id="5327248766486351172">Nazwa</translation> @@ -3458,6 +3477,7 @@ <translation id="5336126339807372270">Nie zezwalaj żadnym stronom na dostęp do urządzeń USB</translation> <translation id="5336688142483283574">Ta strona zostanie też usunięta z Twojej historii i aktywności w <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Zainstalowane przez inną firmę.</translation> +<translation id="5337926771328966926">Obecna nazwa urządzenia to <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Przechowywanie lokalne</translation> <translation id="5340638867532133571">Zezwalaj stronom na instalowanie modułów do obsługi płatności (zalecane)</translation> <translation id="5341793073192892252">Zablokowano te pliki cookie (pliki cookie innych firm są blokowane bez wyjątków)</translation> @@ -3488,6 +3508,7 @@ <translation id="5379140238605961210">Nadal blokuj dostęp do mikrofonu</translation> <translation id="5382591305415226340">Zarządzaj obsługiwanymi linkami</translation> <translation id="5383377866517186886">Kamera jest wyłączona w Preferencjach systemowych Maca</translation> +<translation id="5383740867328871413">Grupa bez nazwy – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Sparowane</translation> <translation id="5389237414310520250">Nie można utworzyć nowego użytkownika. Sprawdź miejsce na dysku twardym i uprawnienia, a potem spróbuj ponownie.</translation> <translation id="5390100381392048184">Zezwalaj na odtwarzanie dźwięku na stronach internetowych</translation> @@ -3498,6 +3519,7 @@ <translation id="5398497406011404839">Ukryte zakładki</translation> <translation id="5398572795982417028">Odwołanie do strony spoza zakresu, limit to <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Reklamy zostały zablokowane</translation> +<translation id="5401938042319910061">Uruchom wszystkie testy</translation> <translation id="5402815541704507626">Pobieranie aktualizacji przy użyciu mobilnej transmisji danych</translation> <translation id="540296380408672091">Zawsze blokuj pliki cookie na <ph name="HOST" /></translation> <translation id="540495485885201800">Zamień z poprzednim</translation> @@ -3813,6 +3835,7 @@ <translation id="57838592816432529">Wycisz</translation> <translation id="5785583009707899920">Narzędzia do plików w Chrome</translation> <translation id="5787146423283493983">Uzgadnianie klucza</translation> +<translation id="5787420647064736989">Nazwa urządzenia</translation> <translation id="5788367137662787332">Niestety, nie można podłączyć co najmniej jednej partycji na urządzeniu <ph name="DEVICE_LABEL" />.</translation> <translation id="5790085346892983794">Udało się</translation> <translation id="5790651917470750848">Przekierowanie portu już istnieje</translation> @@ -4489,6 +4512,7 @@ <translation id="6648911618876616409">Masz gotową do zainstalowania aktualizację krytyczną. Zaloguj się, by zacząć.</translation> <translation id="6649018507441623493">Chwileczkę…</translation> <translation id="6649563841575838401">Format archiwum nie jest obsługiwany albo plik jest uszkodzony.</translation> +<translation id="6650234781371031356">Hasło, którego używasz na stronie <ph name="WEBSITE" />, jest zapisane na tym urządzeniu i na koncie Google. Skąd chcesz je usunąć?</translation> <translation id="665061930738760572">Otwórz w &nowym oknie</translation> <translation id="6651237644330755633">Ufaj temu certyfikatowi przy identyfikowaniu witryn internetowych</translation> <translation id="665355505818177700">Integracja Chrome <ph name="MS_AD_NAME" /> jest obsługiwana tylko na platformach x86_64. Chromebooki zbudowane na platformach ARM lub x86 nie obsługują tej funkcji.</translation> @@ -4527,6 +4551,7 @@ <translation id="6701535245008341853">Nie można uzyskać profilu.</translation> <translation id="6702639462873609204">&Edytuj</translation> <translation id="6703966911896067184">Ilustracja przedstawiająca błąd podczas rejestracji</translation> +<translation id="6704062477274546131">Rozwiązywanie nazw DNS</translation> <translation id="6706210727756204531">Zakres</translation> <translation id="6707389671160270963">Certyfikat klienta SSL</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> i 1 inna karta}few{<ph name="PAGE_TITLE" /> i # inne karty}many{<ph name="PAGE_TITLE" /> i # innych kart}other{<ph name="PAGE_TITLE" /> i # innej karty}}</translation> @@ -4584,6 +4609,7 @@ <translation id="677965093459947883">Bardzo mała</translation> <translation id="6781284683813954823">Link do doodla</translation> <translation id="6781978626986383437">Tworzenie kopii zapasowej Linuksa zostało anulowane</translation> +<translation id="6782067259631821405">Nieprawidłowy PIN</translation> <translation id="6785915470941880363">Odwrotne przewijanie <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Rozszerzenia</translation> <translation id="6787839852456839824">Skróty klawiszowe</translation> @@ -4890,6 +4916,7 @@ <translation id="7141105143012495934">Nie udało się zalogować, bo nie można pobrać informacji o koncie. Skontaktuj się z administratorem lub spróbuj ponownie.</translation> <translation id="7143207342074048698">Łączenie</translation> <translation id="7144878232160441200">Ponów próbę</translation> +<translation id="714876143603641390">Łączność LAN</translation> <translation id="7149893636342594995">Ostatnie 24 godziny</translation> <translation id="715118844758971915">Drukarki tradycyjne</translation> <translation id="7152478047064750137">To rozszerzenie nie wymaga specjalnych uprawnień</translation> @@ -5027,6 +5054,7 @@ <translation id="7334274148831027933">Włącz lupę zadokowaną</translation> <translation id="7335974957018254119">Używaj sprawdzania pisowni dla języka:</translation> <translation id="7336799713063880535">Zablokowane.</translation> +<translation id="7337248890521463931">Pokaż więcej wierszy</translation> <translation id="7338630283264858612">Numer seryjny urządzenia jest nieprawidłowy.</translation> <translation id="7339763383339757376">PKCS #7, jeden certyfikat</translation> <translation id="7339785458027436441">Sprawdzaj pisownię w trakcie pisania</translation> @@ -5409,6 +5437,7 @@ <translation id="7807711621188256451">Zawsze zezwalaj witrynie <ph name="HOST" /> na dostęp do kamery</translation> <translation id="7810202088502699111">Wyskakujące okienka na tej stronie zostały zablokowane.</translation> <translation id="781167124805380294">Prześlij plik <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Sprawdź, co nowego oferuje <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Kopiuj</translation> <translation id="7815680994978050279">Zablokowano niebezpieczne pobieranie</translation> <translation id="7817361223956157679">W aplikacjach na Linuksa klawiatura ekranowa jeszcze nie działa</translation> @@ -5638,6 +5667,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 kartka}few{{COUNT} kartki}many{{COUNT} kartek}other{{COUNT} kartki}}</translation> <translation id="8063235345342641131">Domyślny zielony awatar</translation> <translation id="8063535366119089408">Wyświetl plik</translation> +<translation id="8064279191081105977">Grupa <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Kliknij, by się zalogować</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Drukuj jako grafikę</translation> @@ -6383,6 +6413,7 @@ <translation id="8986362086234534611">Zapomnij</translation> <translation id="8986494364107987395">Automatycznie przesyłaj do Google statystyki użytkowania i raporty o awariach</translation> <translation id="8987927404178983737">Miesiąc</translation> +<translation id="8990209962746788689">Nie udało się utworzyć kodu QR</translation> <translation id="8991520179165052608">Strona może używać mikrofonu</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 element}few{# elementy}many{# elementów}other{# elementu}}</translation> <translation id="899384117894244799">Usuwanie użytkownika z ograniczonym dostępem</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index da5e958da..6ce99ee 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1823,7 +1823,7 @@ <translation id="3253225298092156258">Indisponível</translation> <translation id="3253448572569133955">Conta desconhecida</translation> <translation id="3254516606912442756">A detecção automática de fuso horário está desativada</translation> -<translation id="3254715652085014625">Abra o Chrome no smartphone e acesse Configurações > Senhas > Usar o smartphone como chave de segurança e siga as instruções.</translation> +<translation id="3254715652085014625">Abra o Chrome no smartphone e acesse "Configurações > Senhas > Usar o smartphone como chave de segurança" e siga as instruções.</translation> <translation id="3255355328033513170">Todos os dados armazenados pelo <ph name="SITE_GROUP_NAME" /> e sites relacionados serão excluídos. Isso inclui cookies. Você será desconectado desses sites, inclusive nas guias abertas.</translation> <translation id="3259723213051400722">Tente novamente.</translation> <translation id="3264544094376351444">Fonte Sans-Serif</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 69d5afc2..c59b012 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Remover esta palavra-passe não elimina a sua conta em <ph name="DOMAIN" />. Altere a palavra-passe ou elimine a sua conta em <ph name="DOMAIN_LINK" /> para a manter protegida contra terceiros.</translation> <translation id="1084824384139382525">Copiar &endereço do link</translation> <translation id="1085697365578766383">Não foi possível iniciar a máquina virtual. Tente novamente.</translation> +<translation id="1088659085457112967">Entrar no modo de leitor</translation> <translation id="1090126737595388931">Não há aplicações em execução em segundo plano</translation> <translation id="1091767800771861448">Prima ESCAPE para ignorar (apenas nas compilações não oficiais).</translation> <translation id="1093457606523402488">Redes visíveis</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">A aplicação Quiosque foi atualizada. Remova a pen USB.</translation> <translation id="120368089816228251">Nota musical</translation> <translation id="1203942045716040624">Trabalhador partilhado: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Latência de DNS</translation> <translation id="1205489148908752564">Ler e alterar utilizadores na lista de autorizações</translation> <translation id="1206407435587370571">Explorar o seu Chromebook</translation> <translation id="1209796539517632982">Servidores de nome automático</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Este resultado foi inesperado? <ph name="BEGIN_LINK" />Enviar feedback<ph name="END_LINK" /></translation> <translation id="1396963298126346194">O nome de utilizador e a palavra-passe introduzidos não coincidem</translation> <translation id="1397500194120344683">Nenhum dispositivo elegível. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">É possível enviar ping ao gateway</translation> <translation id="1398853756734560583">Maximizar</translation> <translation id="139911022479327130">Desbloquear o telemóvel e confirmar a sua identidade</translation> <translation id="1399511500114202393">Nenhum certificado de utilizador</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Remover esta pessoa</translation> <translation id="1703331064825191675">Nunca mais se preocupe com as suas palavras-passe</translation> <translation id="1704970325597567340">A verificação de segurança foi efetuada a <ph name="DATE" />.</translation> +<translation id="1706391837335750954">Resolvedor de DNS presente</translation> <translation id="1706586824377653884">Adicionado pelo gestor</translation> <translation id="1706625117072057435">Níveis de zoom</translation> <translation id="1708338024780164500">(Inativa)</translation> @@ -603,7 +607,7 @@ <translation id="1725149567830788547">Mostrar &controlos</translation> <translation id="1726100011689679555">Servidores de nomes</translation> <translation id="1729533290416704613">Também controla a página apresentada quando pesquisa a partir da Caixa geral.</translation> -<translation id="1730917990259790240"><ph name="BEGIN_PARAGRAPH1" />Para remover aplicações, aceda a Definições > Google Play Store > Gerir as preferências do Android > Aplicações ou Gestor de aplicações. Toque na aplicação que pretende desinstalar (pode ter de deslizar rapidamente para a direita ou para a esquerda para encontrar a aplicação). Em seguida, toque em Desinstalar ou em Desativar.<ph name="END_PARAGRAPH1" /></translation> +<translation id="1730917990259790240"><ph name="BEGIN_PARAGRAPH1" />Para remover aplicações, aceda a Definições > Google Play Store > Gerir as preferências do Android > Apps ou Gestor de aplicações. Toque na aplicação que pretende desinstalar (pode ter de deslizar rapidamente para a direita ou para a esquerda para encontrar a aplicação). Em seguida, toque em Desinstalar ou em Desativar.<ph name="END_PARAGRAPH1" /></translation> <translation id="1731911755844941020">A enviar pedido...</translation> <translation id="1733383495376208985">Encriptar dados sincronizados com a sua própria <ph name="BEGIN_LINK" />frase de acesso de sincronização<ph name="END_LINK" />. Não estão incluídos métodos de pagamento e endereços do Google Pay.</translation> <translation id="1734212868489994726">Azul claro</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">O Chrome está a ser controlado pelo software de teste automatizado.</translation> <translation id="2071393345806050157">Nenhum ficheiro de registo local.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Clique para instalar a extensão.}other{Clique para instalar estas extensões.}}</translation> +<translation id="2073505299004274893">Utilize <ph name="CHARACTER_LIMIT" /> carateres ou menos.</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% de bateria</translation> <translation id="2075959085554270910">Permite-lhe ativar/desativar a funcionalidade tocar para clicar e arrastamento através do toque.</translation> <translation id="2076269580855484719">Ocultar este plug-in</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Introduza o PIN</translation> <translation id="241082044617551207">Plug-in desconhecido</translation> <translation id="2412593942846481727">Atualização disponível</translation> +<translation id="2414499877591062094">Ativar envio automático do PIN</translation> <translation id="2416435988630956212">Teclas de função do teclado</translation> <translation id="241727068219398187">Os dados foram encriptados com a sua palavra-passe do Google em <ph name="TIME" />. Não estão incluídos métodos de pagamento e endereços do Google Pay.</translation> <translation id="2419131370336513030">Ver apps instaladas</translation> @@ -1307,6 +1313,7 @@ <translation id="2586672484245266891">Introduza um URL mais curto.</translation> <translation id="2587922766792651800">Tempo limite excedido</translation> <translation id="2588636910004461974">Dispositivos de <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Sair do modo de leitor</translation> <translation id="2594999711683503743">Pesquise no Google ou escreva o URL</translation> <translation id="2602501489742255173">Deslize rapidamente para cima para começar.</translation> <translation id="2603115962224169880">Limpar o computador</translation> @@ -1490,7 +1497,7 @@ <translation id="2804667941345577550">A sua sessão neste site será terminada, incluindo em separadores abertos.</translation> <translation id="2804680522274557040">A câmara está desativada</translation> <translation id="2805646850212350655">Sistema de encriptação de ficheiros Microsoft</translation> -<translation id="2805756323405976993">Aplicações</translation> +<translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Detalhes adicionais</translation> <translation id="2807517655263062534">Os ficheiros que transferir são apresentados aqui</translation> <translation id="2809586584051668049">e mais <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Idiomas ativados</translation> <translation id="3313622045786997898">Valor de assinatura do certificado</translation> <translation id="3315158641124845231">Ocultar o <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Entrar no modo de leitor</translation> <translation id="3317459757438853210">Frente e verso</translation> <translation id="3317678681329786349">Câmara e microfone bloqueados</translation> <translation id="3319048459796106952">&Nova janela sem registo</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Olá <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – <ph name="TIME" /> restantes</translation> <translation id="3637682276779847508">O seu cartão SIM é desativado definitivamente se não conseguir introduzir a chave de desbloqueio do PIN correta</translation> +<translation id="3639220004740062347">Sair do modo de leitor</translation> <translation id="3640214691812501263">Adicionar "<ph name="EXTENSION_NAME" />" para <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Ensine o Assistente a reconhecer a sua voz</translation> <translation id="3645372836428131288">Mova ligeiramente para capturar uma parte diferente da impressão digital.</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Carregamento de registos pendente.</translation> <translation id="3650952250015018111">Permitir que o "<ph name="APP_NAME" />" tenha acesso:</translation> <translation id="3651488188562686558">Desligar-se da rede Wi-Fi</translation> +<translation id="3651952061994655768">Alterar nome</translation> <translation id="3652817283076144888">A inicializar</translation> <translation id="3653160965917900914">Partilhas de ficheiros na rede</translation> <translation id="3653842108912548333">Aceder ao Assistente com o Voice Match</translation> @@ -2184,7 +2194,7 @@ <translation id="3688578402379768763">Atualizado</translation> <translation id="3688794912214798596">Alterar idiomas…</translation> <translation id="3690369331356918524">Envia-lhe um aviso se as palavras-passe forem expostas numa violação de dados.</translation> -<translation id="3691231116639905343">Aplicações de teclado</translation> +<translation id="3691231116639905343">Apps de teclado</translation> <translation id="3691267899302886494"><ph name="HOST" /> pretende partilhar o seu ecrã.</translation> <translation id="369135240373237088">Inicie sessão novamente com uma conta escolar</translation> <translation id="3693415264595406141">Palavra-passe:</translation> @@ -2236,11 +2246,12 @@ <translation id="3742666961763734085">Não é possível encontrar uma unidade organizacional com esse nome. Tente novamente.</translation> <translation id="3744111561329211289">Sincronização em segundo plano</translation> <translation id="3746127522257263495">A adição de contas do G Suite for Education em apps Android não é suportada.</translation> -<translation id="3747077776423672805">Para remover aplicações, aceda a Definições > Google Play Store > Gerir preferências do Android > Aplicações ou Gestor de aplicações. Toque na aplicação que pretende desinstalar (pode ter de deslizar rapidamente para a direita ou para a esquerda para encontrar a aplicação). Em seguida, toque em Desinstalar ou em Desativar.</translation> +<translation id="3747077776423672805">Para remover aplicações, aceda a Definições > Google Play Store > Gerir preferências do Android > Apps ou Gestor de aplicações. Toque na aplicação que pretende desinstalar (pode ter de deslizar rapidamente para a direita ou para a esquerda para encontrar a aplicação). Em seguida, toque em Desinstalar ou em Desativar.</translation> <translation id="3748026146096797577">Desligado</translation> <translation id="3748706263662799310">Comunicar um erro</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Os meus dispositivos</translation> +<translation id="3752757212511661046">Pretende criar um perfil de trabalho?</translation> <translation id="3753033997400164841">Armazene uma vez. Utilize em todas as plataformas.</translation> <translation id="3755411799582650620">O seu <ph name="PHONE_NAME" /> pode agora desbloquear também este <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">O site está a utilizar o microfone.</translation> @@ -2271,7 +2282,7 @@ <translation id="378312418865624974">Ler um identificador único para este computador</translation> <translation id="3784372983762739446">Dispositivos Bluetooth</translation> <translation id="3784472333786002075">Os cookies são ficheiros criados pelos Websites. Existem dois tipos de cookies: os cookies originais são criados pelo site ao qual acede. O site é apresentado na barra de endereço. Os cookies de terceiros são criados por outros sites. Estes sites possuem algum do conteúdo, tal como anúncios ou imagens, que vê no Website ao qual acede.</translation> -<translation id="3785308913036335955">Mostrar Atalho das Aplicações</translation> +<translation id="3785308913036335955">Mostrar Atalho das Apps</translation> <translation id="3785727820640310185">Palavras-passe guardadas para este site</translation> <translation id="3788301286821743879">Não foi possível iniciar a app de quiosque.</translation> <translation id="3788401245189148511">Esta poderia:</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Ativar Assistente Google</translation> <translation id="387531380970557479">A extensão "<ph name="EXTENSION_NAME" />" foi desativada porque contém software malicioso.</translation> <translation id="3879748587602334249">Gestor de transferências</translation> +<translation id="3881478300875776315">Mostrar menos linhas</translation> <translation id="3882165008614329320">Vídeo existente da câmara ou do ficheiro</translation> <translation id="3886446263141354045">O seu pedido para aceder a este site foi enviado para <ph name="NAME" />.</translation> <translation id="3888550877729210209">Tirar notas com a aplicação <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2508,7 +2520,7 @@ <translation id="4057896668975954729">Ver na Web Store</translation> <translation id="4058720513957747556">AppSocket (TCP/IP)</translation> <translation id="4058793769387728514">Verificar documento agora</translation> -<translation id="406070391919917862">Aplicações em segundo plano</translation> +<translation id="406070391919917862">Apps em segundo plano</translation> <translation id="4061374428807229313">Para partilhar, clique com o botão direito do rato numa pasta na app Files e selecione "Partilhar com o Parallels Desktop".</translation> <translation id="4065876735068446555">A rede que está a utilizar (<ph name="NETWORK_ID" />) pode exigir que visite a respetiva página de início de sessão.</translation> <translation id="4066207411788646768">Verifique a ligação para ver as impressões disponíveis na sua rede.</translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">Concordo</translation> <translation id="413121957363593859">Componentes</translation> <translation id="4131410914670010031">Preto e branco</translation> +<translation id="413193092008917129">Rotinas de diagnóstico de rede</translation> <translation id="4133076602192971179">Abrir a app para alterar a sua palavra-passe</translation> <translation id="4136203100490971508">A Luz noturna irá desativar-se automaticamente ao nascer do sol.</translation> <translation id="41365691917097717">Se continuar, vai ativar a depuração do adb para criar e testar aplicações para Android. Tenha em atenção que esta ação permite a instalação de aplicações para Android que não foram validadas pela Google. Além disso, se pretender desativar o adb, terá de efetuar uma reposição de fábrica.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">Abrir ficheiros transferidos</translation> <translation id="4377363674125277448">Ocorreu um problema com o certificado do servidor.</translation> <translation id="4378154925671717803">Telemóvel</translation> +<translation id="4378373042927530923">Não foi executada.</translation> <translation id="4378551569595875038">A ligar...</translation> <translation id="4378556263712303865">Requisição do dispositivo</translation> <translation id="4379281552162875326">Pretende desinstalar a app "<ph name="APP_NAME" />"?</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">Abrir víde&o num novo separador</translation> <translation id="4645676300727003670">&Manter</translation> <translation id="4646675363240786305">Portas</translation> +<translation id="4646949265910132906">Ligação segura ao Wi-Fi</translation> <translation id="4647090755847581616">Fe&char Separador</translation> <translation id="4647420311443994946">{0,select, tablet{Iniciar app quando inicia sessão no seu tablet}computer{Iniciar app quando inicia sessão no seu computador}other{Iniciar app quando inicia sessão no seu dispositivo}}</translation> <translation id="4647697156028544508">Introduza o PIN para "<ph name="DEVICE_NAME" />":</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> poderá ver o ficheiro <ph name="FILENAME" /> até fechar todos os separadores deste site.</translation> <translation id="4692623383562244444">Motores de pesquisa</translation> <translation id="4693155481716051732">Sushi</translation> +<translation id="469379815867856270">Intensidade do sinal</translation> <translation id="4694024090038830733">A configuração da impressora é gerida pelo administrador.</translation> <translation id="4694604912444486114">Macaco</translation> <translation id="4697551882387947560">Quando a sessão de navegação termina</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">Esta extensão contém um software malicioso.</translation> <translation id="4981449534399733132">Para limpar os dados de navegação de todos os seus dispositivos sincronizados e da sua Conta Google, <ph name="BEGIN_LINK" />inicie a sessão<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Software do dispositivo</translation> +<translation id="4985509611418653372">Executar</translation> <translation id="4986728572522335985">Isto elimina todos os dados na chave de segurança, incluindo o respetivo PIN</translation> <translation id="4988526792673242964">Páginas </translation> <translation id="49896407730300355">Rodar para a &esquerda</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">Ler todos os dados nos Sites visitados</translation> <translation id="5242724311594467048">Ativar a extensão "<ph name="EXTENSION_NAME" />"?</translation> <translation id="5243522832766285132">Tente novamente dentro de alguns momentos.</translation> +<translation id="5244406554036143958">Introduza o seu PIN para ativar o envio automático</translation> <translation id="5244474230056479698">A sincronizar com <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Comece com uma conta escolar</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> falhou. Clique neste balão para reiniciar a aplicação.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Identidade</translation> <translation id="5317780077021120954">Guardar</translation> <translation id="5319359161174645648">A Google recomenda o Chrome</translation> +<translation id="5320135788267874712">Novo nome do dispositivo</translation> <translation id="532247166573571973">O servidor pode estar inacessível. Tente novamente mais tarde.</translation> <translation id="5324780743567488672">Definir automaticamente o fuso horário com base na localização</translation> <translation id="5327248766486351172">Nome</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Não permitir o acesso de sites a dispositivos USB</translation> <translation id="5336688142483283574">Esta página também será removida do histórico e da atividade do <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Instalada por terceiros.</translation> +<translation id="5337926771328966926">O nome do dispositivo atual é <ph name="DEVICE_NAME" />.</translation> <translation id="5338503421962489998">Armazenamento local</translation> <translation id="5340638867532133571">Permitir que os sites instalem controladores de pagamentos (recomendado)</translation> <translation id="5341793073192892252">Os seguintes cookies foram bloqueados (os cookies de terceiros estão a ser bloqueados sem excepção)</translation> @@ -3492,6 +3512,7 @@ <translation id="5379140238605961210">Continuar a bloquear o acesso ao microfone</translation> <translation id="5382591305415226340">Gerir links suportados</translation> <translation id="5383377866517186886">A câmara está desligada nas Preferências do Sistema no Mac</translation> +<translation id="5383740867328871413">Grupo sem nome – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Emparelhado</translation> <translation id="5389237414310520250">Não foi possível criar o novo utilizador. Verifique o espaço no disco rígido e as autorizações e tente novamente.</translation> <translation id="5390100381392048184">Permitir que os sites reproduzam som</translation> @@ -3502,6 +3523,7 @@ <translation id="5398497406011404839">Marcadores ocultos</translation> <translation id="5398572795982417028">A referência da página está fora dos limites; o limite é <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Anúncios bloqueados</translation> +<translation id="5401938042319910061">Executar todas as rotinas</translation> <translation id="5402815541704507626">Transferir a atualização através de dados móveis</translation> <translation id="540296380408672091">Bloquear sempre cookies em <ph name="HOST" /></translation> <translation id="540495485885201800">Trocar com o anterior</translation> @@ -3748,7 +3770,7 @@ <translation id="5696143504434933566">Denunciar abuso de "<ph name="EXTENSION_NAME" />"</translation> <translation id="5696177755977520104">Sincronização das definições do Chrome OS</translation> <translation id="5696679855467848181">Ficheiro PPD atualmente em utilização: <ph name="PPD_NAME" /></translation> -<translation id="570043786759263127">Aplicações e serviços do Google Play</translation> +<translation id="570043786759263127">Apps e serviços do Google Play</translation> <translation id="5700836101007545240">A opção Adicionar ligação foi desativada pelo gestor</translation> <translation id="5701080607174488915">Erro ao obter a política do servidor.</translation> <translation id="5701212929149679556">Roaming de rede móvel</translation> @@ -3818,6 +3840,7 @@ <translation id="57838592816432529">Desativar som</translation> <translation id="5785583009707899920">Utilitários de ficheiros do Chrome</translation> <translation id="5787146423283493983">Acordo de chaves</translation> +<translation id="5787420647064736989">Nome do dispositivo</translation> <translation id="5788367137662787332">Lamentamos, mas não foi possível montar, pelo menos, uma partição no aparelho <ph name="DEVICE_LABEL" />.</translation> <translation id="5790085346892983794">Sucesso</translation> <translation id="5790651917470750848">O encaminhamento de porta já existe.</translation> @@ -4494,6 +4517,7 @@ <translation id="6648911618876616409">Existe uma nova atualização crítica pronta para instalação. Inicie sessão para começar.</translation> <translation id="6649018507441623493">Aguarde um momento...</translation> <translation id="6649563841575838401">O formato do arquivo não é suportado ou o ficheiro está danificado.</translation> +<translation id="6650234781371031356">A sua palavra-passe para <ph name="WEBSITE" /> está armazenada neste dispositivo e na sua Conta Google. Qual pretende eliminar?</translation> <translation id="665061930738760572">Abrir numa &Nova Janela</translation> <translation id="6651237644330755633">Confiar neste certificado para identificar Sites</translation> <translation id="665355505818177700">A integração do <ph name="MS_AD_NAME" /> com o Chrome apenas é suportada em plataformas x86_64. Os Chromebooks concebidos com base numa plataforma ARM ou x86 não suportam esta funcionalidade.</translation> @@ -4532,6 +4556,7 @@ <translation id="6701535245008341853">Não foi possível obter o perfil.</translation> <translation id="6702639462873609204">&Editar...</translation> <translation id="6703966911896067184">Ilustração do erro na inscrição</translation> +<translation id="6704062477274546131">Resolução de DNS</translation> <translation id="6706210727756204531">Âmbito</translation> <translation id="6707389671160270963">Certificado de cliente SSL</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> e mais 1 separador}other{<ph name="PAGE_TITLE" /> e mais # separadores}}</translation> @@ -4589,6 +4614,7 @@ <translation id="677965093459947883">Muito pequeno</translation> <translation id="6781284683813954823">Link do doodle</translation> <translation id="6781978626986383437">Cópia de segurança do Linux cancelada</translation> +<translation id="6782067259631821405">PIN inválido</translation> <translation id="6785915470941880363">Deslocamento invertido <ph name="LINK_BEGIN" />Saber mais<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Extensões</translation> <translation id="6787839852456839824">Atalhos de teclado</translation> @@ -4895,6 +4921,7 @@ <translation id="7141105143012495934">O início de sessão falhou porque não foi possível obter os detalhes da sua conta. Contacte o gestor ou tente novamente.</translation> <translation id="7143207342074048698">A ligar</translation> <translation id="7144878232160441200">Repetir</translation> +<translation id="714876143603641390">Conetividade de LAN</translation> <translation id="7149893636342594995">Últimas 24 horas</translation> <translation id="715118844758971915">Impressoras clássicas</translation> <translation id="7152478047064750137">Esta extensão não requer autorizações especiais.</translation> @@ -5032,6 +5059,7 @@ <translation id="7334274148831027933">Ativar lupa ancorada</translation> <translation id="7335974957018254119">Utilizar o corretor ortográfico para</translation> <translation id="7336799713063880535">Notific. bloqueadas.</translation> +<translation id="7337248890521463931">Mostrar mais linhas</translation> <translation id="7338630283264858612">O número de série do dispositivo é inválido.</translation> <translation id="7339763383339757376">PKCS #7, certificado único</translation> <translation id="7339785458027436441">Verificar a ortografia durante a escrita</translation> @@ -5189,7 +5217,7 @@ <translation id="7526989658317409655">Marcador de posição</translation> <translation id="7529411698175791732">Verifique a sua ligação à Internet. Se o problema continuar, experimente terminar e iniciar sessão novamente.</translation> <translation id="7530016656428373557">Taxa de descarga em Watts</translation> -<translation id="7531779363494549572">Aceda a Definições > Aplicações e notificações > Notificações.</translation> +<translation id="7531779363494549572">Aceda a Definições > Apps e notificações > Notificações.</translation> <translation id="7532009420053991888"><ph name="LINUX_APP_NAME" /> não está a responder. Selecione "Forçar fecho" para fechar a aplicação.</translation> <translation id="7537451260744431038">Os sites não podem utilizar cookies para melhorar a experiência de navegação, por exemplo, para manter a sua sessão iniciada ou memorizar os artigos no seu carrinho de compras.</translation> <translation id="7540972813190816353">Ocorreu um erro durante a verificação de atualizações: <ph name="ERROR" /></translation> @@ -5228,7 +5256,7 @@ <translation id="7581462281756524039">Uma ferramenta de limpeza</translation> <translation id="7582582252461552277">Preferir esta rede</translation> <translation id="7583948862126372804">Contagem</translation> -<translation id="7586498138629385861">O Chrome continuará em execução enquanto as Aplicações Chrome estiverem abertas.</translation> +<translation id="7586498138629385861">O Chrome continuará em execução enquanto as Apps Chrome estiverem abertas.</translation> <translation id="7589461650300748890">Pare. Tenha cuidado.</translation> <translation id="7593653750169415785">Bloqueado automaticamente porque recusou notificações algumas vezes</translation> <translation id="7595453277607160340">Para utilizar aplicações para Android e manter o <ph name="DEVICE_TYPE" /> a funcionar corretamente, volte a iniciar sessão e proceda à atualização.</translation> @@ -5414,6 +5442,7 @@ <translation id="7807711621188256451">Permitir sempre que <ph name="HOST" /> aceda à sua câmara</translation> <translation id="7810202088502699111">Os pop-ups foram bloqueados nesta página.</translation> <translation id="781167124805380294">Transmitir <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Veja as novidades no seu <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Copiar</translation> <translation id="7815680994978050279">Transferência perigosa bloqueada</translation> <translation id="7817361223956157679">O teclado no ecrã ainda não funciona em aplicações Linux.</translation> @@ -5643,6 +5672,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 folha de papel}other{{COUNT} folhas de papel}}</translation> <translation id="8063235345342641131">Avatar verde predefinido</translation> <translation id="8063535366119089408">Ver ficheiro</translation> +<translation id="8064279191081105977">Grupo <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Toque para iniciar sessão</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Imprimir como imagem</translation> @@ -5935,7 +5965,7 @@ <translation id="8438328416656800239">Mude para um navegador inteligente</translation> <translation id="8438566539970814960">Melhorar as pesquisas e a navegação</translation> <translation id="8439506636278576865">Oferecer para traduzir páginas neste idioma</translation> -<translation id="8440630305826533614">Aplicações para Linux</translation> +<translation id="8440630305826533614">Apps para Linux</translation> <translation id="8443338615972234259">Crie uma nova conta para o seu utilizador supervisionado agora.</translation> <translation id="8446884382197647889">Saiba Mais</translation> <translation id="8447409163267621480">Inclua Ctrl ou Alt.</translation> @@ -6130,7 +6160,7 @@ <translation id="8688672835843460752">Disponível</translation> <translation id="8695825812785969222">Abrir &Localização...</translation> <translation id="8698269656364382265">Para voltar ao ecrã anterior, deslize rapidamente a partir do lado esquerdo.</translation> -<translation id="869884720829132584">Menu Aplicações</translation> +<translation id="869884720829132584">Menu Apps</translation> <translation id="869891660844655955">Data de expiração</translation> <translation id="8703346390800944767">Ignorar anúncio</translation> <translation id="8705331520020532516">Número de série</translation> @@ -6387,6 +6417,7 @@ <translation id="8986362086234534611">Esquecer</translation> <translation id="8986494364107987395">Enviar automaticamente estatísticas de utilização e relatórios de falhas para a Google</translation> <translation id="8987927404178983737">Mês</translation> +<translation id="8990209962746788689">Não é possível criar o código QR.</translation> <translation id="8991520179165052608">O site pode utilizar o microfone.</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 item}other{# itens}}</translation> <translation id="899384117894244799">Remover utilizador restrito</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 0720e49..c8b4522 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Eliminarea acestei parole nu îți va șterge contul din <ph name="DOMAIN" />. Schimbă-ți parola sau șterge contul din <ph name="DOMAIN_LINK" /> ca să-l păstrezi în siguranță.</translation> <translation id="1084824384139382525">Copiază adresa linkului</translation> <translation id="1085697365578766383">A apărut o eroare la pornirea mașinii virtuale. Încearcă din nou.</translation> +<translation id="1088659085457112967">Accesează modul Cititor</translation> <translation id="1090126737595388931">Nu rulează aplicații în fundal</translation> <translation id="1091767800771861448">Apăsați pe ESCAPE pentru a ignora (numai versiunile neoficiale).</translation> <translation id="1093457606523402488">Rețele vizibile:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Aplicația de tip chioșc a fost actualizată. Scoate stickul USB.</translation> <translation id="120368089816228251">Notă muzicală</translation> <translation id="1203942045716040624">Worker folosit în comun: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Latența DNS</translation> <translation id="1205489148908752564">Citește și schimbă utilizatorii trecuți în lista albă</translation> <translation id="1206407435587370571">Explorează Chromebookul</translation> <translation id="1209796539517632982">Servere de nume automate</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Nu te așteptai la acest rezultat? <ph name="BEGIN_LINK" />Trimite feedback<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Numele de utilizator și parola introduse nu se potrivesc</translation> <translation id="1397500194120344683">Nu există dispozitive eligibile. <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Gateway-ul acceptă testul de ping</translation> <translation id="1398853756734560583">Maximizează</translation> <translation id="139911022479327130">Deblochează telefonul și confirmă-ți identitatea</translation> <translation id="1399511500114202393">Niciun certificat de utilizator</translation> @@ -541,7 +544,7 @@ <translation id="164936512206786300">Anulează asocierea dispozitivului Bluetooth</translation> <translation id="1650371550981945235">Afișează opțiunile de introducere a textului</translation> <translation id="1651008383952180276">Trebuie să introduci aceeași expresie de acces de două ori</translation> -<translation id="1652326691684645429">Activează Trimiterea în apropiere</translation> +<translation id="1652326691684645429">Activează Nearby Share</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Pentru a putea printa de oriunde, adaugă imprimanta în Google Cloud Print.}few{Pentru a putea printa de oriunde, adaugă cele # imprimante în Google Cloud Print.}other{Pentru a putea printa de oriunde, adaugă cele # de imprimante în Google Cloud Print.}}</translation> <translation id="1656528038316521561">Opacitatea fundalului</translation> <translation id="1657406563541664238">Trimite automat statistici de utilizare și rapoarte de blocare la Google pentru a contribui la îmbunătățirea <ph name="PRODUCT_NAME" />.</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Exclude această persoană</translation> <translation id="1703331064825191675">Nu-ți face griji în privința parolelor</translation> <translation id="1704970325597567340">Verificarea de siguranță a rulat pe <ph name="DATE" /></translation> +<translation id="1706391837335750954">Rezolvitor DNS prezent</translation> <translation id="1706586824377653884">Adăugat de administrator</translation> <translation id="1706625117072057435">Niveluri de zoom</translation> <translation id="1708338024780164500">(Inactivă)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">Chrome este controlat de un software de testare automată.</translation> <translation id="2071393345806050157">Niciun fișier jurnal local.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Dă clic pentru a instala extensia}few{Dă clic pentru a instala extensiile}other{Dă clic pentru a instala extensiile}}</translation> +<translation id="2073505299004274893">Folosește maximum <ph name="CHARACTER_LIMIT" /> de caractere</translation> <translation id="2075474481720804517">Nivelul bateriei: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="2075959085554270910">Permite activarea/dezactivarea funcțiilor „Atinge pentru clic” și „Tragere prin atingere”</translation> <translation id="2076269580855484719">Ascunde acest plugin</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Introdu codul PIN</translation> <translation id="241082044617551207">Plugin necunoscut</translation> <translation id="2412593942846481727">Actualizare disponibilă</translation> +<translation id="2414499877591062094">Activează trimiterea automată a codului PIN</translation> <translation id="2416435988630956212">Tastele pentru funcții de la tastatură</translation> <translation id="241727068219398187">Datele au fost criptate cu parola ta Google începând cu <ph name="TIME" />. Acest lucru nu este valabil și pentru metodele de plată și adresele din Google Pay.</translation> @@ -1308,6 +1314,7 @@ <translation id="2586672484245266891">Introdu o adresă URL mai scurtă</translation> <translation id="2587922766792651800">A expirat</translation> <translation id="2588636910004461974">Dispozitive de la <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Ieși din modul Cititor</translation> <translation id="2594999711683503743">Caută pe Google sau introdu adresa URL</translation> <translation id="2602501489742255173">Glisează în sus pentru a începe</translation> <translation id="2603115962224169880">Curăță computerul</translation> @@ -1670,7 +1677,7 @@ <translation id="3022978424994383087">Nu am înțeles.</translation> <translation id="3023464535986383522">Selectează și ascultă</translation> <translation id="3024374909719388945">Utilizează formatul de 24 de ore</translation> -<translation id="3027296729579831126">Activează funcția Trimitere în apropiere</translation> +<translation id="3027296729579831126">Activează funcția Nearby Share</translation> <translation id="3029466929721441205">Afișează instrumentele pentru creion pe raft</translation> <translation id="3031417829280473749">Agenta X</translation> <translation id="3031557471081358569">Selectează elementele de importat:</translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Limbi activate</translation> <translation id="3313622045786997898">Valoare a semnăturii certificatului</translation> <translation id="3315158641124845231">Ascunde <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Accesează modul Cititor</translation> <translation id="3317459757438853210">Față-verso</translation> <translation id="3317678681329786349">Camera foto și microfonul sunt blocate</translation> <translation id="3319048459796106952">Fereastră nouă &incognito</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Bună ziua, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – Timp rămas: <ph name="TIME" /></translation> <translation id="3637682276779847508">Cardul SIM va fi dezactivat definitiv dacă nu vei introduce cheia corectă de deblocare a codului PIN.</translation> +<translation id="3639220004740062347">Ieși din modul Cititor</translation> <translation id="3640214691812501263">Adaugi „<ph name="EXTENSION_NAME" />” pentru <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Învață Asistentul să îți recunoască vocea</translation> <translation id="3645372836428131288">Mută ușor pentru a înregistra o altă parte a amprentei</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Încărcarea jurnalului este în așteptare.</translation> <translation id="3650952250015018111">Permite accesul „<ph name="APP_NAME" />” la:</translation> <translation id="3651488188562686558">se va deconecta de la Wi-Fi.</translation> +<translation id="3651952061994655768">Schimbă numele</translation> <translation id="3652817283076144888">Se inițializează</translation> <translation id="3653160965917900914">Spații comune de stocare fișiere în rețea</translation> <translation id="3653842108912548333">Accesează Asistentul folosind Voice Match</translation> @@ -2241,6 +2251,7 @@ <translation id="3748706263662799310">Raportați o eroare</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Dispozitivele mele</translation> +<translation id="3752757212511661046">Creezi un profil de serviciu?</translation> <translation id="3753033997400164841">Stocheaz-o o singură dată. Folosește-o peste tot</translation> <translation id="3755411799582650620"><ph name="PHONE_NAME" /> poate debloca acum și acest <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Site-ul folosește microfonul</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Activează Asistentul Google</translation> <translation id="387531380970557479">„<ph name="EXTENSION_NAME" />” a fost dezactivată, deoarece conține programe malware.</translation> <translation id="3879748587602334249">Manager de descărcări</translation> +<translation id="3881478300875776315">Afișează mai puține rânduri</translation> <translation id="3882165008614329320">Videoclip existent din camera foto sau din fișier</translation> <translation id="3886446263141354045">Solicitarea de a accesa acest site a fost trimisă către <ph name="NAME" /></translation> <translation id="3888550877729210209">Scriere de notițe cu <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">Sunt de acord</translation> <translation id="413121957363593859">Componente</translation> <translation id="4131410914670010031">Alb-negru</translation> +<translation id="413193092008917129">Rutine de diagnosticare a rețelei</translation> <translation id="4133076602192971179">Deschide aplicația pentru a schimba parola</translation> <translation id="4136203100490971508">Lumina de noapte se va dezactiva automat la răsărit</translation> <translation id="41365691917097717">Dacă alegi să continui, remedierea erorilor prin ADB se va activa pentru crearea și testarea aplicațiilor Android. Reține că această acțiune permite instalarea aplicațiilor Android care nu au fost verificate de Google. Pentru dezactivare, este necesară revenirea la setările din fabrică.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">Deschide fișierele descărcate</translation> <translation id="4377363674125277448">A apărut o problemă cu privire la certificatul serverului.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Nu a rulat</translation> <translation id="4378551569595875038">Se stabilește conexiunea...</translation> <translation id="4378556263712303865">Solicitarea dispozitivului</translation> <translation id="4379281552162875326">Dezinstalezi „<ph name="APP_NAME" />”?</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">&Deschide videoclipul într-o filă nouă</translation> <translation id="4645676300727003670">&Păstrați</translation> <translation id="4646675363240786305">Porturi</translation> +<translation id="4646949265910132906">Conexiune Wi-Fi securizată</translation> <translation id="4647090755847581616">&Închide fila</translation> <translation id="4647420311443994946">{0,select, tablet{Pornește aplicația când te conectezi pe tabletă}computer{Pornește aplicația când te conectezi pe computer}other{Pornește aplicația când te conectezi pe dispozitiv}}</translation> <translation id="4647697156028544508">Introduceți codul PIN pentru „<ph name="DEVICE_NAME" />":</translation> @@ -2966,7 +2981,7 @@ <translation id="4673442866648850031">Deschide instrumentele pentru creion când acesta este înlăturat</translation> <translation id="4677772697204437347">Memorie GPU</translation> <translation id="4680105648806843642">Sunetul a fost dezactivat pe această pagină</translation> -<translation id="4681453295291708042">Dezactivează funcția Trimitere în apropiere</translation> +<translation id="4681453295291708042">Dezactivează funcția Nearby Share</translation> <translation id="4681930562518940301">Deschide &imaginea originală într-o filă nouă</translation> <translation id="4682551433947286597">Imaginile de fundal apar pe ecranul de conectare.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (prestabilit)</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> va putea vedea <ph name="FILENAME" /> până când închizi toate filele pentru acest site</translation> <translation id="4692623383562244444">Motoare de căutare</translation> <translation id="4693155481716051732">Sushi</translation> +<translation id="469379815867856270">Puterea semnalului</translation> <translation id="4694024090038830733">Configurarea imprimantei este gestionată de administrator.</translation> <translation id="4694604912444486114">Maimuță</translation> <translation id="4697551882387947560">La încheierea sesiunii de navigare</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">Această extensie conține programe malware.</translation> <translation id="4981449534399733132">Pentru a șterge datele de navigare de pe toate dispozitivele sincronizate și din Contul Google, <ph name="BEGIN_LINK" />conectează-te<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Software-ul de pe dispozitiv</translation> +<translation id="4985509611418653372">Rulează</translation> <translation id="4986728572522335985">Vor fi șterse toate datele de pe cheia de securitate, inclusiv codul său PIN</translation> <translation id="4988526792673242964">Pagini</translation> <translation id="49896407730300355">Rotiți în sens &invers acelor de ceasornic</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">Citește toate datele de pe site-urile pe care le vizitezi</translation> <translation id="5242724311594467048">Activați extensia „<ph name="EXTENSION_NAME" />”?</translation> <translation id="5243522832766285132">Încearcă din nou în câteva momente</translation> +<translation id="5244406554036143958">Introdu codul PIN pentru a activa trimiterea automată</translation> <translation id="5244474230056479698">Se sincronizează cu <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Începe lucrul cu un cont de la școală</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> s-a blocat. Dă clic pe balon pentru a reporni aplicația.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Identitate</translation> <translation id="5317780077021120954">Salvează</translation> <translation id="5319359161174645648">Google recomandă Chrome</translation> +<translation id="5320135788267874712">Noul nume al dispozitivului</translation> <translation id="532247166573571973">Este posibil ca serverul să nu poată fi accesat. Încearcă din nou mai târziu.</translation> <translation id="5324780743567488672">Setează automat fusul orar folosind locația</translation> <translation id="5327248766486351172">Nume</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Nu permite niciunui site să acceseze dispozitive USB</translation> <translation id="5336688142483283574">Această pagină va fi eliminată din istoricul tău și din activitatea <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Instalată de o terță parte.</translation> +<translation id="5337926771328966926">Numele actual al dispozitivului este <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Stocare la nivel local</translation> <translation id="5340638867532133571">Permite site-urilor să instaleze handlere pentru plăți (recomandat)</translation> <translation id="5341793073192892252">Următoarele cookie-uri au fost blocate (cookie-urile terță parte sunt blocate fără excepții)</translation> @@ -3492,6 +3512,7 @@ <translation id="5379140238605961210">Blocați în continuare accesul la microfon</translation> <translation id="5382591305415226340">Gestionează linkurile acceptate</translation> <translation id="5383377866517186886">Camera foto este dezactivată în System Preferences (Preferințe de sistem) pentru Mac</translation> +<translation id="5383740867328871413">Grup nedenumit – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Împerecheat</translation> <translation id="5389237414310520250">Noul utilizator nu a putut fi creat. Verifică spațiul de pe hard disk și permisiunile, apoi încearcă din nou.</translation> <translation id="5390100381392048184">Permite site-urilor să redea sunet</translation> @@ -3502,6 +3523,7 @@ <translation id="5398497406011404839">Marcaje ascunse</translation> <translation id="5398572795982417028">Referința privind pagina este în afara limitelor (limita este <ph name="MAXIMUM_PAGE" />)</translation> <translation id="5398772614898833570">Anunțurile au fost blocate</translation> +<translation id="5401938042319910061">Rulează toate rutinele</translation> <translation id="5402815541704507626">Descarcă actualizarea folosind datele mobile</translation> <translation id="540296380408672091">Blochează întotdeauna cookie-urile pe <ph name="HOST" /></translation> <translation id="540495485885201800">Schimbă cu anteriorul</translation> @@ -3783,7 +3805,7 @@ <translation id="5739017626473506901">Conectează-te pentru a ajuta utilizatorul <ph name="USER_NAME" /> să adauge un cont de la școală</translation> <translation id="5739235828260127894">Se așteaptă confirmarea. <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation> <translation id="5739458112391494395">Foarte mare</translation> -<translation id="5740328398383587084">Trimitere în apropiere</translation> +<translation id="5740328398383587084">Nearby Share</translation> <translation id="574104302965107104">Oglindirea ecranului</translation> <translation id="574209121243317957">Tonalitatea</translation> <translation id="5746169159649715125">Salvați ca PDF</translation> @@ -3817,6 +3839,7 @@ <translation id="57838592816432529">Dezactivează sunetul</translation> <translation id="5785583009707899920">Utilitare de fișiere Chrome</translation> <translation id="5787146423283493983">Acord privind cheia</translation> +<translation id="5787420647064736989">Numele dispozitivului</translation> <translation id="5788367137662787332">Ne pare rău, cel puțin o partiție de pe dispozitivul <ph name="DEVICE_LABEL" /> nu a putut fi montată.</translation> <translation id="5790085346892983794">Ai reușit</translation> <translation id="5790651917470750848">Redirecționarea de port există deja</translation> @@ -4493,6 +4516,7 @@ <translation id="6648911618876616409">O actualizare esențială este gata de instalare. Conectează-te pentru a începe.</translation> <translation id="6649018507441623493">O secundă…</translation> <translation id="6649563841575838401">Formatul arhivei nu este acceptat sau fișierul este deteriorat.</translation> +<translation id="6650234781371031356">Parola pentru <ph name="WEBSITE" /> este stocată pe acest dispozitiv și în Contul tău Google. De unde vrei să o ștergi?</translation> <translation id="665061930738760572">Deschideți într-o &fereastră nouă</translation> <translation id="6651237644330755633">Ai încredere în acest certificat pentru a identifica site-urile</translation> <translation id="665355505818177700">Integrarea <ph name="MS_AD_NAME" /> Chrome este acceptată numai pe platformele x86_64. Dispozitivele Chromebook construite pe o platformă ARM sau x86 nu acceptă această funcție.</translation> @@ -4531,6 +4555,7 @@ <translation id="6701535245008341853">Profilul nu a putut fi preluat.</translation> <translation id="6702639462873609204">&Editați...</translation> <translation id="6703966911896067184">Ilustrație pentru eroare la înregistrare</translation> +<translation id="6704062477274546131">Rezolvare DNS</translation> <translation id="6706210727756204531">Aplicabilitate</translation> <translation id="6707389671160270963">Certificat de client SSL</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> și încă o filă}few{<ph name="PAGE_TITLE" /> și încă # file}other{<ph name="PAGE_TITLE" /> și încă # de file}}</translation> @@ -4588,6 +4613,7 @@ <translation id="677965093459947883">Foarte mică</translation> <translation id="6781284683813954823">Linkul doodle-ului</translation> <translation id="6781978626986383437">Backupul Linux a fost anulat</translation> +<translation id="6782067259631821405">PIN nevalid</translation> <translation id="6785915470941880363">Derulare inversă <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Extensii</translation> <translation id="6787839852456839824">Comenzi rapide de la tastatură</translation> @@ -4739,7 +4765,7 @@ <translation id="6965978654500191972">Dispozitiv</translation> <translation id="696780070563539690">Site-urile nu pot folosi cookie-uri pentru a-ți vedea activitatea de navigare de pe diferite site-uri, de exemplu, pentru a personaliza anunțurile</translation> <translation id="6968288415730398122">Introdu parola pentru a configura blocarea ecranului</translation> -<translation id="6969047215179982698">Dezactivează Trimiterea în apropiere</translation> +<translation id="6969047215179982698">Dezactivează Nearby Share</translation> <translation id="6970480684834282392">Tip de pornire</translation> <translation id="6970856801391541997">Printează anumite pagini</translation> <translation id="6972180789171089114">Audio/Video</translation> @@ -4894,6 +4920,7 @@ <translation id="7141105143012495934">Nu s-a conectat, deoarece nu s-au putut prelua detaliile contului. Contactează administratorul sau încearcă din nou.</translation> <translation id="7143207342074048698">Se conectează</translation> <translation id="7144878232160441200">Reîncearcă</translation> +<translation id="714876143603641390">Conectivitatea prin LAN</translation> <translation id="7149893636342594995">Ultimele 24 de ore</translation> <translation id="715118844758971915">Imprimante clasice</translation> <translation id="7152478047064750137">Această extensie nu necesită permisiuni speciale</translation> @@ -5031,6 +5058,7 @@ <translation id="7334274148831027933">Activează lupa andocată</translation> <translation id="7335974957018254119">Folosește verificarea ortografiei pentru</translation> <translation id="7336799713063880535">Notificări blocate.</translation> +<translation id="7337248890521463931">Afișează mai multe rânduri</translation> <translation id="7338630283264858612">Numărul de serie al dispozitivului nu este valid.</translation> <translation id="7339763383339757376">PKCS #7, certificat unic</translation> <translation id="7339785458027436441">Verifică ortografia pe măsură ce se introduce text</translation> @@ -5413,6 +5441,7 @@ <translation id="7807711621188256451">Permiteți întotdeauna accesul <ph name="HOST" /> la camera dvs.</translation> <translation id="7810202088502699111">Ferestrele pop-up au fost blocate pe această pagină.</translation> <translation id="781167124805380294">Proiectează <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Vezi noutățile de pe <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Copiază</translation> <translation id="7815680994978050279">A fost blocată o descărcare periculoasă</translation> <translation id="7817361223956157679">Tastatura de pe ecran nu funcționează încă în aplicațiile Linux</translation> @@ -5642,6 +5671,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{O coală de hârtie}few{{COUNT} coli de hârtie}other{{COUNT} de coli de hârtie}}</translation> <translation id="8063235345342641131">Avatar verde prestabilit</translation> <translation id="8063535366119089408">Vezi fișierul</translation> +<translation id="8064279191081105977">Grupul <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Atinge pentru a te conecta</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Printează ca imagine</translation> @@ -6387,6 +6417,7 @@ <translation id="8986362086234534611">Șterge</translation> <translation id="8986494364107987395">Trimite automat la Google statistici de utilizare și rapoarte de blocare</translation> <translation id="8987927404178983737">Lună</translation> +<translation id="8990209962746788689">Nu s-a putut crea codul QR</translation> <translation id="8991520179165052608">Site-ul poate folosi microfonul</translation> <translation id="8992117551007229513">{COUNT,plural, =1{un element}few{# elemente}other{# de elemente}}</translation> <translation id="899384117894244799">Exclude un utilizator cu permisiuni limitate</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index 3f20f05..4a911bf 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -37,6 +37,7 @@ <translation id="1038168778161626396">Encipher පමණි</translation> <translation id="1038462104119736705">ලිනක්ස් සඳහා අවම වශයෙන් <ph name="INSTALL_SIZE" /> ක ඉඩ නිර්දේශ කෙරේ. නිදහස් ඉඩ වැඩි කිරීමට, ඔබේ උපාංගයෙන් ගොනු මකන්න.</translation> <translation id="1039337018183941703">වලංගු නොවන හෝ දූෂිත ගොනුවකි</translation> +<translation id="104086161873270383">නව පැතිකඩ</translation> <translation id="1041175011127912238">මෙම පිටුව ප්රතිචාර නොදක්වයි</translation> <translation id="1041263367839475438">තිබෙන උපාංග</translation> <translation id="1042174272890264476">ඔබේ පරිගණකය අැතුළතින් සවි කළ <ph name="SHORT_PRODUCT_NAME" />හි RLZ පුස්තකාලයද සමඟ පැමිණේ. RLZ විසින් විශේෂ ප්රවර්ධනාත්මක ව්යාපාරයක් මඟින් ධාවනය වන සෙවීම් සහ <ph name="SHORT_PRODUCT_NAME" /> භාවිතය මැනීම සදහා අසමසම නොවන, පුද්ගලික නොවන ලෙස හදුනාගත හැකි ටැග් ඒකක් පවරයි. මෙම ලේබල සමහර විට Google සෙවීම් විමසුම්වල දිස් වේ <ph name="PRODUCT_NAME" />.</translation> @@ -73,6 +74,7 @@ <translation id="1084096383128641877">මෙම මුරපදය ඉවත් කිරීමට <ph name="DOMAIN" /> මත ඔබේ ගිණුම මකන්නේ නැත. එය අන් අයගෙන් ආරක්ෂිතව තබා ගැනීමට ඔබේ මුරපදය වෙනස් කරන්න, නැති නම් <ph name="DOMAIN_LINK" /> මත ඔබේ ගිණුම මකා දමන්න.</translation> <translation id="1084824384139382525">සබැඳි ලිපි&නය පිටපත් කරන්න</translation> <translation id="1085697365578766383">අථත්ය යාන්ත්රණය ආරම්භ කිරීමේ දෝෂයකි. කරුණාකර නැවත උත්සාහ කරන්න.</translation> +<translation id="1088659085457112967">කියවන ප්රකාරයට ඇතුළු වන්න</translation> <translation id="1090126737595388931">පසුබිමේ යෙදුම් කිසිවක් ක්රියා නොකරයි</translation> <translation id="1091767800771861448">මඟහැරීමට ESCAPE ඔබන්න (නිල නොවන ගොඩනැඟීම් පමණි).</translation> <translation id="1093457606523402488">දෘශ්ය ජාල:</translation> @@ -168,6 +170,7 @@ <translation id="1202596434010270079">Kiosk යෙදුම යාවත්කාලීන කර ඇත. කරුණාකර USB දණ්ඩ ඉවත් කරන්න.</translation> <translation id="120368089816228251">සංගීත සටහන</translation> <translation id="1203942045716040624">බෙදාගත් සේවකයා: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">DNS පමාව</translation> <translation id="1205489148908752564">සුදු ලැයිස්තු ගත පරිශීලකයන් කියවා වෙනස් කරන්න</translation> <translation id="1206407435587370571">ඔබේ Chromebook ගවේෂණය කරන්න</translation> <translation id="1209796539517632982">ස්වයංක්රීය නාම සේවාදායක</translation> @@ -321,6 +324,7 @@ <translation id="1396259464226642517">මෙම ප්රතිඵලය අනපේක්ෂිත වූයේද? <ph name="BEGIN_LINK" />ප්රතිපෝෂණය යවන්න<ph name="END_LINK" /></translation> <translation id="1396963298126346194">ඔබ ඇතුළු කළ පරිශීලක නාමය හා මුරපදය නොගැළපේ</translation> <translation id="1397500194120344683">සුදුසු උපාංග නැත. <ph name="LINK_BEGIN" />තවත් දැන ගන්න<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">වාහල පින්ජ් කළ හැකිය</translation> <translation id="1398853756734560583">විශාල කරන්න</translation> <translation id="139911022479327130">ඔබේ දුරකථනය අගුලු ඇර ඒ ඔබ බව තහවුරු කරන්න</translation> <translation id="1399511500114202393">පරිශීලක සහතිකයක් නැත</translation> @@ -580,6 +584,7 @@ <translation id="1701062906490865540">මෙම පුද්ගලයා ඉවත් කරන්න</translation> <translation id="1703331064825191675">ඔබේ මුරපද ගැන කිසි විටෙක කනගාටු නොවන්න</translation> <translation id="1704970325597567340">ආරක්ෂක පරීක්ෂාව <ph name="DATE" /> ධාවන විය</translation> +<translation id="1706391837335750954">DNS විසඳුම්කාරක පැවතීම</translation> <translation id="1706586824377653884">ඔබගේ පරිපාලක විසින් එක් කළ</translation> <translation id="1706625117072057435">විශාලන මට්ටම්</translation> <translation id="1708338024780164500">(අක්රියයි)</translation> @@ -871,6 +876,7 @@ <translation id="2065405795449409761">Chrome ස්වයංකෘත පරීක්ෂණ මෘදුකාංගයකින් පාලනය කරමින් පවතී.</translation> <translation id="2071393345806050157">ප්රාදේශීය ලොග ගොනුව.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{දිගුව ස්ථාපන කිරීමට ක්ලික් කරන්න}one{දිගු ස්ථාපන කිරීමට ක්ලික් කරන්න}other{දිගු ස්ථාපන කිරීමට ක්ලික් කරන්න}}</translation> +<translation id="2073505299004274893">අනුලකුණු <ph name="CHARACTER_LIMIT" />ක් හෝ අඩු ගණනක් භාවිත කරන්න</translation> <translation id="2075474481720804517">බැටරිය <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="2075959085554270910">ක්ලික් කිරීමට තට්ටු කිරීම සහ ඇදීම තට්ටු කිරිම සබල කිරීමට/අබල කිරීමට ඔබට ඉඩ දේ</translation> <translation id="2076269580855484719">මෙම ප්ලගිනය සඟවන්න</translation> @@ -1150,6 +1156,7 @@ <translation id="2408955596600435184">ඔබගේ PIN එක ඇතුළු කරන්න</translation> <translation id="241082044617551207">නොදන්නා ප්ලගිනය</translation> <translation id="2412593942846481727">යාවත්කාලීනයක් ඇත</translation> +<translation id="2414499877591062094">ස්වයංක්රිය ඉදිරිපත් කිරීම් PIN සබල කරන්න</translation> <translation id="2416435988630956212">යතුරු පුවරු කාර්ය යතුරු</translation> <translation id="241727068219398187"><ph name="TIME" /> වන විට ඔබේ Google මුරපදය සමඟ දත්ත සංකේතන කළා. මෙයට Google Pay වෙතින් ගෙවීමේ ක්රම සහ ලිපින ඇතුළු නොවේ.</translation> @@ -1304,6 +1311,7 @@ <translation id="2586672484245266891">කෙටි URL එකක් ඇතුළු කරන්න</translation> <translation id="2587922766792651800">කාලය නිමා විය</translation> <translation id="2588636910004461974"><ph name="VENDOR_NAME" /> වෙතින් උපාංග</translation> +<translation id="25899519884572181">කියවන ප්රකාරයෙන් ඉවත් වන්න</translation> <translation id="2594999711683503743">Google සොයන්න නැතහොත් URL ටයිප් කරන්න</translation> <translation id="2602501489742255173">පටන් ගැනීමට උඩට ස්වයිප් කරන්න</translation> <translation id="2603115962224169880">පරිගණකය පිරිසිදු කරන්න</translation> @@ -1873,6 +1881,7 @@ <translation id="3312424061798279731">භාෂා සබල කරන ලදි</translation> <translation id="3313622045786997898">අත්සන් අගය සහතික කරන්න</translation> <translation id="3315158641124845231"><ph name="PRODUCT_NAME" /> සඟවන්න</translation> +<translation id="3315442055907669208">කියවන ප්රකාරයට ඇතුළු වන්න</translation> <translation id="3317459757438853210">දෙපසම</translation> <translation id="3317678681329786349">කැමරාව සහ මයික්රෆෝනය අවහිරයි</translation> <translation id="3319048459796106952">නව &අප්රසිද්ධ කවුළුව</translation> @@ -2138,6 +2147,7 @@ <translation id="3636096452488277381">හෙලෝ, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" />ක් ඉතිරිය</translation> <translation id="3637682276779847508">ඔබට නිවැරදි PIN අගුලු හැරීම් කේතය ඇතුළු කළ නොහැකි නම් ඔබේ SIM පත ස්ථිරවම අබල කරනු ඇත.</translation> +<translation id="3639220004740062347">කියවන ප්රකාරයෙන් ඉවත් වන්න</translation> <translation id="3640214691812501263"><ph name="USER_NAME" /> සඳහා "<ph name="EXTENSION_NAME" />" එක් කරන්නද?</translation> <translation id="3640613767643722554">ඔබේ හඬ හඳුනා ගැනීමට ඔබේ සහකරුට උගන්වන්න</translation> <translation id="3645372836428131288">ඇඟිලි සලකුණේ වෙනස් කොටසක් ග්රහණයට මඳක් චලනය වන්න</translation> @@ -2148,6 +2158,7 @@ <translation id="3650845953328929506">ලොගයන් උඩුගත කිරීම තවම තිබේ.</translation> <translation id="3650952250015018111">"<ph name="APP_NAME" />" හට පිවිසීමට ඉඩ දෙන්න:</translation> <translation id="3651488188562686558">Wi-Fi වෙතින් විසන්ධි කරන්න</translation> +<translation id="3651952061994655768">නම වෙනස් කරන්න</translation> <translation id="3652817283076144888">මුල පුරමින්</translation> <translation id="3653160965917900914">ජාල ගොනු බෙදා ගැනීම්</translation> <translation id="3653842108912548333">Voice Match සමඟ ඔබේ සහකරු වෙත ප්රවේශ වන්න</translation> @@ -2237,6 +2248,7 @@ <translation id="3748706263662799310">දෝෂයක් වාර්තා කරන්න</translation> <translation id="3752582316358263300">හරි...</translation> <translation id="3752673729237782832">මගේ උපාංග</translation> +<translation id="3752757212511661046">කාර්යාල පැතිකඩ සාදන්න</translation> <translation id="3753033997400164841">එක් වරක් ගබඩා කරන්න. සැම තැනම භාවිත කරන්න</translation> <translation id="3755411799582650620">ඔබගේ <ph name="PHONE_NAME" /> හට දැන් මෙම <ph name="DEVICE_TYPE" /> ද අගුළු හැරීමට හැකිය.</translation> <translation id="375636864092143889">අඩවිය ඔබේ මයික්රෆෝනය භාවිත කරමින්</translation> @@ -2359,6 +2371,7 @@ <translation id="3874164307099183178">Google සහකරු සක්රීය කරන්න</translation> <translation id="387531380970557479">"<ph name="EXTENSION_NAME" />" තුළ අනිෂ්ට මෘදුකාංගය ඇති බැවින් එය අබල කර ඇත.</translation> <translation id="3879748587602334249">බාගැනීමේ කළමනාකරු</translation> +<translation id="3881478300875776315">පේළි අඩුවෙන් පෙන්වන්න</translation> <translation id="3882165008614329320">කැමරාවෙන් හෝ ගොනුවෙන් පවතින වීඩියෝව</translation> <translation id="3886446263141354045">මෙම අඩවියට පිවිසීමට ඔබ කළ ඉල්ලීම <ph name="NAME" /> වෙත යවන ලදී</translation> <translation id="3888550877729210209"><ph name="LOCK_SCREEN_APP_NAME" /> සමඟ සටහන් ගැනීම</translation> @@ -2568,6 +2581,7 @@ <translation id="4130750466177569591">මම එකඟ වෙමි</translation> <translation id="413121957363593859">අංග</translation> <translation id="4131410914670010031">කළු සහ සුදු</translation> +<translation id="413193092008917129">ජාල දෝෂ නිර්ණ දින චර්යා</translation> <translation id="4133076602192971179">ඔබේ මුරපදය වෙනස් කිරීමට යෙදුම විවෘත කරන්න</translation> <translation id="4136203100490971508">රාත්රී ආලෝකය හිරු නැගීමේදී ස්වයංක්රීයව ක්රියාවිරහිත වනු ඇත</translation> <translation id="41365691917097717">ඉදිරියට යාම Android යෙදුම් සෑදීම සහ පරීක්ෂා කිරීම සඳහා ADB නිදොස් කිරීම සබල කරයි. මෙම ක්රියාව Google විසින් සත්යාපිත නොවන Android යෙදුම් ස්ථාපන කිරීමට ඉඩ දෙන අතර, අබල කිරීමට කර්මාන්තශාලා යළි සැකසුමක් අවශ්ය වන බව සලකන්න.</translation> @@ -2725,6 +2739,7 @@ <translation id="4375035964737468845">බාගත් ගොනු විවෘත කරන්න</translation> <translation id="4377363674125277448">සෙවාදායකයෙහි සහතිකය හා ගැටලුවක් පැවතිණි.</translation> <translation id="4378154925671717803">දුරකථනය</translation> +<translation id="4378373042927530923">ධාවනය නොවේ</translation> <translation id="4378551569595875038">සම්බන්ධ වෙමින්...</translation> <translation id="4378556263712303865">උපාංග අධිග්රහණය</translation> <translation id="4379281552162875326">"<ph name="APP_NAME" />" අස්ථාපන කරන්නේද?</translation> @@ -2937,6 +2952,7 @@ <translation id="4643612240819915418">වීඩියෝ නව ටැබයක විවෘත කරන්න</translation> <translation id="4645676300727003670">&තබා ගන්න</translation> <translation id="4646675363240786305">තොටවල්</translation> +<translation id="4646949265910132906">ආරක්ෂිත WiFi සබැඳුම</translation> <translation id="4647090755847581616">ටැබය වසන්න (&C)</translation> <translation id="4647420311443994946">{0,select, tablet{ඔබ ඔබේ ටැබ්ලට් එකට පුරන විට යෙදුම ආරම්භ කරන්න}computer{ඔබ ඒබේ පරිගණකයට පුරන විට යෙදුම ආරම්භ කරන්න}other{ඔබ ඔබේ උපාංගයට පුරන විට යෙදුම ආරම්භ කරන්න}}</translation> <translation id="4647697156028544508">කරුණාකර "<ph name="DEVICE_NAME" />" සඳහා මුරපදය ඇතුළත් කරන්න:</translation> @@ -2975,6 +2991,7 @@ <translation id="4691791363716065510">මෙම වෙබ් අඩවිය සඳහා වන පටිති සියල්ල වසන තෙක් <ph name="ORIGIN" /> හට <ph name="FILENAME" /> බැලීමට හැකි වෙයි</translation> <translation id="4692623383562244444">සෙවුම් යන්ත්ර</translation> <translation id="4693155481716051732">සුෂි</translation> +<translation id="469379815867856270">සංඥා ප්රබලතාව</translation> <translation id="4694024090038830733">මුද්රකයේ වින්යාසය පරිපාලකයා විසින් හසුරවනු ලැබේ.</translation> <translation id="4694604912444486114">වඳුරා</translation> <translation id="4697551882387947560">ගවේශන වාරය අවසන් විට</translation> @@ -3185,6 +3202,7 @@ <translation id="4980805016576257426">මෙම දිගුවේ අනිෂ්ට මෘදුකාංග අඩංගු වේ.</translation> <translation id="4981449534399733132">ඔබේ සියලුම සමමුහුර්ත කළ උපාංගවලින් සහ ඔබේ Google ගිණුමෙන් බ්රවුස් කිරීමේ දත්ත හිස් කිරීමට, <ph name="BEGIN_LINK" />පුරන්න<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">උපාංග මෘදුකාංගය</translation> +<translation id="4985509611418653372">ධාවනය කරන්න</translation> <translation id="4986728572522335985">මෙය එහි රහස් අංකය ඇතුළුව ආරක්ෂක යතුර මත සියලුම දත්ත මකයි</translation> <translation id="4988526792673242964">පිටු</translation> <translation id="49896407730300355">වාමාවර්තව කරකවන්න (&o)</translation> @@ -3379,6 +3397,7 @@ <translation id="5241128660650683457">ඔබ පිවිසෙන සියලුම වෙබ් අඩවිවල ඔබගේ සියලුම දත්ත කියවන්න</translation> <translation id="5242724311594467048">"<ph name="EXTENSION_NAME" />" සබල කරන්නද?</translation> <translation id="5243522832766285132">කරුණාකර සුළු මොහොතකින් නැවත උත්සාහ කරන්න</translation> +<translation id="5244406554036143958">ස්වයංක්රීයව ඉදිරිපත් කිරීම සබල කිරීමට ඔබගේ PIN අංකය ඇතුළත් කරන්න</translation> <translation id="5244474230056479698"><ph name="EMAIL" /> වෙත සමමුහුර්ත කරමින්</translation> <translation id="5245610266855777041">පාසල් ගිණුමක් සමඟ පටන් ගන්න</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> බිඳ වැටී තිබේ. යෙදුම නැවත ඇරඹීමට මෙම බැලූනය මත ක්ලික් කරන්න.</translation> @@ -3446,6 +3465,7 @@ <translation id="5315873049536339193">අනන්යතාවය</translation> <translation id="5317780077021120954">සුරකින්න</translation> <translation id="5319359161174645648">Google විසින් Chrome නිර්දේශ කරයි</translation> +<translation id="5320135788267874712">නව උපාංග නම</translation> <translation id="532247166573571973">සේවාදායකය වෙත ළඟාවිය නොහැක. පසුව නැවත උත්සාහ කරන්න.</translation> <translation id="5324780743567488672">ඔබගේ ස්ථානය භාවිතා කර කාල කලාපය ස්වයංක්රියව සකසන්න</translation> <translation id="5327248766486351172">නම</translation> @@ -3459,6 +3479,7 @@ <translation id="5336126339807372270">කිසිඳු වෙබ් අඩවියකට USB උපාංග වෙත ප්රවේශ වීමට ඉඩ නොදෙන්න</translation> <translation id="5336688142483283574">මෙම පිටුව ද ඔබේ ඉතිහාසයෙන් සහ <ph name="SEARCH_ENGINE" /> ක්රියාකාරකමින් ඉවත් කරනු ලැබේ.</translation> <translation id="5337771866151525739">තෙවන පාර්ශවයක් මගින් ස්ථාපිතයි.</translation> +<translation id="5337926771328966926">වත්මන් උපාංග නම වන්නේ <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">ප්රාදේශීය ගබඩාව</translation> <translation id="5340638867532133571">අඩවිවලට ගෙවීම් හසුරුවනයන් ස්ථාපනයට ඉඩ දෙන්න (නිර්දේශිතයි)</translation> <translation id="5341793073192892252">පහත කුකීස් අවහිර කරන ලදී (තෙවැනි පාර්ශ්ව කුකීස් ව්යතිරේකයක් නොමැතිවම අවහිර වේ)</translation> @@ -3489,6 +3510,7 @@ <translation id="5379140238605961210">මයික්රොෆෝන ප්රවේශය අවහිර කිරීම ඉදිරියටත් කරන්න</translation> <translation id="5382591305415226340">සහාය දක්වන සබැඳි කළමනාකරණය කරන්න</translation> <translation id="5383377866517186886">Mac පද්ධති මනාප තුළ කැමරාව අක්රිය කෙරේ</translation> +<translation id="5383740867328871413">නම් නොකළ සමූහය - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">යුගලිතයි</translation> <translation id="5389237414310520250">අපොයි! නව පරීශීලක සෑදීමට නොහැකි විය. කරුණාකර ඔබේ දෘඪ තැටි ඉඩ සහ අවසර පරීක්ෂා කර නැවත උත්සාහ කරන්න.</translation> <translation id="5390100381392048184">අඩවිවලට ශබ්දය වාදනය කිරීමට ඉඩ දෙන්න</translation> @@ -3499,6 +3521,7 @@ <translation id="5398497406011404839">සඟවන ලද පිටුසන්</translation> <translation id="5398572795982417028">පිටු සීමාවෙන් පිටත යොමුව, සීමාව වන්නේ <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">වෙළඳ දැන්වීම් අවහිරයි</translation> +<translation id="5401938042319910061">සියලු දින චර්යා ධාවනය කරන්න</translation> <translation id="5402815541704507626">ජංගම දත්ත භාවිත කර යාවත්කාලීනය බාගැනීම</translation> <translation id="540296380408672091"><ph name="HOST" /> මත සැම විටම කුකි අවහිර කරන්න</translation> <translation id="540495485885201800">පෙර එක සමඟ හුවමාරු කරන්න</translation> @@ -3815,6 +3838,7 @@ <translation id="57838592816432529">නිහඬ කරන්න</translation> <translation id="5785583009707899920">Chrome ගොනු උපයුක්තතා</translation> <translation id="5787146423283493983">ප්රධාන ගිවිසුම</translation> +<translation id="5787420647064736989">උපාංග නම</translation> <translation id="5788367137662787332">සමාවන්න, අඩුවශයෙන් <ph name="DEVICE_LABEL" /> උපාංගය මත එක් කොටසක්වත් නැංවිය නොහැක.</translation> <translation id="5790085346892983794">සාර්ථකයි</translation> <translation id="5790651917470750848">පෝර්ට් ඉදිරියට ගෙන යාම දැනටමත් පවතී</translation> @@ -4252,6 +4276,7 @@ <translation id="6322653941595359182">ඔබේ Chromebook වෙතින් පෙළ පණිවිඩ යවන්න සහ ලබා ගන්න</translation> <translation id="6324916366299863871">කෙටිමඟ සංස්කරණය</translation> <translation id="6325191661371220117">ස්වයං-දියත් කිරීම අබල කරන්න</translation> +<translation id="6325525973963619867">අසාර්ථක විය</translation> <translation id="6326175484149238433">Chrome වෙතින් ඉවත් කරන්න</translation> <translation id="6326855256003666642">Keepalive ගණන</translation> <translation id="632707535499064463"><ph name="ORGANIZATION_NAME" /> යල් පැනීමට පෙර මෙම උපාංගය යාවත්කාලීන කිරීම අවශ්ය කරයි.</translation> @@ -4488,6 +4513,7 @@ <translation id="6648911618876616409">තීරණාත්මක යාවත්කාලීනක් ස්ථාපනය කිරීමට සූදානම්ය. ආරම්භ කිරීම සඳහා පුරනය වන්න.</translation> <translation id="6649018507441623493">තත්පරයක් ඉන්න…</translation> <translation id="6649563841575838401">සංරක්ෂිත ආකෘතිය සහාය නොදක්වයි, නැතහොත් ගොනුව බිඳී ඇත.</translation> +<translation id="6650234781371031356"><ph name="WEBSITE" /> සඳහා ඔබේ මුරපදය මෙම උපාංගයේ සහ ඔබේ Google ගිණුම තුළ ගබඩා කෙරේ. ඔබට මැකීමට අවශ්ය කුමක්ද?</translation> <translation id="665061930738760572">&නව කවුළුවකින් විවෘත කරන්න</translation> <translation id="6651237644330755633">වෙබ් අඩවි හඳුනා ගැනීම සඳහා මෙම සහතිකය විශ්වාස කරන්න</translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> අනුකලනය කිරීම x86_64 වේදිකාවල පමණක් සහාය දක්වයි. ARM හෝ x86 වේදිකාවක් මත ගොඩනැගුණු Chromebooks මෙම කාර්යයට සහාය නොදක්වයි.</translation> @@ -4526,6 +4552,7 @@ <translation id="6701535245008341853">පැතිකඩ ලබාගත නොහැක.</translation> <translation id="6702639462873609204">&සංස්කරණය කරන්න...</translation> <translation id="6703966911896067184">ලියාපදිංචි දෝෂ රූප සටහන</translation> +<translation id="6704062477274546131">DNS විභේදනය</translation> <translation id="6706210727756204531">අවකාශය</translation> <translation id="6707389671160270963">SSL සේවාලාභී සහතිකය</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> සහ තව 1 පටිත්තක්}one{<ph name="PAGE_TITLE" /> සහ තව පටිති # ක්}other{<ph name="PAGE_TITLE" /> සහ තව පටිති # ක්}}</translation> @@ -4583,6 +4610,7 @@ <translation id="677965093459947883">ඉතා කුඩා</translation> <translation id="6781284683813954823">Doodle සබැඳිය</translation> <translation id="6781978626986383437">ලිනක්ස් උස්ථය අවලංගු කළා</translation> +<translation id="6782067259631821405">වලංගු නොවන PIN අංකය</translation> <translation id="6785915470941880363">ප්රතිවර්තන අනුචලනය <ph name="LINK_BEGIN" />තවත් දැන ගන්න<ph name="LINK_END" /></translation> <translation id="6786747875388722282">දිගු</translation> <translation id="6787839852456839824">යතුරු පුවරු කෙටිමං</translation> @@ -4889,6 +4917,7 @@ <translation id="7141105143012495934">ඔබේ ගිණුම් විස්තර යළි ලබා ගැනීමට නොහැකි වූ බැවින් පිරීම අසාර්ථකයි. කරුණාකර ඔබගේ පරිපාලක අමතන්න නැතහොත් නැවත උත්සාහ කරන්න.</translation> <translation id="7143207342074048698">සම්බන්ධ වෙමින්…</translation> <translation id="7144878232160441200">නැවත උත්සහ කරන්න</translation> +<translation id="714876143603641390">LAN සබැඳුම් හැකියාව</translation> <translation id="7149893636342594995">පසුගිය පැය 24</translation> <translation id="715118844758971915">ක්ලැසික් මුද්රණ යන්ත්ර</translation> <translation id="7152478047064750137">මෙම දිගුවට විශේෂ අවසරයක් අවශ්ය නොවේ.</translation> @@ -5026,6 +5055,7 @@ <translation id="7334274148831027933">ඈඳන ලද විශාලකය සබල කරන්න</translation> <translation id="7335974957018254119">මෙය සඳහා අක්ෂර වින්යාස පරීක්ෂාව භාවිත කරන්න</translation> <translation id="7336799713063880535">දැනුම්දීම් අවහිරයි.</translation> +<translation id="7337248890521463931">තවත් පේළි පෙන්වන්න</translation> <translation id="7338630283264858612">උපාංග අනුක්රමික අංකය අවලංගුයි.</translation> <translation id="7339763383339757376">PKCS #7, තනි සහතිකය</translation> <translation id="7339785458027436441">ලියන විට අක්ෂර වින්යාසය පිරික්සන්න</translation> @@ -5407,6 +5437,7 @@ <translation id="7807711621188256451">ඔබේ කැමරාව වෙත පිවිසීමට <ph name="HOST" /> හට ඉඩ දෙන්න</translation> <translation id="7810202088502699111">මෙම පිටුව මත පොප්-අප් බාධාවිය.</translation> <translation id="781167124805380294"><ph name="FILE_NAME" /> විකාශ කරන්න</translation> +<translation id="7814277578404816512">ඔබේ Chromebook මත අලුත් මොනවාදැයි බලන්න<ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&පිටපත් කරන්න</translation> <translation id="7815680994978050279">හානිකර බාගැනීම් අවහිර කරන ලදී</translation> <translation id="7817361223956157679">තිරය-මත යතුරු පුවරුව තවමත් Linux යෙදුම් තුළ වැඩ නොකරයි</translation> @@ -5635,6 +5666,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 කඩදාසි කොළයක්}one{කඩදාසි කොළ {COUNT} ක්}other{කඩදාසි කොළ {COUNT} ක්}}</translation> <translation id="8063235345342641131">පෙරනිමි කොළ නියුරුව</translation> <translation id="8063535366119089408">ගොනුව බලන්න</translation> +<translation id="8064279191081105977">සමූහය <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">පිරීමට ස්පර්ශ කරන්න</translation> <translation id="8069615408251337349">Google Cloud මුද්රණය</translation> <translation id="8071432093239591881">රූපයක් ලෙස මුද්රණය කරන්න</translation> @@ -6380,6 +6412,7 @@ <translation id="8986362086234534611">අමතක</translation> <translation id="8986494364107987395">ස්වයංක්රීයව භාවිත සංඛ්යා ලේඛන සහ කඩිනම් වාර්තා Google වෙත යවන්න</translation> <translation id="8987927404178983737">මාසය</translation> +<translation id="8990209962746788689">QR කේතය තැනිය නොහැකිය</translation> <translation id="8991520179165052608">අඩවියට ඔබේ මයික්රෆෝනය භාවිත කළ හැකිය</translation> <translation id="8992117551007229513">{COUNT,plural, =1{අයිතම 1}one{අයිතම #}other{අයිතම #}}</translation> <translation id="899384117894244799">සීමා කළ පරිශීලකයා ඉවත් කරන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 3deafdd..9fc9b27 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Če odstranite to geslo, ne izbrišete računa na <ph name="DOMAIN" />. Če želite račun zaščititi pred drugimi, spremenite geslo ali izbrišite račun na <ph name="DOMAIN_LINK" />.</translation> <translation id="1084824384139382525">Kopiraj naslov pove&zave</translation> <translation id="1085697365578766383">Navideznega računalnika ni bilo mogoče zagnati. Poskusite znova.</translation> +<translation id="1088659085457112967">Vklop načina bralnika</translation> <translation id="1090126737595388931">Ni aktivnih programov v ozadju</translation> <translation id="1091767800771861448">Pritisnite Esc, če želite preskočiti (samo neuradne delovne različice).</translation> <translation id="1093457606523402488">Vidna omrežja:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Aplikacija za kiosk je posodobljena. Odstranite ključek USB.</translation> <translation id="120368089816228251">Glasbena nota</translation> <translation id="1203942045716040624">Proces v skupni rabi: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Zakasnitev DNS-ja</translation> <translation id="1205489148908752564">Branje in spreminjanje seznama dovoljenih uporabnikov</translation> <translation id="1206407435587370571">Raziskovanje Chromebooka</translation> <translation id="1209796539517632982">Samodejni imenski strežniki</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Je bil ta rezultat nepričakovan? <ph name="BEGIN_LINK" />Pošljite povratne informacije<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Vneseno uporabniško ime in geslo se ne ujemata</translation> <translation id="1397500194120344683">Ni ustreznih naprav. <ph name="LINK_BEGIN" />Preberite več o tem.<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Prehod je mogoče preveriti</translation> <translation id="1398853756734560583">Povečaj</translation> <translation id="139911022479327130">Odklenite telefon in potrdite, da ste to res vi.</translation> <translation id="1399511500114202393">Brez uporabniškega potrdila</translation> @@ -584,6 +587,7 @@ <translation id="1701062906490865540">Odstrani to osebo</translation> <translation id="1703331064825191675">Naj vas nikoli ne skrbi glede gesel</translation> <translation id="1704970325597567340">Varnostno preverjanje je bilo izvedeno dne <ph name="DATE" /></translation> +<translation id="1706391837335750954">Prisotnost razreševalnika DNS</translation> <translation id="1706586824377653884">Dodal skrbnik</translation> <translation id="1706625117072057435">Ravni povečave/pomanjšave</translation> <translation id="1708338024780164500">(Neaktivno)</translation> @@ -875,6 +879,7 @@ <translation id="2065405795449409761">Chrome upravlja avtomatizirana preskusna programska oprema.</translation> <translation id="2071393345806050157">Ni lokalne dnevniške datoteke.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Kliknite, če želite namestiti razširitev}one{Kliknite, če želite namestiti te razširitve}two{Kliknite, če želite namestiti te razširitve}few{Kliknite, če želite namestiti te razširitve}other{Kliknite, če želite namestiti te razširitve}}</translation> +<translation id="2073505299004274893">Uporabite največ toliko znakov: <ph name="CHARACTER_LIMIT" /></translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" /> % energije akumulatorja</translation> <translation id="2075959085554270910">Omogoča, da omogočite/onemogočite funkciji »dotaknite se za klik« in »vlečenje z dotikom«</translation> <translation id="2076269580855484719">Skrij vtičnik</translation> @@ -1154,6 +1159,7 @@ <translation id="2408955596600435184">Vnos kode PIN</translation> <translation id="241082044617551207">Neznani vtičnik</translation> <translation id="2412593942846481727">Na voljo je posodobitev</translation> +<translation id="2414499877591062094">Omogoči kodo PIN za samodejno pošiljanje</translation> <translation id="2416435988630956212">Funkcijske tipke tipkovnice</translation> <translation id="241727068219398187">Podatki so bili šifrirani z vašim geslom za Google Račun z dnem <ph name="TIME" />. To ne vključuje plačilnih sredstev in naslovov iz Googla Pay.</translation> @@ -1308,6 +1314,7 @@ <translation id="2586672484245266891">Vnesite krajši URL</translation> <translation id="2587922766792651800">Časovna omejitev je potekla</translation> <translation id="2588636910004461974">Naprave ponudnika <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Zapiranje načina bralnika</translation> <translation id="2594999711683503743">Iščite v Google ali vnesite URL</translation> <translation id="2602501489742255173">Povlecite navzgor, če želite začeti</translation> <translation id="2603115962224169880">Čiščenje računalnika</translation> @@ -1670,7 +1677,7 @@ <translation id="3022978424994383087">Ni bilo razumljivo.</translation> <translation id="3023464535986383522">Izberite in poslušajte</translation> <translation id="3024374909719388945">Uporabi 24-urno obliko ure</translation> -<translation id="3027296729579831126">Vklop Deljenja v bližini</translation> +<translation id="3027296729579831126">Vklop deljenja v bližini</translation> <translation id="3029466929721441205">Prikaz orodij za pisalo na polici</translation> <translation id="3031417829280473749">Agent X</translation> <translation id="3031557471081358569">Izberite elemente, ki jih želite uvoziti:</translation> @@ -1823,7 +1830,7 @@ <translation id="3253225298092156258">Ni na voljo</translation> <translation id="3253448572569133955">Neznan račun</translation> <translation id="3254516606912442756">Samodejno zaznavanje časovnega pasu je onemogočeno</translation> -<translation id="3254715652085014625">Odprite Chrome v telefonu, pojdite v meni »Nastavitve > Gesla > Uporaba telefona kot varnostnega ključa« in upoštevajte navodila, ki so navedena tam.</translation> +<translation id="3254715652085014625">Odprite Chrome v telefonu Android, pojdite v meni »Nastavitve > Gesla > Uporaba telefona kot varnostnega ključa« in upoštevajte navodila, ki so navedena tam.</translation> <translation id="3255355328033513170">Izbrisani bodo vsi podatki, ki jih shrani skupina <ph name="SITE_GROUP_NAME" /> in vsa spletna mesta v njej. To vključuje piškotke. Odjavljeni boste s teh spletnih mest, vključno s tistimi na odprtih zavihkih.</translation> <translation id="3259723213051400722">Poskusite znova.</translation> <translation id="3264544094376351444">Neserifna pisava</translation> @@ -1877,6 +1884,7 @@ <translation id="3312424061798279731">Omogočeni jeziki</translation> <translation id="3313622045786997898">Vrednost podpisa potrdila</translation> <translation id="3315158641124845231">Skrij <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Vklop načina bralnika</translation> <translation id="3317459757438853210">Obojestransko</translation> <translation id="3317678681329786349">Kamera in mikrofon sta blokirana</translation> <translation id="3319048459796106952">Novo &okno brez beleženja zgodovine</translation> @@ -2142,6 +2150,7 @@ <translation id="3636096452488277381">Zdravo, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684">Še <ph name="PERCENTAGE" /> % – <ph name="TIME" /></translation> <translation id="3637682276779847508">Kartica SIM bo trajno onemogočena, če ne boste vnesli pravilne kode za odklepanje kode PIN.</translation> +<translation id="3639220004740062347">Zapiranje načina bralnika</translation> <translation id="3640214691812501263">Želite dodati »<ph name="EXTENSION_NAME" />« za uporabnika <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Naučite Pomočnika prepoznati vaš glas</translation> <translation id="3645372836428131288">Rahlo premaknite prst, da bo zajet drug del prstnega odtisa.</translation> @@ -2152,6 +2161,7 @@ <translation id="3650845953328929506">Nalaganje dnevnika je na čakanju.</translation> <translation id="3650952250015018111">Dovolite aplikaciji »<ph name="APP_NAME" />« dostop do tega:</translation> <translation id="3651488188562686558">Prekinitev povezave z omrežjem Wi-Fi</translation> +<translation id="3651952061994655768">Spremeni ime</translation> <translation id="3652817283076144888">Inicializacija</translation> <translation id="3653160965917900914">Omrežna datotečna sredstva v skupni rabi</translation> <translation id="3653842108912548333">Dostop do Pomočnika s funkcijo Voice Match</translation> @@ -2241,6 +2251,7 @@ <translation id="3748706263662799310">Obvestite nas o napaki</translation> <translation id="3752582316358263300">V redu ...</translation> <translation id="3752673729237782832">Moje naprave</translation> +<translation id="3752757212511661046">Želite ustvariti delovni profil?</translation> <translation id="3753033997400164841">Shranite enkrat. Uporabite kjer koli</translation> <translation id="3755411799582650620">Vaš telefon <ph name="PHONE_NAME" /> lahko zdaj odklene tudi to napravo <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Spletno mesto uporablja vaš mikrofon</translation> @@ -2362,6 +2373,7 @@ <translation id="3874164307099183178">Vklop Pomočnika Google</translation> <translation id="387531380970557479">Razširitev »<ph name="EXTENSION_NAME" />« je onemogočena, ker vsebuje zlonamerno programsko opremo.</translation> <translation id="3879748587602334249">Upravitelj prenosov</translation> +<translation id="3881478300875776315">Pokaži manj vrstic</translation> <translation id="3882165008614329320">Obstoječi videoposnetek iz fotoaparata ali datoteke</translation> <translation id="3886446263141354045">Vaša zahteva za dostop do tega mesta je poslana uporabniku <ph name="NAME" /></translation> <translation id="3888550877729210209">Ustvarjanje zapiskov z aplikacijo <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2571,6 +2583,7 @@ <translation id="4130750466177569591">Strinjam se</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Črno-belo</translation> +<translation id="413193092008917129">Rutine za diagnostiko omrežja</translation> <translation id="4133076602192971179">Odprite aplikacijo, če želite spremeniti geslo</translation> <translation id="4136203100490971508">Nočna svetloba se bo samodejno izklopila ob sončnem vzhodu.</translation> <translation id="41365691917097717">Če nadaljujete, bo omogočeno odpravljanje napak z mostom za odpravljanje težav s sistemom Android (ADB) za ustvarjanje in preizkušanje aplikacij za Android. Upoštevajte, da to dejanje omogoča namestitev aplikacij za Android, ki jih ni preveril Google, če želite orodje onemogočiti, pa je potrebna tovarniška ponastavitev.</translation> @@ -2728,6 +2741,7 @@ <translation id="4375035964737468845">Odpiranje prenesenih slik</translation> <translation id="4377363674125277448">Težava s potrdilom strežnika.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Ni se izvedlo</translation> <translation id="4378551569595875038">Povezovanje ...</translation> <translation id="4378556263712303865">Zahteva za napravo</translation> <translation id="4379281552162875326">Ali želite odmestiti »<ph name="APP_NAME" />«?</translation> @@ -2940,6 +2954,7 @@ <translation id="4643612240819915418">&Odpri videoposnetek v novem zavihku</translation> <translation id="4645676300727003670">Obdrži</translation> <translation id="4646675363240786305">Vrata</translation> +<translation id="4646949265910132906">Varna povezava Wi-Fi</translation> <translation id="4647090755847581616">Zap&ri zavihek</translation> <translation id="4647420311443994946">{0,select, tablet{Zaženi aplikacijo ob prijavi v tablični računalnik}computer{Zaženi aplikacijo ob prijavi v računalnik}other{Zaženi aplikacijo ob prijavi v napravo}}</translation> <translation id="4647697156028544508">Vnesite PIN za napravo »<ph name="DEVICE_NAME" />«:</translation> @@ -2978,6 +2993,7 @@ <translation id="4691791363716065510">Spletno mesto <ph name="ORIGIN" /> si bo lahko ogledovalo datoteko <ph name="FILENAME" />, dokler ne zaprete vseh zavihkov tega spletnega mesta</translation> <translation id="4692623383562244444">Iskalniki</translation> <translation id="4693155481716051732">Suši</translation> +<translation id="469379815867856270">Moč signala</translation> <translation id="4694024090038830733">Konfiguracijo tiskalnikov upravlja skrbnik.</translation> <translation id="4694604912444486114">Opica</translation> <translation id="4697551882387947560">Ko se seja brskanja konča</translation> @@ -3188,6 +3204,7 @@ <translation id="4980805016576257426">Ta razširitev vsebuje zlonamerno programsko opremo.</translation> <translation id="4981449534399733132">Če želite izbrisati podatke brskanja iz vseh sinhroniziranih naprav in Google Računa, <ph name="BEGIN_LINK" />se prijavite<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Programska oprema naprave</translation> +<translation id="4985509611418653372">Izvedi</translation> <translation id="4986728572522335985">S tem bodo izbrisani vsi podatki na varnostnem ključu, vključno z njegovo kodo PIN</translation> <translation id="4988526792673242964">Strani</translation> <translation id="49896407730300355">Zasukaj v o&bratni smeri urinega kazalca</translation> @@ -3382,6 +3399,7 @@ <translation id="5241128660650683457">Branje vseh vaših podatkov na spletnih mestih, ki jih obiščete</translation> <translation id="5242724311594467048">Ali želite omogočiti »<ph name="EXTENSION_NAME" />«?</translation> <translation id="5243522832766285132">Poskusite znova čez nekaj trenutkov</translation> +<translation id="5244406554036143958">Vnesite kodo PIN, če želite omogočiti samodejno pošiljanje</translation> <translation id="5244474230056479698">Syncing to <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Začnite uporabljati šolski račun</translation> <translation id="5246282308050205996">Program <ph name="APP_NAME" /> se je zrušil. Kliknite ta oblaček, da ga znova zaženete.</translation> @@ -3449,6 +3467,7 @@ <translation id="5315873049536339193">Identiteta</translation> <translation id="5317780077021120954">Shrani</translation> <translation id="5319359161174645648">Google priporoča Chrome</translation> +<translation id="5320135788267874712">Novo ime naprave</translation> <translation id="532247166573571973">Strežnik morda ni dosegljiv. Poskusite znova pozneje.</translation> <translation id="5324780743567488672">Samodejna nastavitev časovnega pasu na podlagi vaše lokacije</translation> <translation id="5327248766486351172">Ime</translation> @@ -3462,6 +3481,7 @@ <translation id="5336126339807372270">Spletnim mestom ne dovoli dostopa do naprav USB</translation> <translation id="5336688142483283574">Ta stran bo tudi odstranjena iz zgodovine in dejavnosti iskalnika <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Namestil jo je drug ponudnik.</translation> +<translation id="5337926771328966926">Trenutno ime naprave je <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Lokalna shramba</translation> <translation id="5340638867532133571">Spletnim mestom dovoli namestitev rutin za obravnavo plačil (priporočeno)</translation> <translation id="5341793073192892252">Ti piškotki so bili blokirani (piškotki drugih mest se blokirajo brez izjeme)</translation> @@ -3492,6 +3512,7 @@ <translation id="5379140238605961210">Še naprej preprečuj dostop do mikrofona</translation> <translation id="5382591305415226340">Upravljanje podprtih povezav</translation> <translation id="5383377866517186886">Fotoaparat je izklopljen v nastavitvah sistema macOS</translation> +<translation id="5383740867328871413">Neimenovana skupina – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Povezano</translation> <translation id="5389237414310520250">Novega uporabnika ni bilo mogoče ustvariti. Preverite, koliko je prostora na trdem disku in dovoljenja, ter poskusite znova.</translation> <translation id="5390100381392048184">Dovoli spletnim mestom predvajanje zvoka</translation> @@ -3502,6 +3523,7 @@ <translation id="5398497406011404839">Skriti zaznamki</translation> <translation id="5398572795982417028">Sklic na stran zunaj dovoljenega razpona, omejitev je <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Oglasi blokirani</translation> +<translation id="5401938042319910061">Izvajaj vse rutine</translation> <translation id="5402815541704507626">Prenos posodobitve s prenosom podatkov v mobilnem omrežju</translation> <translation id="540296380408672091">Vedno blokiraj piškotke na <ph name="HOST" /></translation> <translation id="540495485885201800">Zamenjaj s prejšnjim</translation> @@ -3819,6 +3841,7 @@ <translation id="57838592816432529">Izklopi zvok</translation> <translation id="5785583009707899920">Chromova orodja za datoteke</translation> <translation id="5787146423283493983">Pogodba o ključu</translation> +<translation id="5787420647064736989">Ime naprave</translation> <translation id="5788367137662787332">Vsaj ene particije v napravi <ph name="DEVICE_LABEL" /> ni bilo mogoče vpeti.</translation> <translation id="5790085346892983794">Uspešno</translation> <translation id="5790651917470750848">Posredovanje vrat že obstaja</translation> @@ -4284,7 +4307,7 @@ <translation id="6362853299801475928">&Prijavite težavo ...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">Dodajte sorodnike in prijatelje</translation> -<translation id="6367985768157257101">Želite sprejeti s funkcijo Deljenje v bližini?</translation> +<translation id="6367985768157257101">Želite sprejeti z deljenjem v bližini?</translation> <translation id="636850387210749493">Prijava v podjetje</translation> <translation id="6370021412472292592">Manifesta ni bilo mogoče naložiti.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -4495,6 +4518,7 @@ <translation id="6648911618876616409">Nujna posodobitev je pripravljena za namestitev. Če želite začeti, se prijavite.</translation> <translation id="6649018507441623493">Samo trenutek …</translation> <translation id="6649563841575838401">Oblika zapisa arhiva ni podprta ali pa je datoteka poškodovana.</translation> +<translation id="6650234781371031356">Geslo za spletno mesto <ph name="WEBSITE" /> je shranjeno v tej napravi in računu Google. Katero želite izbrisati?</translation> <translation id="665061930738760572">Odpri v &novem oknu</translation> <translation id="6651237644330755633">Zaupaj temu potrdilu za prepoznavanje spletnih mest</translation> <translation id="665355505818177700">Integracija Chroma <ph name="MS_AD_NAME" /> je podprta samo v okoljih x86_64. Chromebooki na osnovi okolij ARM ali x86 te funkcije ne podpirajo.</translation> @@ -4533,6 +4557,7 @@ <translation id="6701535245008341853">Profila ni bilo mogoče dobiti.</translation> <translation id="6702639462873609204">&Uredi ...</translation> <translation id="6703966911896067184">Slika napake pri včlanitvi</translation> +<translation id="6704062477274546131">Ločljivost DNS</translation> <translation id="6706210727756204531">Obseg</translation> <translation id="6707389671160270963">Potrdilo odjemalca SSL</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> in še en zavihek}one{<ph name="PAGE_TITLE" /> in še # zavihek}two{<ph name="PAGE_TITLE" /> in še # zavihka}few{<ph name="PAGE_TITLE" /> in še # zavihki}other{<ph name="PAGE_TITLE" /> in še # zavihkov}}</translation> @@ -4590,6 +4615,7 @@ <translation id="677965093459947883">Zelo majhna</translation> <translation id="6781284683813954823">Povezava do priložnostnega logotipa</translation> <translation id="6781978626986383437">Varnostno kopiranje vsebnika za Linux je bilo preklicano</translation> +<translation id="6782067259631821405">Neveljavna koda PIN</translation> <translation id="6785915470941880363">Obratno pomikanje <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Razširitve</translation> <translation id="6787839852456839824">Bližnjične tipke</translation> @@ -4896,6 +4922,7 @@ <translation id="7141105143012495934">Prijava ni uspela, ker ni bilo mogoče pridobiti podrobnosti o računu. Obrnite se na skrbnika in poskusite znova.</translation> <translation id="7143207342074048698">Vzpostavljanje povezave</translation> <translation id="7144878232160441200">Poskusi znova</translation> +<translation id="714876143603641390">Povezava z omrežjem LAN</translation> <translation id="7149893636342594995">Zadnjih 24 ur</translation> <translation id="715118844758971915">Navadni tiskalniki</translation> <translation id="7152478047064750137">Za to razširitev niso potrebna posebna dovoljenja</translation> @@ -5033,6 +5060,7 @@ <translation id="7334274148831027933">Omogoči zasidrano lupo</translation> <translation id="7335974957018254119">Uporaba preverjanja črkovanja za:</translation> <translation id="7336799713063880535">Obvestila so blokir.</translation> +<translation id="7337248890521463931">Pokaži več vrstic</translation> <translation id="7338630283264858612">Serijska številka naprave je neveljavna.</translation> <translation id="7339763383339757376">PKCS #7, enojno potrdilo</translation> <translation id="7339785458027436441">Preverjanje črkovanja med tipkanjem</translation> @@ -5415,6 +5443,7 @@ <translation id="7807711621188256451">Vedno dovoli gostitelju <ph name="HOST" /> dostop do kamere</translation> <translation id="7810202088502699111">Pojavna okna na tej strani so blokirana.</translation> <translation id="781167124805380294">Predvajanje <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Oglejte si novosti v napravi <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Kopiraj</translation> <translation id="7815680994978050279">Nevaren prenos je bil blokiran</translation> <translation id="7817361223956157679">Zaslonska tipkovnica še ne deluje v aplikacijah za Linux</translation> @@ -5644,6 +5673,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 list papirja}one{{COUNT} list papirja}two{{COUNT} lista papirja}few{{COUNT} listi papirja}other{{COUNT} listov papirja}}</translation> <translation id="8063235345342641131">Privzeti zeleni avatar</translation> <translation id="8063535366119089408">Ogled datoteke</translation> +<translation id="8064279191081105977">Skupina <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Za prijavo se dotaknite</translation> <translation id="8069615408251337349">Google Tiskanje v oblaku</translation> <translation id="8071432093239591881">Natisni kot sliko</translation> @@ -6389,6 +6419,7 @@ <translation id="8986362086234534611">Pozabi</translation> <translation id="8986494364107987395">Samodejno pošlji statistične podatke o uporabi in poročila o zrušitvah Googlu</translation> <translation id="8987927404178983737">Mesec</translation> +<translation id="8990209962746788689">Kode QR ni mogoče ustvariti</translation> <translation id="8991520179165052608">Spletno mesto lahko uporablja vaš mikrofon</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 element}one{# element}two{# elementa}few{# elementi}other{# elementov}}</translation> <translation id="899384117894244799">Odstranitev omejenega uporabnika</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index 170b81a..f17c93e 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -3495,7 +3495,7 @@ <translation id="5390677308841849479">E kuqe e errët dhe portokalli</translation> <translation id="5390743329570580756">Dërgo për</translation> <translation id="5397794290049113714">Ti</translation> -<translation id="5398497406011404839">Faqeshëuesit e fshehur</translation> +<translation id="5398497406011404839">Faqeshënuesit e fshehur</translation> <translation id="5398572795982417028">Referenca e faqes jashtë kufijve, kufiri është <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Reklamat janë të bllokuara</translation> <translation id="5402815541704507626">Shkarko përditësimin duke përdorur të dhënat celulare</translation> @@ -4277,7 +4277,7 @@ <translation id="6362853299801475928">&Raporto një problem...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">Shto familjarë dhe miq</translation> -<translation id="6367985768157257101">Do të marrësh me "Ndarjen në afërsi"?</translation> +<translation id="6367985768157257101">Të merret me "Ndarjen në afërsi"?</translation> <translation id="636850387210749493">Regjistrimi i ndërmarrjes</translation> <translation id="6370021412472292592">Manifesti nuk mund të ngarkohej.</translation> <translation id="6374077068638737855">Iceweasel</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 491c1e0..36dc9cd 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Uklanjanjem ove lozinke nećete izbrisati nalog na <ph name="DOMAIN" />. Promenite lozinku ili izbrišite nalog na <ph name="DOMAIN_LINK" /> da biste ga zaštitili od drugih.</translation> <translation id="1084824384139382525">Kopiraj adr&esu linka</translation> <translation id="1085697365578766383">Greška pri pokretanju virtuelne mašine. Probajte ponovo.</translation> +<translation id="1088659085457112967">Uključi režim čitača</translation> <translation id="1090126737595388931">Nije pokrenuta nijedna pozadinska aplikacija</translation> <translation id="1091767800771861448">Pritisnite ESCAPE da biste preskočili (samo u nezvaničnim verzijama).</translation> <translation id="1093457606523402488">Vidljive mreže:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Kiosk aplikacija je ažurirana. Uklonite USB memoriju.</translation> <translation id="120368089816228251">Muzička nota</translation> <translation id="1203942045716040624">Deljeni obrađivač: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Kašnjenje DNS-a</translation> <translation id="1205489148908752564">Čitanje i menjanje korisnika na beloj listi</translation> <translation id="1206407435587370571">Istražite Chromebook</translation> <translation id="1209796539517632982">Automatski serveri naziva</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Da li je ovo neočekivan rezultat? <ph name="BEGIN_LINK" />Pošaljite povratne informacije<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Korisničko ime i lozinka koje ste uneli se ne podudaraju</translation> <translation id="1397500194120344683">Nema uređaja koji ispunjavaju uslove. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Mrežni prolaz može da se pinguje</translation> <translation id="1398853756734560583">Uvećaj</translation> <translation id="139911022479327130">Otključajte telefon i potvrdite da ste to vi</translation> <translation id="1399511500114202393">Nema korisničkog sertifikata</translation> @@ -581,6 +584,7 @@ <translation id="1701062906490865540">Ukloni ovu osobu</translation> <translation id="1703331064825191675">Nikada ne brinite o lozinkama</translation> <translation id="1704970325597567340">Bezbednosna provera je pokrenuta <ph name="DATE" /></translation> +<translation id="1706391837335750954">Prisutan je DNS razrešivač</translation> <translation id="1706586824377653884">Dodao administrator</translation> <translation id="1706625117072057435">Nivoi zumiranja</translation> <translation id="1708338024780164500">(Neaktivno)</translation> @@ -872,6 +876,7 @@ <translation id="2065405795449409761">Softver za automatizovano testiranje kontroliše Chrome.</translation> <translation id="2071393345806050157">Nema lokalne datoteke evidencije.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Kliknite da biste instalirali dodatak}one{Kliknite da biste instalirali ove dodatke}few{Kliknite da biste instalirali ove dodatke}other{Kliknite da biste instalirali ove dodatke}}</translation> +<translation id="2073505299004274893">Maksimalan broj znakova koji možete da koristite je <ph name="CHARACTER_LIMIT" /></translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% baterije</translation> <translation id="2075959085554270910">Omogućavaju vam da omogućite/onemogućite funkcije Dodirni za klik i Prevlačenje dodirom</translation> <translation id="2076269580855484719">Sakrij ovaj dodatak</translation> @@ -1151,6 +1156,7 @@ <translation id="2408955596600435184">Unesite PIN</translation> <translation id="241082044617551207">Nepoznata dodatna komponenta</translation> <translation id="2412593942846481727">Dostupno je ažuriranje</translation> +<translation id="2414499877591062094">Omogući automatsko slanje PIN-a</translation> <translation id="2416435988630956212">Funkcijski tasteri na tastaturi</translation> <translation id="241727068219398187">Podaci su šifrovani pomoću Google lozinke od <ph name="TIME" />. To ne obuhvata načine plaćanja i adrese iz Google Pay-a.</translation> @@ -1305,6 +1311,7 @@ <translation id="2586672484245266891">Unesite kraći URL</translation> <translation id="2587922766792651800">Ograničenje je isteklo</translation> <translation id="2588636910004461974">Uređaji prodavca <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Izađi iz režima čitača</translation> <translation id="2594999711683503743">Pretražite Google ili unesite URL</translation> <translation id="2602501489742255173">Prevucite nagore da biste započeli</translation> <translation id="2603115962224169880">Očistite računar</translation> @@ -1874,6 +1881,7 @@ <translation id="3312424061798279731">Omogućeni jezici</translation> <translation id="3313622045786997898">Vrednost potpisa sertifikata</translation> <translation id="3315158641124845231">Sakrij <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Uključi režim čitača</translation> <translation id="3317459757438853210">Obostrano</translation> <translation id="3317678681329786349">Kamera i mikrofon su blokirani</translation> <translation id="3319048459796106952">Novi &prozor „Bez arhiviranja“</translation> @@ -2139,6 +2147,7 @@ <translation id="3636096452488277381">Zdravo <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – preostalo je <ph name="TIME" /></translation> <translation id="3637682276779847508">SIM kartica će biti trajno onemogućena ako ne unesete ispravnu šifru za otključavanje PIN-a.</translation> +<translation id="3639220004740062347">Izađi iz režima čitača</translation> <translation id="3640214691812501263">Dodaj „<ph name="EXTENSION_NAME" />“ za korisnika <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Naučite Pomoćnik da vam prepozna glas</translation> <translation id="3645372836428131288">Malo pomerite da biste snimili drugi deo otiska prsta.</translation> @@ -2149,6 +2158,7 @@ <translation id="3650845953328929506">Otpremanje evidencije je na čekanju.</translation> <translation id="3650952250015018111">Dozvolite da „<ph name="APP_NAME" />“ pristupa:</translation> <translation id="3651488188562686558">prekinuti vezu sa Wi-Fi-jem</translation> +<translation id="3651952061994655768">Promenite naziv</translation> <translation id="3652817283076144888">Pokreće se</translation> <translation id="3653160965917900914">Deljenja datoteka na mreži</translation> <translation id="3653842108912548333">Pristupajte Pomoćniku pomoću Voice Match-a</translation> @@ -2238,6 +2248,7 @@ <translation id="3748706263662799310">Prijavite grešku</translation> <translation id="3752582316358263300">Potvrdi...</translation> <translation id="3752673729237782832">Moji uređaji</translation> +<translation id="3752757212511661046">Želite da napravite poslovni profil?</translation> <translation id="3753033997400164841">Sačuvajte jednom. Koristite svuda</translation> <translation id="3755411799582650620"><ph name="PHONE_NAME" /> telefon sada može da otključava i ovaj <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Sajt koristi mikrofon</translation> @@ -2359,6 +2370,7 @@ <translation id="3874164307099183178">Uključite Google pomoćnik</translation> <translation id="387531380970557479">Dodatak <ph name="EXTENSION_NAME" /> je onemogućen jer sadrži malver.</translation> <translation id="3879748587602334249">Menadžer preuzimanja</translation> +<translation id="3881478300875776315">Prikaži manje redova</translation> <translation id="3882165008614329320">Postojeći video iz kamere ili datoteke</translation> <translation id="3886446263141354045">Zahtev za pristup ovom sajtu je poslat korisniku <ph name="NAME" /></translation> <translation id="3888550877729210209">Pravljenje beležaka pomoću aplikacije <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2568,6 +2580,7 @@ <translation id="4130750466177569591">Prihvatam</translation> <translation id="413121957363593859">Komponente</translation> <translation id="4131410914670010031">Crno-belo</translation> +<translation id="413193092008917129">Rutine dijagnostike mreže</translation> <translation id="4133076602192971179">Otvorite aplikaciju da biste promenili lozinku</translation> <translation id="4136203100490971508">Noćno svetlo se automatski isključuje kada sunce izađe</translation> <translation id="41365691917097717">Ako nastavite, omogućićete ADB otklanjanje grešaka za pravljenje i testiranje Android aplikacija. Imajte u vidu da ova radnja omogućava instaliranje Android aplikacija koje Google nije verifikovao i zahteva resetovanje na fabrička podešavanja da bi se onemogućila.</translation> @@ -2725,6 +2738,7 @@ <translation id="4375035964737468845">Otvaranje preuzetih datoteka</translation> <translation id="4377363674125277448">Došlo je do problema sa sertifikatom servera.</translation> <translation id="4378154925671717803">Telefon</translation> +<translation id="4378373042927530923">Nije pokrenuto</translation> <translation id="4378551569595875038">Povezuje se...</translation> <translation id="4378556263712303865">Zahtev za uređaj</translation> <translation id="4379281552162875326">Želite da deinstalirate aplikaciju <ph name="APP_NAME" />?</translation> @@ -2937,6 +2951,7 @@ <translation id="4643612240819915418">&Otvori video snimak na novoj kartici</translation> <translation id="4645676300727003670">&Zadrži</translation> <translation id="4646675363240786305">Portovi</translation> +<translation id="4646949265910132906">Bezbedna Wi-Fi veza</translation> <translation id="4647090755847581616">&Close Tab (Zatvori karticu)</translation> <translation id="4647420311443994946">{0,select, tablet{Pokrenite aplikaciju kada se prijavite na tablet}computer{Pokrenite aplikaciju kada se prijavite na računar}other{Pokrenite aplikaciju kada se prijavite na uređaj}}</translation> <translation id="4647697156028544508">Unesite PIN za „<ph name="DEVICE_NAME" />“:</translation> @@ -2975,6 +2990,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> će moći da pregleda datoteku <ph name="FILENAME" /> dok ne zatvorite sve kartice ovog sajta</translation> <translation id="4692623383562244444">Pretraživači</translation> <translation id="4693155481716051732">Suši</translation> +<translation id="469379815867856270">Jačina signala</translation> <translation id="4694024090038830733">Konfiguracijom štampača upravlja administrator.</translation> <translation id="4694604912444486114">Majmun</translation> <translation id="4697551882387947560">Kada se završi sesija pregledanja</translation> @@ -3185,6 +3201,7 @@ <translation id="4980805016576257426">Ovaj dodatak sadrži malver.</translation> <translation id="4981449534399733132">Da biste obrisali podatke pregledanja sa svih sinhronizovanih uređaja i sa Google naloga, <ph name="BEGIN_LINK" />prijavite se<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Softver uređaja</translation> +<translation id="4985509611418653372">Pokreni</translation> <translation id="4986728572522335985">Time ćete izbrisati sve podatke sa bezbednosnog ključa, uključujući njegov PIN</translation> <translation id="4988526792673242964">Stranice</translation> <translation id="49896407730300355">Okreći u s&meru suprotnom od kretanja kazaljke na satu</translation> @@ -3379,6 +3396,7 @@ <translation id="5241128660650683457">Čitanje svih vaših podataka na veb-sajtovima koje posećujete</translation> <translation id="5242724311594467048">Želite li da omogućite „<ph name="EXTENSION_NAME" />“?</translation> <translation id="5243522832766285132">Probajte ponovo za nekoliko trenutaka</translation> +<translation id="5244406554036143958">Unesite PIN da biste omogućili automatsko slanje</translation> <translation id="5244474230056479698">Sinhronizuje se sa <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Započni pomoću školskog naloga</translation> <translation id="5246282308050205996">Aplikacija <ph name="APP_NAME" /> je otkazala. Kliknite na ovaj oblačić da biste je ponovo pokrenuli.</translation> @@ -3446,6 +3464,7 @@ <translation id="5315873049536339193">Identitet</translation> <translation id="5317780077021120954">Sačuvaj</translation> <translation id="5319359161174645648">Google preporučuje Chrome</translation> +<translation id="5320135788267874712">Nov naziv uređaj</translation> <translation id="532247166573571973">Server je možda nedostupan. Probajte ponovo kasnije.</translation> <translation id="5324780743567488672">Automatski podesi vremensku zonu pomoću moje lokacije</translation> <translation id="5327248766486351172">Naziv</translation> @@ -3459,6 +3478,7 @@ <translation id="5336126339807372270">Ne dozvoljavaj sajtovima da pristupaju USB uređajima</translation> <translation id="5336688142483283574">Ova stranica će takođe biti uklonjena iz istorije i iz <ph name="SEARCH_ENGINE" /> aktivnosti.</translation> <translation id="5337771866151525739">Instalirala treća strana.</translation> +<translation id="5337926771328966926">Aktuelan naziv uređaja je <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Lokalni memorijski prostor</translation> <translation id="5340638867532133571">Dozvoli sajtovima da instaliraju obrađivače plaćanja (preporučeno)</translation> <translation id="5341793073192892252">Sledeći kolačići su blokirani (kolačići treće strane se blokiraju bez izuzetka)</translation> @@ -3489,6 +3509,7 @@ <translation id="5379140238605961210">Nastavi da blokiraš pristup mikrofonu</translation> <translation id="5382591305415226340">Upravljaj podržanim linkovima</translation> <translation id="5383377866517186886">Kamera je isključena u podešavanjima Mac sistema</translation> +<translation id="5383740867328871413">Grupa bez naziva – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Upareno</translation> <translation id="5389237414310520250">Pravljenje novog korisnika nije uspelo. Proverite da li imate dovoljno prostora na hard-disku i odgovarajuće dozvole i pokušajte ponovo.</translation> <translation id="5390100381392048184">Dozvoli sajtovima da puštaju zvuk</translation> @@ -3499,6 +3520,7 @@ <translation id="5398497406011404839">Sakriveni obeleživači</translation> <translation id="5398572795982417028">Prevelika referenca za stranice, ograničenje je <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Oglasi su blokirani</translation> +<translation id="5401938042319910061">Pokreni sve rutine</translation> <translation id="5402815541704507626">Preuzmite ažuriranje pomoću mobilnih podataka</translation> <translation id="540296380408672091">Uvek blokiraj kolačiće na <ph name="HOST" /></translation> <translation id="540495485885201800">Zameni prethodnim</translation> @@ -3815,6 +3837,7 @@ <translation id="57838592816432529">Isključi zvuk</translation> <translation id="5785583009707899920">Chrome uslužni programi za datoteke</translation> <translation id="5787146423283493983">Slaganje ključa</translation> +<translation id="5787420647064736989">Naziv uređaja</translation> <translation id="5788367137662787332">Žao nam je, najmanje jednu particiju na uređaju <ph name="DEVICE_LABEL" /> nije bilo moguće uključiti.</translation> <translation id="5790085346892983794">Uspešno</translation> <translation id="5790651917470750848">Prosleđivanje porta već postoji</translation> @@ -4491,6 +4514,7 @@ <translation id="6648911618876616409">Važno ažuriranje je spremno za instalaciju. Prijavite se da biste započeli.</translation> <translation id="6649018507441623493">Samo trenutak…</translation> <translation id="6649563841575838401">Format arhive nije podržan ili je datoteka oštećena.</translation> +<translation id="6650234781371031356">Lozinka za <ph name="WEBSITE" /> se čuva na ovom uređaju i na vašem Google nalogu. Gde želite da je izbrišete?</translation> <translation id="665061930738760572">Otvori u &novom prozoru</translation> <translation id="6651237644330755633">Veruj ovom sertifikatu za identifikaciju veb-sajtova</translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> integracija je podržana samo na x86_64 platformama. Chromebook-ovi napravljeni na ARM ili x86 platformi ne podržavaju ovu funkciju.</translation> @@ -4529,6 +4553,7 @@ <translation id="6701535245008341853">Nije moguće učitati profil.</translation> <translation id="6702639462873609204">&Izmeni...</translation> <translation id="6703966911896067184">Ilustracija greške pri registraciji</translation> +<translation id="6704062477274546131">DNS razrešavanje</translation> <translation id="6706210727756204531">Opseg</translation> <translation id="6707389671160270963">Sertifikat SSL klijenta</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> i još 1 kartica}one{<ph name="PAGE_TITLE" /> i još # kartica}few{<ph name="PAGE_TITLE" /> i još # kartice}other{<ph name="PAGE_TITLE" /> i još # kartica}}</translation> @@ -4586,6 +4611,7 @@ <translation id="677965093459947883">Jako mali</translation> <translation id="6781284683813954823">Link dudl logotipa</translation> <translation id="6781978626986383437">Pravljenje rezervne kopije za Linux je otkazano</translation> +<translation id="6782067259631821405">Nevažeći PIN</translation> <translation id="6785915470941880363">Obrnuto pomeranje <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Dodaci</translation> <translation id="6787839852456839824">Tasterske prečice</translation> @@ -4892,6 +4918,7 @@ <translation id="7141105143012495934">Prijavljivanje nije uspelo jer nismo uspeli da preuzmemo detalje o nalogu. Kontaktirajte administratora ili pokušajte ponovo.</translation> <translation id="7143207342074048698">Povezivanje</translation> <translation id="7144878232160441200">Probaj ponovo</translation> +<translation id="714876143603641390">Povezivanje LAN-a</translation> <translation id="7149893636342594995">Poslednja 24 sata</translation> <translation id="715118844758971915">Klasični štampači</translation> <translation id="7152478047064750137">Ovaj dodatak ne zahteva nikakve specijalne dozvole</translation> @@ -5029,6 +5056,7 @@ <translation id="7334274148831027933">Omogući montiranu lupu ekrana</translation> <translation id="7335974957018254119">Koristite proveru pravopisa za:</translation> <translation id="7336799713063880535">Obaveštenja su blokirana.</translation> +<translation id="7337248890521463931">Prikaži više redova</translation> <translation id="7338630283264858612">Serijski broj uređaja je nevažeći.</translation> <translation id="7339763383339757376">PKCS #7, jedan sertifikat</translation> <translation id="7339785458027436441">Proveravaj pravopis tokom kucanja</translation> @@ -5411,6 +5439,7 @@ <translation id="7807711621188256451">Uvek dozvoli da <ph name="HOST" /> pristupa kameri</translation> <translation id="7810202088502699111">Iskačući prozori su blokirani na ovoj stranici.</translation> <translation id="781167124805380294">Prebacite <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Pogledajte šta je novo na uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Kopiraj</translation> <translation id="7815680994978050279">Opasno preuzimanje je blokirano</translation> <translation id="7817361223956157679">Tastatura na ekranu još uvek ne radi u Linux aplikacijama</translation> @@ -5640,6 +5669,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 list papira}one{{COUNT} list papira}few{{COUNT} lista papira}other{{COUNT} listova papira}}</translation> <translation id="8063235345342641131">Podrazumevani zeleni avatar</translation> <translation id="8063535366119089408">Prikaži datoteku</translation> +<translation id="8064279191081105977">Grupa <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Dodirnite da biste se prijavili</translation> <translation id="8069615408251337349">Google Cloud štampanje</translation> <translation id="8071432093239591881">Odštampaj kao sliku</translation> @@ -6385,6 +6415,7 @@ <translation id="8986362086234534611">Zaboravi</translation> <translation id="8986494364107987395">Automatski šalji Google-u statističke podatke o korišćenju i izveštaje o otkazivanju</translation> <translation id="8987927404178983737">Mesec</translation> +<translation id="8990209962746788689">Pravljenje QR koda nije uspelo</translation> <translation id="8991520179165052608">Sajt može da koristi mikrofon</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 stavka}one{# stavka}few{# stavke}other{# stavki}}</translation> <translation id="899384117894244799">Uklonite korisnika sa ograničenim pristupom</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index b19b376..fe157a57 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -74,6 +74,7 @@ <translation id="1084096383128641877">Уклањањем ове лозинке нећете избрисати налог на <ph name="DOMAIN" />. Промените лозинку или избришите налог на <ph name="DOMAIN_LINK" /> да бисте га заштитили од других.</translation> <translation id="1084824384139382525">Копирај адр&есу линка</translation> <translation id="1085697365578766383">Грешка при покретању виртуелне машине. Пробајте поново.</translation> +<translation id="1088659085457112967">Укључи режим читача</translation> <translation id="1090126737595388931">Није покренута ниједна позадинска апликација</translation> <translation id="1091767800771861448">Притисните ESCAPE да бисте прескочили (само у незваничним верзијама).</translation> <translation id="1093457606523402488">Видљиве мреже:</translation> @@ -169,6 +170,7 @@ <translation id="1202596434010270079">Киоск апликација је ажурирана. Уклоните USB меморију.</translation> <translation id="120368089816228251">Музичка нота</translation> <translation id="1203942045716040624">Дељени обрађивач: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Кашњење DNS-а</translation> <translation id="1205489148908752564">Читање и мењање корисника на белој листи</translation> <translation id="1206407435587370571">Истражите Chromebook</translation> <translation id="1209796539517632982">Аутоматски сервери назива</translation> @@ -322,6 +324,7 @@ <translation id="1396259464226642517">Да ли је ово неочекиван резултат? <ph name="BEGIN_LINK" />Пошаљите повратне информације<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Корисничко име и лозинка које сте унели се не подударају</translation> <translation id="1397500194120344683">Нема уређаја који испуњавају услове. <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Мрежни пролаз може да се пингује</translation> <translation id="1398853756734560583">Увећај</translation> <translation id="139911022479327130">Откључајте телефон и потврдите да сте то ви</translation> <translation id="1399511500114202393">Нема корисничког сертификата</translation> @@ -581,6 +584,7 @@ <translation id="1701062906490865540">Уклони ову особу</translation> <translation id="1703331064825191675">Никада не брините о лозинкама</translation> <translation id="1704970325597567340">Безбедносна провера је покренута <ph name="DATE" /></translation> +<translation id="1706391837335750954">Присутан је DNS разрешивач</translation> <translation id="1706586824377653884">Додао администратор</translation> <translation id="1706625117072057435">Нивои зумирања</translation> <translation id="1708338024780164500">(Неактивно)</translation> @@ -872,6 +876,7 @@ <translation id="2065405795449409761">Софтвер за аутоматизовано тестирање контролише Chrome.</translation> <translation id="2071393345806050157">Нема локалне датотеке евиденције.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Кликните да бисте инсталирали додатак}one{Кликните да бисте инсталирали ове додатке}few{Кликните да бисте инсталирали ове додатке}other{Кликните да бисте инсталирали ове додатке}}</translation> +<translation id="2073505299004274893">Максималан број знакова који можете да користите је <ph name="CHARACTER_LIMIT" /></translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% батерије</translation> <translation id="2075959085554270910">Омогућавају вам да омогућите/онемогућите функције Додирни за клик и Превлачење додиром</translation> <translation id="2076269580855484719">Сакриј овај додатак</translation> @@ -1151,6 +1156,7 @@ <translation id="2408955596600435184">Унесите PIN</translation> <translation id="241082044617551207">Непозната додатна компонента</translation> <translation id="2412593942846481727">Доступно је ажурирање</translation> +<translation id="2414499877591062094">Омогући аутоматско слање PIN-а</translation> <translation id="2416435988630956212">Функцијски тастери на тастатури</translation> <translation id="241727068219398187">Подаци су шифровани помоћу Google лозинке од <ph name="TIME" />. То не обухвата начине плаћања и адресе из Google Pay-а.</translation> @@ -1305,6 +1311,7 @@ <translation id="2586672484245266891">Унесите краћи URL</translation> <translation id="2587922766792651800">Ограничење је истекло</translation> <translation id="2588636910004461974">Уређаји продавца <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Изађи из режима читача</translation> <translation id="2594999711683503743">Претражите Google или унесите URL</translation> <translation id="2602501489742255173">Превуците нагоре да бисте започели</translation> <translation id="2603115962224169880">Очистите рачунар</translation> @@ -1874,6 +1881,7 @@ <translation id="3312424061798279731">Омогућени језици</translation> <translation id="3313622045786997898">Вредност потписа сертификата</translation> <translation id="3315158641124845231">Сакриј <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Укључи режим читача</translation> <translation id="3317459757438853210">Обострано</translation> <translation id="3317678681329786349">Камера и микрофон су блокирани</translation> <translation id="3319048459796106952">Нови &прозор „Без архивирања“</translation> @@ -2139,6 +2147,7 @@ <translation id="3636096452488277381">Здраво <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% – преостало је <ph name="TIME" /></translation> <translation id="3637682276779847508">SIM картица ће бити трајно онемогућена ако не унесете исправну шифру за откључавање PIN-а.</translation> +<translation id="3639220004740062347">Изађи из режима читача</translation> <translation id="3640214691812501263">Додај „<ph name="EXTENSION_NAME" />“ за корисника <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Научите Помоћник да вам препозна глас</translation> <translation id="3645372836428131288">Мало померите да бисте снимили други део отиска прста.</translation> @@ -2149,6 +2158,7 @@ <translation id="3650845953328929506">Отпремање евиденције је на чекању.</translation> <translation id="3650952250015018111">Дозволите да „<ph name="APP_NAME" />“ приступа:</translation> <translation id="3651488188562686558">прекинути везу са Wi-Fi-јем</translation> +<translation id="3651952061994655768">Промените назив</translation> <translation id="3652817283076144888">Покреће се</translation> <translation id="3653160965917900914">Дељења датотека на мрежи</translation> <translation id="3653842108912548333">Приступајте Помоћнику помоћу Voice Match-а</translation> @@ -2238,6 +2248,7 @@ <translation id="3748706263662799310">Пријавите грешку</translation> <translation id="3752582316358263300">Потврди...</translation> <translation id="3752673729237782832">Моји уређаји</translation> +<translation id="3752757212511661046">Желите да направите пословни профил?</translation> <translation id="3753033997400164841">Сачувајте једном. Користите свуда</translation> <translation id="3755411799582650620"><ph name="PHONE_NAME" /> телефон сада може да откључава и овај <ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Сајт користи микрофон</translation> @@ -2359,6 +2370,7 @@ <translation id="3874164307099183178">Укључите Google помоћник</translation> <translation id="387531380970557479">Додатак <ph name="EXTENSION_NAME" /> је онемогућен јер садржи малвер.</translation> <translation id="3879748587602334249">Менаџер преузимања</translation> +<translation id="3881478300875776315">Прикажи мање редова</translation> <translation id="3882165008614329320">Постојећи видео из камере или датотеке</translation> <translation id="3886446263141354045">Захтев за приступ овом сајту је послат кориснику <ph name="NAME" /></translation> <translation id="3888550877729210209">Прављење бележака помоћу апликације <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2568,6 +2580,7 @@ <translation id="4130750466177569591">Прихватам</translation> <translation id="413121957363593859">Компоненте</translation> <translation id="4131410914670010031">Црно-бело</translation> +<translation id="413193092008917129">Рутине дијагностике мреже</translation> <translation id="4133076602192971179">Отворите апликацију да бисте променили лозинку</translation> <translation id="4136203100490971508">Ноћно светло се аутоматски искључује када сунце изађе</translation> <translation id="41365691917097717">Ако наставите, омогућићете ADB отклањање грешака за прављење и тестирање Android апликација. Имајте у виду да ова радња омогућава инсталирање Android апликација које Google није верификовао и захтева ресетовање на фабричка подешавања да би се онемогућила.</translation> @@ -2725,6 +2738,7 @@ <translation id="4375035964737468845">Отварање преузетих датотека</translation> <translation id="4377363674125277448">Дошло је до проблема са сертификатом сервера.</translation> <translation id="4378154925671717803">Телефон</translation> +<translation id="4378373042927530923">Није покренуто</translation> <translation id="4378551569595875038">Повезује се...</translation> <translation id="4378556263712303865">Захтев за уређај</translation> <translation id="4379281552162875326">Желите да деинсталирате апликацију <ph name="APP_NAME" />?</translation> @@ -2937,6 +2951,7 @@ <translation id="4643612240819915418">&Отвори видео снимак на новој картици</translation> <translation id="4645676300727003670">&Задржи</translation> <translation id="4646675363240786305">Портови</translation> +<translation id="4646949265910132906">Безбедна Wi-Fi веза</translation> <translation id="4647090755847581616">&Close Tab (Затвори картицу)</translation> <translation id="4647420311443994946">{0,select, tablet{Покрените апликацију када се пријавите на таблет}computer{Покрените апликацију када се пријавите на рачунар}other{Покрените апликацију када се пријавите на уређај}}</translation> <translation id="4647697156028544508">Унесите PIN за „<ph name="DEVICE_NAME" />“:</translation> @@ -2975,6 +2990,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> ће моћи да прегледа датотеку <ph name="FILENAME" /> док не затворите све картице овог сајта</translation> <translation id="4692623383562244444">Претраживачи</translation> <translation id="4693155481716051732">Суши</translation> +<translation id="469379815867856270">Јачина сигнала</translation> <translation id="4694024090038830733">Конфигурацијом штампача управља администратор.</translation> <translation id="4694604912444486114">Мајмун</translation> <translation id="4697551882387947560">Када се заврши сесија прегледања</translation> @@ -3185,6 +3201,7 @@ <translation id="4980805016576257426">Овај додатак садржи малвер.</translation> <translation id="4981449534399733132">Да бисте обрисали податке прегледања са свих синхронизованих уређаја и са Google налога, <ph name="BEGIN_LINK" />пријавите се<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Софтвер уређаја</translation> +<translation id="4985509611418653372">Покрени</translation> <translation id="4986728572522335985">Тиме ћете избрисати све податке са безбедносног кључа, укључујући његов PIN</translation> <translation id="4988526792673242964">Странице</translation> <translation id="49896407730300355">Окрећи у с&меру супротном од кретања казаљке на сату</translation> @@ -3379,6 +3396,7 @@ <translation id="5241128660650683457">Читање свих ваших података на веб-сајтовима које посећујете</translation> <translation id="5242724311594467048">Желите ли да омогућите „<ph name="EXTENSION_NAME" />“?</translation> <translation id="5243522832766285132">Пробајте поново за неколико тренутака</translation> +<translation id="5244406554036143958">Унесите PIN да бисте омогућили аутоматско слање</translation> <translation id="5244474230056479698">Синхронизује се са <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Започни помоћу школског налога</translation> <translation id="5246282308050205996">Апликација <ph name="APP_NAME" /> је отказала. Кликните на овај облачић да бисте је поново покренули.</translation> @@ -3446,6 +3464,7 @@ <translation id="5315873049536339193">Идентитет</translation> <translation id="5317780077021120954">Сачувај</translation> <translation id="5319359161174645648">Google препоручује Chrome</translation> +<translation id="5320135788267874712">Нов назив уређај</translation> <translation id="532247166573571973">Сервер је можда недоступан. Пробајте поново касније.</translation> <translation id="5324780743567488672">Аутоматски подеси временску зону помоћу моје локације</translation> <translation id="5327248766486351172">Назив</translation> @@ -3459,6 +3478,7 @@ <translation id="5336126339807372270">Не дозвољавај сајтовима да приступају USB уређајима</translation> <translation id="5336688142483283574">Ова страница ће такође бити уклоњена из историје и из <ph name="SEARCH_ENGINE" /> активности.</translation> <translation id="5337771866151525739">Инсталирала трећа страна.</translation> +<translation id="5337926771328966926">Актуелан назив уређаја је <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Локални меморијски простор</translation> <translation id="5340638867532133571">Дозволи сајтовима да инсталирају обрађиваче плаћања (препоручено)</translation> <translation id="5341793073192892252">Следећи колачићи су блокирани (колачићи треће стране се блокирају без изузетка)</translation> @@ -3489,6 +3509,7 @@ <translation id="5379140238605961210">Настави да блокираш приступ микрофону</translation> <translation id="5382591305415226340">Управљај подржаним линковима</translation> <translation id="5383377866517186886">Камера је искључена у подешавањима Mac система</translation> +<translation id="5383740867328871413">Група без назива – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Упарено</translation> <translation id="5389237414310520250">Прављење новог корисника није успело. Проверите да ли имате довољно простора на хард-диску и одговарајуће дозволе и покушајте поново.</translation> <translation id="5390100381392048184">Дозволи сајтовима да пуштају звук</translation> @@ -3499,6 +3520,7 @@ <translation id="5398497406011404839">Сакривени обележивачи</translation> <translation id="5398572795982417028">Превелика референца за странице, ограничење је <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Огласи су блокирани</translation> +<translation id="5401938042319910061">Покрени све рутине</translation> <translation id="5402815541704507626">Преузмите ажурирање помоћу мобилних података</translation> <translation id="540296380408672091">Увек блокирај колачиће на <ph name="HOST" /></translation> <translation id="540495485885201800">Замени претходним</translation> @@ -3815,6 +3837,7 @@ <translation id="57838592816432529">Искључи звук</translation> <translation id="5785583009707899920">Chrome услужни програми за датотеке</translation> <translation id="5787146423283493983">Слагање кључа</translation> +<translation id="5787420647064736989">Назив уређаја</translation> <translation id="5788367137662787332">Жао нам је, најмање једну партицију на уређају <ph name="DEVICE_LABEL" /> није било могуће укључити.</translation> <translation id="5790085346892983794">Успешно</translation> <translation id="5790651917470750848">Прослеђивање порта већ постоји</translation> @@ -4491,6 +4514,7 @@ <translation id="6648911618876616409">Важно ажурирање је спремно за инсталацију. Пријавите се да бисте започели.</translation> <translation id="6649018507441623493">Само тренутак…</translation> <translation id="6649563841575838401">Формат архиве није подржан или је датотека оштећена.</translation> +<translation id="6650234781371031356">Лозинка за <ph name="WEBSITE" /> се чува на овом уређају и на вашем Google налогу. Где желите да је избришете?</translation> <translation id="665061930738760572">Отвори у &новом прозору</translation> <translation id="6651237644330755633">Веруј овом сертификату за идентификацију веб-сајтова</translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> интеграција је подржана само на x86_64 платформама. Chromebook-ови направљени на ARM или x86 платформи не подржавају ову функцију.</translation> @@ -4529,6 +4553,7 @@ <translation id="6701535245008341853">Није могуће учитати профил.</translation> <translation id="6702639462873609204">&Измени...</translation> <translation id="6703966911896067184">Илустрација грешке при регистрацији</translation> +<translation id="6704062477274546131">DNS разрешавање</translation> <translation id="6706210727756204531">Опсег</translation> <translation id="6707389671160270963">Сертификат SSL клијента</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> и још 1 картица}one{<ph name="PAGE_TITLE" /> и још # картица}few{<ph name="PAGE_TITLE" /> и још # картице}other{<ph name="PAGE_TITLE" /> и још # картица}}</translation> @@ -4586,6 +4611,7 @@ <translation id="677965093459947883">Јако мали</translation> <translation id="6781284683813954823">Линк дудл логотипа</translation> <translation id="6781978626986383437">Прављење резервне копије за Linux је отказано</translation> +<translation id="6782067259631821405">Неважећи PIN</translation> <translation id="6785915470941880363">Обрнуто померање <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Додаци</translation> <translation id="6787839852456839824">Тастерске пречице</translation> @@ -4892,6 +4918,7 @@ <translation id="7141105143012495934">Пријављивање није успело јер нисмо успели да преузмемо детаље о налогу. Контактирајте администратора или покушајте поново.</translation> <translation id="7143207342074048698">Повезивање</translation> <translation id="7144878232160441200">Пробај поново</translation> +<translation id="714876143603641390">Повезивање LAN-а</translation> <translation id="7149893636342594995">Последња 24 сата</translation> <translation id="715118844758971915">Класични штампачи</translation> <translation id="7152478047064750137">Овај додатак не захтева никакве специјалне дозволе</translation> @@ -5029,6 +5056,7 @@ <translation id="7334274148831027933">Омогући монтирану лупу екрана</translation> <translation id="7335974957018254119">Користите проверу правописа за:</translation> <translation id="7336799713063880535">Обавештења су блокирана.</translation> +<translation id="7337248890521463931">Прикажи више редова</translation> <translation id="7338630283264858612">Серијски број уређаја је неважећи.</translation> <translation id="7339763383339757376">PKCS #7, један сертификат</translation> <translation id="7339785458027436441">Проверавај правопис током куцања</translation> @@ -5411,6 +5439,7 @@ <translation id="7807711621188256451">Увек дозволи да <ph name="HOST" /> приступа камери</translation> <translation id="7810202088502699111">Искачући прозори су блокирани на овој страници.</translation> <translation id="781167124805380294">Пребаците <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Погледајте шта је ново на уређају <ph name="DEVICE_TYPE" /></translation> <translation id="7814458197256864873">&Копирај</translation> <translation id="7815680994978050279">Опасно преузимање је блокирано</translation> <translation id="7817361223956157679">Тастатура на екрану још увек не ради у Linux апликацијама</translation> @@ -5640,6 +5669,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{1 лист папира}one{{COUNT} лист папира}few{{COUNT} листа папира}other{{COUNT} листова папира}}</translation> <translation id="8063235345342641131">Подразумевани зелени аватар</translation> <translation id="8063535366119089408">Прикажи датотеку</translation> +<translation id="8064279191081105977">Група <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Додирните да бисте се пријавили</translation> <translation id="8069615408251337349">Google Cloud штампање</translation> <translation id="8071432093239591881">Одштампај као слику</translation> @@ -6385,6 +6415,7 @@ <translation id="8986362086234534611">Заборави</translation> <translation id="8986494364107987395">Аутоматски шаљи Google-у статистичке податке о коришћењу и извештаје о отказивању</translation> <translation id="8987927404178983737">Месец</translation> +<translation id="8990209962746788689">Прављење QR кода није успело</translation> <translation id="8991520179165052608">Сајт може да користи микрофон</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 ставка}one{# ставка}few{# ставке}other{# ставки}}</translation> <translation id="899384117894244799">Уклоните корисника са ограниченим приступом</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 11c580e0..0106279 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -37,6 +37,7 @@ <translation id="1038168778161626396">Usimabji Tu</translation> <translation id="1038462104119736705">Tunapendekeza uwe na angalau nafasi ya <ph name="INSTALL_SIZE" /> kwenye Linux. Ili upate nafasi zaidi ya hifadhi, futa faili kwenye kifaa chako.</translation> <translation id="1039337018183941703">Faili si sahihi au imeharibika</translation> +<translation id="104086161873270383">Wasifu Mpya</translation> <translation id="1041175011127912238">Ukurasa huu haufanyi kazi</translation> <translation id="1041263367839475438">Vifaa vinavyopatikana</translation> <translation id="1042174272890264476">Kompyuta yako pia huja na maktaba ya <ph name="SHORT_PRODUCT_NAME" /> ya RLZ iliyojengewa ndani. RLZ hutoa lebo isiyo ya kipekee, isiyotambulika kibinafsi ili kupima utafutaji na matumizi ya <ph name="SHORT_PRODUCT_NAME" /> yanayoendeshwa na kampeni husika ya ukwezaji. Lebo hizi wakati mwingine hutokea katika hoja za Huduma ya Tafuta na Google katika <ph name="PRODUCT_NAME" />.</translation> @@ -73,6 +74,7 @@ <translation id="1084096383128641877">Hatua ya kuondoa nenosiri hili haitafuta akaunti yako kwenye <ph name="DOMAIN" />. Badilisha nenosiri au futa akaunti yako kwenye <ph name="DOMAIN_LINK" /> ili uilinde dhidi ya watu wengine.</translation> <translation id="1084824384139382525">Nakili &anwani ya kiungo</translation> <translation id="1085697365578766383">Hitilafu imetokea wakati wa kuwasha mashine dhahania. Tafadhali jaribu tena.</translation> +<translation id="1088659085457112967">Washa Hali ya Kisomaji</translation> <translation id="1090126737595388931">Hakuna Programu zinazoendelea katika Mandharinyuma</translation> <translation id="1091767800771861448">Bonyeza ESCAPE ili kuruka (Vijenzi visivyo rasmi pekee).</translation> <translation id="1093457606523402488">Mitandao Inayoonekana:</translation> @@ -168,6 +170,7 @@ <translation id="1202596434010270079">Programu ya Skrini Nzima imesasishwa. Tafadhali ondoa hifadhi ya USB.</translation> <translation id="120368089816228251">Noti ya muziki</translation> <translation id="1203942045716040624">Mfanyakazi Anayeshirikiwa: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">Muda wa Kusubiri wa DNS</translation> <translation id="1205489148908752564">Soma na ubadilishe watumiaji walioidhinishwa</translation> <translation id="1206407435587370571">Igundue Chromebook yako</translation> <translation id="1209796539517632982">Seva za jina otomatiki</translation> @@ -321,6 +324,7 @@ <translation id="1396259464226642517">Je, ulitarajia matokeo haya? <ph name="BEGIN_LINK" />Tuma maoni<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Nenosiri na jina la mtumiaji uliloweka havilingani</translation> <translation id="1397500194120344683">Hakuna vifaa vinavyotimiza masharti. <ph name="LINK_BEGIN" />Pata maelezo zaidi.<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Lango linaweza Kuitwa</translation> <translation id="1398853756734560583">Tanua</translation> <translation id="139911022479327130">Fungua simu yako na uthibitishe kuwa ni wewe</translation> <translation id="1399511500114202393">Hakuna cheti cha mtumiaji</translation> @@ -537,7 +541,7 @@ <translation id="164936512206786300">Ondoa kifaa cha Bluetooth</translation> <translation id="1650371550981945235">Onyesha chaguo za kuingiza data</translation> <translation id="1651008383952180276">Lazima uweke kauli ya siri sawa mara mbili</translation> -<translation id="1652326691684645429">Washa Uhamishaji wa Karibu</translation> +<translation id="1652326691684645429">Washa kipengele cha Uhamishaji wa Karibu</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Ongeza printa kwenye Google Cloud Print ili uweze kuchapisha kutoka mahali popote.}other{Ongeza printa # kwenye Google Cloud Print ili uweze kuchapisha kutoka mahali popote.}}</translation> <translation id="1656528038316521561">Nuru ya mandharinyuma</translation> <translation id="1657406563541664238">Saidia kuboresha <ph name="PRODUCT_NAME" /> kwa kutumia Google takwimu za matumizi na ripoti wakati wowote huduma hii inapoacha kufanya kazi.</translation> @@ -580,6 +584,7 @@ <translation id="1701062906490865540">Ondoa mtumiaji huyu</translation> <translation id="1703331064825191675">Usiwe na wasiwasi kuhusu manenosiri yako</translation> <translation id="1704970325597567340">Angalizo la usalama lilitekelezwa <ph name="DATE" /></translation> +<translation id="1706391837335750954">Kisuluhishaji cha DNS Kinapatikana</translation> <translation id="1706586824377653884">Imeongezwa na msimamizi wako</translation> <translation id="1706625117072057435">Viwango vya kukuza</translation> <translation id="1708338024780164500">(Sio amilifu)</translation> @@ -871,6 +876,7 @@ <translation id="2065405795449409761">Chrome inadhibitiwa na programu otomatiki ya majaribio.</translation> <translation id="2071393345806050157">Hakuna faili ya kumbukumbu ya ndani</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Bofya ili usakinishe kiendelezi hiki}other{Bofya ili usakinishe viendelezi hivi}}</translation> +<translation id="2073505299004274893">Tumia herufi zisizozidi <ph name="CHARACTER_LIMIT" /></translation> <translation id="2075474481720804517">Asilimia <ph name="BATTERY_PERCENTAGE" /> ya betri</translation> <translation id="2075959085554270910">Hukuruhusu uwashe/uzime kipengee cha gusa ili ubofye na kuburuta kwa kugusa</translation> <translation id="2076269580855484719">Ficha programu jalizi hii</translation> @@ -1150,6 +1156,7 @@ <translation id="2408955596600435184">Weka PIN yako</translation> <translation id="241082044617551207">Programu jalizi haijulikani</translation> <translation id="2412593942846481727">Sasisho linapatikana</translation> +<translation id="2414499877591062094">Washa kipengele cha kutuma PIN kiotomatiki</translation> <translation id="2416435988630956212">Vitufe vya chaguo za kukokotoa kwenye kibodi</translation> <translation id="241727068219398187">Data yako imesimbwa kwa njia fiche kwa kutumia nenosiri la Google lililokuwepo <ph name="TIME" />. Hali hii haijumuishi njia za kulipa na anwani kutoka Google Pay.</translation> @@ -1304,6 +1311,7 @@ <translation id="2586672484245266891">Tafadhali weka URL fupi</translation> <translation id="2587922766792651800">Muda umeisha</translation> <translation id="2588636910004461974">Vifaa kutoka <ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Funga hali ya kisomaji</translation> <translation id="2594999711683503743">Tafuta kwenye Google au charaza URL</translation> <translation id="2602501489742255173">Telezesha kidole kuelekea juu ili uanze</translation> <translation id="2603115962224169880">Futa programu hatari kwenye kompyuta yako</translation> @@ -1873,6 +1881,7 @@ <translation id="3312424061798279731">Lugha zinazotumika</translation> <translation id="3313622045786997898">Thamani ya Sahihi ya Cheti</translation> <translation id="3315158641124845231">Ficha <ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Washa hali ya kisomaji</translation> <translation id="3317459757438853210">Pande mbili</translation> <translation id="3317678681329786349">Kamera na maikrofoni zimezuiwa</translation> <translation id="3319048459796106952">Dirisha &fiche jipya</translation> @@ -2138,6 +2147,7 @@ <translation id="3636096452488277381">Hujambo, <ph name="USER_GIVEN_NAME" /> .</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - Zimesalia <ph name="TIME" /></translation> <translation id="3637682276779847508">SIM kadi yako itafungwa kabisa ikiwa hutaweka Ufunguo sahihi wa Kufungua PIN.</translation> +<translation id="3639220004740062347">Funga Hali ya Kisomaji</translation> <translation id="3640214691812501263">Ungependa kuongeza "<ph name="EXTENSION_NAME" />" kwa <ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Ifunze programu ya Mratibu kutambua sauti yako</translation> <translation id="3645372836428131288">Sogeza kidogo ili unase sehemu tofauti ya alama ya kidole.</translation> @@ -2148,6 +2158,7 @@ <translation id="3650845953328929506">Inasubiri kupakia kumbukumbu.</translation> <translation id="3650952250015018111">Ruhusu "<ph name="APP_NAME" />" ifikie:</translation> <translation id="3651488188562686558">Ondoa muunganisho wa Wi-Fi</translation> +<translation id="3651952061994655768">Badilisha jina</translation> <translation id="3652817283076144888">Inaanzisha</translation> <translation id="3653160965917900914">Faili za kushiriki katika mtandao</translation> <translation id="3653842108912548333">Fikia programu yako ya Mratibu kupitia kipengele cha Voice Match</translation> @@ -2237,6 +2248,7 @@ <translation id="3748706263662799310">Ripoti hitilafu</translation> <translation id="3752582316358263300">Sawa...</translation> <translation id="3752673729237782832">Vifaa vyangu</translation> +<translation id="3752757212511661046">Ungependa kufungua Wasifu wa Kazini?</translation> <translation id="3753033997400164841">Hifadhi mara moja. Tumia kila mahali</translation> <translation id="3755411799582650620"><ph name="PHONE_NAME" /> yako sasa inaweza kufungua <ph name="DEVICE_TYPE" /> hii pia.</translation> <translation id="375636864092143889">Tovuti inatumia maikrofoni yako</translation> @@ -2358,6 +2370,7 @@ <translation id="3874164307099183178">Washa programu ya Mratibu wa Google</translation> <translation id="387531380970557479">"<ph name="EXTENSION_NAME" />" kimezimwa kwa kuwa kina programu hasidi.</translation> <translation id="3879748587602334249">Kidhibiti cha vipakuliwa</translation> +<translation id="3881478300875776315">Onyesha mistari michache</translation> <translation id="3882165008614329320">Video iliyopo kutoka kwenye kamera au faili</translation> <translation id="3886446263141354045">Ombi lako la kufikia tovuti hii limetumwa kwa <ph name="NAME" /></translation> <translation id="3888550877729210209">Madokezo yanachukuliwa na <ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2565,6 +2578,7 @@ <translation id="4130750466177569591">Ninakubali</translation> <translation id="413121957363593859">Vipengele</translation> <translation id="4131410914670010031">Nyeusi na nyeupe</translation> +<translation id="413193092008917129">Ratiba za Uchunguzi wa Mtandao</translation> <translation id="4133076602192971179">Fungua programu ili ubadilishe nenosiri lako</translation> <translation id="4136203100490971508">Kipengele cha Mwanga wa Usiku kitazimwa kiotomatiki wakati wa macheo</translation> <translation id="41365691917097717">Hatua ya kuendelea itawasha utatuzi wa ADB wa kusanidi na kujaribu programu za Android. Kumbuka kwamba hatua hii inaruhusu usakinishaji wa programu za Android ambazo hazijathibitishwa na Google na zinahitaji urejeshe mipangilio ambayo kifaa ilitoka nayo kiwandani ili kuzima.</translation> @@ -2722,6 +2736,7 @@ <translation id="4375035964737468845">Fungua faili zilizopakuliwa</translation> <translation id="4377363674125277448">Kulikuwa na tatizo kwenye cheti cha seva.</translation> <translation id="4378154925671717803">Simu</translation> +<translation id="4378373042927530923">Usitekeleze</translation> <translation id="4378551569595875038">Inaunganisha...</translation> <translation id="4378556263712303865">Ombi la kifaa</translation> <translation id="4379281552162875326">Je, ungependa kuondoa "<ph name="APP_NAME" />"?</translation> @@ -2934,6 +2949,7 @@ <translation id="4643612240819915418">&Fungua Video katika Kichupo Kipya</translation> <translation id="4645676300727003670">&Weka</translation> <translation id="4646675363240786305">Milango</translation> +<translation id="4646949265910132906">Muunganisho Salama wa WiFi</translation> <translation id="4647090755847581616">&Funga Kichupo</translation> <translation id="4647420311443994946">{0,select, tablet{Fungua programu unapoingia katika akaunti ukitumia kompyuta kibao}computer{Fungua programu unapoingia katika akaunti ukitumia kompyuta}other{Fungua programu unapoingia katika akaunti ukitumia kifaa chako}}</translation> <translation id="4647697156028544508">Tafadhali ingiza PIN ya "<ph name="DEVICE_NAME" />":</translation> @@ -2960,7 +2976,7 @@ <translation id="4673442866648850031">Fungua zana za stylus wakati stylus imeondolewa</translation> <translation id="4677772697204437347">Hifadhi ya GPU</translation> <translation id="4680105648806843642">Sauti imezimwa kwenye ukurasa huu</translation> -<translation id="4681453295291708042">Zima Uhamishaji wa Karibu</translation> +<translation id="4681453295291708042">Zima kipengele cha Uhamishaji wa Karibu</translation> <translation id="4681930562518940301">Fungua picha asili katika kichupo kipya</translation> <translation id="4682551433947286597">Mandhari hutokea kwenye Skrini ya Kuingia.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (chaguomsingi)</translation> @@ -2972,6 +2988,7 @@ <translation id="4691791363716065510"><ph name="ORIGIN" /> itaweza kuona <ph name="FILENAME" /> hadi ufunge vichupo vyote vya tovuti hii</translation> <translation id="4692623383562244444">Mitambo ya kutafuta</translation> <translation id="4693155481716051732">Sushi</translation> +<translation id="469379815867856270">Uthabiti wa Mtandao</translation> <translation id="4694024090038830733">Mipangilio ya printa inashughulikiwa na msimamizi.</translation> <translation id="4694604912444486114">Tumbili</translation> <translation id="4697551882387947560">Wakati kipindi cha kuvinjari kinakamilika</translation> @@ -3182,6 +3199,7 @@ <translation id="4980805016576257426">Kiendelezi kina programu hasidi.</translation> <translation id="4981449534399733132">Ili ufute data ya kuvinjari kwenye vifaa vyako vyote vilivyosawazishwa na Akaunti yako ya Google, <ph name="BEGIN_LINK" />ingia katika akaunti<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Programu ya kifaa</translation> +<translation id="4985509611418653372">Tekeleza</translation> <translation id="4986728572522335985">Hatua hii itafuta data yote kwenye ufunguo wa usalama, ikiwa ni pamoja na PIN</translation> <translation id="4988526792673242964">Kurasa</translation> <translation id="49896407730300355">Zungusha kinyume saa</translation> @@ -3376,6 +3394,7 @@ <translation id="5241128660650683457">Soma data yako yote kwenye tovuti unazotembelea</translation> <translation id="5242724311594467048">Ungependa kuwasha "<ph name="EXTENSION_NAME" />"?</translation> <translation id="5243522832766285132">Tafadhali jaribu tena baada ya muda mfupi</translation> +<translation id="5244406554036143958">Weka PIN ili uwashe kipengele cha kutuma kiotomatiki</translation> <translation id="5244474230056479698">Inasawazisha kwenye <ph name="EMAIL" /></translation> <translation id="5245610266855777041">Anza kutumia akaunti ya shuleni</translation> <translation id="5246282308050205996"><ph name="APP_NAME" /> imeharibika. Bofya puto hii ili kuzima na kuwasha programu hii.</translation> @@ -3443,6 +3462,7 @@ <translation id="5315873049536339193">Kitambulisho</translation> <translation id="5317780077021120954">Hifadhi</translation> <translation id="5319359161174645648">Google inapendekeza utumie Chrome</translation> +<translation id="5320135788267874712">Jina jipya la kifaa</translation> <translation id="532247166573571973">Huenda seva haifikiki. Jaribu tena baadaye.</translation> <translation id="5324780743567488672">Weka saa za eneo kiotomatiki kwa kutumia mahali pako</translation> <translation id="5327248766486351172">Jina</translation> @@ -3456,6 +3476,7 @@ <translation id="5336126339807372270">Usiruhusu tovuti zozote zifikie vifaa vya USB</translation> <translation id="5336688142483283574">Ukurasa huu pia utaondolewa katika historia na shughuli zako za <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Imesakinishwa na mhusika mwingine.</translation> +<translation id="5337926771328966926">Jina la sasa la kifaa ni <ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Hifadhi ya ndani</translation> <translation id="5340638867532133571">Ruhusu tovuti zisakinishe vidhibiti vya malipo (inapendekezwa)</translation> <translation id="5341793073192892252">Vidakuzi vifuatavyo vilizuiwa (vidakuzi vyote vya washirika wengine vinazuiwa)</translation> @@ -3486,6 +3507,7 @@ <translation id="5379140238605961210">Endelea kuzuia ufikiaji wa maikrofoni</translation> <translation id="5382591305415226340">Dhibiti viungo vinavyotumika</translation> <translation id="5383377866517186886">Kamera imezimwa katika Mapendeleo ya Mfumo wa Mac</translation> +<translation id="5383740867328871413">Kikundi kisicho na jina - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Imeoanishwa</translation> <translation id="5389237414310520250">Imeshindwa kuunda mtumiaji mpya. Tafadhali angalia ruhusa na nafasi ya hifadhi ya diski kuu kisha ujaribu tena.</translation> <translation id="5390100381392048184">Ruhusu tovuti kucheza sauti</translation> @@ -3496,6 +3518,7 @@ <translation id="5398497406011404839">Alamisho zilizofichwa</translation> <translation id="5398572795982417028">Ukurasa wa kurejelea ambao hauruhusiwi kuingia, kikomo ni <ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Matangazo yamezuiwa</translation> +<translation id="5401938042319910061">Tekeleza Ratiba Zote</translation> <translation id="5402815541704507626">Pakua sasisho kwa kutumia data ya simu</translation> <translation id="540296380408672091">Zuia vidakuzi kwenye <ph name="HOST" /> wakati wowote</translation> <translation id="540495485885201800">Badilisha na iliyotangulia</translation> @@ -3811,6 +3834,7 @@ <translation id="57838592816432529">Zima sauti</translation> <translation id="5785583009707899920">Huduma za Faili za Chrome</translation> <translation id="5787146423283493983">Makubaliano ya Funguo</translation> +<translation id="5787420647064736989">Jina la kifaa</translation> <translation id="5788367137662787332">Samahani, angalau sehemu moja kwenye kifaa <ph name="DEVICE_LABEL" /> haingeweza kuangikwa.</translation> <translation id="5790085346892983794">Mafanikio</translation> <translation id="5790651917470750848">Mlango unaosambazia tayari upo</translation> @@ -4487,6 +4511,7 @@ <translation id="6648911618876616409">Sasisho muhimu liko tayari kusakinishwa. Ingia katika akaunti ili usakinishe.</translation> <translation id="6649018507441623493">Subiri kidogo...</translation> <translation id="6649563841575838401">Muundo wa kumbukumbu hautumiki au faili imeharibika.</translation> +<translation id="6650234781371031356">Nenosiri lako la <ph name="WEBSITE" /> limehifadhiwa kwenye kifaa hiki na kwenye Akaunti yako ya Google. Ungependa kufuta lipi?</translation> <translation id="665061930738760572">Fungua katika &Dirisha Jipya</translation> <translation id="6651237644330755633">Amini cheti hiki kwa ajili ya kutambua tovuti</translation> <translation id="665355505818177700">Ujumuishaji wa Chrome <ph name="MS_AD_NAME" /> unatumika kwenye mifumo ya x86_64. Chromebook zinazotumia mfumo wa ARM au wa x86 hazitumii kipengele hiki.</translation> @@ -4525,6 +4550,7 @@ <translation id="6701535245008341853">Haikuweza kupata maelezo wasifu.</translation> <translation id="6702639462873609204">&Hariri...</translation> <translation id="6703966911896067184">Mfano wa hitilafu ya kujiandikisha</translation> +<translation id="6704062477274546131">Usuluhishaji wa DNS</translation> <translation id="6706210727756204531">Upeo</translation> <translation id="6707389671160270963">Cheti cha Teja ya SSL</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> na Kichupo Kingine Kimoja}other{<ph name="PAGE_TITLE" /> na Vichupo Vingine #}}</translation> @@ -4582,6 +4608,7 @@ <translation id="677965093459947883">Ndogo sana</translation> <translation id="6781284683813954823">Kiungo cha Doodle</translation> <translation id="6781978626986383437">Imeghairi kuhifadhi rudufu ya Linux</translation> +<translation id="6782067259631821405">PIN si Sahihi</translation> <translation id="6785915470941880363">Kusogeza kinyume <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Viendelezi</translation> <translation id="6787839852456839824">Mikato ya kibodi</translation> @@ -4740,7 +4767,7 @@ <translation id="6972553992270299730"><ph name="ORIGIN" /> haiwezi kufungua faili kwenye folda hii kwa sababu ina faili za mfumo</translation> <translation id="6972629891077993081">Vifaa vya HID</translation> <translation id="6972754398087986839">Anza</translation> -<translation id="6972887130317925583">Imebadilisha nenosiri lililoathiriwa. Kagua manenosiri yako wakati wowote katika <ph name="SETTINGS" />.</translation> +<translation id="6972887130317925583">Umebadilisha nenosiri lililoathiriwa. Kagua manenosiri yako wakati wowote katika <ph name="SETTINGS" />.</translation> <translation id="6973611239564315524">Sasisho la Debian 10 (Buster) linapatikana</translation> <translation id="6974609594866392343">Hali ya onyesho la nje ya mtando</translation> <translation id="6977381486153291903">Sahihisho la programu dhibiti</translation> @@ -4888,6 +4915,7 @@ <translation id="7141105143012495934">Haikufaulu kuingia katika akaunti kwa sababu maelezo ya akaunti yako hayakupatikana. Tafadhali wasiliana na msimamizi wako au jaribu tena.</translation> <translation id="7143207342074048698">Inaunganisha</translation> <translation id="7144878232160441200">Jaribu tena</translation> +<translation id="714876143603641390">Muunganisho wa LAN</translation> <translation id="7149893636342594995">Saa 24 zilizopita</translation> <translation id="715118844758971915">Printa za zamani</translation> <translation id="7152478047064750137">Kiendelezi hiki hakihitaji ruhusa maalum</translation> @@ -5025,6 +5053,7 @@ <translation id="7334274148831027933">Washa kikuzaji kilichofungwa</translation> <translation id="7335974957018254119">Tumia kikagua maendelezo katika</translation> <translation id="7336799713063880535">Arifa zimezuiwa.</translation> +<translation id="7337248890521463931">Onyesha mistari zaidi</translation> <translation id="7338630283264858612">Nambari ya ufuatiliaji ya kifaa si sahihi.</translation> <translation id="7339763383339757376">PKCS #7, cheti kimoja</translation> <translation id="7339785458027436441">Kagua Tahajia Unapochapa</translation> @@ -5408,6 +5437,7 @@ <translation id="7807711621188256451">Ruhusu <ph name="HOST" /> kufikia kamera yako kila wakati</translation> <translation id="7810202088502699111">Madirisha ibukizi yalizuiwa kwenye ukurasa huu.</translation> <translation id="781167124805380294">Tuma <ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Ona mambo mapya kwenye <ph name="DEVICE_TYPE" /> yako</translation> <translation id="7814458197256864873">&Nakili</translation> <translation id="7815680994978050279">Upakuaji hatari umezuiwa</translation> <translation id="7817361223956157679">Kibodi ya skrini bado haifanyi kazi kwenye programu za Linux</translation> @@ -5638,6 +5668,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{Karatasi moja}other{Karatasi {COUNT}}}</translation> <translation id="8063235345342641131">Ishara chaguomsingi ya kijani</translation> <translation id="8063535366119089408">Angalia faili</translation> +<translation id="8064279191081105977">Kikundi cha <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Gusa ili uingie katika akaunti</translation> <translation id="8069615408251337349">Google Cloud Print</translation> <translation id="8071432093239591881">Chapisha kuwa picha</translation> @@ -6383,6 +6414,7 @@ <translation id="8986362086234534611">Sahau</translation> <translation id="8986494364107987395">Tumia Google takwimu za matumizi na ripoti za mara ambazo kivinjari kinaacha kufanya kazi, moja kwa moja</translation> <translation id="8987927404178983737">Mwezi</translation> +<translation id="8990209962746788689">Imeshindwa kutunga msimbo wa QR</translation> <translation id="8991520179165052608">Tovuti inaweza kutumia maikrofoni yako</translation> <translation id="8992117551007229513">{COUNT,plural, =1{kipengee kimoja}other{vipengee #}}</translation> <translation id="899384117894244799">Ondoa mtumiaji anayedhibitiwa</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index c0f7ec3..1b64c51 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -5606,7 +5606,7 @@ <translation id="8017335670460187064"><ph name="LABEL" /></translation> <translation id="8017679124341497925">ஷார்ட்கட் திருத்தப்பட்டது</translation> <translation id="8018313076035239964">இணையதளங்கள் என்ன தகவலைப் பயன்படுத்தலாம், என்ன உள்ளடக்கத்தைக் காட்டலாம் என்பதைக் கட்டுப்படுத்தலாம்</translation> -<translation id="8022688469248132790">பிழை விவரங்களை மதிப்பாய்வு செய்யும்</translation> +<translation id="8022688469248132790">பிழை விவரங்களைக் காட்டும்</translation> <translation id="8023801379949507775">நீட்டிப்புகளை இப்போதே புதுப்பி</translation> <translation id="8026334261755873520">உலாவிய தரவை அழி</translation> <translation id="8028060951694135607">Microsoft Key Recovery</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 91568f9a..f0994a6 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -104,7 +104,7 @@ <translation id="1124772482545689468">صارف</translation> <translation id="1125550662859510761"><ph name="WIDTH" /> x <ph name="HEIGHT" /> جیسا نظر آتا ہے (اصل)</translation> <translation id="1126809382673880764">خطرناک ویب سائٹس، ڈاؤن لوڈز اور ایکسٹینشنز سے آپ کی حفاظت نہیں کرتی ہے۔ آپ کو اب بھی Gmail اور تلاش جیسی Google کی دیگر سروسز میں جہاں بھی دستیاب ہوگا محفوظ براؤزنگ کا تحفظ ملے گا۔</translation> -<translation id="112752777279960360">اس کمپیوٹر کے ساتھ پہلی بار سیکیورٹی کلید کے بطور استعمال ہونے والے Android فون کا سیٹ اپ کرنے کیلئے، اپنے فون پر Chrome کو کھولیں اورم "ترتیبات > پاس ورڈز > فون کا استعمال بطور سیکیورٹی کلید کریں" پر جائیں۔ پھر "نئے آلہ سے منسلک ہوں" پر ٹیپ کریں اور اس QR کوڈ کو اسکین کریں۔</translation> +<translation id="112752777279960360">اس کمپیوٹر کے ساتھ پہلی بار سیکیورٹی کلید کے بطور استعمال ہونے والے Android فون کا سیٹ اپ کرنے کیلئے، اپنے فون پر Chrome کو کھولیں اور "ترتیبات > پاس ورڈز > فون کا استعمال بطور سیکیورٹی کلید کریں" پر جائیں۔ پھر "نئے آلہ سے منسلک ہوں" پر ٹیپ کریں اور اس QR کوڈ کو اسکین کریں۔</translation> <translation id="1128109161498068552">MIDI آلات تک رسائی حاصل کرنے کیلئے کسی بھی سائٹس کو سسٹم کے جامع پیغامات استعمال کرنے کی اجازت نہ دیں</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1128591060186966949">سرچ انجن میں ترمیم کریں</translation> @@ -540,7 +540,7 @@ <translation id="164936512206786300">بلوٹوتھ آلہ کا جوڑا ختم کریں</translation> <translation id="1650371550981945235">ان پٹ اختیارات دکھائیں</translation> <translation id="1651008383952180276">آپ کو وہی پاس فریز دوبار درج کرنا ہوگا</translation> -<translation id="1652326691684645429">قریبی اشتراک فعال کریں</translation> +<translation id="1652326691684645429">قریبی آلات کے ساتھ اشتراک فعال کریں</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{پرنٹر کو Google کلاؤڈ پرنٹ میں شامل کریں تاکہ آپ کہیں سے بھی پرنٹ کر سکیں۔}other{# پرنٹرز کو Google کلاؤڈ پرنٹ میں شامل کریں تاکہ آپ کہیں سے بھی پرنٹ کر سکیں۔}}</translation> <translation id="1656528038316521561">پس منظر کا دھندلا پن</translation> <translation id="1657406563541664238">Google کو استعمال کے اعداد و شمار اور کریش رپورٹس خودکار طور پر بھیج کر <ph name="PRODUCT_NAME" /> کو بہتر بنانے میں مدد کریں</translation> @@ -748,7 +748,7 @@ <translation id="1887850431809612466">ہارڈ ویئر سے متعلق نظر ثانی</translation> <translation id="1888523338879380247">{0,plural, =1{آلہ اپ ڈیٹ کرنے کا آخری دن}other{# دن کے اندر آلہ کو اپ ڈیٹ کریں}}</translation> <translation id="1890674179660343635"><span>ID: </span><ph name="EXTENSION_ID" /></translation> -<translation id="1891760696839073783"><ph name="DEVICE_NAME" /> سے <ph name="ATTACHMENTS" /> موصول ہو رہی ہے</translation> +<translation id="1891760696839073783"><ph name="DEVICE_NAME" /> سے <ph name="ATTACHMENTS" /> موصول ہو رہی ہیں</translation> <translation id="189210018541388520">پوری سکرین کھولیں</translation> <translation id="1892341345406963517">آداب <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">دوسری زبانیں</translation> @@ -1668,7 +1668,7 @@ <translation id="3022978424994383087">سمجھ نہیں آئی۔</translation> <translation id="3023464535986383522">سننے کیلئے منتخب کریں</translation> <translation id="3024374909719388945">24 گھنٹے کی گھڑی استعمال کریں</translation> -<translation id="3027296729579831126">قریبی اشتراک آن کریں</translation> +<translation id="3027296729579831126">قریبی آلات کے ساتھ اشتراک آن کریں</translation> <translation id="3029466929721441205">شیلف میں اسٹائلس ٹولز دکھائیں</translation> <translation id="3031417829280473749">ایجنٹ X</translation> <translation id="3031557471081358569">درآمد کرنے کیلئے آئٹمز منتخب کریں:</translation> @@ -2964,7 +2964,7 @@ <translation id="4673442866648850031">اسٹائلس کو ہٹانے کے وقت اسٹائلس ٹولز کھولیں</translation> <translation id="4677772697204437347">GPU میموری</translation> <translation id="4680105648806843642">آواز اس صفحہ پر بند تھی</translation> -<translation id="4681453295291708042">قریبی اشتراک کو غیر فعال کریں</translation> +<translation id="4681453295291708042">قریبی آلات کے ساتھ اشتراک غیر فعال کریں</translation> <translation id="4681930562518940301">اصل &تصویر نئے ٹیب میں کھولیں</translation> <translation id="4682551433947286597">وال پیپرز سائن ان اسکرین پر ظاہر ہوتے ہیں۔</translation> <translation id="4683947955326903992">%<ph name="PERCENTAGE" /> (ڈیفالٹ)</translation> @@ -3781,7 +3781,7 @@ <translation id="5739017626473506901">اسکول کا اکاؤنٹ شامل کرنے میں <ph name="USER_NAME" /> کی مدد کرنے کیلئے سائن ان کریں</translation> <translation id="5739235828260127894">توثیق کا انتظار ہے۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation> <translation id="5739458112391494395">بہت بڑا</translation> -<translation id="5740328398383587084">قریبی اشتراک</translation> +<translation id="5740328398383587084">قریبی آلات کے ساتھ اشتراک</translation> <translation id="574104302965107104">مررنگ ڈسپلے کریں</translation> <translation id="574209121243317957">پچ</translation> <translation id="5746169159649715125">PDF کے بطور محفوظ کریں</translation> @@ -4278,6 +4278,7 @@ <translation id="6362853299801475928">&ایک مسئلہ کی اطلاع دیں…</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">خاندان اور دوستوں کو شامل کریں</translation> +<translation id="6367985768157257101">قریبی آلات کے ساتھ اشتراک کے ذریعے وصول کریں؟</translation> <translation id="636850387210749493">انٹرپرائز اندراج</translation> <translation id="6370021412472292592">manifest لوڈ نہیں کیا جا سکا۔</translation> <translation id="6374077068638737855">آئیس ویزل</translation> @@ -4734,7 +4735,7 @@ <translation id="6965978654500191972">آلہ</translation> <translation id="696780070563539690">سائٹس کوکیز کے ذریعے مختلف سائٹس پر، مثال کے طور پر، اشتہارات کو ذاتی نوعیت کا بنانے کے لیے، آپ کی براؤزنگ کی سرگرمی نہیں دیکھ سکتی ہیں</translation> <translation id="6968288415730398122">اسکرین لاک کنفیگر کرنے کیلئے اپنا پاس ورڈ درج کریں</translation> -<translation id="6969047215179982698">قریبی اشتراک آف کریں</translation> +<translation id="6969047215179982698">قریبی آلات کے ساتھ اشتراک آف کریں</translation> <translation id="6970480684834282392">شروعات کی قسم</translation> <translation id="6970856801391541997">مخصوص صفحات کو پرنٹ کریں</translation> <translation id="6972180789171089114">آڈیو/ویڈیو</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 93d42918..b394a51a 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -104,7 +104,7 @@ <translation id="1124772482545689468">Foydalanuvchi</translation> <translation id="1125550662859510761"><ph name="WIDTH" /> x <ph name="HEIGHT" /> kabi (asli)</translation> <translation id="1126809382673880764">Zararli sayt, yuklanma va kengaytmalardan himoya qila olmaydi. Gmail va Qidiruv kabi Google xizmatlarida Saytlarni xavfsiz kezish himoyasi ostida boʻlasiz.</translation> -<translation id="112752777279960360">Bu kompyuterda Android telefonini birinchi marta elektron kalit sifatida ishlatishni sozlash uchun telefonda Chromeni oching va “Sozlamalar > Parollar > Telefonni elektron kalit sifatida ishlatish" sahifasini oching. Keyin “Yanqi qurilmani ulash” ustiga bosib, mana bu QR kodni skanerlang.</translation> +<translation id="112752777279960360">Bu kompyuterda Android telefonini birinchi marta elektron kalit sifatida ishlatishni sozlash uchun telefonda Chromeni oching va “Sozlamalar > Parollar > Telefonni elektron kalit sifatida ishlatish” sahifasini oching. Keyin “Yangi qurilmani ulash” ustiga bosib, mana bu QR kodni skanerlang.</translation> <translation id="1128109161498068552">Hech qanday saytga MIDI qurilmalarga kirish uchun tizim xabarlaridan foydalanishiga ruxsat berilmasin</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1128591060186966949">Qidiruv tizimini o‘zgartirish</translation> @@ -1219,7 +1219,7 @@ <translation id="2489918096470125693">&Jild qo‘shish</translation> <translation id="2490481887078769936"><ph name="FILE_NAME" /> fayli roʻyxatdan olib tashlandi</translation> <translation id="249113932447298600">Kechirasiz, <ph name="DEVICE_LABEL" /> qurilmasi ayni vaqtda qo‘llab-quvvatlanmaydi.</translation> -<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> sizga <ph name="ATTACHMENTS" /> ulashmoqda</translation> +<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> sizga <ph name="ATTACHMENTS" /> ulashmoqda.</translation> <translation id="2492461744635776704">Sertifikatni imzolash talabi tayyorlanmoqda</translation> <translation id="249303669840926644">Ro‘yxatdan o‘tish amalini yakunlab bo‘lmadi</translation> <translation id="2495777824269688114">Boshqa funksiyalar yoki javoblar uchun “?” ustiga bosing.</translation> @@ -1820,7 +1820,7 @@ <translation id="3253225298092156258">Mavjud emas</translation> <translation id="3253448572569133955">Notanish hisob</translation> <translation id="3254516606912442756">Avtomatik vaqt mintaqasi funksiyasi o‘chiq</translation> -<translation id="3254715652085014625">Telefonda Chromeni oching va “Sozlamalar > Parollar > Telefonni elektron kalit sifatida ishlatish" sahifasidagi koʻrsatmalarni bajaring.</translation> +<translation id="3254715652085014625">Telefonda Chromeni oching va “Sozlamalar > Parollar > Telefonni elektron kalit sifatida ishlatish” sahifasidagi koʻrsatmalarni bajaring.</translation> <translation id="3255355328033513170"><ph name="SITE_GROUP_NAME" /> va ichidagi saytlar tomonidan saqlangan barcha maʼlumotlar tozalanadi. Cookie fayllari ham. Bu saytlardagi seanslaringiz yakunlanadi, hatto ochiq varaqlarda ham.</translation> <translation id="3259723213051400722">Qaytadan urining.</translation> <translation id="3264544094376351444">Sans-serif shrift</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index a096196..b668ebfb 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -233,6 +233,7 @@ <translation id="1274997165432133392">Cookie và các dữ liệu khác của trang web</translation> <translation id="1275718070701477396">Đã chọn</translation> <translation id="1276994519141842946">Không gỡ được cài đặt <ph name="APP_NAME" /></translation> +<translation id="127946606521051357">Thiết bị lân cận đang chia sẻ</translation> <translation id="1280820357415527819">Đang tìm kiếm mạng di động</translation> <translation id="1280965841156951489">Chỉnh sửa tệp</translation> <translation id="1285320974508926690">Không bao giờ dịch trang web này</translation> @@ -1221,6 +1222,7 @@ <translation id="2489918096470125693">Thêm &thư mục...</translation> <translation id="2490481887078769936">Đã xóa '<ph name="FILE_NAME" />' khỏi danh sách</translation> <translation id="249113932447298600">Rất tiếc, thiết bị <ph name="DEVICE_LABEL" /> không được hỗ trợ vào thời điểm này.</translation> +<translation id="2492308681814209210"><ph name="DEVICE_NAME" /> đang chia sẻ <ph name="ATTACHMENTS" /> với bạn.</translation> <translation id="2492461744635776704">Đang chuẩn bị yêu cầu ký chứng chỉ</translation> <translation id="249303669840926644">Không thể hoàn tất đăng ký</translation> <translation id="2495777824269688114">Khám phá các tính năng khác hoặc nhận câu trả lời. Hãy chọn “?” để được trợ giúp.</translation> @@ -4152,6 +4154,7 @@ <translation id="6212039847102026977">Hiển thị thuộc tính mạng nâng cao</translation> <translation id="6212168817037875041">Tắt màn hình</translation> <translation id="6212752530110374741">Gửi liên kết qua email</translation> +<translation id="6213230117190778270">Nhận</translation> <translation id="6216696360484424239">Đăng nhập tự động</translation> <translation id="6218058416316985984"><ph name="DEVICE_TYPE" /> đang ngoại tuyến. Hãy kết nối với Internet rồi thử lại.</translation> <translation id="6220413761270491930">Lỗi khi tải tiện ích</translation> @@ -4279,6 +4282,7 @@ <translation id="6362853299801475928">&Báo cáo sự cố...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">Thêm gia đình và bạn bè</translation> +<translation id="6367985768157257101">Nhận thông qua tính năng Chia sẻ lân cận?</translation> <translation id="636850387210749493">Đăng ký doanh nghiệp</translation> <translation id="6370021412472292592">Không thể tải tệp kê khai.</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -6581,6 +6585,7 @@ <translation id="939519157834106403">SSID</translation> <translation id="939598580284253335">Nhập cụm mật khẩu</translation> <translation id="939736085109172342">Thư mục mới</translation> +<translation id="941070664607309480">Hãy nhấp để hiển thị thiết bị lân cận. Khi đó, thiết bị này có thể chia sẻ dữ liệu với bạn</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> đang chia sẻ âm thanh và một tab trong Chrome.</translation> <translation id="945522503751344254">Gửi phản hồi</translation> <translation id="947329552760389097">&Kiểm tra các yếu tố</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index 03473fd..48408f569 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -233,6 +233,7 @@ <translation id="1274997165432133392">Cookie 及其他网站数据</translation> <translation id="1275718070701477396">已选中</translation> <translation id="1276994519141842946">无法卸载 <ph name="APP_NAME" /></translation> +<translation id="127946606521051357">附近的设备正在分享内容</translation> <translation id="1280820357415527819">正在搜索移动网络</translation> <translation id="1280965841156951489">修改文件</translation> <translation id="1285320974508926690">一律不翻译此网站</translation> @@ -1217,6 +1218,7 @@ <translation id="2489918096470125693">添加文件夹(&F)...</translation> <translation id="2490481887078769936">已从列表中移除“<ph name="FILE_NAME" />”</translation> <translation id="249113932447298600">抱歉,系统目前不支持设备“<ph name="DEVICE_LABEL" />”。</translation> +<translation id="2492308681814209210">“<ph name="DEVICE_NAME" />”与您分享了 <ph name="ATTACHMENTS" />。</translation> <translation id="2492461744635776704">正在准备证书签名请求</translation> <translation id="249303669840926644">无法完成注册</translation> <translation id="2495777824269688114">探索更多功能或获得相关解答。如需帮助,请选择“?”。</translation> @@ -4147,6 +4149,7 @@ <translation id="6212039847102026977">显示高级网络属性</translation> <translation id="6212168817037875041">关闭显示屏</translation> <translation id="6212752530110374741">通过电子邮件发送链接</translation> +<translation id="6213230117190778270">接收</translation> <translation id="6216696360484424239">自动登录</translation> <translation id="6218058416316985984"><ph name="DEVICE_TYPE" /> 处于离线状态。请连接到互联网,然后重试。</translation> <translation id="6220413761270491930">加载扩展程序时出错</translation> @@ -4274,6 +4277,7 @@ <translation id="6362853299801475928">报告问题(&R)...</translation> <translation id="6365069501305898914">Facebook</translation> <translation id="6365411474437319296">添加亲朋好友</translation> +<translation id="6367985768157257101">通过“附近分享”功能接收?</translation> <translation id="636850387210749493">企业注册</translation> <translation id="6370021412472292592">无法加载清单。</translation> <translation id="6374077068638737855">Iceweasel</translation> @@ -6575,6 +6579,7 @@ <translation id="939519157834106403">SSID</translation> <translation id="939598580284253335">请输入密码</translation> <translation id="939736085109172342">新建文件夹</translation> +<translation id="941070664607309480">点击一下即可显示您的设备,以便接收分享的数据</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> 正在共享 Chrome 标签页和音频。</translation> <translation id="945522503751344254">发送反馈</translation> <translation id="947329552760389097">检查元素(&I)</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 5b134b1..2fbcb29 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -37,6 +37,7 @@ <translation id="1038168778161626396">I-encipher kuphela</translation> <translation id="1038462104119736705">Kunconywa okungenani isikhala esingu-<ph name="INSTALL_SIZE" /> nge-Linux. Ukukhuphula isikhala esingenalutho. susa amafayela kusuka kudivayisi yakho.</translation> <translation id="1039337018183941703">Ifayela elingavumelekile noma elimoshekile</translation> +<translation id="104086161873270383">Iphrofayela Entsha</translation> <translation id="1041175011127912238">Ikhasi aliphenduli</translation> <translation id="1041263367839475438">Amadivayisi atholakalayo</translation> <translation id="1042174272890264476">Ikhompyutha yakho iphinda ize nelabhulali ye-<ph name="SHORT_PRODUCT_NAME" /> RLZ eyakhelwe ngaphakathi. I-RLZ ifakela umaka ongakhombi isiqu somuntu, esingahlukile ukuze kulinganiswe usesho nokusetshenziswa kwe-<ph name="SHORT_PRODUCT_NAME" /> okuhlolwa ngumkhankaso othile wokuphromotha. Lawa malebula kwesinye isikhathi avela kumibuzo ye-Usesho lwe-Google ku-<ph name="PRODUCT_NAME" />.</translation> @@ -73,6 +74,7 @@ <translation id="1084096383128641877">Ukususa le phasiwedi ngeke kususe i-akhawunti yakho ku-<ph name="DOMAIN" />. Shintsha iphasiwedi yakho noma susa i-akhawunti yakho ku-<ph name="DOMAIN_LINK" /> ukuyigcina iphephile kusuka kwabanye.</translation> <translation id="1084824384139382525">Kopisha ikheli lesixhumanisi</translation> <translation id="1085697365578766383">Iphutha ukuqalisa umshini wokubuka. Sicela uzame futhi.</translation> +<translation id="1088659085457112967">Ngena Kumodi Yesifundi</translation> <translation id="1090126737595388931">Azikho izinhlelo zokusebenza ezingemuva ezisebenzayo</translation> <translation id="1091767800771861448">Cindezela ku-ESCAPE ukuze weqe (Ukwakhiwa okungekho emthethweni kuphela).</translation> <translation id="1093457606523402488">Amanethiwekhi abonakalayo:</translation> @@ -168,6 +170,7 @@ <translation id="1202596434010270079">Uhlelo lokusebenza lwe-Kiosk libuyekeziwe. Sicela ususe isitikhi se-USB.</translation> <translation id="120368089816228251">Inothi lomculo</translation> <translation id="1203942045716040624">Isisebenzi Esabiwe: <ph name="SCRIPT_URL" /></translation> +<translation id="1204296502688602597">I-DNS Latency</translation> <translation id="1205489148908752564">Funda uphinde uguqule abasebenzisi abagunyaziwe</translation> <translation id="1206407435587370571">Hlola i-Chromebook yakho</translation> <translation id="1209796539517632982">Amaseva wegama elizenzakalelayo</translation> @@ -321,6 +324,7 @@ <translation id="1396259464226642517">Ingabe lomphumela wawungalindelekile? <ph name="BEGIN_LINK" />Thumela impendulo<ph name="END_LINK" /></translation> <translation id="1396963298126346194">Igama lomsebenzisi nephasiwedi oyifakile akufani</translation> <translation id="1397500194120344683">Awekho amadivayisi afanelekile. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation> +<translation id="1397738625398125236">Umasango Ungaqhwetshwa</translation> <translation id="1398853756734560583">Khulisa</translation> <translation id="139911022479327130">Vula ifoni yakho futhi uqinisekise ukuthi nguwe</translation> <translation id="1399511500114202393">Asikho isitifiketi somsebenzisi</translation> @@ -538,7 +542,7 @@ <translation id="164936512206786300">Susa ukubhangqa idivayisi ye-Bluetooth</translation> <translation id="1650371550981945235">Bonisa izinketho zokufaka</translation> <translation id="1651008383952180276">Kuzomele ufake umusho wokungena ofanayo kabili</translation> -<translation id="1652326691684645429">Nika amandla Ukwabelana Eduze</translation> +<translation id="1652326691684645429">Nika Amandla UkuThumela Eduze</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Engeza iphrinta Ekuphrinteni Kwamafu kwe-Google ukuze ukwazi ukuphrinta kusukela noma yikuphi.}one{Engeza amaphrinta angu-# Ekuphrinteni Kwamafu kwe-Google ukuze ukwazi ukuphrinta kusukela noma yikuphi.}other{Engeza amaphrinta angu-# Ekuphrinteni Kwamafu kwe-Google ukuze ukwazi ukuphrinta kusukela noma yikuphi.}}</translation> <translation id="1656528038316521561">Ukufiphala kwangemuva</translation> <translation id="1657406563541664238">Siza ukwenza i-<ph name="PRODUCT_NAME" /> ibe ngcono ngokuthumela izibalo zokusetshenziswa nemibiko yokuphahlazeka ku-Google</translation> @@ -581,6 +585,7 @@ <translation id="1701062906490865540">Susa lo muntu</translation> <translation id="1703331064825191675">Ungakhathazeki ngamaphasiwedi akho</translation> <translation id="1704970325597567340">Ukuhlola kokuphepha kusebenze ngomhla ka-<ph name="DATE" /></translation> +<translation id="1706391837335750954">Isixazululi se-DNS Sikhona</translation> <translation id="1706586824377653884">Kungezwe umlawuli wakho</translation> <translation id="1706625117072057435">Amaleveli okusondeza</translation> <translation id="1708338024780164500">(Akusebenzi)</translation> @@ -872,6 +877,7 @@ <translation id="2065405795449409761">I-Chrome ilawulwa isofthiwe lokuhlola elizenzakalelayo.</translation> <translation id="2071393345806050157">Alikho ifayela lasendaweni lelogu.</translation> <translation id="2073148037220830746">{NUM_EXTENSIONS,plural, =1{Chofoza ukuze ufake isandiso}one{Chofoza ukuze ufake lezi zandiso}other{Chofoza ukuze ufake lezi zandiso}}</translation> +<translation id="2073505299004274893">Sebenzisa izinhlamvu ezingu-<ph name="CHARACTER_LIMIT" /> noma ngaphansi</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% Ibhethri</translation> <translation id="2075959085554270910">Ikuvumela ukuthi unike amandla/ukhubaze ukuthepha uchofoze nokuthepha uhudule</translation> <translation id="2076269580855484719">Fihla le-plugin</translation> @@ -1151,6 +1157,7 @@ <translation id="2408955596600435184">Faka iphinikhodi yakho</translation> <translation id="241082044617551207">I-plugin engaziwa</translation> <translation id="2412593942846481727">Isibuyekezo siyatholakala</translation> +<translation id="2414499877591062094">Nika amandla ukuthumela Iphinikhodi ngokuzenzekelayo</translation> <translation id="2416435988630956212">Okhiye bokusebenza kwekhibhodi</translation> <translation id="241727068219398187">Idatha ibethelwe ngephasiwedi yakho ye-Google kusuka ngo- <ph name="TIME" />. Lokhu akubandakanyi izindlela zokukokha namakheli kusuka ku-Google Pay.</translation> @@ -1305,6 +1312,7 @@ <translation id="2586672484245266891">Sicela ufake i-URL emfushane</translation> <translation id="2587922766792651800">Kuphelelwe isikhathi</translation> <translation id="2588636910004461974">Amadivayisi kusuka ku-<ph name="VENDOR_NAME" /></translation> +<translation id="25899519884572181">Phuma kumodi yesifundi</translation> <translation id="2594999711683503743">Sesha i-Google noma thayipha i-URL</translation> <translation id="2602501489742255173">Swayiphela phezulu ukuze uqalise</translation> <translation id="2603115962224169880">Hlanza ikhompuyutha</translation> @@ -1667,7 +1675,7 @@ <translation id="3022978424994383087">Awukuzwanga lokho.</translation> <translation id="3023464535986383522">Khetha ukuze ukhulume</translation> <translation id="3024374909719388945">Sebenzisa iwashi lamahora angu-24</translation> -<translation id="3027296729579831126">Vula Ukwabelana Eduze</translation> +<translation id="3027296729579831126">Vula UkuThumela Eduze</translation> <translation id="3029466929721441205">Bonisa amathuluzi we-stylus kushalofu</translation> <translation id="3031417829280473749">Umenzeli ongu-X</translation> <translation id="3031557471081358569">Khetha into ozoyingenisa:</translation> @@ -1874,6 +1882,7 @@ <translation id="3312424061798279731">Izilimi ezinikwe amandla</translation> <translation id="3313622045786997898">Inani lesiginesha yesitifiketi</translation> <translation id="3315158641124845231">Fihla i-<ph name="PRODUCT_NAME" /></translation> +<translation id="3315442055907669208">Ngena kumodi yesifundi</translation> <translation id="3317459757438853210">Inezinhlangothi ezimbili</translation> <translation id="3317678681329786349">Ikhamera nemakrofoni ivinjelwe</translation> <translation id="3319048459796106952">Iwindi le-incognito elisha</translation> @@ -2139,6 +2148,7 @@ <translation id="3636096452488277381">Sawubona, <ph name="USER_GIVEN_NAME" />.</translation> <translation id="3636766455281737684"><ph name="PERCENTAGE" />% - <ph name="TIME" /> osele</translation> <translation id="3637682276779847508">I-SIM card yakho izokhutshazwa ngunaphakade uma ungakwazi ukufaka ukhiye olungile wokuvula iphinikhodi.</translation> +<translation id="3639220004740062347">Phuma Kumodi Yesifundi</translation> <translation id="3640214691812501263">Engeza i-"<ph name="EXTENSION_NAME" />" ku-<ph name="USER_NAME" />?</translation> <translation id="3640613767643722554">Fundisa umsizi wakho ukuthi azi izwi lakho</translation> <translation id="3645372836428131288">Hambisa kancane ukuze uthwebule inxenye eyehlukile yesigxivizo somunwe.</translation> @@ -2149,6 +2159,7 @@ <translation id="3650845953328929506">Kulindelwe ukulayishwa kwelogi.</translation> <translation id="3650952250015018111">Vumela i-"<ph name="APP_NAME" />" ukuthi ifinyelele:</translation> <translation id="3651488188562686558">Nqamula kusuka ku-Wi-Fi</translation> +<translation id="3651952061994655768">Shintsha igama</translation> <translation id="3652817283076144888">Iyaqalisa</translation> <translation id="3653160965917900914">Ukwabelana kwefayela lenethiwekhi</translation> <translation id="3653842108912548333">Finyelela umsizi wakho nge-Voice Match</translation> @@ -2238,6 +2249,7 @@ <translation id="3748706263662799310">Bika isiphazamiso</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Amadivayisi wami</translation> +<translation id="3752757212511661046">Dala Iphrofayela Yomsebenzi</translation> <translation id="3753033997400164841">Londoloza kanye. Sebenzisa yonke indawo</translation> <translation id="3755411799582650620">I-<ph name="PHONE_NAME" /> yakho manje ingavula nale-<ph name="DEVICE_TYPE" />.</translation> <translation id="375636864092143889">Isaiyithi lisebenzisa imakrofoni yakho</translation> @@ -2359,6 +2371,7 @@ <translation id="3874164307099183178">Vula Umsizi we-Google</translation> <translation id="387531380970557479">I-"<ph name="EXTENSION_NAME" />" ikhutshaziwe ngoba iqukethe uhlelo olungayilungele ikhompyutha</translation> <translation id="3879748587602334249">Isiphathi zokulayisha</translation> +<translation id="3881478300875776315">Bonisa imigqa embalwa</translation> <translation id="3882165008614329320">Ividiyo ekhona kusuka kukhamera noma ifayela</translation> <translation id="3886446263141354045">Isicelo sakho sokufinyelela kule sayithi sithunyelwe ku-<ph name="NAME" /></translation> <translation id="3888550877729210209">Ukuthatha amanothi nge-<ph name="LOCK_SCREEN_APP_NAME" /></translation> @@ -2567,6 +2580,7 @@ <translation id="4130750466177569591">Ngiyavuma</translation> <translation id="413121957363593859">Izingxenye</translation> <translation id="4131410914670010031">Okumnyama nokumhlophe</translation> +<translation id="413193092008917129">Imijikelezo Yokuxilonga Inethiwekhi</translation> <translation id="4133076602192971179">Vula uhlelo lokusebenza ukushintsha iphasiwedi yakho</translation> <translation id="4136203100490971508">Umkhayo wasebusuku uzovala ngokuzenzakalelayo uma kuphuma ilanga</translation> <translation id="41365691917097717">Ukuqhubeka kuzonika amandla ukulungisa amaphutha e-ADB okudala nokuhlola izinhlelo zokusebenza ze-Android. Qaphela ukuthi lesi senzo sivumela ukufakwa kwezinhlelo zokusebenza ze-Android ezingazange ziqinisekiswe i-Google, futhi sidinga ukusethwa kabusha kwasekuqaleni ukuze usikhubaze.</translation> @@ -2724,6 +2738,7 @@ <translation id="4375035964737468845">Vula amafayela alandiwe</translation> <translation id="4377363674125277448">Kube nenkinga ngesitifiketi seseva.</translation> <translation id="4378154925671717803">Ifoni</translation> +<translation id="4378373042927530923">Akuqaliswanga</translation> <translation id="4378551569595875038">Iyaxhuma...</translation> <translation id="4378556263712303865">Ukudingeka kwedivayisi</translation> <translation id="4379281552162875326">Khipha i-"<ph name="APP_NAME" />"?</translation> @@ -2936,6 +2951,7 @@ <translation id="4643612240819915418">Vula ividiyo kuthebhu entsha</translation> <translation id="4645676300727003670">Gcina</translation> <translation id="4646675363240786305">Izimbobo</translation> +<translation id="4646949265910132906">Uxhumano lwe-WiFi Oluvikelekile</translation> <translation id="4647090755847581616">Vala ithebhu</translation> <translation id="4647420311443994946">{0,select, tablet{Qala uhlelo lokusebenza lapho ungena ngemvume kuthebulethi yakho}computer{Qala uhlelo lokusebenza lapho ungena ngemvume kukhompuyutha yakho}other{Qala uhlelo lokusebenza lapho ungena ngemvume kudivayisi yakho}}</translation> <translation id="4647697156028544508">Sicela ufake iphinikhodi ye-"<ph name="DEVICE_NAME" />":</translation> @@ -2962,7 +2978,7 @@ <translation id="4673442866648850031">Vula amathuluzi e-stylus uma i-stylus sisusiwe</translation> <translation id="4677772697204437347">Imemori ye-GPU</translation> <translation id="4680105648806843642">Umsindo uye wathuliswa kuleli khasi</translation> -<translation id="4681453295291708042">Khubaza Ukwabelana Eduze</translation> +<translation id="4681453295291708042">Khubaza UkuThumela Eduze</translation> <translation id="4681930562518940301">Vula &isithombe sangempela kuthebhu entsha</translation> <translation id="4682551433947286597">Izithombe zangemuva zivela kusikrini sokungena ngemvume.</translation> <translation id="4683947955326903992"><ph name="PERCENTAGE" />% (okuzenzakalelayo)</translation> @@ -2974,6 +2990,7 @@ <translation id="4691791363716065510">I-<ph name="ORIGIN" /> izokwazi ukubuka i-<ph name="FILENAME" /> kuze kube yilapho uvala wonke amathebhu wale sayithi</translation> <translation id="4692623383562244444">Izinjini zosesho</translation> <translation id="4693155481716051732">I-Sushi</translation> +<translation id="469379815867856270">Amandla esiginali</translation> <translation id="4694024090038830733">Ukulungiselelwa kwephrinta kuphethwe umlawuli.</translation> <translation id="4694604912444486114">Inkawu</translation> <translation id="4697551882387947560">Uma kuphela iseshini yokudlulisa amehlo</translation> @@ -3184,6 +3201,7 @@ <translation id="4980805016576257426">Lesi sandiso siqukethe uhlelo olungayilungele ikhompuyutha.</translation> <translation id="4981449534399733132">Ukuze usule idatha yokuphequlula kusuka kuwo wonke amadivayisi akho avumelanisiwe ne-akhawunti yakho ye-Google, <ph name="BEGIN_LINK" />ngena ngemvume<ph name="END_LINK" />.</translation> <translation id="4982236238228587209">Isofthiwe yedivayisi</translation> +<translation id="4985509611418653372">Ukugijima</translation> <translation id="4986728572522335985">Lokhu kuzosusa yonke idatha kukhiye wokuqinisekisa ubunikazi, efaka IPHINIKHODI yayo</translation> <translation id="4988526792673242964">Amakhasi</translation> <translation id="49896407730300355">Jikisa n&gokuphikisana newashi</translation> @@ -3378,6 +3396,7 @@ <translation id="5241128660650683457">Funda yonke idatha yakho kumawebhusayithi owavakashelayo</translation> <translation id="5242724311594467048">Nika amandla i-"<ph name="EXTENSION_NAME" />"?</translation> <translation id="5243522832766285132">Sicela uzame futhi ngezikhathi ezimbalwa</translation> +<translation id="5244406554036143958">Faka Iphinikhodi yakho ukunika amandla ukuthumela okuzenzakalelayo</translation> <translation id="5244474230056479698">Ivumelanisa ku-<ph name="EMAIL" /></translation> <translation id="5245610266855777041">Qalisa nge-akhawunti yesikole</translation> <translation id="5246282308050205996">I-<ph name="APP_NAME" /> iphahlazekile. Chofoza kuleli bhamuza ukuze uqale kabusha uhlelo lokusebenza.</translation> @@ -3447,6 +3466,7 @@ <translation id="5315873049536339193">Ukuhlonza</translation> <translation id="5317780077021120954">Londoloza</translation> <translation id="5319359161174645648">I-Google incoma i-Chrome</translation> +<translation id="5320135788267874712">Igama ledivayisi elisha</translation> <translation id="532247166573571973">Iseva kungenzeka ingafinyeleleki. Zama futhi ngemuva kwesikhathi.</translation> <translation id="5324780743567488672">Setha indawo yesikhathi ngokuzenzakalela usebenzisa indawo yakho</translation> <translation id="5327248766486351172">Igama</translation> @@ -3460,6 +3480,7 @@ <translation id="5336126339807372270">Ungavumeli amanye amasayithi ukufinyelela amadivayisi e-USB</translation> <translation id="5336688142483283574">Leli khasi lizophinda lisuswe kusukela kumlando wakho nakumsebenzi we-<ph name="SEARCH_ENGINE" /></translation> <translation id="5337771866151525739">Ifakwe yinkampani yangaphandle.</translation> +<translation id="5337926771328966926">Igama ledivayisi lamanje lingu-<ph name="DEVICE_NAME" /></translation> <translation id="5338503421962489998">Ukulondoloza kwasendaweni</translation> <translation id="5340638867532133571">Vumela amasayithi ukufaka izibambi zenkokhelo (kuyanconywa)</translation> <translation id="5341793073192892252">Amakhukhi alandelayo aye wavinjwa (amakhukhi wenkampani yangaphandle aye wavinjelwa ngaphandle kokukhishiwe)</translation> @@ -3490,6 +3511,7 @@ <translation id="5379140238605961210">Qhubeka uvimbele ukufinyelela kwemakrofoni</translation> <translation id="5382591305415226340">Phatha izixhumanisi ezisekelwe</translation> <translation id="5383377866517186886">Ikhamera ivaliwe kuzintandokazi zesistimu ye-Mac</translation> +<translation id="5383740867328871413">Iqembu elingaqanjiwe - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">Ibhangqiwe</translation> <translation id="5389237414310520250">Umsebenzisi omusha akakwazanga ukudalwa. Sicela uhlole isikhala sesigcinalwazi sakho nezimvume bese uzama futhi.</translation> <translation id="5390100381392048184">Vumela amasayithi ukuthi adlale umsindo</translation> @@ -3500,6 +3522,7 @@ <translation id="5398497406011404839">Amabhukhimakhi afihliwe</translation> <translation id="5398572795982417028">Ngaphandle kwenketho yekhasi lemikhawulo, umkhawulo ngu-<ph name="MAXIMUM_PAGE" /></translation> <translation id="5398772614898833570">Izikhangiso zivinjewe</translation> +<translation id="5401938042319910061">Qalisa Yonke Imijikelezo</translation> <translation id="5402815541704507626">Landa isibuyekezo usebenzisa idatha yeselula</translation> <translation id="540296380408672091">Hlala uvimbela amakhukhi ku-<ph name="HOST" /></translation> <translation id="540495485885201800">Shintshisana nokwaphambilini</translation> @@ -3782,7 +3805,7 @@ <translation id="5739017626473506901">Ngena ngemvume ukuze usize u-<ph name="USER_NAME" /> angeze i-akhawunti yesikole</translation> <translation id="5739235828260127894">Ilinde ukuqinisekisa. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation> <translation id="5739458112391494395">Yinkulu kakhulu</translation> -<translation id="5740328398383587084">Ukwabelana Eduze</translation> +<translation id="5740328398383587084">UkuThumela Eduze</translation> <translation id="574104302965107104">Isibonisi sokufanisela</translation> <translation id="574209121243317957">Ukuphakama</translation> <translation id="5746169159649715125">Londoloza njenge-PDF</translation> @@ -3816,6 +3839,7 @@ <translation id="57838592816432529">Thulisa</translation> <translation id="5785583009707899920">Izinsiza ze-Chrome File</translation> <translation id="5787146423283493983">Isivumelwano sokhiye</translation> +<translation id="5787420647064736989">Igama ledivaysi</translation> <translation id="5788367137662787332">Uxolo, okungenani ingxenye eyodwa kudivayisi engu-<ph name="DEVICE_LABEL" /> ayikwazanga ukukhwezwa.</translation> <translation id="5790085346892983794">Impumelelo</translation> <translation id="5790651917470750848">Ukudlulisela ngembobo sekukhona kakade</translation> @@ -4253,6 +4277,7 @@ <translation id="6322653941595359182">Thumela futhi wamukele imilayezo kusuka ku-Chromebook yakho</translation> <translation id="6324916366299863871">Hlela isinqamuleli</translation> <translation id="6325191661371220117">Khubaza ukuqalisa ngokuzenzakalela</translation> +<translation id="6325525973963619867">Yehlulekile</translation> <translation id="6326175484149238433">Susa kusuka ku-Chrome</translation> <translation id="6326855256003666642">Ukubala kwe-Keepalive</translation> <translation id="632707535499064463">I-<ph name="ORGANIZATION_NAME" /> ifuna ukuba ubuyekeze le divayisi ngaphambi komnqamulajuqu.</translation> @@ -4280,7 +4305,7 @@ <translation id="6362853299801475928">&Bika inkinga...</translation> <translation id="6365069501305898914">I-Facebook</translation> <translation id="6365411474437319296">Engeza umndeni nabangani</translation> -<translation id="6367985768157257101">Thola Ngokuthumela Eduze?</translation> +<translation id="6367985768157257101">Thola NgokuThumela Eduze?</translation> <translation id="636850387210749493">Ukubhalisa kwebhizinisi</translation> <translation id="6370021412472292592">Ayikwazanga ukulayisha okubonakalayo.</translation> <translation id="6374077068638737855">I-Iceweasel</translation> @@ -4491,6 +4516,7 @@ <translation id="6648911618876616409">Isibuyekezo esibalulekile silungele ukufakwa. Ngena ngemvume ukuze uqalise.</translation> <translation id="6649018507441623493">Linda kancane...</translation> <translation id="6649563841575838401">Ifomethi yokufaka kungobo yomlando ayisekelwe, noma ifayela liphukile.</translation> +<translation id="6650234781371031356">Iphasiwedi yakho ye-<ph name="WEBSITE" /> igcinwe kule divayisi futhi naku-akhawunti yakho ye-Google. Iyiphi ofuna ukuyisusa?</translation> <translation id="665061930738760572">Vula kuwindi &elisha</translation> <translation id="6651237644330755633">Themba lesi sitifiketi sokukhomba amawebhusayithi</translation> <translation id="665355505818177700">Ukuqiniswa kwe-Chrome <ph name="MS_AD_NAME" /> kusekelwa kuphela kuzingxenyekazi ze-x86_64. Ama-Chromebooks akhelwe phezu kwe-ARM noma ingxenyekazi ye-x86 awasekeli lo msebenzi.</translation> @@ -4529,6 +4555,7 @@ <translation id="6701535245008341853">Ayikwazanga ukuthola iphrofayela.</translation> <translation id="6702639462873609204">&Hlela...</translation> <translation id="6703966911896067184">Umdwebo wephutha lokubhalisa</translation> +<translation id="6704062477274546131">Ukulungiswa kwe-DNS</translation> <translation id="6706210727756204531">Uhlelo</translation> <translation id="6707389671160270963">Isitifiketi seklayenti le-SSL</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> nenye ithebhu engu-1}one{<ph name="PAGE_TITLE" /> namanye amathebhu angu-#}other{<ph name="PAGE_TITLE" /> namanye amathebhu angu-#}}</translation> @@ -4586,6 +4613,7 @@ <translation id="677965093459947883">Incane kakhulu</translation> <translation id="6781284683813954823">Isixhumanisi se-Doodle</translation> <translation id="6781978626986383437">Isipele se-Linux sikhanseliwe</translation> +<translation id="6782067259631821405">I-PIN engavumelekile</translation> <translation id="6785915470941880363">Skrolela emuva <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation> <translation id="6786747875388722282">Izandiso</translation> <translation id="6787839852456839824">Izinqamuleli zekhibhodi</translation> @@ -4737,7 +4765,7 @@ <translation id="6965978654500191972">Idivayisi</translation> <translation id="696780070563539690">Amasayithi angasebenzisa amakhukhi ukubona umsebenzi wakho wokuphequlula kuwo wonke amasayithi, ngokwesibonelo, ukwenza izikhangiso zibe ngezakho</translation> <translation id="6968288415730398122">Faka iphasiwedi yakho ukuze ulungiselele ukukhiya kwesikrini</translation> -<translation id="6969047215179982698">Vala Ukwabelana Eduze</translation> +<translation id="6969047215179982698">Vala UkuThumela Eduze</translation> <translation id="6970480684834282392">Uhlobo lokuqalisa</translation> <translation id="6970856801391541997">Phrinta amakhasi athile</translation> <translation id="6972180789171089114">Umsindo/Ividiyo</translation> @@ -4892,6 +4920,7 @@ <translation id="7141105143012495934">Ukungena ngemvume kwehlulekile ngoba imininingwane ye-akhawunti yakho ayikwazanga ukubuyiswa. Sicela uxhumane nomlawuli wakho noma zama futhi.</translation> <translation id="7143207342074048698">Iyaxhuma</translation> <translation id="7144878232160441200">Zama futhi</translation> +<translation id="714876143603641390">Ukuxhumana kwe-LAN</translation> <translation id="7149893636342594995">Amahora angu-24 okugcina</translation> <translation id="715118844758971915">Amaphrinta wakudala</translation> <translation id="7152478047064750137">Lesi sandiso asidingi izimvume ezibalulekile</translation> @@ -5029,6 +5058,7 @@ <translation id="7334274148831027933">Nika amandla isikhulisi esidokhiwe</translation> <translation id="7335974957018254119">Sebenzisela ukuhlola isipele ku-</translation> <translation id="7336799713063880535">Izaziso zivinjelwe.</translation> +<translation id="7337248890521463931">Bonisa imigqa eminingi</translation> <translation id="7338630283264858612">Inombolo yomkhiqizo yedivayisi ayivumelekile.</translation> <translation id="7339763383339757376">I-PKCS #7, isitifiketi esisodwa</translation> <translation id="7339785458027436441">Hlola isipelingi ngenkathi uthayipha</translation> @@ -5410,6 +5440,7 @@ <translation id="7807711621188256451">Vumela njalo i-<ph name="HOST" /> ukuthi ifinyelele kukhamela yakho</translation> <translation id="7810202088502699111">Izigelekeqe ziye zavinjwa kule khasi.</translation> <translation id="781167124805380294">Sakaza i-<ph name="FILE_NAME" /></translation> +<translation id="7814277578404816512">Bona ukuthi yini entsha ku-<ph name="DEVICE_TYPE" /> yakho</translation> <translation id="7814458197256864873">Kopisha</translation> <translation id="7815680994978050279">Ukulanda okuyingozi kuvinjiwe</translation> <translation id="7817361223956157679">Ikhibhodi ekusikrini ayisebenzi nezinhlelo zokusebenza ze-Linux okwamanje</translation> @@ -5639,6 +5670,7 @@ <translation id="8062844841289846053">{COUNT,plural, =1{Ishidi lephepha eli-1}one{amashidi ephepha a-{COUNT}}other{amashidi wephepha a-{COUNT}}}</translation> <translation id="8063235345342641131">Isithombe esizenzakalelayo esiluhlaza</translation> <translation id="8063535366119089408">Buka ifayela</translation> +<translation id="8064279191081105977">Iqembu le-<ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /> - <ph name="COLLAPSED_STATE" /></translation> <translation id="8068253693380742035">Thinta ukuze ungene ngemvume.</translation> <translation id="8069615408251337349">Ukuphrinta kwamafu kwe-Google</translation> <translation id="8071432093239591881">Phrinta njengesithombe</translation> @@ -6384,6 +6416,7 @@ <translation id="8986362086234534611">Khohlwa</translation> <translation id="8986494364107987395">Thumela ngokuzenzakalela izibalo zokusetshenziswa nemibiko yokuphahlazeka ku-Google</translation> <translation id="8987927404178983737">Inyanga</translation> +<translation id="8990209962746788689">Ayikwazi ukudala ikhodi ye-QR</translation> <translation id="8991520179165052608">Isayithi lingasebenzisa imakrofoni yakho</translation> <translation id="8992117551007229513">{COUNT,plural, =1{into e-1}one{izinto ezingu-#}other{izinto ezingu-#}}</translation> <translation id="899384117894244799">Susa umsebenzisi okhawulelwe</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb index 7d0cd52..bc9d39b1 100644 --- a/chrome/app/resources/google_chrome_strings_bg.xtb +++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -176,6 +176,7 @@ <translation id="6291549208091401781">Google Chrome вече е инсталиран за всички потребители на компютъра ви.</translation> <translation id="6338556085225130112">Google Chrome се актуализира</translation> <translation id="6368958679917195344">Chrome OS е възможна благодарение на допълнителен <ph name="BEGIN_LINK_CROS_OSS" />софтуер с отворен код<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Влязохте със служебен профил. Искате ли да създадете в Chrome нов потребителски профил за служебни цели, за да поддържате данните си разделени?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome се актуализира (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Достъп до интернет</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb index 830bf103..3733fb0 100644 --- a/chrome/app/resources/google_chrome_strings_bs.xtb +++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -181,6 +181,7 @@ <translation id="6291549208091401781">Google Chrome je već instaliran za sve korisnike na vašem računaru.</translation> <translation id="6338556085225130112">Ažuriranje Google Chromea</translation> <translation id="6368958679917195344">Chrome OS je moguć zahvaljujući dodatnom <ph name="BEGIN_LINK_CROS_OSS" />softveru otvorenog koda<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Prijavili ste se s poslovnim računom. Želite li kreirati novi Chrome profil za posao da odvojite podatke?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Ažuriranje Google Chromea (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Pristupite internetu</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb index 24dd1d5..1be9767 100644 --- a/chrome/app/resources/google_chrome_strings_cs.xtb +++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -182,6 +182,7 @@ <translation id="6291549208091401781">Prohlížeč Google Chrome je na tomto počítači již nainstalován pro všechny uživatele.</translation> <translation id="6338556085225130112">Aktualizace prohlížeče Google Chrome</translation> <translation id="6368958679917195344">Chrome OS by nemohl existovat bez dalšího <ph name="BEGIN_LINK_CROS_OSS" />softwaru s otevřeným zdrojovým kódem<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Přihlásili jste se pomocí pracovního účtu. Chcete v Chromu vytvořit nový pracovní profil, aby data byla oddělená?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Aktualizace prohlížeče Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Přístup k internetu</translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb index cebe5ea..957f70c 100644 --- a/chrome/app/resources/google_chrome_strings_da.xtb +++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -175,6 +175,7 @@ <translation id="6291549208091401781">Google Chrome er allerede installeret for alle brugere på computeren.</translation> <translation id="6338556085225130112">Opdaterer Google Chrome</translation> <translation id="6368958679917195344">Chrome OS er lavet ved hjælp af <ph name="BEGIN_LINK_CROS_OSS" />open source-software<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Du er logget ind med en arbejdskonto. Vi du oprette en ny Chrome-profil til dit arbejde for at holde dine data adskilt?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome for udviklere</translation> <translation id="6566149418543181476">Opdaterer Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Få adgang til internettet</translation> @@ -225,7 +226,7 @@ <translation id="7962410387636238736">Denne computer modtager ikke længere Google Chrome-opdateringer, da Windows XP og Windows Vista ikke længere understøttes.</translation> <translation id="8008534537613507642">Geninstaller Chrome</translation> <translation id="8013993649590906847">Hvis et billede ikke har en brugbar beskrivelse, forsøger Chrome at angive en for dig. Billederne sendes til Google, så der kan oprettes beskrivelser.</translation> -<translation id="8034040214409724683">Der opstod en fejl i Chrome ved scanningen af software</translation> +<translation id="8034040214409724683">Der opstod en fejl i Chrome ved scanningen af software på enheden</translation> <translation id="8129812357326543296">Om &Google Chrome</translation> <translation id="8255190535488645436">Google Chrome bruger dit kamera og din mikrofon.</translation> <translation id="8286862437124483331">Google Chrome forsøger at vise adgangskoder. Angiv din Windows-adgangskode for at tillade dette.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb index f061a48..dfc9cf1a 100644 --- a/chrome/app/resources/google_chrome_strings_el.xtb +++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -179,6 +179,7 @@ <translation id="6291549208091401781">Το Google Chrome είναι ήδη εγκατεστημένο για όλους τους χρήστες στον υπολογιστή σας.</translation> <translation id="6338556085225130112">Ενημέρωση Google Chrome</translation> <translation id="6368958679917195344">Το Chrome OS έγινε πραγματικότητα χάρη στην ύπαρξη πρόσθετων <ph name="BEGIN_LINK_CROS_OSS" />λογισμικών ανοικτού κώδικα<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Συνδεθήκατε με έναν λογαριασμό εργασίας. Θέλετε να δημιουργήσετε ένα νέο προφίλ Chrome για την εργασία έτσι ώστε να διατηρείτε τα δεδομένα σας ξεχωριστά;</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Ενημέρωση του Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Πρόσβαση στο Διαδίκτυο</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb index d274c96..39495d6 100644 --- a/chrome/app/resources/google_chrome_strings_en-GB.xtb +++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">Google Chrome is already installed for all users on your computer.</translation> <translation id="6338556085225130112">Updating Google Chrome</translation> <translation id="6368958679917195344">Chrome OS is made possible by additional <ph name="BEGIN_LINK_CROS_OSS" />open-source software<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">You signed in with a work account. Would you like to create a new Chrome profile for work to keep your data separate?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Updating Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Access the Internet</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb index bcb961f4..d63e640 100644 --- a/chrome/app/resources/google_chrome_strings_hr.xtb +++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -175,6 +175,7 @@ <translation id="6291549208091401781">Google Chrome već je instaliran za sve korisnike na računalu.</translation> <translation id="6338556085225130112">Ažuriranje Google Chromea</translation> <translation id="6368958679917195344">OS Chrome omogućen je dodatnim <ph name="BEGIN_LINK_CROS_OSS" />softverom otvorenog koda<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Prijavili ste se poslovnim računom. Želite li izraditi novi Chromeov profil za posao da bi podaci ostali odvojeni?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Ažuriranje Google Chromea (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Pristup Internetu</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb index f1390c4..b8c0fbf 100644 --- a/chrome/app/resources/google_chrome_strings_id.xtb +++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -23,7 +23,7 @@ <translation id="162629503687514352">Chrome OS tidak dapat menyinkronkan sandi Anda.</translation> <translation id="1628000112320670027">Dapatkan bantuan Chrome</translation> <translation id="1662639173275167396">Chrome OS terwujud karena adanya <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> tambahan, seperti <ph name="BEGIN_LINK_LINUX_OSS" />Linux (Beta)<ph name="END_LINK_LINUX_OSS" />.</translation> -<translation id="1666409074978194368">Update hampir selesai. Luncurkan kembali Google Chrome untuk menyelesaikan update. Jendela samaran tidak akan dibuka kembali.</translation> +<translation id="1666409074978194368">Update hampir selesai. Luncurkan kembali Google Chrome untuk menyelesaikan update. Jendela Samaran tidak akan dibuka kembali.</translation> <translation id="1674870198290878346">Buka Link di Jendela Sa&maran Chrome</translation> <translation id="1682634494516646069">Google Chrome tidak dapat membaca dan menulis ke direktori datanya: <ph name="USER_DATA_DIRECTORY" /></translation> <translation id="1698376642261615901">Google Chrome adalah browser web yang menjalankan halaman dan aplikasi web secepat kilat. Cepat, stabil, dan mudah digunakan. Jelajahi web secara lebih aman dengan perlindungan terhadap software perusak dan phishing yang disertakan dalam Google Chrome.</translation> @@ -91,7 +91,7 @@ <translation id="3541482654983822893">Chrome tidak dapat memeriksa sandi Anda. Coba lagi setelah 24 jam.</translation> <translation id="3576528680708590453">Administrator sistem Anda telah mengonfigurasi Google Chrome untuk membuka browser alternatif guna mengakses <ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="3582972582564653026">Menyinkronkan dan mempersonalisasi Chrome di perangkat Anda</translation> -<translation id="3596080736082218006">{COUNT,plural, =0{Administrator mewajibkan Anda meluncurkan kembali Chrome untuk menerapkan update}=1{Administrator mewajibkan Anda meluncurkan kembali Chrome untuk menerapkan update. Jendela samaran Anda tidak akan dibuka kembali.}other{Administrator mewajibkan Anda meluncurkan kembali Chrome untuk menerapkan update. # jendela samaran Anda tidak akan dibuka kembali.}}</translation> +<translation id="3596080736082218006">{COUNT,plural, =0{Administrator mewajibkan Anda meluncurkan kembali Chrome untuk menerapkan update}=1{Administrator mewajibkan Anda meluncurkan kembali Chrome untuk menerapkan update. Jendela Samaran Anda tidak akan dibuka kembali.}other{Administrator mewajibkan Anda meluncurkan kembali Chrome untuk menerapkan update. # jendela Samaran Anda tidak akan dibuka kembali.}}</translation> <translation id="3622797965165704966">Kini, menggunakan Chrome dengan Akun Google Anda dan di komputer bersama jadi lebih mudah.</translation> <translation id="3718181793972440140">Tindakan ini akan menghapus 1 item dari perangkat ini. Untuk mengambil data nanti, login ke Chrome sebagai <ph name="USER_EMAIL" />.</translation> <translation id="3735758079232443276">Ekstensi "<ph name="EXTENSION_NAME" />" telah mengubah apa yang ditampilkan oleh halaman saat Anda memulai Chrome.</translation> @@ -153,7 +153,7 @@ <translation id="5657226924540934362">Jika setelan tidak muncul di halaman ini, buka <ph name="LINK_BEGIN" /> setelan Chrome OS<ph name="LINK_END" /> Anda</translation> <translation id="565744775970812598"><ph name="FILE_NAME" /> mungkin berbahaya, sehingga Chrome memblokirnya.</translation> -<translation id="5678190148303298925">{COUNT,plural, =0{Administrator meminta Anda meluncurkan kembali Chrome untuk menerapkan update ini}=1{Administrator meminta Anda meluncurkan kembali Chrome untuk menerapkan update ini. Jendela samaran Anda tidak akan dibuka kembali.}other{Administrator meminta Anda meluncurkan kembali Chrome untuk menerapkan update ini. # jendela samaran Anda tidak akan dibuka kembali.}}</translation> +<translation id="5678190148303298925">{COUNT,plural, =0{Administrator meminta Anda meluncurkan kembali Chrome untuk menerapkan update ini}=1{Administrator meminta Anda meluncurkan kembali Chrome untuk menerapkan update ini. Jendela Samaran Anda tidak akan dibuka kembali.}other{Administrator meminta Anda meluncurkan kembali Chrome untuk menerapkan update ini. # jendela Samaran Anda tidak akan dibuka kembali.}}</translation> <translation id="5686916850681061684">Sesuaikan dan kontrol Google Chrome. Ada sesuatu yang memerlukan perhatian Anda - klik untuk melihat detailnya.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="5715063361988620182">{SECONDS,plural, =1{Google Chrome akan dimulai ulang dalam 1 detik}other{Google Chrome akan dimulai ulang dalam # detik}}</translation> @@ -190,7 +190,7 @@ <translation id="7062128746136194023">Orang tuamu telah menonaktifkan "Izin untuk situs, aplikasi, dan ekstensi" untuk Chrome. Tindakan menambahkan <ph name="EXTENSION_TYPE_PARAMETER" /> ini tidak diizinkan.</translation> <translation id="7098166902387133879">Google Chrome menggunakan mikrofon Anda.</translation> <translation id="7106741999175697885">Pengelola Tugas - Google Chrome</translation> -<translation id="7140653346177713799">{COUNT,plural, =0{Update baru untuk Chrome telah tersedia dan akan diterapkan segera setelah diluncurkan kembali.}=1{Update baru untuk Chrome telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. Jendela samaran Anda tidak akan dibuka kembali.}other{Update baru untuk Chrome telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. # jendela samaran Anda tidak akan dibuka kembali.}}</translation> +<translation id="7140653346177713799">{COUNT,plural, =0{Update baru untuk Chrome telah tersedia dan akan diterapkan segera setelah diluncurkan kembali.}=1{Update baru untuk Chrome telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. Jendela Samaran Anda tidak akan dibuka kembali.}other{Update baru untuk Chrome telah tersedia dan akan diterapkan segera setelah diluncurkan kembali. # jendela Samaran Anda tidak akan dibuka kembali.}}</translation> <translation id="7155997830309522122">Jika ya, edit sandi Anda yang tersimpan di Chrome agar cocok dengan sandi baru Anda.</translation> <translation id="7242029209006116544">Anda masuk dengan akun terkelola dan memberikan administratornya kontrol atas profil Google Chrome Anda. Data Chrome Anda, seperti aplikasi, bookmark, histori, sandi, dan setelan lain selamanya akan dikaitkan ke <ph name="USER_NAME" />. Anda dapat menghapus data ini melalui Dasbor Akun Google, namun Anda tidak akan dapat mengaitkan data ini dengan akun yang lain. Anda dapat membuat profil baru secara opsional untuk menjaga agar data Chrome Anda tetap terpisah. <ph name="LEARN_MORE" /></translation> <translation id="7295052994004373688">Bahasa ini digunakan untuk menampilkan UI Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb index 28b6c27..62112a17 100644 --- a/chrome/app/resources/google_chrome_strings_is.xtb +++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">Google Chrome hefur þegar verið sett upp fyrir alla notendur í tölvunni.</translation> <translation id="6338556085225130112">Uppfærir Google Chrome</translation> <translation id="6368958679917195344">Chrome OS á tilvist sína að þakka öðrum <ph name="BEGIN_LINK_CROS_OSS" />opnum hugbúnaði<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Þú skráðir þig inn með vinnureikningi. Viltu búa til nýtt Chrome vinnusnið til að halda gögnunum þínum aðskildum?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Uppfærir Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Aðgangur að internetinu</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb index dc09456..3d25ef9 100644 --- a/chrome/app/resources/google_chrome_strings_ja.xtb +++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -225,6 +225,7 @@ <translation id="7962410387636238736">Windows XP と Windows Vista はサポートされなくなったため、このパソコンでは今後 Google Chrome のアップデートは受信されません</translation> <translation id="8008534537613507642">Chrome を再インストール</translation> <translation id="8013993649590906847">画像に有効な説明が設定されていない場合に、Chrome で説明を自動的に生成できるよう Google に画像が送信されます。</translation> +<translation id="8034040214409724683">Chrome でデバイスのソフトウェアの確認中にエラーが発生しました</translation> <translation id="8129812357326543296">Google Chrome について(&G)</translation> <translation id="8255190535488645436">Google Chrome がカメラとマイクを使用しています。</translation> <translation id="8286862437124483331">Google Chrome でパスワードを表示しようとしています。続行するには、Windows のパスワードを入力してください。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb index 6c380cc..b595d39f 100644 --- a/chrome/app/resources/google_chrome_strings_lt.xtb +++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">„Google Chrome“ jau įdiegta visiems kompiuterio naudotojams.</translation> <translation id="6338556085225130112">Atnaujinama „Google Chrome“</translation> <translation id="6368958679917195344">„Chrome“ OS galima naudojant papildomą <ph name="BEGIN_LINK_CROS_OSS" />atvirojo šaltinio programinę įrangą<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Prisijungėte naudodami darbo paskyrą. Ar norėtumėte sukurti naują „Chrome“ darbo profilį, kad duomenys būtų saugomi atskirai?</translation> <translation id="6515495397637126556">„<ph name="PAGE_TITLE" />“ – „Google Chrome Dev“</translation> <translation id="6566149418543181476">Atnaujinama „Google Chrome“ (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Interneto prieiga</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb index cc1bebc..3729c715 100644 --- a/chrome/app/resources/google_chrome_strings_no.xtb +++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -175,6 +175,7 @@ <translation id="6291549208091401781">Google Chrome er allerede installert for alle brukerne på datamaskinen din.</translation> <translation id="6338556085225130112">Oppdaterer Google Chrome</translation> <translation id="6368958679917195344">Chrome OS muliggjøres av <ph name="BEGIN_LINK_CROS_OSS" />tilleggsprogramvare med åpen kildekode<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Du har logget på med en jobbkonto. Vil du opprette en ny Chrome-profil for arbeid for å holde dataene dine atskilt?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome for utviklere</translation> <translation id="6566149418543181476">Oppdaterer Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Gå til Internett</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb index 42ca80a..538623f 100644 --- a/chrome/app/resources/google_chrome_strings_pl.xtb +++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -174,6 +174,7 @@ <translation id="6291549208091401781">Google Chrome jest już zainstalowany dla wszystkich użytkowników tego komputera.</translation> <translation id="6338556085225130112">Aktualizuję Google Chrome</translation> <translation id="6368958679917195344">Opracowanie systemu operacyjnego Chrome było możliwe dzięki dodatkowemu <ph name="BEGIN_LINK_CROS_OSS" />oprogramowaniu typu open source<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Używasz konta do pracy. Czy chcesz utworzyć nowy profil Chrome do pracy, by przechowywać dane oddzielnie?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Aktualizuję Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Skorzystaj z internetu</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb index be0ae2b..740cd8a 100644 --- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -1,7 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pt-PT"> -<translation id="1001534784610492198">O arquivo do programa de instalação está corrompido ou é inválido. Transfira de novo o Google Chrome.</translation> +<translation id="1001534784610492198">O arquivo do programa de instalação está corrompido ou é inválido. Descarregue de novo o Google Chrome.</translation> <translation id="102763973188675173">Personalize e controle o Google Chrome. Está disponível uma atualização.</translation> <translation id="1051826050538111504">Existe software prejudicial no seu computador. O Chrome pode removê-lo, restaurar as suas definições e desativar as extensões para que o navegador volte a funcionar normalmente.</translation> <translation id="1065672644894730302">Não é possível ler as suas preferências. Algumas funcionalidades poderão estar indisponíveis e as alterações efetuadas às preferências não serão guardadas.</translation> @@ -80,7 +80,7 @@ <translation id="3360895254066713204">Ajudante do Chrome</translation> <translation id="3379938682270551431">{0,plural, =0{O Chrome será reiniciado agora}=1{O Chrome será reiniciado dentro de 1 segundo}other{O Chrome será reiniciado dentro de # segundos}}</translation> <translation id="3395323229510056640">Obter ajuda relacionada com o Chrome OS</translation> -<translation id="3396977131400919238">Ocorreu um erro no sistema operativo durante a instalação. Transfira de novo o Google Chrome.</translation> +<translation id="3396977131400919238">Ocorreu um erro no sistema operativo durante a instalação. Descarregue de novo o Google Chrome.</translation> <translation id="3398288718845740432">Ocultar no menu do Chrome</translation> <translation id="3434246496373299699">O Chrome pode verificar as suas palavras-passe quando inicia sessão com a sua Conta Google.</translation> <translation id="3451115285585441894">A adicionar ao Chrome...</translation> @@ -104,7 +104,7 @@ <translation id="4053720452172726777">Personalizar e controlar o Google Chrome</translation> <translation id="4143243756087420366">Nome e imagem do Chrome</translation> <translation id="4147555960264124640">Está a iniciar sessão com uma conta gerida e a permitir que o gestor controle o seu perfil do Google Chrome. Os seus dados do Chrome, como aplicações, marcadores, histórico, palavras-passe e outras definições, ficarão associados definitivamente a <ph name="USER_NAME" />. Poderá eliminar estes dados através do Painel de Controlo das Contas Google, mas não poderá associá-los a outra conta. <ph name="LEARN_MORE" /></translation> -<translation id="4149882025268051530">Houve uma falha no programa de instalação ao descompactar o arquivo. Transfira de novo o Google Chrome.</translation> +<translation id="4149882025268051530">Houve uma falha no programa de instalação ao descompactar o arquivo. Descarregue de novo o Google Chrome.</translation> <translation id="4191857738314598978">{0,plural, =1{Reinicie o Chrome dentro de um dia}other{Reinicie o Chrome dentro de # dias}}</translation> <translation id="4205939740494406371">O Chrome não consegue verificar as suas palavras-passe. Tente novamente após 24 horas ou <ph name="BEGIN_LINK" />verifique as palavras-passe na sua Conta Google<ph name="END_LINK" />.</translation> <translation id="424864128008805179">Pretende terminar sessão no Chrome?</translation> @@ -175,6 +175,7 @@ <translation id="6291549208091401781">O Google Chrome já está instalado para todos os utilizadores no seu computador.</translation> <translation id="6338556085225130112">A atualizar o Google Chrome…</translation> <translation id="6368958679917195344">O Chrome OS é possível através de <ph name="BEGIN_LINK_CROS_OSS" />software de código aberto<ph name="END_LINK_CROS_OSS" /> adicional.</translation> +<translation id="6372315130616785175">Iniciou sessão com uma conta profissional. Pretende criar um novo perfil do Chrome para trabalho para manter os seus dados separados?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">A atualizar o Google Chrome (<ph name="PROGRESS_PERCENT" />)…</translation> <translation id="6676384891291319759">Aceder à Internet</translation> @@ -216,7 +217,7 @@ <translation id="7787950393032327779">O perfil parece estar a ser utilizado por outro processo do Google Chrome (<ph name="PROCESS_ID" />) noutro computador (<ph name="HOST_NAME" />). O Chrome bloqueou o perfil para que não seja danificado. Se tiver a certeza de que não existem outros processos a utilizar este perfil, pode desbloqueá-lo e reiniciar o Chrome.</translation> <translation id="7801699035218095297">O Google Chrome está a tentar copiar palavras-passe. Escreva a sua palavra-passe do Windows para permitir esta ação.</translation> <translation id="7808348361785373670">Remover do Chrome...</translation> -<translation id="7825851276765848807">Ocorreu uma falha na instalação devido a um erro não especificado. Transfira novamente o Google Chrome.</translation> +<translation id="7825851276765848807">Ocorreu uma falha na instalação devido a um erro não especificado. Descarregue novamente o Google Chrome.</translation> <translation id="7855730255114109580">O Google Chrome está atualizado</translation> <translation id="7890208801193284374">Se partilhar um computador, os amigos e os familiares podem navegar separadamente e configurar o Chrome da forma que quiserem.</translation> <translation id="7896673875602241923">Anteriormente, alguém iniciou sessão no Chrome neste computador com a conta <ph name="ACCOUNT_EMAIL_LAST" />. Crie um novo utilizador do Chrome para manter as informações em separado.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ro.xtb b/chrome/app/resources/google_chrome_strings_ro.xtb index 5b91eef..fcb5553 100644 --- a/chrome/app/resources/google_chrome_strings_ro.xtb +++ b/chrome/app/resources/google_chrome_strings_ro.xtb
@@ -175,6 +175,7 @@ <translation id="6291549208091401781">Google Chrome este instalat deja pentru toți utilizatorii de pe computerul tău.</translation> <translation id="6338556085225130112">Google Chrome se actualizează</translation> <translation id="6368958679917195344">Sistemul de operare Chrome este posibil datorită unui <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> suplimentar.</translation> +<translation id="6372315130616785175">Te-ai conectat cu un cont de serviciu. Vrei să creezi un profil Chrome pentru serviciu ca să păstrezi datele separat?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome se actualizează (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Accesează internetul</translation>
diff --git a/chrome/app/resources/google_chrome_strings_si.xtb b/chrome/app/resources/google_chrome_strings_si.xtb index 86d2145..e2e4e34 100644 --- a/chrome/app/resources/google_chrome_strings_si.xtb +++ b/chrome/app/resources/google_chrome_strings_si.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">ඔබේ පරිගණකය මත සියලුම පරිශීලකයින් සඳහා Google Chrome දැනටමත් ස්ථාපනය කර ඇත.</translation> <translation id="6338556085225130112">Google Chrome යාවත්කාලීන කරමින්</translation> <translation id="6368958679917195344">Chrome OS යතාර්තයක් බවට පත්කරන වෙනත් <ph name="BEGIN_LINK_CROS_OSS" />විවෘත කේත මෘදුකාංග<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">ඔබ කාර්යාල ගිණුමක් සමගින් පුරා ඇත. ඔබගේ දත්ත වෙන් වෙන්ව තබා ගැනීම සඳහා කාර්යාලය සඳහා නව Chrome පැතිකඩක් තැනීමට ඔබ කැමතිද?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome යාවත්කාලීන කරමින් (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">අන්තර්ජාලය වෙත පිවිසෙන්න</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb index 5aa7a19..e615422 100644 --- a/chrome/app/resources/google_chrome_strings_sl.xtb +++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">Google Chrome je že nameščen za vse uporabnike v računalniku.</translation> <translation id="6338556085225130112">Posodabljanje Google Chroma</translation> <translation id="6368958679917195344">Sistem Chrome OS uporablja dodatno <ph name="BEGIN_LINK_CROS_OSS" />odprtokodno programsko opremo<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Prijavili ste se s službenim računom. Ali želite v Chromu ustvariti nov službeni profil, da bodo podatki ločeni?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> različica Google Chroma za razvijalce</translation> <translation id="6566149418543181476">Posodabljanje Google Chroma (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Dostop do interneta</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb index 7c9bdbe..740efc4 100644 --- a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb +++ b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">Google Chrome je već instaliran za sve korisnike na računaru.</translation> <translation id="6338556085225130112">Ažuriranje Google Chrome-a</translation> <translation id="6368958679917195344">Chrome OS je moguć zahvaljujući dodatnom <ph name="BEGIN_LINK_CROS_OSS" />softver otvorenog koda<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Prijavljeni ste pomoću poslovnog naloga. Da li želite da napravite nov Chrome poslovni profil da bi podaci ostali odvojeni?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Programerska verzija Google Chrome-a</translation> <translation id="6566149418543181476">Ažuriranje Google Chrome-a (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Pristupite Internetu</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb index 36c68ce..029ba6f3 100644 --- a/chrome/app/resources/google_chrome_strings_sr.xtb +++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">Google Chrome је већ инсталиран за све кориснике на рачунару.</translation> <translation id="6338556085225130112">Ажурирање Google Chrome-а</translation> <translation id="6368958679917195344">Chrome OС je могућ захваљујући додатном <ph name="BEGIN_LINK_CROS_OSS" />софтвер отвореног кода<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Пријављени сте помоћу пословног налога. Да ли желите да направите нов Chrome пословни профил да би подаци остали одвојени?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Програмерска верзија Google Chrome-а</translation> <translation id="6566149418543181476">Ажурирање Google Chrome-а (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Приступите Интернету</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb index 9c55e837..5a7ee0f4 100644 --- a/chrome/app/resources/google_chrome_strings_sw.xtb +++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">Tayari Google Chrome imesakinishwa kwa watumiaji wote kwenye kompyuta yako.</translation> <translation id="6338556085225130112">Inasasisha Google Chrome</translation> <translation id="6368958679917195344">Chrome OS imewezeshwa na programu ya ziada ya <ph name="BEGIN_LINK_CROS_OSS" />programu huria<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="6372315130616785175">Umeingia ukitumia akaunti ya kazini. Ungependa kufungua Wasifu mpya wa Kikazi kwenye Chrome ili utenganishe data yako?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome ya Wasanidi Programu</translation> <translation id="6566149418543181476">Inasasisha Google Chrome <ph name="PROGRESS_PERCENT" /></translation> <translation id="6676384891291319759">Fikia wavuti</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zu.xtb b/chrome/app/resources/google_chrome_strings_zu.xtb index d5de046b..a293339 100644 --- a/chrome/app/resources/google_chrome_strings_zu.xtb +++ b/chrome/app/resources/google_chrome_strings_zu.xtb
@@ -183,6 +183,7 @@ <translation id="6291549208091401781">I-Google Chrome isivele ifakelwe bonke abasebenzisi kukhompuyutha yakho.</translation> <translation id="6338556085225130112">Ibuyekeza i-Google Chrome</translation> <translation id="6368958679917195344">I-Chrome OS yenziwa yenzeke nge-<ph name="BEGIN_LINK_CROS_OSS" />softhiwe yelayisense evulekile<ph name="END_LINK_CROS_OSS" /> engeziwe.</translation> +<translation id="6372315130616785175">Ungene ngemvume nge-akhawunti yomsebenzi. Ingabe ungathanda ukudala Iphrofayela Yomsebenzi ye-Chrome entsha ukugcina idatha yakho yehlukile?</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Ibuyekeza i-Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="6676384891291319759">Finyelela i-inthanethi?</translation>
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS index f5f4b34..81935b1 100644 --- a/chrome/browser/DEPS +++ b/chrome/browser/DEPS
@@ -318,7 +318,6 @@ "+extensions/buildflags", "+extensions/grit", "+extensions/test", - "+google/cacheinvalidation", # Sync invalidation API protobuf files. "+google_apis", "+google_update", "+installer_util_strings", # For generated headers
diff --git a/chrome/browser/android/crypto/BUILD.gn b/chrome/browser/android/crypto/BUILD.gn index 1eeabe4..438bf6e 100644 --- a/chrome/browser/android/crypto/BUILD.gn +++ b/chrome/browser/android/crypto/BUILD.gn
@@ -8,6 +8,7 @@ deps = [ "//base:base_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", ] sources = [ "java/src/org/chromium/chrome/browser/crypto/ByteArrayGenerator.java",
diff --git a/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java b/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java index ee06252..9cd4118 100644 --- a/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java +++ b/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java
@@ -7,6 +7,8 @@ import android.annotation.SuppressLint; import android.os.Bundle; +import androidx.annotation.AnyThread; + import org.chromium.base.Log; import org.chromium.base.ObserverList; import org.chromium.base.SecureRandomInitializer; @@ -23,7 +25,6 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; -import javax.annotation.concurrent.ThreadSafe; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.IvParameterSpec; @@ -49,7 +50,7 @@ * Explicitly ending the session destroys the {@link Bundle}, making the previous session's data * unreadable. */ -@ThreadSafe +@AnyThread public class CipherFactory { private static final String TAG = "CipherFactory"; static final int NUM_BYTES = 16;
diff --git a/chrome/browser/android/thin_webview/BUILD.gn b/chrome/browser/android/thin_webview/BUILD.gn index e29fbc5..f47436d 100644 --- a/chrome/browser/android/thin_webview/BUILD.gn +++ b/chrome/browser/android/thin_webview/BUILD.gn
@@ -21,6 +21,7 @@ "//base:base_java", "//components/embedder_support/android:web_contents_delegate_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//ui/android:ui_java", ] }
diff --git a/chrome/browser/android/thin_webview/internal/BUILD.gn b/chrome/browser/android/thin_webview/internal/BUILD.gn index 8ec4528..dd87472a 100644 --- a/chrome/browser/android/thin_webview/internal/BUILD.gn +++ b/chrome/browser/android/thin_webview/internal/BUILD.gn
@@ -42,6 +42,7 @@ "//chrome/browser/android/thin_webview:java", "//components/embedder_support/android:web_contents_delegate_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//ui/android:ui_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
diff --git a/chrome/browser/android/vr/ui_module_factory.cc b/chrome/browser/android/vr/ui_module_factory.cc index 64f0fa14..bf54e1a 100644 --- a/chrome/browser/android/vr/ui_module_factory.cc +++ b/chrome/browser/android/vr/ui_module_factory.cc
@@ -32,9 +32,11 @@ // TODO(https://crbug.com/1019853): When all VR native code moves into the // feature module, this factory will completely disappear. In the meantime, // make it tolerant of two different variants of the VR lib (one for Chrome, - // one for Monochrome). + // one for Monochrome). chrome_64_vr_partition is omitted since it is not + // shipped in 64-bit configuration. const std::vector<const std::string> library_name_possibilities = { "monochrome_vr_partition", + "monochrome_64_vr_partition", "chrome_vr_partition", };
diff --git a/chrome/browser/browser_controls/android/BUILD.gn b/chrome/browser/browser_controls/android/BUILD.gn index 507b77f8..e3cf2af 100644 --- a/chrome/browser/browser_controls/android/BUILD.gn +++ b/chrome/browser/browser_controls/android/BUILD.gn
@@ -19,6 +19,7 @@ "//chrome/browser/flags:java", "//components/browser_ui/util/android:java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//ui/android:ui_java", ] }
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index 8ccdab59..c416e95d 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc
@@ -813,24 +813,24 @@ #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) master_prefs_ = std::make_unique<first_run::MasterPrefs>(); - std::unique_ptr<installer::MasterPreferences> installer_master_prefs = - startup_data_->chrome_feature_list_creator()->TakeMasterPrefs(); - if (!installer_master_prefs) + std::unique_ptr<installer::InitialPreferences> installer_initial_prefs = + startup_data_->chrome_feature_list_creator()->TakeInitialPrefs(); + if (!installer_initial_prefs) return service_manager::RESULT_CODE_NORMAL_EXIT; // On first run, we need to process the predictor preferences before the // browser's profile_manager object is created, but after ResourceBundle // is initialized. - first_run::ProcessMasterPreferencesResult pmp_result = - first_run::ProcessMasterPreferences(user_data_dir_, - std::move(installer_master_prefs), - master_prefs_.get()); - if (pmp_result == first_run::EULA_EXIT_NOW) + first_run::ProcessInitialPreferencesResult pip_result = + first_run::ProcessInitialPreferences(user_data_dir_, + std::move(installer_initial_prefs), + master_prefs_.get()); + if (pip_result == first_run::EULA_EXIT_NOW) return chrome::RESULT_CODE_EULA_REFUSED; // TODO(macourteau): refactor preferences that are copied from // master_preferences into local_state, as a "local_state" section in - // master preferences. If possible, a generic solution would be preferred + // initial preferences. If possible, a generic solution would be preferred // over a copy one-by-one of specific preferences. Also see related TODO // in first_run.h.
diff --git a/chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_launcher.cc b/chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_launcher.cc index 27337c62..47724703 100644 --- a/chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_launcher.cc +++ b/chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_launcher.cc
@@ -55,8 +55,8 @@ delegate_->OnAppInstalling(); DCHECK(!is_installed_); install_task_.reset(new web_app::WebAppInstallTask( - profile_, /*registrar=*/nullptr, /*shortcut_manager=*/nullptr, - /*file_handler_manager=*/nullptr, /*install_finalizer=*/nullptr, + profile_, /*shortcut_manager=*/nullptr, + /*os_integration_manager=*/nullptr, /*install_finalizer=*/nullptr, data_retriever_factory_.Run())); install_task_->LoadAndRetrieveWebApplicationInfoWithIcons( WebKioskAppManager::Get()->GetAppByAccountId(account_id_)->install_url(),
diff --git a/chrome/browser/chromeos/crosapi/README.md b/chrome/browser/chromeos/crosapi/README.md index a4d559b..35b4ca56 100644 --- a/chrome/browser/chromeos/crosapi/README.md +++ b/chrome/browser/chromeos/crosapi/README.md
@@ -1,6 +1,8 @@ This directory contains the ash-chrome implementation of the ChromeOS API -(crosapi) used by lacros-chrome. There are currently two types of files in this -directory: +(//chromeos/crosapi). This is the system implementation of ChromeOS-specific +functionality which lacros-chrome requires. + +There are currently two types of files in this directory: * Files for launching and connecting to lacros-chrome. These are named lacros_foo. * Files that implement the crosapi. These are named foo_crosapi.
diff --git a/chrome/browser/content_settings/content_settings_browsertest.cc b/chrome/browser/content_settings/content_settings_browsertest.cc index 3abff92..6c325340 100644 --- a/chrome/browser/content_settings/content_settings_browsertest.cc +++ b/chrome/browser/content_settings/content_settings_browsertest.cc
@@ -51,6 +51,7 @@ #include "content/public/test/test_utils.h" #include "net/cookies/canonical_cookie_test_helpers.h" #include "net/dns/mock_host_resolver.h" +#include "net/test/embedded_test_server/default_handlers.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/embedded_test_server/http_request.h" #include "net/test/embedded_test_server/http_response.h" @@ -162,13 +163,17 @@ CookieMode WriteMode() const { return GetParam().second; } void SetUpOnMainThread() override { + RegisterDefaultHandlers(embedded_test_server()); embedded_test_server()->RegisterRequestMonitor(base::BindRepeating( &CookieSettingsTest::MonitorRequest, base::Unretained(this))); + RegisterDefaultHandlers(&https_server_); https_server_.RegisterRequestMonitor(base::BindRepeating( &CookieSettingsTest::MonitorRequest, base::Unretained(this))); ASSERT_TRUE(embedded_test_server()->Start()); ASSERT_TRUE(https_server_.Start()); + host_resolver()->AddRule("*", "127.0.0.1"); + // CookieStore API is for https only. if (ReadMode() == CookieMode::kCookieStoreJS || WriteMode() == CookieMode::kCookieStoreJS) @@ -252,11 +257,44 @@ return secure_scheme_ ? embedded_test_server() : &https_server_; } - private: net::EmbeddedTestServer* GetServer() { return secure_scheme_ ? &https_server_ : embedded_test_server(); } + // Read a cookie by fetching a url and checking what Cookie header (if any) it + // saw. + std::string HttpReadCookieWithURL(Browser* browser, const GURL& url) { + { + base::AutoLock auto_lock(cookies_seen_lock_); + cookies_seen_.clear(); + } + + auto* network_context = + content::BrowserContext::GetDefaultStoragePartition(browser->profile()) + ->GetNetworkContext(); + content::LoadBasicRequest(network_context, url); + + { + base::AutoLock auto_lock(cookies_seen_lock_); + return cookies_seen_[url]; + } + } + + // Set a cookie by visiting a page that has a Set-Cookie header. + void HttpWriteCookieWithURL(Browser* browser, const GURL& url) { + auto* frame = + browser->tab_strip_model()->GetActiveWebContents()->GetMainFrame(); + auto* network_context = + content::BrowserContext::GetDefaultStoragePartition(browser->profile()) + ->GetNetworkContext(); + // Need process & frame ID here for the accessed/blocked cookies lists to be + // updated properly. + content::LoadBasicRequest(network_context, url, + frame->GetProcess()->GetID(), + frame->GetRoutingID()); + } + + private: // Read a cookie via JavaScript. std::string JSReadCookie(Browser* browser) { std::string cookies; @@ -282,25 +320,14 @@ .ExtractString(); } - // Read a cookie by fetching a url on the appropriate test server and checking - // what Cookie header (if any) it saw. + // Read a cookie by fetching the page url (which we should have just navigated + // to) and checking what Cookie header (if any) it saw. std::string HttpReadCookie(Browser* browser) { - { - base::AutoLock auto_lock(cookies_seen_lock_); - cookies_seen_.clear(); - } - - auto* network_context = - content::BrowserContext::GetDefaultStoragePartition(browser->profile()) - ->GetNetworkContext(); - content::LoadBasicRequest(network_context, browser->tab_strip_model() - ->GetActiveWebContents() - ->GetLastCommittedURL()); - - { - base::AutoLock auto_lock(cookies_seen_lock_); - return cookies_seen_[GetPageURL()]; - } + GURL url = browser->tab_strip_model() + ->GetActiveWebContents() + ->GetLastCommittedURL(); + EXPECT_EQ(GetPageURL(), url); + return HttpReadCookieWithURL(browser, url); } // Set a cookie with JavaScript. @@ -330,16 +357,7 @@ // Set a cookie by visiting a page that has a Set-Cookie header. void HttpWriteCookie(Browser* browser) { - auto* frame = - browser->tab_strip_model()->GetActiveWebContents()->GetMainFrame(); - auto* network_context = - content::BrowserContext::GetDefaultStoragePartition(browser->profile()) - ->GetNetworkContext(); - // Need process & frame ID here for the accessed/blocked cookies lists to be - // updated properly. - content::LoadBasicRequest(network_context, GetSetCookieURL(), - frame->GetProcess()->GetID(), - frame->GetRoutingID()); + HttpWriteCookieWithURL(browser, GetSetCookieURL()); } void MonitorRequest(const net::test_server::HttpRequest& request) { @@ -458,6 +476,94 @@ EXPECT_TRUE(blocked->empty()); } +// Test that cookies that are considered "blocked" are excluded only due to the +// content settings blocking (i.e. not for other reasons like domain or path not +// matching). See https://crbug.com/1104451. +IN_PROC_BROWSER_TEST_P(CookieSettingsTest, + BlockedCookiesOnlyExcludedDueToBlocking) { + // This test only runs in HTTP mode, not with the full parameterized test + // suite. + if (ReadMode() != CookieMode::kHttp || WriteMode() != CookieMode::kHttp) + return; + + // URLs to get cookies from: + GURL cookies_present_url(GetServer()->GetURL("a.test", "/simple.html")); + GURL cookies_blocked_url( + GetServer()->GetURL("sub.a.test", "/echoheader?Cookie")); + + // URLs to set cookies on: + GURL set_host_cookie_url( + GetServer()->GetURL("a.test", "/set-cookie?host_cookie=1")); + GURL set_path_cookie_url(GetServer()->GetURL( + "sub.a.test", + "/set-cookie?path_cookie=1;domain=a.test;path=/simple.html")); + GURL set_included_cookie_url(GetServer()->GetURL( + "sub.a.test", "/set-cookie?included_cookie=1;domain=a.test")); + + // No cookies are present prior to setting them. + ui_test_utils::NavigateToURL(browser(), cookies_present_url); + ASSERT_TRUE(HttpReadCookieWithURL(browser(), cookies_present_url).empty()); + ui_test_utils::NavigateToURL(browser(), cookies_blocked_url); + ASSERT_TRUE(HttpReadCookieWithURL(browser(), cookies_blocked_url).empty()); + + // Set the cookies. + HttpWriteCookieWithURL(browser(), set_host_cookie_url); + HttpWriteCookieWithURL(browser(), set_path_cookie_url); + HttpWriteCookieWithURL(browser(), set_included_cookie_url); + + // Verify all cookies are present on |cookies_present_url|. + ui_test_utils::NavigateToURL(browser(), cookies_present_url); + HttpReadCookieWithURL(browser(), cookies_present_url); + browsing_data::CannedCookieHelper* accepted = + GetSiteSettingsCookieContainer(browser()); + browsing_data::CannedCookieHelper* blocked = + GetSiteSettingsBlockedCookieContainer(browser()); + EXPECT_EQ(3u, accepted->GetCookieCount()); + EXPECT_TRUE(blocked->empty()); + net::CookieList accepted_cookies = ExtractCookies(accepted); + EXPECT_THAT(accepted_cookies, + net::MatchesCookieLine( + "included_cookie=1; host_cookie=1; path_cookie=1")); + + // Verify there is only one included cookie for |cookies_blocked_url|. + ui_test_utils::NavigateToURL(browser(), cookies_blocked_url); + HttpReadCookieWithURL(browser(), cookies_blocked_url); + accepted = GetSiteSettingsCookieContainer(browser()); + blocked = GetSiteSettingsBlockedCookieContainer(browser()); + EXPECT_EQ(1u, accepted->GetCookieCount()); + EXPECT_TRUE(blocked->empty()); + accepted_cookies = ExtractCookies(accepted); + EXPECT_THAT(accepted_cookies, net::MatchesCookieLine("included_cookie=1")); + + // Set content settings to block cookies for |cookies_blocked_url|. + ui_test_utils::NavigateToURL(browser(), cookies_blocked_url); + content_settings::CookieSettings* settings = + CookieSettingsFactory::GetForProfile(browser()->profile()).get(); + settings->SetCookieSetting(cookies_blocked_url, CONTENT_SETTING_BLOCK); + + // Verify all cookies are still present on |cookies_present_url|. + ui_test_utils::NavigateToURL(browser(), cookies_present_url); + HttpReadCookieWithURL(browser(), cookies_present_url); + accepted = GetSiteSettingsCookieContainer(browser()); + blocked = GetSiteSettingsBlockedCookieContainer(browser()); + EXPECT_EQ(3u, accepted->GetCookieCount()); + EXPECT_TRUE(blocked->empty()); + accepted_cookies = ExtractCookies(accepted); + EXPECT_THAT(accepted_cookies, + net::MatchesCookieLine( + "included_cookie=1; host_cookie=1; path_cookie=1")); + + // Verify there is only one blocked cookie on |cookies_blocked_url|. + ui_test_utils::NavigateToURL(browser(), cookies_blocked_url); + HttpReadCookieWithURL(browser(), cookies_blocked_url); + accepted = GetSiteSettingsCookieContainer(browser()); + blocked = GetSiteSettingsBlockedCookieContainer(browser()); + EXPECT_TRUE(accepted->empty()); + EXPECT_EQ(1u, blocked->GetCookieCount()); + net::CookieList blocked_cookies = ExtractCookies(blocked); + EXPECT_THAT(blocked_cookies, net::MatchesCookieLine("included_cookie=1")); +} + IN_PROC_BROWSER_TEST_P(CookieSettingsTest, BlockCookiesAlsoBlocksCacheStorage) { ui_test_utils::NavigateToURL(browser(), GetPageURL()); content_settings::CookieSettings* settings =
diff --git a/chrome/browser/contextmenu/BUILD.gn b/chrome/browser/contextmenu/BUILD.gn index cf6a844..b03f074 100644 --- a/chrome/browser/contextmenu/BUILD.gn +++ b/chrome/browser/contextmenu/BUILD.gn
@@ -19,5 +19,6 @@ "//base:base_java", "//components/embedder_support/android:context_menu_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", ] }
diff --git a/chrome/browser/download/android/BUILD.gn b/chrome/browser/download/android/BUILD.gn index 2e4b335..4640e14df 100644 --- a/chrome/browser/download/android/BUILD.gn +++ b/chrome/browser/download/android/BUILD.gn
@@ -69,6 +69,7 @@ "//components/prefs/android:java", "//components/user_prefs/android:java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:androidx_fragment_fragment_java", "//third_party/android_deps:androidx_preference_preference_java", @@ -83,7 +84,14 @@ android_library_factory("factory_java") { # These deps will be inherited by the resulting android_library target. - deps = [ ":java" ] + deps = [ + ":java", + "//base:base_java", + "//chrome/browser/ui/messages/android:java", + "//components/feature_engagement:feature_engagement_java", + "//components/offline_items_collection/core:core_java", + "//ui/android:ui_java", + ] # This internal file will be replaced by a generated file so the resulting # android_library target does not actually depend on this internal file. @@ -114,9 +122,11 @@ ":java", "//base:base_java", "//base:base_java_test_support", + "//chrome/browser/flags:java", "//chrome/test/android:chrome_java_test_support", "//components/browser_ui/util/android:java", "//components/offline_items_collection/core:core_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_support_test_runner:runner_java", "//third_party/junit", "//third_party/mockito:mockito_java",
diff --git a/chrome/browser/download/android/java/res/layout/download_later_dialog.xml b/chrome/browser/download/android/java/res/layout/download_later_dialog.xml index 88af8d7..97598bb4 100644 --- a/chrome/browser/download/android/java/res/layout/download_later_dialog.xml +++ b/chrome/browser/download/android/java/res/layout/download_later_dialog.xml
@@ -37,27 +37,26 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <!-- TODO(xingliu): Use 0 paddingStart for RadioButtonWithDescription. See crbug.com/1090062 --> <!-- TODO(xingliu): Adjust margin between RadioButtonWithDescription. See crbug.com/1090155 --> <org.chromium.components.browser_ui.widget.RadioButtonWithDescription android:id="@+id/download_now" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingStart="1dp" + android:paddingStart="@dimen/download_dialog_radio_button_margin_start" app:primaryText="@string/download_later_download_now_text" /> <org.chromium.components.browser_ui.widget.RadioButtonWithDescription android:id="@+id/on_wifi" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingStart="1dp" + android:paddingStart="@dimen/download_dialog_radio_button_margin_start" app:primaryText="@string/download_later_on_wifi_text" /> <org.chromium.components.browser_ui.widget.RadioButtonWithDescription android:id="@+id/choose_date_time" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingStart="1dp" + android:paddingStart="@dimen/download_dialog_radio_button_margin_start" app:primaryText="@string/download_later_pick_time_text" /> </org.chromium.components.browser_ui.widget.RadioButtonWithDescriptionLayout> @@ -68,7 +67,7 @@ android:layout_height="wrap_content" android:layout_marginTop="11dp" android:layout_marginBottom="11dp" - android:layout_marginStart="-5dp" + android:layout_marginStart="@dimen/download_dialog_checkbox_margin_start" android:text="@string/download_location_dialog_checkbox" style="@style/TextAppearance.TextMedium.Tertiary" android:visibility="gone" />
diff --git a/chrome/browser/download/android/java/res/layout/download_location_dialog.xml b/chrome/browser/download/android/java/res/layout/download_location_dialog.xml index 209526c4..f94f10f 100644 --- a/chrome/browser/download/android/java/res/layout/download_location_dialog.xml +++ b/chrome/browser/download/android/java/res/layout/download_location_dialog.xml
@@ -77,7 +77,7 @@ android:layout_height="wrap_content" android:text="@string/download_location_dialog_checkbox" android:layout_marginTop="16dp" - android:layout_marginStart="-5dp"/> + android:layout_marginStart="@dimen/download_dialog_checkbox_margin_start"/> </LinearLayout>
diff --git a/chrome/browser/download/android/java/res/values-v17/dimens.xml b/chrome/browser/download/android/java/res/values-v17/dimens.xml index 990f552..afc05086 100644 --- a/chrome/browser/download/android/java/res/values-v17/dimens.xml +++ b/chrome/browser/download/android/java/res/values-v17/dimens.xml
@@ -6,4 +6,6 @@ <resources xmlns:tools="http://schemas.android.com/tools"> <dimen name="download_dialog_title_margin_bottom">3dp</dimen> <dimen name="download_dialog_subtitle_margin_bottom">10dp</dimen> + <dimen name="download_dialog_radio_button_margin_start">-5dp</dimen> + <dimen name="download_dialog_checkbox_margin_start">-5dp</dimen> </resources>
diff --git a/chrome/browser/engagement/android/BUILD.gn b/chrome/browser/engagement/android/BUILD.gn index 7a1138c..719956e 100644 --- a/chrome/browser/engagement/android/BUILD.gn +++ b/chrome/browser/engagement/android/BUILD.gn
@@ -22,9 +22,11 @@ ":java", "//base:base_java_test_support", "//chrome/android:chrome_java", + "//chrome/browser/flags:java", "//chrome/browser/profiles/android:java", "//chrome/browser/tab:java", "//chrome/test/android:chrome_java_test_support", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/junit:junit", ] }
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index 26af710..4b63b6d 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc
@@ -2135,22 +2135,27 @@ std::set<std::string> blocklisted; ExtensionIdSet greylist; ExtensionIdSet unchanged; - for (const auto& it : state_map) { - // If it was previously disabled remotely for malware, do not remove from - // the blocklisted_extensions set. The disable reason should be removed - // first before updating its blocklist state. - if (extension_prefs_->HasDisableReason( - it.first, disable_reason::DISABLE_REMOTELY_FOR_MALWARE)) { - unchanged.insert(it.first); - continue; - } + // If it was previously disabled remotely for malware, do not remove from + // the blocklisted_extensions set. The disable reason should be removed + // first before updating its blocklist state. Thus, we add these extensions + // to |unchanged| set. + for (const auto& extension_id : + registry_->blocklisted_extensions().GetIDs()) { + if (extension_prefs_->HasDisableReason( + extension_id, disable_reason::DISABLE_REMOTELY_FOR_MALWARE)) { + unchanged.insert(extension_id); + } + } + + for (const auto& it : state_map) { switch (it.second) { case NOT_BLOCKLISTED: break; case BLOCKLISTED_MALWARE: - blocklisted.insert(it.first); + if (!base::Contains(unchanged, it.first)) + blocklisted.insert(it.first); break; case BLOCKLISTED_SECURITY_VULNERABILITY:
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h index ee355da3..c5922244 100644 --- a/chrome/browser/extensions/extension_service.h +++ b/chrome/browser/extensions/extension_service.h
@@ -716,6 +716,7 @@ FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, DestroyingProfileClearsExtensions); FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, SetUnsetBlocklistInPrefs); + FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, NoUnsetBlocklistInPrefs); FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, BlocklistedExtensionWillNotInstall); FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc index 60c58bc..552d6316 100644 --- a/chrome/browser/extensions/extension_service_unittest.cc +++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -3398,6 +3398,46 @@ EXPECT_TRUE(ValidateBooleanPref(good2, kPrefBlocklist, true)); EXPECT_FALSE(IsPrefExist("invalid_id", kPrefBlocklist)); } + +// Tests that an extension that was disabled through Omaha won't be +// re-enabled if it's not present in the Safe Browsing blocklist. +// Regression test for https://crbug.com/1107040. +TEST_F(ExtensionServiceTest, NoUnsetBlocklistInPrefs) { + TestBlocklist test_blocklist; + // A profile with 3 extensions installed: good0, good1, and good2. + // We really only care about good0 for this test since the other + // functionality is already tested in the above test. + InitializeGoodInstalledExtensionService(); + test_blocklist.Attach(service()->blocklist_); + service()->Init(); + + EXPECT_TRUE(registry()->enabled_extensions().Contains(good0)); + EXPECT_FALSE(registry()->blocklisted_extensions().Contains(good0)); + + base::Value attributes(base::Value::Type::DICTIONARY); + attributes.SetKey("_malware", base::Value(true)); + + ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); + service()->PerformActionBasedOnOmahaAttributes(good0, attributes); + EXPECT_EQ(disable_reason::DISABLE_REMOTELY_FOR_MALWARE, + prefs->GetDisableReasons(good0)); + EXPECT_TRUE(IsPrefExist(good0, kPrefBlocklist)); + EXPECT_FALSE(registry()->enabled_extensions().Contains(good0)); + EXPECT_TRUE(registry()->blocklisted_extensions().Contains(good0)); + + // Un-blocklist all extensions. + test_blocklist.Clear(false); + content::RunAllTasksUntilIdle(); + + // If the extension has a DISABLE_REMOTELY_FOR_MALWARE disable reason, + // the extension should still not be enabled even if it's no on the + // SB blocklist. This disable reason needs to be removed prior to + // unblocklisting/re-enabling. + EXPECT_FALSE(registry()->enabled_extensions().Contains(good0)); + EXPECT_TRUE(registry()->blocklisted_extensions().Contains(good0)); + EXPECT_TRUE(ValidateBooleanPref(good0, kPrefBlocklist, true)); + EXPECT_FALSE(IsPrefExist(good1, kPrefBlocklist)); +} #endif // defined(ENABLE_BLOCKLIST_TESTS) #if defined(ENABLE_BLOCKLIST_TESTS)
diff --git a/chrome/browser/first_run/first_run.cc b/chrome/browser/first_run/first_run.cc index 42ac312..e40356f 100644 --- a/chrome/browser/first_run/first_run.cc +++ b/chrome/browser/first_run/first_run.cc
@@ -233,7 +233,7 @@ namespace internal { void SetupInitialPrefsFromInstallPrefs( - const installer::MasterPreferences& install_prefs, + const installer::InitialPreferences& install_prefs, MasterPrefs* out_prefs) { ConvertStringVectorToGURLVector( install_prefs.GetFirstRunTabs(), &out_prefs->new_tabs); @@ -376,7 +376,7 @@ GetInitialPrefsPathForTesting() = initial_prefs; } -std::unique_ptr<installer::MasterPreferences> LoadInitialPrefs() { +std::unique_ptr<installer::InitialPreferences> LoadInitialPrefs() { base::FilePath initial_prefs_path; if (!GetInitialPrefsPathForTesting().empty()) initial_prefs_path = GetInitialPrefsPathForTesting(); @@ -387,15 +387,15 @@ if (initial_prefs_path.empty()) return nullptr; auto initial_prefs = - std::make_unique<installer::MasterPreferences>(initial_prefs_path); + std::make_unique<installer::InitialPreferences>(initial_prefs_path); if (!initial_prefs->read_from_file()) return nullptr; return initial_prefs; } -ProcessMasterPreferencesResult ProcessMasterPreferences( +ProcessInitialPreferencesResult ProcessInitialPreferences( const base::FilePath& user_data_dir, - std::unique_ptr<installer::MasterPreferences> initial_prefs, + std::unique_ptr<installer::InitialPreferences> initial_prefs, MasterPrefs* out_prefs) { DCHECK(!user_data_dir.empty()); @@ -437,8 +437,8 @@ // Use |profile|'s PrefService to determine what to import. It will reflect in // order: // 1) Policies. - // 2) Master preferences (used to initialize user prefs in - // ProcessMasterPreferences()). + // 2) Initial preferences (used to initialize user prefs in + // ProcessInitialPreferences()). // 3) Recommended policies. // 4) Registered default. PrefService* prefs = profile->GetPrefs();
diff --git a/chrome/browser/first_run/first_run.h b/chrome/browser/first_run/first_run.h index 92647ee..2b2f814f 100644 --- a/chrome/browser/first_run/first_run.h +++ b/chrome/browser/first_run/first_run.h
@@ -48,17 +48,17 @@ AUTO_IMPORT_BOOKMARKS_FILE_IMPORTED = 1 << 2, }; -enum ProcessMasterPreferencesResult { +enum ProcessInitialPreferencesResult { FIRST_RUN_PROCEED = 0, // Proceed with first run. EULA_EXIT_NOW, // Should immediately exit due to EULA flow. }; -// See ProcessMasterPreferences for more info about this structure. +// See ProcessInitialPreferences for more info about this structure. struct MasterPrefs { MasterPrefs(); ~MasterPrefs(); - // TODO(macourteau): as part of the master preferences refactoring effort, + // TODO(macourteau): as part of the initial preferences refactoring effort, // remove items from here which are being stored temporarily only to be later // dumped into local_state. Also see related TODO in chrome_browser_main.cc. @@ -119,10 +119,6 @@ // Returns true if |contents| hosts one of the welcome pages. bool IsOnWelcomePage(content::WebContents* contents); -// Iterates over the given tabs, replacing "magic words" designated for -// use in Master Preferences files with corresponding URLs. -std::vector<GURL> ProcessMasterPrefsTabs(const std::vector<GURL>& tabs); - // Sets a flag that will cause ShouldDoPersonalDataManagerFirstRun() // to return true exactly once, so that the browser loads // PersonalDataManager once the main message loop gets going. @@ -136,7 +132,7 @@ bool ShouldDoPersonalDataManagerFirstRun(); // Automatically imports items requested by |profile|'s configuration (sum of -// policies and master prefs). Also imports bookmarks from file if +// policies and initial prefs). Also imports bookmarks from file if // |import_bookmarks_path| is not empty. void AutoImport(Profile* profile, const std::string& import_bookmarks_path); @@ -151,19 +147,19 @@ // values in AutoImportState. uint16_t auto_import_state(); -// Set a master preferences file path that overrides platform defaults. +// Set a initial preferences file path that overrides platform defaults. void SetInitialPrefsPathForTesting(const base::FilePath& master_prefs); -// Loads master preferences from the master preference file into the installer -// master preferences. Returns the pointer to installer::MasterPreferences +// Loads initial preferences from the initial preference file into the installer +// initial preferences. Returns the pointer to installer::InitialPreferences // object if successful; otherwise, returns nullptr. -std::unique_ptr<installer::MasterPreferences> LoadInitialPrefs(); +std::unique_ptr<installer::InitialPreferences> LoadInitialPrefs(); // The master_preferences is a JSON file with the same entries as the // 'Default\Preferences' file. This function locates this file from a standard // location, processes it, and uses its content to initialize the preferences // for the profile pointed to by |user_data_dir|. After processing the file, -// this function returns a value from the ProcessMasterPreferencesResult enum, +// this function returns a value from the ProcessInitialPreferencesResult enum, // indicating whether the first run flow should be shown, skipped, or whether // the browser should exit. // @@ -172,9 +168,9 @@ // // See chrome/installer/util/master_preferences.h for a description of // 'master_preferences' file. -ProcessMasterPreferencesResult ProcessMasterPreferences( +ProcessInitialPreferencesResult ProcessInitialPreferences( const base::FilePath& user_data_dir, - std::unique_ptr<installer::MasterPreferences> install_prefs, + std::unique_ptr<installer::InitialPreferences> initial_prefs, MasterPrefs* out_prefs); } // namespace first_run
diff --git a/chrome/browser/first_run/first_run_internal.h b/chrome/browser/first_run/first_run_internal.h index 29d5477..e31bbf55 100644 --- a/chrome/browser/first_run/first_run_internal.h +++ b/chrome/browser/first_run/first_run_internal.h
@@ -15,6 +15,7 @@ namespace installer { class MasterPreferences; +using InitialPreferences = MasterPreferences; } namespace first_run { @@ -31,7 +32,7 @@ // Sets up initial preferences by preferences passed by installer. void SetupInitialPrefsFromInstallPrefs( - const installer::MasterPreferences& install_prefs, + const installer::InitialPreferences& install_prefs, MasterPrefs* out_prefs); // Get the file path of the first run sentinel; returns false on failure. @@ -54,7 +55,7 @@ // Shows the EULA dialog if required. Returns true if the EULA is accepted, // returns false if the EULA has not been accepted, in which case the browser // should exit. -bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs); +bool ShowPostInstallEULAIfNeeded(installer::InitialPreferences* install_prefs); // Returns the path for the initial preferences file. base::FilePath InitialPrefsPath();
diff --git a/chrome/browser/first_run/first_run_internal_posix.cc b/chrome/browser/first_run/first_run_internal_posix.cc index d6f97e1..1873861 100644 --- a/chrome/browser/first_run/first_run_internal_posix.cc +++ b/chrome/browser/first_run/first_run_internal_posix.cc
@@ -113,7 +113,7 @@ return !GetFirstRunSentinelFilePath(&sentinel) || base::PathExists(sentinel); } -bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs) { +bool ShowPostInstallEULAIfNeeded(installer::InitialPreferences* install_prefs) { // The EULA is only handled on Windows. return true; }
diff --git a/chrome/browser/first_run/first_run_internal_win.cc b/chrome/browser/first_run/first_run_internal_win.cc index 6852fc2..ce05b6e 100644 --- a/chrome/browser/first_run/first_run_internal_win.cc +++ b/chrome/browser/first_run/first_run_internal_win.cc
@@ -69,7 +69,7 @@ // Returns true if the EULA is required but has not been accepted by this user. // The EULA is considered having been accepted if the user has gotten past // first run in the "other" environment (desktop or metro). -bool IsEULANotAccepted(installer::MasterPreferences* install_prefs) { +bool IsEULANotAccepted(installer::InitialPreferences* install_prefs) { bool value = false; if (install_prefs->GetBool(installer::master_preferences::kRequireEula, &value) && value) { @@ -125,7 +125,7 @@ return !GetFirstRunSentinelFilePath(&sentinel) || base::PathExists(sentinel); } -bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs) { +bool ShowPostInstallEULAIfNeeded(installer::InitialPreferences* install_prefs) { if (IsEULANotAccepted(install_prefs)) { // Show the post-installation EULA. This is done by setup.exe and the // result determines if we continue or not. We wait here until the user
diff --git a/chrome/browser/first_run/first_run_unittest.cc b/chrome/browser/first_run/first_run_unittest.cc index d8e65925..75be548a 100644 --- a/chrome/browser/first_run/first_run_unittest.cc +++ b/chrome/browser/first_run/first_run_unittest.cc
@@ -34,7 +34,7 @@ }; TEST_F(FirstRunTest, SetupInitialPrefsFromInstallPrefs_NoVariationsSeed) { - installer::MasterPreferences install_prefs("{ }"); + installer::InitialPreferences install_prefs("{ }"); EXPECT_TRUE(install_prefs.master_dictionary().empty()); EXPECT_TRUE(install_prefs.GetCompressedVariationsSeed().empty()); @@ -43,7 +43,7 @@ TEST_F(FirstRunTest, SetupInitialPrefsFromInstallPrefs_VariationsSeedSignature) { - installer::MasterPreferences install_prefs( + installer::InitialPreferences install_prefs( "{\"variations_compressed_seed\":\"xyz\"," " \"variations_seed_signature\":\"abc\"}"); EXPECT_EQ(2U, install_prefs.master_dictionary().size());
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 480e055..3ee4b09e 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -1525,6 +1525,11 @@ "expiry_milestone": 86 }, { + "name": "enable-fullpage-screenshot", + "owners": [ "jmentasti", "seblalancette" ], + "expiry_milestone": 90 + }, + { "name": "enable-future-v8-vm-features", "owners": [ "hablich" ], // This flag enables the rolling set of upcoming V8 features, for early @@ -3621,7 +3626,7 @@ { "name": "recover-from-never-save-android", "owners": [ "ioanap" ], - "expiry_milestone": 85 + "expiry_milestone": 88 }, { "name": "reduce-display-notifications",
diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn index d26786b7..3ec0632f 100644 --- a/chrome/browser/flags/BUILD.gn +++ b/chrome/browser/flags/BUILD.gn
@@ -18,6 +18,7 @@ "//base:base_java", "//base:jni_java", "//chrome/browser/preferences:java", + "//third_party/android_deps:androidx_annotation_annotation_java", ] srcjar_deps = [ ":chrome_android_java_switches_srcjar" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] @@ -64,6 +65,7 @@ "//base:base_junit_test_support", "//base/test:test_support_java", "//chrome/test/android:chrome_java_test_support", + "//third_party/android_deps:robolectric_all_java", "//third_party/junit", ] } @@ -81,6 +83,7 @@ "//base/test:test_support_java", "//chrome/android:chrome_java", "//chrome/test/android:chrome_java_test_support", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_sdk:android_test_mock_java", "//third_party/android_support_test_runner:runner_java", "//third_party/junit",
diff --git a/chrome/browser/image_fetcher/BUILD.gn b/chrome/browser/image_fetcher/BUILD.gn index 58766c1..7822872 100644 --- a/chrome/browser/image_fetcher/BUILD.gn +++ b/chrome/browser/image_fetcher/BUILD.gn
@@ -12,6 +12,7 @@ "//chrome/browser/util:java", "//components/browser_ui/util/android:java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/gif_player:gif_player_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
diff --git a/chrome/browser/lite_video/lite_video_decider.cc b/chrome/browser/lite_video/lite_video_decider.cc index 7c68de9..f7d5910 100644 --- a/chrome/browser/lite_video/lite_video_decider.cc +++ b/chrome/browser/lite_video/lite_video_decider.cc
@@ -114,8 +114,12 @@ } base::Optional<LiteVideoHint> LiteVideoDecider::CanApplyLiteVideo( - content::NavigationHandle* navigation_handle) { + content::NavigationHandle* navigation_handle, + LiteVideoBlocklistReason* blocklist_reason) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(blocklist_reason); + if (blocklist_reason) + *blocklist_reason = LiteVideoBlocklistReason::kUnknown; if (!IsLiteVideoAllowedForUser(Profile::FromBrowserContext( navigation_handle->GetWebContents()->GetBrowserContext()))) { @@ -147,24 +151,25 @@ if (is_reload || (navigation_handle->GetPageTransition() & ui::PAGE_TRANSITION_FORWARD_BACK)) { user_blocklist_->AddNavigationToBlocklist(navigation_handle, true); + *blocklist_reason = is_reload + ? LiteVideoBlocklistReason::kNavigationReload + : LiteVideoBlocklistReason::kNavigationForwardBack; ScopedLiteVideoDecisionRecorder scoped_decision_recorder( - is_reload ? LiteVideoBlocklistReason::kNavigationReload - : LiteVideoBlocklistReason::kNavigationForwardBack, - navigation_handle->IsInMainFrame()); + *blocklist_reason, navigation_handle->IsInMainFrame()); return base::nullopt; } - auto blocklist_reason = + *blocklist_reason = user_blocklist_->IsLiteVideoAllowedOnNavigation(navigation_handle); ScopedLiteVideoDecisionRecorder scoped_decision_recorder( - blocklist_reason, navigation_handle->IsInMainFrame()); + *blocklist_reason, navigation_handle->IsInMainFrame()); base::Optional<LiteVideoHint> hint = hint_cache_->GetHintForNavigationURL(url); if (hint) scoped_decision_recorder.set_has_hint_for_host(true); - if (blocklist_reason != LiteVideoBlocklistReason::kAllowed || !hint) + if (*blocklist_reason != LiteVideoBlocklistReason::kAllowed || !hint) return base::nullopt; // The navigation will have the LiteVideo optimization triggered so
diff --git a/chrome/browser/lite_video/lite_video_decider.h b/chrome/browser/lite_video/lite_video_decider.h index cbda7ea1..1f4f49a 100644 --- a/chrome/browser/lite_video/lite_video_decider.h +++ b/chrome/browser/lite_video/lite_video_decider.h
@@ -37,9 +37,11 @@ // Determine if the navigation can have the LiteVideo optimization // applied and returns the LiteVideoHint to use for throttling if one exists. // This also updates the blocklist based on the navigation provided and should - // be limited to one call per navigation. + // be limited to one call per navigation. |blocklist_reason| will be + // populated, if applicable. base::Optional<LiteVideoHint> CanApplyLiteVideo( - content::NavigationHandle* navigation_handle); + content::NavigationHandle* navigation_handle, + LiteVideoBlocklistReason* blocklist_reason); // Override the blocklist used by |this| for testing. void SetUserBlocklistForTesting(
diff --git a/chrome/browser/lite_video/lite_video_decider_unittest.cc b/chrome/browser/lite_video/lite_video_decider_unittest.cc index bb0f48d..a6bf024 100644 --- a/chrome/browser/lite_video/lite_video_decider_unittest.cc +++ b/chrome/browser/lite_video/lite_video_decider_unittest.cc
@@ -100,14 +100,16 @@ base::Optional<lite_video::LiteVideoHint> CanApplyOnSubframeNavigation( const GURL& mainframe_url, - const GURL& subframe_url) { + const GURL& subframe_url, + lite_video::LiteVideoBlocklistReason* blocklist_reason) { // Needed so that a mainframe navigation exists. NavigateAndCommit(mainframe_url); content::RenderFrameHostTester* rfh_tester = content::RenderFrameHostTester::For(main_rfh()); content::RenderFrameHost* subframe = rfh_tester->AppendChild("subframe"); content::MockNavigationHandle navigation_handle(subframe_url, subframe); - return lite_video_decider_->CanApplyLiteVideo(&navigation_handle); + return lite_video_decider()->CanApplyLiteVideo(&navigation_handle, + blocklist_reason); } void SeedLiteVideoHintCache(const GURL& gurl, @@ -144,9 +146,13 @@ content::MockNavigationHandle navigation_handle(web_contents()); navigation_handle.set_url(GURL("chrome:://about")); navigation_handle.set_page_transition(ui::PAGE_TRANSITION_TYPED); + lite_video::LiteVideoBlocklistReason blocklist_reason = + lite_video::LiteVideoBlocklistReason::kAllowed; base::Optional<lite_video::LiteVideoHint> hint = - lite_video_decider()->CanApplyLiteVideo(&navigation_handle); + lite_video_decider()->CanApplyLiteVideo(&navigation_handle, + &blocklist_reason); EXPECT_FALSE(hint); + EXPECT_EQ(blocklist_reason, lite_video::LiteVideoBlocklistReason::kUnknown); histogram_tester.ExpectTotalCount( "LiteVideo.CanApplyLiteVideo.UserBlocklist.MainFrame", 0); histogram_tester.ExpectTotalCount( @@ -162,9 +168,13 @@ content::MockNavigationHandle navigation_handle(web_contents()); navigation_handle.set_url(GURL("https://NoVideo.com")); navigation_handle.set_page_transition(ui::PAGE_TRANSITION_TYPED); + lite_video::LiteVideoBlocklistReason blocklist_reason; base::Optional<lite_video::LiteVideoHint> hint = - lite_video_decider()->CanApplyLiteVideo(&navigation_handle); + lite_video_decider()->CanApplyLiteVideo(&navigation_handle, + &blocklist_reason); EXPECT_FALSE(hint); + EXPECT_EQ(blocklist_reason, + lite_video::LiteVideoBlocklistReason::kNavigationBlocklisted); histogram_tester.ExpectUniqueSample( "LiteVideo.CanApplyLiteVideo.UserBlocklist.MainFrame", lite_video::LiteVideoBlocklistReason::kNavigationBlocklisted, 1); @@ -179,10 +189,13 @@ content::MockNavigationHandle navigation_handle(web_contents()); navigation_handle.set_url(GURL("https://NoVideo.com")); navigation_handle.set_page_transition(ui::PAGE_TRANSITION_TYPED); + lite_video::LiteVideoBlocklistReason blocklist_reason; base::Optional<lite_video::LiteVideoHint> hint = - lite_video_decider()->CanApplyLiteVideo(&navigation_handle); + lite_video_decider()->CanApplyLiteVideo(&navigation_handle, + &blocklist_reason); EXPECT_FALSE(hint); + EXPECT_EQ(blocklist_reason, lite_video::LiteVideoBlocklistReason::kAllowed); histogram_tester.ExpectUniqueSample( "LiteVideo.CanApplyLiteVideo.UserBlocklist.MainFrame", lite_video::LiteVideoBlocklistReason::kAllowed, 1); @@ -204,10 +217,13 @@ /*kilobytes_to_buffer_before_throttle=*/500); SeedLiteVideoHintCache(url, seeded_hint); + lite_video::LiteVideoBlocklistReason blocklist_reason; base::Optional<lite_video::LiteVideoHint> hint = - lite_video_decider()->CanApplyLiteVideo(&navigation_handle); + lite_video_decider()->CanApplyLiteVideo(&navigation_handle, + &blocklist_reason); ASSERT_TRUE(hint); + EXPECT_EQ(blocklist_reason, lite_video::LiteVideoBlocklistReason::kAllowed); EXPECT_EQ(seeded_hint.target_downlink_bandwidth_kbps(), hint->target_downlink_bandwidth_kbps()); EXPECT_EQ(seeded_hint.target_downlink_rtt_latency_ms(), @@ -237,9 +253,12 @@ /*kilobytes_to_buffer_before_throttle=*/500); SeedLiteVideoHintCache(url, seeded_hint); + lite_video::LiteVideoBlocklistReason blocklist_reason; base::Optional<lite_video::LiteVideoHint> hint = - lite_video_decider()->CanApplyLiteVideo(&navigation_handle); + lite_video_decider()->CanApplyLiteVideo(&navigation_handle, + &blocklist_reason); EXPECT_FALSE(hint); + EXPECT_EQ(blocklist_reason, lite_video::LiteVideoBlocklistReason::kUnknown); histogram_tester.ExpectTotalCount( "LiteVideo.CanApplyLiteVideo.UserBlocklist.MainFrame", 0); histogram_tester.ExpectTotalCount( @@ -262,10 +281,12 @@ /*kilobytes_to_buffer_before_throttle=*/500); SeedLiteVideoHintCache(url, seeded_hint); - base::Optional<lite_video::LiteVideoHint> hint = - CanApplyOnSubframeNavigation(GURL("https://mainframe.com"), url); + lite_video::LiteVideoBlocklistReason blocklist_reason; + base::Optional<lite_video::LiteVideoHint> hint = CanApplyOnSubframeNavigation( + GURL("https://mainframe.com"), url, &blocklist_reason); ASSERT_TRUE(hint); + EXPECT_EQ(blocklist_reason, lite_video::LiteVideoBlocklistReason::kAllowed); EXPECT_EQ(seeded_hint.target_downlink_bandwidth_kbps(), hint->target_downlink_bandwidth_kbps()); EXPECT_EQ(seeded_hint.target_downlink_rtt_latency_ms(), @@ -296,9 +317,13 @@ /*kilobytes_to_buffer_before_throttle=*/500); SeedLiteVideoHintCache(url, seeded_hint); + lite_video::LiteVideoBlocklistReason blocklist_reason; base::Optional<lite_video::LiteVideoHint> hint = - lite_video_decider()->CanApplyLiteVideo(&navigation_handle); + lite_video_decider()->CanApplyLiteVideo(&navigation_handle, + &blocklist_reason); EXPECT_FALSE(hint); + EXPECT_EQ(blocklist_reason, + lite_video::LiteVideoBlocklistReason::kNavigationReload); histogram_tester.ExpectUniqueSample( "LiteVideo.CanApplyLiteVideo.UserBlocklist.MainFrame", lite_video::LiteVideoBlocklistReason::kNavigationReload, 1); @@ -323,9 +348,13 @@ /*kilobytes_to_buffer_before_throttle=*/500); SeedLiteVideoHintCache(url, seeded_hint); + lite_video::LiteVideoBlocklistReason blocklist_reason; base::Optional<lite_video::LiteVideoHint> hint = - lite_video_decider()->CanApplyLiteVideo(&navigation_handle); + lite_video_decider()->CanApplyLiteVideo(&navigation_handle, + &blocklist_reason); EXPECT_FALSE(hint); + EXPECT_EQ(blocklist_reason, + lite_video::LiteVideoBlocklistReason::kNavigationForwardBack); histogram_tester.ExpectUniqueSample( "LiteVideo.CanApplyLiteVideo.UserBlocklist.MainFrame", lite_video::LiteVideoBlocklistReason::kNavigationForwardBack, 1);
diff --git a/chrome/browser/lite_video/lite_video_features.cc b/chrome/browser/lite_video/lite_video_features.cc index d91e62e..e73e91b2e 100644 --- a/chrome/browser/lite_video/lite_video_features.cc +++ b/chrome/browser/lite_video/lite_video_features.cc
@@ -21,6 +21,11 @@ return base::FeatureList::IsEnabled(::features::kLiteVideo); } +bool IsCoinflipExperimentEnabled() { + return base::GetFieldTrialParamByFeatureAsBool(::features::kLiteVideo, + "is_coinflip_exp", false); +} + base::Optional<base::Value> GetLiteVideoOriginHintsFromFieldTrial() { if (!IsLiteVideoEnabled()) return base::nullopt;
diff --git a/chrome/browser/lite_video/lite_video_features.h b/chrome/browser/lite_video/lite_video_features.h index 94588c2..b83c572 100644 --- a/chrome/browser/lite_video/lite_video_features.h +++ b/chrome/browser/lite_video/lite_video_features.h
@@ -20,6 +20,11 @@ // adaptive bitrates of media streams is enabled. Currently disabled by default. bool IsLiteVideoEnabled(); +// Whether the LiteVideo coinflip experiment is enabled. The coinflip +// experiment is a counterfactual experiment that decides whether LiteVideos +// should be heldback on a per navigation basis. +bool IsCoinflipExperimentEnabled(); + // Return the origins that are whitelisted for using the LiteVideo optimization // and the parameters needed to throttle media requests for that origin. base::Optional<base::Value> GetLiteVideoOriginHintsFromFieldTrial();
diff --git a/chrome/browser/lite_video/lite_video_keyed_service_browsertest.cc b/chrome/browser/lite_video/lite_video_keyed_service_browsertest.cc index ef5f9f46..e678973 100644 --- a/chrome/browser/lite_video/lite_video_keyed_service_browsertest.cc +++ b/chrome/browser/lite_video/lite_video_keyed_service_browsertest.cc
@@ -2,17 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/browser_process.h" #include "chrome/browser/lite_video/lite_video_keyed_service.h" +#include "base/command_line.h" #include "base/run_loop.h" #include "base/task/thread_pool/thread_pool_instance.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "build/build_config.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/lite_video/lite_video_features.h" #include "chrome/browser/lite_video/lite_video_hint.h" #include "chrome/browser/lite_video/lite_video_keyed_service_factory.h" +#include "chrome/browser/lite_video/lite_video_observer.h" #include "chrome/browser/lite_video/lite_video_switches.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" @@ -20,11 +22,14 @@ #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" #include "components/metrics/content/subprocess_metrics_provider.h" +#include "components/ukm/test_ukm_recorder.h" #include "content/public/browser/web_contents.h" #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/network_connection_change_simulator.h" #include "net/nqe/effective_connection_type.h" +#include "services/metrics/public/cpp/ukm_builders.h" +#include "services/metrics/public/cpp/ukm_source.h" #include "services/network/public/mojom/network_change_manager.mojom-shared.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/page_transition_types.h" @@ -111,6 +116,8 @@ {::features::kLiteVideo}, {{"lite_video_origin_hints", "{\"litevideo.com\": 123}"}, {"user_blocklist_opt_out_history_threshold", "1"}}); + + SetUpHTTPSServer(); InProcessBrowserTest::SetUp(); } @@ -127,6 +134,16 @@ cmd->AppendSwitch(lite_video::switches::kLiteVideoIgnoreNetworkConditions); } + void SetUpHTTPSServer() { + https_server_ = std::make_unique<net::EmbeddedTestServer>( + net::EmbeddedTestServer::TYPE_HTTPS); + https_server_->ServeFilesFromSourceDirectory("chrome/test/data/previews"); + ASSERT_TRUE(https_server_->Start()); + + https_url_ = https_server_->GetURL("/iframe_blank.html"); + ASSERT_TRUE(https_url().SchemeIs(url::kHttpsScheme)); + } + // Sets the effective connection type that the Network Quality Tracker will // report. void SetEffectiveConnectionType( @@ -149,8 +166,12 @@ const base::HistogramTester* histogram_tester() { return &histogram_tester_; } + GURL https_url() { return https_url_; } + private: base::test::ScopedFeatureList scoped_feature_list_; + std::unique_ptr<net::EmbeddedTestServer> https_server_; + GURL https_url_; base::HistogramTester histogram_tester_; }; @@ -163,6 +184,7 @@ IN_PROC_BROWSER_TEST_F(LiteVideoKeyedServiceBrowserTest, LiteVideoCanApplyLiteVideo_UnsupportedScheme) { WaitForBlocklistToBeLoaded(); + ukm::TestAutoSetUkmRecorder ukm_recorder; EXPECT_TRUE( LiteVideoKeyedServiceFactory::GetForProfile(browser()->profile())); @@ -171,6 +193,9 @@ ui_test_utils::NavigateToURL(browser(), GURL("chrome://testserver.com")); histogram_tester()->ExpectTotalCount("LiteVideo.Navigation.HasHint", 0); + auto entries = + ukm_recorder.GetEntriesByName(ukm::builders::LiteVideo::kEntryName); + EXPECT_EQ(0u, entries.size()); } // Fails occasionally on ChromeOS. http://crbug.com/1102563 @@ -183,14 +208,15 @@ #endif IN_PROC_BROWSER_TEST_F(LiteVideoKeyedServiceBrowserTest, MAYBE_LiteVideoCanApplyLiteVideo_NoHintForHost) { + ukm::TestAutoSetUkmRecorder ukm_recorder; SetEffectiveConnectionType( net::EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_4G); WaitForBlocklistToBeLoaded(); EXPECT_TRUE( LiteVideoKeyedServiceFactory::GetForProfile(browser()->profile())); - + GURL navigation_url("https://testserver.com"); // Navigate metrics get recorded. - ui_test_utils::NavigateToURL(browser(), GURL("https://testserver.com")); + ui_test_utils::NavigateToURL(browser(), navigation_url); EXPECT_GT(RetryForHistogramUntilCountReached( *histogram_tester(), "LiteVideo.Navigation.HasHint", 1), @@ -202,10 +228,22 @@ lite_video::LiteVideoBlocklistReason::kAllowed, 1); histogram_tester()->ExpectTotalCount( "LiteVideo.CanApplyLiteVideo.UserBlocklist.SubFrame", 0); + auto entries = + ukm_recorder.GetEntriesByName(ukm::builders::LiteVideo::kEntryName); + ASSERT_EQ(1u, entries.size()); + auto* entry = entries[0]; + ukm_recorder.ExpectEntrySourceHasUrl(entry, navigation_url); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kNotAllowed)); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kBlocklistReasonName, + static_cast<int>(lite_video::LiteVideoBlocklistReason::kAllowed)); } IN_PROC_BROWSER_TEST_F(LiteVideoKeyedServiceBrowserTest, LiteVideoCanApplyLiteVideo_HasHint) { + ukm::TestAutoSetUkmRecorder ukm_recorder; SetEffectiveConnectionType( net::EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_4G); WaitForBlocklistToBeLoaded(); @@ -227,10 +265,22 @@ lite_video::LiteVideoBlocklistReason::kAllowed, 1); histogram_tester()->ExpectTotalCount( "LiteVideo.CanApplyLiteVideo.UserBlocklist.SubFrame", 0); + auto entries = + ukm_recorder.GetEntriesByName(ukm::builders::LiteVideo::kEntryName); + ASSERT_EQ(1u, entries.size()); + auto* entry = entries[0]; + ukm_recorder.ExpectEntrySourceHasUrl(entry, navigation_url); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kAllowed)); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kBlocklistReasonName, + static_cast<int>(lite_video::LiteVideoBlocklistReason::kAllowed)); } IN_PROC_BROWSER_TEST_F(LiteVideoKeyedServiceBrowserTest, LiteVideoCanApplyLiteVideo_Reload) { + ukm::TestAutoSetUkmRecorder ukm_recorder; WaitForBlocklistToBeLoaded(); EXPECT_TRUE( LiteVideoKeyedServiceFactory::GetForProfile(browser()->profile())); @@ -267,10 +317,34 @@ lite_video::LiteVideoBlocklistReason::kNavigationBlocklisted, 1); histogram_tester()->ExpectTotalCount( "LiteVideo.CanApplyLiteVideo.UserBlocklist.SubFrame", 0); + + auto entries = + ukm_recorder.GetEntriesByName(ukm::builders::LiteVideo::kEntryName); + ASSERT_EQ(2u, entries.size()); + auto* entry = entries[0]; + ukm_recorder.ExpectEntrySourceHasUrl(entry, url); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kNotAllowed)); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kBlocklistReasonName, + static_cast<int>( + lite_video::LiteVideoBlocklistReason::kNavigationReload)); + + entry = entries[1]; + ukm_recorder.ExpectEntrySourceHasUrl(entry, url); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kNotAllowed)); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kBlocklistReasonName, + static_cast<int>( + lite_video::LiteVideoBlocklistReason::kNavigationBlocklisted)); } IN_PROC_BROWSER_TEST_F(LiteVideoKeyedServiceBrowserTest, LiteVideoCanApplyLiteVideo_ForwardBack) { + ukm::TestAutoSetUkmRecorder ukm_recorder; WaitForBlocklistToBeLoaded(); EXPECT_TRUE( LiteVideoKeyedServiceFactory::GetForProfile(browser()->profile())); @@ -307,10 +381,34 @@ lite_video::LiteVideoBlocklistReason::kNavigationBlocklisted, 1); histogram_tester()->ExpectTotalCount( "LiteVideo.CanApplyLiteVideo.UserBlocklist.SubFrame", 0); + + auto entries = + ukm_recorder.GetEntriesByName(ukm::builders::LiteVideo::kEntryName); + ASSERT_EQ(2u, entries.size()); + auto* entry = entries[0]; + ukm_recorder.ExpectEntrySourceHasUrl(entry, url); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kNotAllowed)); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kBlocklistReasonName, + static_cast<int>( + lite_video::LiteVideoBlocklistReason::kNavigationForwardBack)); + + entry = entries[1]; + ukm_recorder.ExpectEntrySourceHasUrl(entry, url); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kNotAllowed)); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kBlocklistReasonName, + static_cast<int>( + lite_video::LiteVideoBlocklistReason::kNavigationBlocklisted)); } IN_PROC_BROWSER_TEST_F(LiteVideoKeyedServiceBrowserTest, MultipleNavigationsNotBlocklisted) { + ukm::TestAutoSetUkmRecorder ukm_recorder; WaitForBlocklistToBeLoaded(); EXPECT_TRUE( LiteVideoKeyedServiceFactory::GetForProfile(browser()->profile())); @@ -345,6 +443,19 @@ lite_video::LiteVideoBlocklistReason::kAllowed, 2); histogram_tester()->ExpectTotalCount( "LiteVideo.CanApplyLiteVideo.UserBlocklist.SubFrame", 0); + + auto entries = + ukm_recorder.GetEntriesByName(ukm::builders::LiteVideo::kEntryName); + ASSERT_EQ(2u, entries.size()); + for (auto* entry : entries) { + ukm_recorder.ExpectEntrySourceHasUrl(entry, url); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kAllowed)); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kBlocklistReasonName, + static_cast<int>(lite_video::LiteVideoBlocklistReason::kAllowed)); + } } // This test fails on Windows because of the backing store for the blocklist. @@ -489,3 +600,93 @@ histogram_tester()->ExpectTotalCount( "LiteVideo.CanApplyLiteVideo.UserBlocklist.SubFrame", 0); } + +IN_PROC_BROWSER_TEST_F(LiteVideoKeyedServiceBrowserTest, + LiteVideoCanApplyLiteVideo_NavigationWithSubframe) { + ukm::TestAutoSetUkmRecorder ukm_recorder; + SetEffectiveConnectionType( + net::EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_4G); + WaitForBlocklistToBeLoaded(); + EXPECT_TRUE( + LiteVideoKeyedServiceFactory::GetForProfile(browser()->profile())); + + // Navigate metrics get recorded. + ui_test_utils::NavigateToURL(browser(), https_url()); + + EXPECT_EQ(RetryForHistogramUntilCountReached( + *histogram_tester(), "LiteVideo.Navigation.HasHint", 2), + 2); + histogram_tester()->ExpectBucketCount("LiteVideo.Navigation.HasHint", false, + 2); + histogram_tester()->ExpectBucketCount( + "LiteVideo.CanApplyLiteVideo.UserBlocklist.MainFrame", + lite_video::LiteVideoBlocklistReason::kAllowed, 1); + histogram_tester()->ExpectBucketCount( + "LiteVideo.CanApplyLiteVideo.UserBlocklist.SubFrame", + lite_video::LiteVideoBlocklistReason::kAllowed, 1); + + auto entries = + ukm_recorder.GetEntriesByName(ukm::builders::LiteVideo::kEntryName); + ASSERT_EQ(2u, entries.size()); + for (auto* entry : entries) { + // Both entries should be tied to the mainframe url. + ukm_recorder.ExpectEntrySourceHasUrl(entry, https_url()); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kNotAllowed)); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kBlocklistReasonName, + static_cast<int>(lite_video::LiteVideoBlocklistReason::kAllowed)); + } +} + +class LiteVideoKeyedServiceCoinflipBrowserTest + : public LiteVideoKeyedServiceBrowserTest { + public: + LiteVideoKeyedServiceCoinflipBrowserTest() = default; + ~LiteVideoKeyedServiceCoinflipBrowserTest() override = default; + + void SetUp() override { + scoped_feature_list_.InitAndEnableFeatureWithParameters( + {::features::kLiteVideo}, {{"is_coinflip_exp", "true"}}); + SetUpHTTPSServer(); + InProcessBrowserTest::SetUp(); + } + + private: + base::test::ScopedFeatureList scoped_feature_list_; +}; + +IN_PROC_BROWSER_TEST_F(LiteVideoKeyedServiceCoinflipBrowserTest, + LiteVideoCanApplyLiteVideo_CoinflipHoldback) { + base::CommandLine::ForCurrentProcess()->AppendSwitch( + lite_video::switches::kLiteVideoForceOverrideDecision); + base::CommandLine::ForCurrentProcess()->AppendSwitch( + lite_video::switches::kLiteVideoForceCoinflipHoldback); + ukm::TestAutoSetUkmRecorder ukm_recorder; + SetEffectiveConnectionType( + net::EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_4G); + WaitForBlocklistToBeLoaded(); + EXPECT_TRUE( + LiteVideoKeyedServiceFactory::GetForProfile(browser()->profile())); + + // Navigate metrics get recorded. + ui_test_utils::NavigateToURL(browser(), https_url()); + + EXPECT_EQ(RetryForHistogramUntilCountReached( + *histogram_tester(), "LiteVideo.Navigation.HasHint", 2), + 2); + histogram_tester()->ExpectBucketCount("LiteVideo.Navigation.HasHint", true, + 2); + + auto entries = + ukm_recorder.GetEntriesByName(ukm::builders::LiteVideo::kEntryName); + ASSERT_EQ(2u, entries.size()); + for (auto* entry : entries) { + // Both entries should be tied to the mainframe url. + ukm_recorder.ExpectEntrySourceHasUrl(entry, https_url()); + ukm_recorder.ExpectEntryMetric( + entry, ukm::builders::LiteVideo::kThrottlingStartDecisionName, + static_cast<int>(lite_video::LiteVideoDecision::kHoldback)); + } +}
diff --git a/chrome/browser/lite_video/lite_video_observer.cc b/chrome/browser/lite_video/lite_video_observer.cc index 7b420c2..af29099 100644 --- a/chrome/browser/lite_video/lite_video_observer.cc +++ b/chrome/browser/lite_video/lite_video_observer.cc
@@ -6,15 +6,21 @@ #include "base/metrics/histogram_macros_local.h" #include "base/optional.h" +#include "base/rand_util.h" #include "chrome/browser/lite_video/lite_video_decider.h" #include "chrome/browser/lite_video/lite_video_features.h" #include "chrome/browser/lite_video/lite_video_hint.h" #include "chrome/browser/lite_video/lite_video_keyed_service.h" #include "chrome/browser/lite_video/lite_video_keyed_service_factory.h" +#include "chrome/browser/lite_video/lite_video_switches.h" #include "chrome/browser/lite_video/lite_video_util.h" #include "chrome/browser/profiles/profile.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/web_contents.h" +#include "services/metrics/public/cpp/ukm_builders.h" +#include "services/metrics/public/cpp/ukm_recorder.h" +#include "services/metrics/public/cpp/ukm_source.h" +#include "services/metrics/public/cpp/ukm_source_id.h" #include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" #include "third_party/blink/public/common/features.h" @@ -37,6 +43,15 @@ return nullptr; } +// Returns the result of a coinflip. +bool GetCoinflipExperimentState() { + if (!lite_video::features::IsCoinflipExperimentEnabled()) + return false; + if (lite_video::switches::ShouldForceCoinflipHoldback()) + return true; + return base::RandInt(0, 1); +} + } // namespace // static @@ -55,6 +70,12 @@ LiteVideoObserver::~LiteVideoObserver() = default; +void LiteVideoObserver::DidStartNavigation( + content::NavigationHandle* navigation_handle) { + if (navigation_handle->IsInMainFrame()) + current_mainframe_navigation_id_.reset(); +} + void LiteVideoObserver::DidFinishNavigation( content::NavigationHandle* navigation_handle) { DCHECK(navigation_handle); @@ -66,14 +87,53 @@ if (!lite_video_decider_) return; + lite_video::LiteVideoBlocklistReason blocklist_reason = + lite_video::LiteVideoBlocklistReason::kUnknown; base::Optional<lite_video::LiteVideoHint> hint = - lite_video_decider_->CanApplyLiteVideo(navigation_handle); + lite_video_decider_->CanApplyLiteVideo(navigation_handle, + &blocklist_reason); + + if (navigation_handle->IsInMainFrame()) { + DCHECK(!current_mainframe_navigation_id_); + current_mainframe_navigation_id_ = navigation_handle->GetNavigationId(); + // The coinflip state should only be updated on a mainframe navigation. + is_coinflip_holdback_ = GetCoinflipExperimentState(); + } + + // TODO(crbug/1097792): Record these metrics when the renderer associated with + // this navigation ends and the result from the renderer is available. + lite_video::LiteVideoDecision decision = + MakeLiteVideoDecision(navigation_handle, hint); + + RecordUKMMetrics(decision, blocklist_reason); LOCAL_HISTOGRAM_BOOLEAN("LiteVideo.Navigation.HasHint", hint ? true : false); // TODO(crbug/1082553): Add logic to pass the hint via the // ResourceLoadingAgent to the LiteVideoAgent for use when throttling media - // requests. + // requests. Only pass a hint if the decision is kAllowed. +} + +lite_video::LiteVideoDecision LiteVideoObserver::MakeLiteVideoDecision( + content::NavigationHandle* navigation_handle, + base::Optional<lite_video::LiteVideoHint> hint) const { + if (hint) { + return is_coinflip_holdback_ ? lite_video::LiteVideoDecision::kHoldback + : lite_video::LiteVideoDecision::kAllowed; + } + return lite_video::LiteVideoDecision::kNotAllowed; +} + +void LiteVideoObserver::RecordUKMMetrics( + lite_video::LiteVideoDecision decision, + lite_video::LiteVideoBlocklistReason blocklist_reason) { + DCHECK(current_mainframe_navigation_id_); + ukm::SourceId ukm_source_id = ukm::ConvertToSourceId( + *current_mainframe_navigation_id_, ukm::SourceIdType::NAVIGATION_ID); + ukm::builders::LiteVideo builder(ukm_source_id); + builder.SetThrottlingStartDecision(static_cast<int>(decision)) + .SetBlocklistReason(static_cast<int>(blocklist_reason)) + .Record(ukm::UkmRecorder::Get()); } WEB_CONTENTS_USER_DATA_KEY_IMPL(LiteVideoObserver)
diff --git a/chrome/browser/lite_video/lite_video_observer.h b/chrome/browser/lite_video/lite_video_observer.h index 8871826..6dae1dec 100644 --- a/chrome/browser/lite_video/lite_video_observer.h +++ b/chrome/browser/lite_video/lite_video_observer.h
@@ -6,7 +6,9 @@ #define CHROME_BROWSER_LITE_VIDEO_LITE_VIDEO_OBSERVER_H_ #include "base/macros.h" +#include "base/optional.h" #include "base/timer/timer.h" +#include "chrome/browser/lite_video/lite_video_user_blocklist.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" @@ -17,6 +19,24 @@ namespace lite_video { class LiteVideoDecider; +class LiteVideoHint; + +// The decision if a navigation should attempt to throttle media requests. +// This should be kept in sync with LiteVideoDecision in enums.xml. +enum class LiteVideoDecision { + kUnknown, + // The navigation is allowed by all types of this LiteVideoUserBlocklist. + kAllowed, + // The navigation is not allowed by all types of this LiteVideoUserBlocklist. + kNotAllowed, + // The navigation is allowed by all types of this LiteVideoUserBlocklist but + // the optimization was heldback for counterfactual experiments. + kHoldback, + + // Insert new values before this line. + kMaxValue = kHoldback, +}; + } // namespace lite_video class LiteVideoObserver @@ -32,13 +52,36 @@ explicit LiteVideoObserver(content::WebContents* web_contents); // content::WebContentsObserver. + void DidStartNavigation( + content::NavigationHandle* navigation_handle) override; void DidFinishNavigation( content::NavigationHandle* navigation_handle) override; + // Determines the LiteVideoDecision based on |hint| and the coinflip + // holdback state. + lite_video::LiteVideoDecision MakeLiteVideoDecision( + content::NavigationHandle* navigation_handle, + base::Optional<lite_video::LiteVideoHint> hint) const; + + // Records the metrics for LiteVideos applied to any frames associated with + // the current mainframe navigation id. Called once per frame. + void RecordUKMMetrics(lite_video::LiteVideoDecision decision, + lite_video::LiteVideoBlocklistReason blocklist_reason); + // The decider capable of making decisions about whether LiteVideos should be // applied and the params to use when throttling media requests. lite_video::LiteVideoDecider* lite_video_decider_ = nullptr; + // The current navigation id of the mainframe navigation being observed. Used + // for recording tying all UKM metrics to the mainframe navigation source. + base::Optional<int64_t> current_mainframe_navigation_id_; + + // Whether the navigations currently being observed should have the LiteVideo + // optimization heldback due to a coinflip, counterfactual experiment. + // |is_coinflip_holdback_| is updated each time a mainframe navigation + // commits. + bool is_coinflip_holdback_ = false; + WEB_CONTENTS_USER_DATA_KEY_DECL(); };
diff --git a/chrome/browser/lite_video/lite_video_switches.cc b/chrome/browser/lite_video/lite_video_switches.cc index 254027b..6ad41df 100644 --- a/chrome/browser/lite_video/lite_video_switches.cc +++ b/chrome/browser/lite_video/lite_video_switches.cc
@@ -19,6 +19,10 @@ const char kLiteVideoForceOverrideDecision[] = "lite-video-force-override-decision"; +// Forces the coinflip used for a counterfactual experiment to be true. +const char kLiteVideoForceCoinflipHoldback[] = + "lite-video-force-coinflip-holdback"; + bool ShouldIgnoreLiteVideoNetworkConditions() { return base::CommandLine::ForCurrentProcess()->HasSwitch( kLiteVideoIgnoreNetworkConditions); @@ -29,5 +33,10 @@ kLiteVideoForceOverrideDecision); } +bool ShouldForceCoinflipHoldback() { + return base::CommandLine::ForCurrentProcess()->HasSwitch( + kLiteVideoForceCoinflipHoldback); +} + } // namespace switches } // namespace lite_video
diff --git a/chrome/browser/lite_video/lite_video_switches.h b/chrome/browser/lite_video/lite_video_switches.h index ea9df4e..39c0f97 100644 --- a/chrome/browser/lite_video/lite_video_switches.h +++ b/chrome/browser/lite_video/lite_video_switches.h
@@ -12,6 +12,7 @@ extern const char kLiteVideoIgnoreNetworkConditions[]; extern const char kLiteVideoForceOverrideDecision[]; +extern const char kLiteVideoForceCoinflipHoldback[]; // Returns true if checking the network condition should be ignored. bool ShouldIgnoreLiteVideoNetworkConditions(); @@ -20,6 +21,10 @@ // overridden and allow LiteVideos to be enabled for every navigation. bool ShouldOverrideLiteVideoDecision(); +// Returns true if the coinflip experiment should be set to true, resulting +// in LiteVideos being heldback. +bool ShouldForceCoinflipHoldback(); + } // namespace switches } // namespace lite_video
diff --git a/chrome/browser/media/history/media_history_keyed_service_factory.cc b/chrome/browser/media/history/media_history_keyed_service_factory.cc index a932734c..94bf122 100644 --- a/chrome/browser/media/history/media_history_keyed_service_factory.cc +++ b/chrome/browser/media/history/media_history_keyed_service_factory.cc
@@ -22,8 +22,7 @@ // static MediaHistoryKeyedServiceFactory* MediaHistoryKeyedServiceFactory::GetInstance() { - static base::NoDestructor<MediaHistoryKeyedServiceFactory> factory; - return factory.get(); + return base::Singleton<MediaHistoryKeyedServiceFactory>::get(); } MediaHistoryKeyedServiceFactory::MediaHistoryKeyedServiceFactory()
diff --git a/chrome/browser/media/history/media_history_keyed_service_factory.h b/chrome/browser/media/history/media_history_keyed_service_factory.h index 93f40216..cf7bfbc 100644 --- a/chrome/browser/media/history/media_history_keyed_service_factory.h +++ b/chrome/browser/media/history/media_history_keyed_service_factory.h
@@ -5,7 +5,7 @@ #ifndef CHROME_BROWSER_MEDIA_HISTORY_MEDIA_HISTORY_KEYED_SERVICE_FACTORY_H_ #define CHROME_BROWSER_MEDIA_HISTORY_MEDIA_HISTORY_KEYED_SERVICE_FACTORY_H_ -#include "base/no_destructor.h" +#include "base/memory/singleton.h" #include "components/keyed_service/content/browser_context_keyed_service_factory.h" class KeyedService; @@ -29,7 +29,7 @@ bool ServiceIsCreatedWithBrowserContext() const override; private: - friend class base::NoDestructor<MediaHistoryKeyedServiceFactory>; + friend struct base::DefaultSingletonTraits<MediaHistoryKeyedServiceFactory>; MediaHistoryKeyedServiceFactory(); ~MediaHistoryKeyedServiceFactory() override;
diff --git a/chrome/browser/media/history/media_history_store.cc b/chrome/browser/media/history/media_history_store.cc index 5e3f656a..6acbf7a 100644 --- a/chrome/browser/media/history/media_history_store.cc +++ b/chrome/browser/media/history/media_history_store.cc
@@ -174,6 +174,8 @@ scoped_refptr<base::UpdateableSequencedTaskRunner> db_task_runner) : db_task_runner_(db_task_runner), db_path_(GetDBPath(profile)), + db_(std::make_unique<sql::Database>()), + meta_table_(std::make_unique<sql::MetaTable>()), origin_table_(new MediaHistoryOriginTable(db_task_runner_)), playback_table_(new MediaHistoryPlaybackTable(db_task_runner_)), session_table_(new MediaHistorySessionTable(db_task_runner_)), @@ -186,7 +188,14 @@ feed_items_table_(IsMediaFeedsEnabled() ? new MediaHistoryFeedItemsTable(db_task_runner_) : nullptr), - initialization_successful_(false) {} + initialization_successful_(false) { + db_->set_histogram_tag("MediaHistory"); + db_->set_exclusive_locking(); + + // To recover from corruption. + db_->set_error_callback( + base::BindRepeating(&DatabaseErrorCallback, db_.get(), db_path_)); +} MediaHistoryStore::~MediaHistoryStore() { // The connection pointer needs to be deleted on the DB sequence since there @@ -304,16 +313,6 @@ MediaHistoryStore::InitResult MediaHistoryStore::InitializeInternal() { DCHECK(db_task_runner_->RunsTasksInCurrentSequence()); - db_ = std::make_unique<sql::Database>(); - db_->set_histogram_tag("MediaHistory"); - db_->set_exclusive_locking(); - - // To recover from corruption. - db_->set_error_callback( - base::BindRepeating(&DatabaseErrorCallback, db_.get(), db_path_)); - - meta_table_ = std::make_unique<sql::MetaTable>(); - if (db_path_.empty()) { if (IsCancelled() || !db_ || !db_->OpenInMemory()) { LOG(ERROR) << "Failed to open the in-memory database."; @@ -336,8 +335,6 @@ } } - db_->Preload(); - if (IsCancelled() || !db_ || !db_->Execute("PRAGMA foreign_keys=1")) { LOG(ERROR) << "Failed to enable foreign keys on the media history store.";
diff --git a/chrome/browser/media/history/media_history_store_unittest.cc b/chrome/browser/media/history/media_history_store_unittest.cc index 3eaf0f6..c546b4c 100644 --- a/chrome/browser/media/history/media_history_store_unittest.cc +++ b/chrome/browser/media/history/media_history_store_unittest.cc
@@ -286,13 +286,7 @@ TestState::kIncognito, TestState::kSavingBrowserHistoryDisabled)); -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_SavePlayback DISABLED_SavePlayback -#else -#define MAYBE_SavePlayback SavePlayback -#endif -TEST_P(MediaHistoryStoreUnitTest, MAYBE_SavePlayback) { +TEST_P(MediaHistoryStoreUnitTest, SavePlayback) { base::HistogramTester histogram_tester; const auto now_before = @@ -360,13 +354,7 @@ MediaHistoryStore::PlaybackWriteResult::kSuccess, IsReadOnly() ? 0 : 2); } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_SavePlayback_BadOrigin DISABLED_SavePlayback_BadOrigin -#else -#define MAYBE_SavePlayback_BadOrigin SavePlayback_BadOrigin -#endif -TEST_P(MediaHistoryStoreUnitTest, MAYBE_SavePlayback_BadOrigin) { +TEST_P(MediaHistoryStoreUnitTest, SavePlayback_BadOrigin) { GURL url("http://google.com/test"); GURL url2("http://google.co.uk/test"); content::MediaPlayerWatchTime watch_time(url, url2.GetOrigin(), @@ -382,13 +370,7 @@ EXPECT_TRUE(origins.empty()); } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_GetStats DISABLED_GetStats -#else -#define MAYBE_GetStats GetStats -#endif -TEST_P(MediaHistoryStoreUnitTest, MAYBE_GetStats) { +TEST_P(MediaHistoryStoreUnitTest, GetStats) { { // Check all the tables are empty. mojom::MediaHistoryStatsPtr stats = GetStatsSync(service()); @@ -448,13 +430,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_UrlShouldBeUniqueForSessions DISABLED_UrlShouldBeUniqueForSessions -#else -#define MAYBE_UrlShouldBeUniqueForSessions UrlShouldBeUniqueForSessions -#endif -TEST_P(MediaHistoryStoreUnitTest, MAYBE_UrlShouldBeUniqueForSessions) { +TEST_P(MediaHistoryStoreUnitTest, UrlShouldBeUniqueForSessions) { base::HistogramTester histogram_tester; GURL url_a("https://www.google.com"); @@ -528,16 +504,7 @@ MediaHistoryStore::SessionWriteResult::kSuccess, IsReadOnly() ? 0 : 3); } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_SavePlayback_IncrementAggregateWatchtime \ - DISABLED_SavePlayback_IncrementAggregateWatchtime -#else -#define MAYBE_SavePlayback_IncrementAggregateWatchtime \ - SavePlayback_IncrementAggregateWatchtime -#endif -TEST_P(MediaHistoryStoreUnitTest, - MAYBE_SavePlayback_IncrementAggregateWatchtime) { +TEST_P(MediaHistoryStoreUnitTest, SavePlayback_IncrementAggregateWatchtime) { GURL url("http://google.com/test"); GURL url_alt("http://example.org/test"); @@ -643,13 +610,7 @@ EXPECT_EQ(origins, GetOriginRowsSync(otr_service())); } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_GetOriginsWithHighWatchTime DISABLED_GetOriginsWithHighWatchTime -#else -#define MAYBE_GetOriginsWithHighWatchTime GetOriginsWithHighWatchTime -#endif -TEST_P(MediaHistoryStoreUnitTest, MAYBE_GetOriginsWithHighWatchTime) { +TEST_P(MediaHistoryStoreUnitTest, GetOriginsWithHighWatchTime) { const GURL url("http://google.com/test"); const GURL url_alt("http://example.org/test"); const base::TimeDelta min_watch_time = base::TimeDelta::FromMinutes(30); @@ -994,13 +955,7 @@ testing::Values(TestState::kNormal, TestState::kIncognito)); -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_DiscoverMediaFeed DISABLED_DiscoverMediaFeed -#else -#define MAYBE_DiscoverMediaFeed DiscoverMediaFeed -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_DiscoverMediaFeed) { +TEST_P(MediaHistoryStoreFeedsTest, DiscoverMediaFeed) { GURL url_a("https://www.google.com/feed"); GURL url_b("https://www.google.co.uk/feed"); GURL url_c("https://www.google.com/feed2"); @@ -1067,13 +1022,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_StoreMediaFeedFetchResult DISABLED_StoreMediaFeedFetchResult -#else -#define MAYBE_StoreMediaFeedFetchResult StoreMediaFeedFetchResult -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_StoreMediaFeedFetchResult) { +TEST_P(MediaHistoryStoreFeedsTest, StoreMediaFeedFetchResult) { const GURL feed_url("https://www.google.com/feed"); DiscoverMediaFeed(feed_url); WaitForDB(); @@ -1228,15 +1177,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_StoreMediaFeedFetchResult_WithEmpty \ - DISABLED_StoreMediaFeedFetchResult_WithEmpty -#else -#define MAYBE_StoreMediaFeedFetchResult_WithEmpty \ - StoreMediaFeedFetchResult_WithEmpty -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_StoreMediaFeedFetchResult_WithEmpty) { +TEST_P(MediaHistoryStoreFeedsTest, StoreMediaFeedFetchResult_WithEmpty) { DiscoverMediaFeed(GURL("https://www.google.com/feed")); WaitForDB(); @@ -1280,16 +1221,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_StoreMediaFeedFetchResult_MultipleFeeds \ - DISABLED_StoreMediaFeedFetchResult_MultipleFeeds -#else -#define MAYBE_StoreMediaFeedFetchResult_MultipleFeeds \ - StoreMediaFeedFetchResult_MultipleFeeds -#endif -TEST_P(MediaHistoryStoreFeedsTest, - MAYBE_StoreMediaFeedFetchResult_MultipleFeeds) { +TEST_P(MediaHistoryStoreFeedsTest, StoreMediaFeedFetchResult_MultipleFeeds) { const GURL feed_a_url("https://www.google.com/feed"); const GURL feed_b_url("https://www.google.co.uk/feed"); @@ -1367,13 +1299,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_RediscoverMediaFeed DISABLED_RediscoverMediaFeed -#else -#define MAYBE_RediscoverMediaFeed RediscoverMediaFeed -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_RediscoverMediaFeed) { +TEST_P(MediaHistoryStoreFeedsTest, RediscoverMediaFeed) { GURL feed_url("https://www.google.com/feed"); DiscoverMediaFeed(feed_url); WaitForDB(); @@ -1466,16 +1392,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_StoreMediaFeedFetchResult_IncreaseFailed \ - DISABLED_StoreMediaFeedFetchResult_IncreaseFailed -#else -#define MAYBE_StoreMediaFeedFetchResult_IncreaseFailed \ - StoreMediaFeedFetchResult_IncreaseFailed -#endif -TEST_P(MediaHistoryStoreFeedsTest, - MAYBE_StoreMediaFeedFetchResult_IncreaseFailed) { +TEST_P(MediaHistoryStoreFeedsTest, StoreMediaFeedFetchResult_IncreaseFailed) { DiscoverMediaFeed(GURL("https://www.google.com/feed")); WaitForDB(); @@ -1558,16 +1475,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_StoreMediaFeedFetchResult_CheckLogoMax \ - DISABLED_StoreMediaFeedFetchResult_CheckLogoMax -#else -#define MAYBE_StoreMediaFeedFetchResult_CheckLogoMax \ - StoreMediaFeedFetchResult_CheckLogoMax -#endif -TEST_P(MediaHistoryStoreFeedsTest, - MAYBE_StoreMediaFeedFetchResult_CheckLogoMax) { +TEST_P(MediaHistoryStoreFeedsTest, StoreMediaFeedFetchResult_CheckLogoMax) { DiscoverMediaFeed(GURL("https://www.google.com/feed")); WaitForDB(); @@ -1644,16 +1552,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_StoreMediaFeedFetchResult_CheckImageMax \ - DISABLED_StoreMediaFeedFetchResult_CheckImageMax -#else -#define MAYBE_StoreMediaFeedFetchResult_CheckImageMax \ - StoreMediaFeedFetchResult_CheckImageMax -#endif -TEST_P(MediaHistoryStoreFeedsTest, - MAYBE_StoreMediaFeedFetchResult_CheckImageMax) { +TEST_P(MediaHistoryStoreFeedsTest, StoreMediaFeedFetchResult_CheckImageMax) { DiscoverMediaFeed(GURL("https://www.google.com/feed")); WaitForDB(); @@ -1733,16 +1632,8 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_StoreMediaFeedFetchResult_DefaultSafeSearchResult \ - DISABLED_StoreMediaFeedFetchResult_DefaultSafeSearchResult -#else -#define MAYBE_StoreMediaFeedFetchResult_DefaultSafeSearchResult \ - StoreMediaFeedFetchResult_DefaultSafeSearchResult -#endif TEST_P(MediaHistoryStoreFeedsTest, - MAYBE_StoreMediaFeedFetchResult_DefaultSafeSearchResult) { + StoreMediaFeedFetchResult_DefaultSafeSearchResult) { DiscoverMediaFeed(GURL("https://www.google.com/feed")); WaitForDB(); @@ -1780,13 +1671,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_SafeSearchCheck DISABLED_SafeSearchCheck -#else -#define MAYBE_SafeSearchCheck SafeSearchCheck -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_SafeSearchCheck) { +TEST_P(MediaHistoryStoreFeedsTest, SafeSearchCheck) { const GURL feed_url_a("https://www.google.com/feed"); const GURL feed_url_b("https://www.google.co.uk/feed"); @@ -1913,16 +1798,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_GetMediaFeedsSortByWatchtimePercentile \ - DISABLED_GetMediaFeedsSortByWatchtimePercentile -#else -#define MAYBE_GetMediaFeedsSortByWatchtimePercentile \ - GetMediaFeedsSortByWatchtimePercentile -#endif -TEST_P(MediaHistoryStoreFeedsTest, - MAYBE_GetMediaFeedsSortByWatchtimePercentile) { +TEST_P(MediaHistoryStoreFeedsTest, GetMediaFeedsSortByWatchtimePercentile) { // We add 111 origins with watchtime and feeds for all but one of these. Half // of the feeds will have items. const unsigned kNumberOfOrigins = 111; @@ -2178,13 +2054,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_FeedItemsClickAndShown DISABLED_FeedItemsClickAndShown -#else -#define MAYBE_FeedItemsClickAndShown FeedItemsClickAndShown -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_FeedItemsClickAndShown) { +TEST_P(MediaHistoryStoreFeedsTest, FeedItemsClickAndShown) { DiscoverMediaFeed(GURL("https://www.google.com/feed")); WaitForDB(); @@ -2300,13 +2170,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_ResetMediaFeed DISABLED_ResetMediaFeed -#else -#define MAYBE_ResetMediaFeed ResetMediaFeed -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_ResetMediaFeed) { +TEST_P(MediaHistoryStoreFeedsTest, ResetMediaFeed) { const GURL feed_url_a("https://www.google.com/feed"); const GURL feed_url_b("https://www.google.co.uk/feed"); @@ -2468,14 +2332,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_ResetMediaFeedDueToCacheClearing \ - DISABLED_ResetMediaFeedDueToCacheClearing -#else -#define MAYBE_ResetMediaFeedDueToCacheClearing ResetMediaFeedDueToCacheClearing -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_ResetMediaFeedDueToCacheClearing) { +TEST_P(MediaHistoryStoreFeedsTest, ResetMediaFeedDueToCacheClearing) { const GURL feed_url_a("https://www.google.com/feed"); const GURL feed_url_b("https://www.google.co.uk/feed"); @@ -2728,13 +2585,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_DeleteMediaFeed DISABLED_DeleteMediaFeed -#else -#define MAYBE_DeleteMediaFeed DeleteMediaFeed -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_DeleteMediaFeed) { +TEST_P(MediaHistoryStoreFeedsTest, DeleteMediaFeed) { DiscoverMediaFeed(GURL("https://www.google.com/feed")); DiscoverMediaFeed(GURL("https://www.google.co.uk/feed")); WaitForDB(); @@ -2805,13 +2656,7 @@ } } -// TODO(crbug.com/1087974). -#if defined(THREAD_SANITIZER) -#define MAYBE_GetMediaFeedFetchDetails DISABLED_GetMediaFeedFetchDetails -#else -#define MAYBE_GetMediaFeedFetchDetails GetMediaFeedFetchDetails -#endif -TEST_P(MediaHistoryStoreFeedsTest, MAYBE_GetMediaFeedFetchDetails) { +TEST_P(MediaHistoryStoreFeedsTest, GetMediaFeedFetchDetails) { const GURL feed_url("https://www.google.com/feed"); DiscoverMediaFeed(feed_url);
diff --git a/chrome/browser/metrics/chrome_feature_list_creator.cc b/chrome/browser/metrics/chrome_feature_list_creator.cc index 397c2f3..88fdfb8 100644 --- a/chrome/browser/metrics/chrome_feature_list_creator.cc +++ b/chrome/browser/metrics/chrome_feature_list_creator.cc
@@ -58,7 +58,7 @@ CreatePrefService(); ConvertFlagsToSwitches(); CreateMetricsServices(); - SetupMasterPrefs(); + SetupInitialPrefs(); SetupFieldTrials(); } @@ -91,9 +91,9 @@ } #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) -std::unique_ptr<installer::MasterPreferences> -ChromeFeatureListCreator::TakeMasterPrefs() { - return std::move(installer_master_prefs_); +std::unique_ptr<installer::InitialPreferences> +ChromeFeatureListCreator::TakeInitialPrefs() { + return std::move(installer_initial_prefs_); } #endif @@ -199,7 +199,7 @@ std::move(client)); } -void ChromeFeatureListCreator::SetupMasterPrefs() { +void ChromeFeatureListCreator::SetupInitialPrefs() { // Android does first run in Java instead of native. // Chrome OS has its own out-of-box-experience code. #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) @@ -209,8 +209,8 @@ if (!first_run::IsChromeFirstRun()) return; - installer_master_prefs_ = first_run::LoadInitialPrefs(); - if (!installer_master_prefs_) + installer_initial_prefs_ = first_run::LoadInitialPrefs(); + if (!installer_initial_prefs_) return; // Store the initial VariationsService seed in local state, if it exists @@ -218,9 +218,9 @@ // master prefs, which is why both the seed and signature are retrieved here // and not within the ifs below. std::string compressed_variations_seed = - installer_master_prefs_->GetCompressedVariationsSeed(); + installer_initial_prefs_->GetCompressedVariationsSeed(); std::string variations_seed_signature = - installer_master_prefs_->GetVariationsSeedSignature(); + installer_initial_prefs_->GetVariationsSeedSignature(); if (!compressed_variations_seed.empty()) { local_state_->SetString(variations::prefs::kVariationsCompressedSeed,
diff --git a/chrome/browser/metrics/chrome_feature_list_creator.h b/chrome/browser/metrics/chrome_feature_list_creator.h index d90fb0f8..d3ceb4ad 100644 --- a/chrome/browser/metrics/chrome_feature_list_creator.h +++ b/chrome/browser/metrics/chrome_feature_list_creator.h
@@ -58,7 +58,7 @@ TakeChromeBrowserPolicyConnector(); #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) - std::unique_ptr<installer::MasterPreferences> TakeMasterPrefs(); + std::unique_ptr<installer::InitialPreferences> TakeInitialPrefs(); #endif PrefService* local_state() { return local_state_.get(); } @@ -77,10 +77,10 @@ void SetupFieldTrials(); void CreateMetricsServices(); - // Imports variations master preference any preferences (to local state) + // Imports variations initial preference any preferences (to local state) // needed for first run. This is always called and early outs if not // first-run. - void SetupMasterPrefs(); + void SetupInitialPrefs(); // Must be destroyed after |local_state_|. std::unique_ptr<policy::ChromeBrowserPolicyConnector> @@ -103,7 +103,7 @@ std::unique_ptr<ChromeBrowserFieldTrials> browser_field_trials_; #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) - std::unique_ptr<installer::MasterPreferences> installer_master_prefs_; + std::unique_ptr<installer::InitialPreferences> installer_initial_prefs_; #endif DISALLOW_COPY_AND_ASSIGN(ChromeFeatureListCreator);
diff --git a/chrome/browser/nearby_sharing/certificates/BUILD.gn b/chrome/browser/nearby_sharing/certificates/BUILD.gn index f50f23a..c843f4f 100644 --- a/chrome/browser/nearby_sharing/certificates/BUILD.gn +++ b/chrome/browser/nearby_sharing/certificates/BUILD.gn
@@ -22,6 +22,7 @@ deps = [ "//base", "//base/util/values:values_util", + "//chrome/browser/nearby_sharing/logging", "//chrome/browser/nearby_sharing/proto", "//crypto", ]
diff --git a/chrome/browser/nearby_sharing/certificates/nearby_share_decrypted_public_certificate.cc b/chrome/browser/nearby_sharing/certificates/nearby_share_decrypted_public_certificate.cc index c63757c..e6bacb3 100644 --- a/chrome/browser/nearby_sharing/certificates/nearby_share_decrypted_public_certificate.cc +++ b/chrome/browser/nearby_sharing/certificates/nearby_share_decrypted_public_certificate.cc
@@ -6,9 +6,9 @@ #include <utility> -#include "base/logging.h" #include "chrome/browser/nearby_sharing/certificates/common.h" #include "chrome/browser/nearby_sharing/certificates/constants.h" +#include "chrome/browser/nearby_sharing/logging/logging.h" #include "chrome/browser/nearby_sharing/proto/timestamp.pb.h" #include "crypto/aead.h" #include "crypto/encryptor.h" @@ -41,7 +41,7 @@ std::unique_ptr<crypto::Encryptor> encryptor = CreateNearbyShareCtrEncryptor(secret_key, encrypted_metadata_key.salt()); if (!encryptor) { - LOG(ERROR) + NS_LOG(ERROR) << "Cannot decrypt metadata key: Could not create CTR encryptor."; return base::nullopt; } @@ -139,8 +139,8 @@ // Confirm that the decrypted metadata key agrees with key commitment tag. if (!VerifyMetadataEncryptionKeyTag(*decrypted_metadata_key, metadata_encryption_key_tag)) { - LOG(ERROR) << "Metadata decryption failed: Failed to verify metadata " - << "encryption key tag."; + NS_LOG(ERROR) << "Metadata decryption failed: Failed to verify metadata " + << "encryption key tag."; return base::nullopt; } @@ -150,16 +150,16 @@ DecryptMetadataPayload(encrypted_metadata, *decrypted_metadata_key, secret_key.get()); if (!decrypted_metadata_bytes) { - LOG(ERROR) << "Metadata decryption failed: Failed to decrypt metadata " - << "payload."; + NS_LOG(ERROR) << "Metadata decryption failed: Failed to decrypt metadata " + << "payload."; return base::nullopt; } nearbyshare::proto::EncryptedMetadata unencrypted_metadata; if (!unencrypted_metadata.ParseFromArray(decrypted_metadata_bytes->data(), decrypted_metadata_bytes->size())) { - LOG(ERROR) << "Metadata decryption failed: Failed to parse decrypted " - << "metadata payload."; + NS_LOG(ERROR) << "Metadata decryption failed: Failed to parse decrypted " + << "metadata payload."; return base::nullopt; } @@ -192,7 +192,7 @@ crypto::SignatureVerifier verifier; if (!verifier.VerifyInit(crypto::SignatureVerifier::ECDSA_SHA256, signature, public_key_)) { - LOG(ERROR) << "Verification failed: Initialization unsuccessful."; + NS_LOG(ERROR) << "Verification failed: Initialization unsuccessful."; return false; }
diff --git a/chrome/browser/nearby_sharing/certificates/nearby_share_private_certificate.cc b/chrome/browser/nearby_sharing/certificates/nearby_share_private_certificate.cc index 303738b..2d63936 100644 --- a/chrome/browser/nearby_sharing/certificates/nearby_share_private_certificate.cc +++ b/chrome/browser/nearby_sharing/certificates/nearby_share_private_certificate.cc
@@ -7,13 +7,13 @@ #include <utility> #include "base/base64url.h" -#include "base/logging.h" #include "base/rand_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "base/util/values/values_util.h" #include "chrome/browser/nearby_sharing/certificates/common.h" #include "chrome/browser/nearby_sharing/certificates/constants.h" +#include "chrome/browser/nearby_sharing/logging/logging.h" #include "chrome/browser/nearby_sharing/proto/timestamp.pb.h" #include "crypto/aead.h" #include "crypto/ec_private_key.h" @@ -184,14 +184,14 @@ NearbySharePrivateCertificate::EncryptMetadataKey() { base::Optional<std::vector<uint8_t>> salt = GenerateUnusedSalt(); if (!salt) { - LOG(ERROR) << "Encryption failed: Salt generation unsuccessful."; + NS_LOG(ERROR) << "Encryption failed: Salt generation unsuccessful."; return base::nullopt; } std::unique_ptr<crypto::Encryptor> encryptor = CreateNearbyShareCtrEncryptor(secret_key_.get(), *salt); if (!encryptor) { - LOG(ERROR) << "Encryption failed: Could not create CTR encryptor."; + NS_LOG(ERROR) << "Encryption failed: Could not create CTR encryptor."; return base::nullopt; } @@ -199,7 +199,7 @@ metadata_encryption_key_.size()); std::vector<uint8_t> encrypted_metadata_key; if (!encryptor->Encrypt(metadata_encryption_key_, &encrypted_metadata_key)) { - LOG(ERROR) << "Encryption failed: Could not encrypt metadata key."; + NS_LOG(ERROR) << "Encryption failed: Could not encrypt metadata key."; return base::nullopt; } @@ -213,7 +213,7 @@ std::vector<uint8_t> signature; if (!signer->Sign(payload.data(), payload.size(), &signature)) { - LOG(ERROR) << "Signing failed."; + NS_LOG(ERROR) << "Signing failed."; return base::nullopt; } @@ -224,21 +224,21 @@ NearbySharePrivateCertificate::ToPublicCertificate() { std::vector<uint8_t> public_key; if (!key_pair_->ExportPublicKey(&public_key)) { - LOG(ERROR) << "Failed to export public key."; + NS_LOG(ERROR) << "Failed to export public key."; return base::nullopt; } base::Optional<std::vector<uint8_t>> encrypted_metadata_bytes = EncryptMetadata(); if (!encrypted_metadata_bytes) { - LOG(ERROR) << "Failed to encrypt metadata."; + NS_LOG(ERROR) << "Failed to encrypt metadata."; return base::nullopt; } base::Optional<std::vector<uint8_t>> metadata_encryption_key_tag = CreateMetadataEncryptionKeyTag(metadata_encryption_key_); if (!metadata_encryption_key_tag) { - LOG(ERROR) << "Failed to compute metadata encryption key tag."; + NS_LOG(ERROR) << "Failed to compute metadata encryption key tag."; return base::nullopt; } @@ -368,7 +368,7 @@ base::Optional<std::vector<uint8_t>> NearbySharePrivateCertificate::GenerateUnusedSalt() { if (consumed_salts_.size() >= kNearbyShareMaxNumMetadataEncryptionKeySalts) { - LOG(ERROR) << "All salts exhausted for certificate."; + NS_LOG(ERROR) << "All salts exhausted for certificate."; return base::nullopt; } @@ -390,8 +390,8 @@ } } - LOG(ERROR) << "Salt generation exceeded max number of retries. This is " - "highly improbable."; + NS_LOG(ERROR) << "Salt generation exceeded max number of retries. This is " + "highly improbable."; return base::nullopt; }
diff --git a/chrome/browser/nearby_sharing/fast_initiation_manager.cc b/chrome/browser/nearby_sharing/fast_initiation_manager.cc index 8506136..3ad8237 100644 --- a/chrome/browser/nearby_sharing/fast_initiation_manager.cc +++ b/chrome/browser/nearby_sharing/fast_initiation_manager.cc
@@ -135,7 +135,8 @@ void FastInitiationManager::OnSetAdvertisingIntervalError( FastInitiationManager::FastInitType type, device::BluetoothAdvertisement::ErrorCode code) { - LOG(WARNING) << "SetAdvertisingInterval() failed with error code = " << code; + NS_LOG(WARNING) << "SetAdvertisingInterval() failed with error code = " + << code; RegisterAdvertisement(type); } @@ -190,7 +191,8 @@ void FastInitiationManager::OnRestoreAdvertisingIntervalError( device::BluetoothAdvertisement::ErrorCode code) { - LOG(WARNING) << "SetAdvertisingInterval() failed with error code = " << code; + NS_LOG(WARNING) << "SetAdvertisingInterval() failed with error code = " + << code; UnregisterAdvertisement(); }
diff --git a/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc b/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc index 89c1b85c1..220c408 100644 --- a/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc +++ b/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc
@@ -174,8 +174,8 @@ DCHECK_NE(state, ReceiveSurfaceState::kUnknown); if (foreground_receive_callbacks_.HasObserver(transfer_callback) || background_receive_callbacks_.HasObserver(transfer_callback)) { - VLOG(1) << __func__ - << ": registerReceiveSurface failed. Already registered."; + NS_LOG(VERBOSE) << __func__ + << ": registerReceiveSurface failed. Already registered."; return StatusCodes::kError; } @@ -192,8 +192,9 @@ background_receive_callbacks_.AddObserver(transfer_callback); } - VLOG(1) << __func__ << ": A ReceiveSurface(" - << ReceiveSurfaceStateToString(state) << ") has been registered"; + NS_LOG(VERBOSE) << __func__ << ": A ReceiveSurface(" + << ReceiveSurfaceStateToString(state) + << ") has been registered"; InvalidateReceiveSurfaceState(); return StatusCodes::kOk; } @@ -207,7 +208,7 @@ bool is_background = background_receive_callbacks_.HasObserver(transfer_callback); if (!is_foreground && !is_background) { - VLOG(1) + NS_LOG(VERBOSE) << __func__ << ": unregisterReceiveSurface failed. Unknown TransferUpdateCallback."; return StatusCodes::kError; @@ -239,9 +240,9 @@ } } - VLOG(1) << __func__ << ": A ReceiveSurface(" - << (is_foreground ? "foreground" : "background") - << ") has been unregistered"; + NS_LOG(VERBOSE) << __func__ << ": A ReceiveSurface(" + << (is_foreground ? "foreground" : "background") + << ") has been unregistered"; InvalidateReceiveSurfaceState(); return StatusCodes::kOk; @@ -341,13 +342,14 @@ void NearbySharingServiceImpl::OnVisibilityPrefChanged() { Visibility new_visibility = GetVisibilityPref(); if (advertising_visibilty_preference_ == new_visibility) { - VLOG(1) << __func__ << ": Nearby sharing visibility pref is unchanged"; + NS_LOG(VERBOSE) << __func__ + << ": Nearby sharing visibility pref is unchanged"; return; } advertising_visibilty_preference_ = new_visibility; - VLOG(1) << __func__ << ": Nearby sharing visibility changed to " - << VisibilityToString(advertising_visibilty_preference_); + NS_LOG(VERBOSE) << __func__ << ": Nearby sharing visibility changed to " + << VisibilityToString(advertising_visibilty_preference_); if (advertising_power_level_ != PowerLevel::kUnknown) { StopAdvertising(); @@ -367,11 +369,12 @@ void NearbySharingServiceImpl::OnDataUsagePrefChanged() { DataUsage new_data_usage = GetDataUsagePref(); if (advertising_data_usage_preference_ == new_data_usage) { - VLOG(1) << __func__ << ": Nearby sharing data usage pref is unchanged"; + NS_LOG(VERBOSE) << __func__ + << ": Nearby sharing data usage pref is unchanged"; return; } - VLOG(1) << __func__ << ": Nearby sharing data usage changed."; + NS_LOG(VERBOSE) << __func__ << ": Nearby sharing data usage changed."; if (advertising_power_level_ != PowerLevel::kUnknown) { StopAdvertising(); } @@ -496,8 +499,8 @@ // Screen is off. Do no work. if (ui::CheckIdleStateIsLocked()) { StopAdvertising(); - VLOG(1) << __func__ - << ": Stopping advertising because the screen is locked."; + NS_LOG(VERBOSE) << __func__ + << ": Stopping advertising because the screen is locked."; return; } @@ -512,24 +515,26 @@ connection_type == net::NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET)) { StopAdvertising(); - VLOG(1) << __func__ - << ": Stopping advertising because both bluetooth and wifi LAN are " - "disabled."; + NS_LOG(VERBOSE) + << __func__ + << ": Stopping advertising because both bluetooth and wifi LAN are " + "disabled."; return; } // Nearby Sharing is disabled. Don't advertise. if (!IsEnabled()) { StopAdvertising(); - VLOG(1) << __func__ - << ": Stopping advertising because Nearby Sharing is disabled."; + NS_LOG(VERBOSE) + << __func__ + << ": Stopping advertising because Nearby Sharing is disabled."; return; } // We're scanning for other nearby devices. Don't advertise. if (is_scanning_) { StopAdvertising(); - VLOG(1) + NS_LOG(VERBOSE) << __func__ << ": Stopping advertising because we're scanning for other devices."; return; @@ -537,16 +542,17 @@ if (is_transferring_files_) { StopAdvertising(); - VLOG(1) << __func__ - << ": Stopping advertising because we're currently in the midst of " - "a transfer."; + NS_LOG(VERBOSE) + << __func__ + << ": Stopping advertising because we're currently in the midst of " + "a transfer."; return; } if (!foreground_receive_callbacks_.might_have_observers() && !background_receive_callbacks_.might_have_observers()) { StopAdvertising(); - VLOG(1) + NS_LOG(VERBOSE) << __func__ << ": Stopping advertising because no receive surface is registered."; return; @@ -555,9 +561,10 @@ if (!IsVisibleInBackground(advertising_visibilty_preference_) && !foreground_receive_callbacks_.might_have_observers()) { StopAdvertising(); - VLOG(1) << __func__ - << ": Stopping advertising because no high power receive surface " - "is registered and device is visible to NO_ONE."; + NS_LOG(VERBOSE) + << __func__ + << ": Stopping advertising because no high power receive surface " + "is registered and device is visible to NO_ONE."; return; } @@ -575,19 +582,21 @@ if (advertising_power_level_ != PowerLevel::kUnknown) { if (power_level == advertising_power_level_ && data_usage == advertising_data_usage_preference_) { - VLOG(1) << __func__ - << "Failed to advertise because we're already advertising with " - "power level " - << PowerLevelToString(advertising_power_level_) - << " and data usage preference " - << DataUsageToString(advertising_data_usage_preference_); + NS_LOG(VERBOSE) + << __func__ + << "Failed to advertise because we're already advertising with " + "power level " + << PowerLevelToString(advertising_power_level_) + << " and data usage preference " + << DataUsageToString(advertising_data_usage_preference_); return; } StopAdvertising(); - VLOG(1) << __func__ << ": Restart advertising with power level " - << PowerLevelToString(power_level) << " and data usage preference " - << DataUsageToString(data_usage); + NS_LOG(VERBOSE) << __func__ << ": Restart advertising with power level " + << PowerLevelToString(power_level) + << " and data usage preference " + << DataUsageToString(data_usage); } // Starts advertising through Nearby Connections. Caller is expected to ensure @@ -609,7 +618,7 @@ std::move(endpoint_info), /* listener= */ this, power_level, data_usage, base::BindOnce([](NearbyConnectionsManager::ConnectionsStatus status) { - VLOG(1) + NS_LOG(VERBOSE) << __func__ << ": Advertising attempted over Nearby Connections with result " << ConnectionsStatusToString(status); @@ -617,18 +626,20 @@ advertising_power_level_ = power_level; advertising_data_usage_preference_ = data_usage; - VLOG(1) << __func__ << ": Advertising has started over Nearby Connections: " - << " power level " << PowerLevelToString(power_level) - << " visibility " - << VisibilityToString(advertising_visibilty_preference_) - << " data usage " << DataUsageToString(data_usage); + NS_LOG(VERBOSE) << __func__ + << ": Advertising has started over Nearby Connections: " + << " power level " << PowerLevelToString(power_level) + << " visibility " + << VisibilityToString(advertising_visibilty_preference_) + << " data usage " << DataUsageToString(data_usage); return; } void NearbySharingServiceImpl::StopAdvertising() { if (advertising_power_level_ == PowerLevel::kUnknown) { - VLOG(1) << __func__ - << ": Failed to stop advertising because we weren't advertising"; + NS_LOG(VERBOSE) + << __func__ + << ": Failed to stop advertising because we weren't advertising"; return; } @@ -636,5 +647,5 @@ advertising_data_usage_preference_ = DataUsage::kUnknown; advertising_power_level_ = PowerLevel::kUnknown; - VLOG(1) << __func__ << ": Advertising has stopped"; + NS_LOG(VERBOSE) << __func__ << ": Advertising has stopped"; }
diff --git a/chrome/browser/offline_pages/android/BUILD.gn b/chrome/browser/offline_pages/android/BUILD.gn index f455eb6..79d0159e 100644 --- a/chrome/browser/offline_pages/android/BUILD.gn +++ b/chrome/browser/offline_pages/android/BUILD.gn
@@ -8,6 +8,7 @@ sources = [ "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchConfiguration.java" ] deps = [ + "//base:base_java", "//base:jni_java", "//chrome/browser/flags:java", "//chrome/browser/profiles/android:java",
diff --git a/chrome/browser/optimization_guide/android/BUILD.gn b/chrome/browser/optimization_guide/android/BUILD.gn index ff706ea..991c5c8a 100644 --- a/chrome/browser/optimization_guide/android/BUILD.gn +++ b/chrome/browser/optimization_guide/android/BUILD.gn
@@ -40,6 +40,7 @@ deps = [ ":java", + "//base:base_java", "//components/optimization_guide/proto:optimization_guide_proto_java", "//content/public/android:content_java", "//third_party/junit", @@ -62,6 +63,7 @@ "//chrome/android:chrome_test_util_java", "//components/optimization_guide/proto:optimization_guide_proto_java", "//content/public/android:content_java", + "//third_party/android_deps:robolectric_all_java", "//third_party/junit", "//third_party/mockito:mockito_java", ]
diff --git a/chrome/browser/paint_preview/android/BUILD.gn b/chrome/browser/paint_preview/android/BUILD.gn index b3fe7d1..b38f6186 100644 --- a/chrome/browser/paint_preview/android/BUILD.gn +++ b/chrome/browser/paint_preview/android/BUILD.gn
@@ -37,6 +37,7 @@ "//components/paint_preview/browser/android:java", "//components/paint_preview/player/android:java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//ui/android:ui_java", "//url:gurl_java", ]
diff --git a/chrome/browser/password_check/android/BUILD.gn b/chrome/browser/password_check/android/BUILD.gn index ec6879d2..83f73e6 100644 --- a/chrome/browser/password_check/android/BUILD.gn +++ b/chrome/browser/password_check/android/BUILD.gn
@@ -30,6 +30,7 @@ "//base:base_java", "//components/browser_ui/settings/android:java", "//components/browser_ui/widget/android:java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_fragment_fragment_java", "//third_party/android_deps:androidx_preference_preference_java", "//third_party/android_deps:androidx_recyclerview_recyclerview_java", @@ -75,12 +76,15 @@ "//chrome/android:chrome_java", "//chrome/android:chrome_test_java", "//chrome/android:chrome_test_util_java", + "//chrome/browser/flags:java", "//chrome/browser/password_check/android/internal:internal_java", "//chrome/browser/settings:test_support_java", "//chrome/test/android:chrome_java_test_support", "//components/embedder_support/android:util_java", "//content/public/test/android:content_java_test_support", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_recyclerview_recyclerview_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/hamcrest:hamcrest_java", "//third_party/junit", "//third_party/mockito:mockito_java",
diff --git a/chrome/browser/password_check/android/internal/BUILD.gn b/chrome/browser/password_check/android/internal/BUILD.gn index 2c651b3..aaa1e859 100644 --- a/chrome/browser/password_check/android/internal/BUILD.gn +++ b/chrome/browser/password_check/android/internal/BUILD.gn
@@ -47,6 +47,7 @@ android_library("internal_java") { deps = [ ":java_resources", + "//base:base_java", "//base:jni_java", "//chrome/android:chrome_app_java_resources", "//chrome/android:chrome_java", @@ -55,6 +56,7 @@ "//chrome/browser/settings:java", "//chrome/browser/ui/android/strings:ui_strings_grd", "//components/embedder_support/android:util_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_fragment_fragment_java", "//third_party/android_deps:androidx_preference_preference_java", "//third_party/android_deps:androidx_recyclerview_recyclerview_java",
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_bg.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_bg.xtb index cef533f..8afbaf48 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_bg.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_bg.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="bg"> +<translation id="5539342724706569402">Въведена в измамнически сайт</translation> <translation id="7744192722284567281">Разкрита при нарушение на сигурността на данните</translation> <translation id="808894953321890993">Промяна на паролата</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_bs.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_bs.xtb index fc51450..4e46098 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_bs.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_bs.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="bs"> +<translation id="5539342724706569402">Pristupili ste obmanujućoj web lokaciji</translation> <translation id="7744192722284567281">Pronađeno u narušavanju podataka</translation> <translation id="808894953321890993">Promijenite lozinku</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_cs.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_cs.xtb index 8b4ffd60..5e665d4 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_cs.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_cs.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="cs"> +<translation id="5539342724706569402">Zadáno na klamavém webu</translation> <translation id="7744192722284567281">Nalezeno v porušení zabezpečení údajů</translation> <translation id="808894953321890993">Změnit heslo</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_da.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_da.xtb index 2088251..1fd1333 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_da.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_da.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="da"> +<translation id="5539342724706569402">Angivet på et vildledende website</translation> <translation id="7744192722284567281">Blev fundet i et brud på datasikkerheden</translation> <translation id="808894953321890993">Skift adgangskode</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_el.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_el.xtb index c5d16de..b4d0bbb5 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_el.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_el.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="el"> +<translation id="5539342724706569402">Εισήχθη σε παραπλανητικό ιστότοπο</translation> <translation id="7744192722284567281">Βρέθηκε σε παραβίαση δεδομένων</translation> <translation id="808894953321890993">Αλλαγή κωδικού πρόσβασης</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_en-GB.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_en-GB.xtb index 506c332..62c2b31 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_en-GB.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_en-GB.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="en-GB"> +<translation id="5539342724706569402">Entered on a deceptive site</translation> <translation id="7744192722284567281">Found in data breach</translation> <translation id="808894953321890993">Change password</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_hr.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_hr.xtb index 38aef3e80..4189ed6 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_hr.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_hr.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="hr"> +<translation id="5539342724706569402">Uneseno na obmanjujućoj web-lokaciji</translation> <translation id="7744192722284567281">Pronađeno u povredi podataka</translation> <translation id="808894953321890993">Promjena zaporke</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_is.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_is.xtb index 2505979..2e98651 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_is.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_is.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="is"> +<translation id="5539342724706569402">Fært inn á villandi vefsvæði</translation> <translation id="7744192722284567281">Fannst í öryggisbroti</translation> <translation id="808894953321890993">Breyta aðgangsorði</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_lt.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_lt.xtb index 73ee30d9..9f775b9d 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_lt.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_lt.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="lt"> +<translation id="5539342724706569402">Įvesta apgaulingoje svetainėje</translation> <translation id="7744192722284567281">Rasta duomenų saugos pažeidime</translation> <translation id="808894953321890993">Keisti slaptažodį</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_no.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_no.xtb index 306c9f1..109ed6f6 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_no.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_no.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="no"> +<translation id="5539342724706569402">Skrevet inn på et villedende nettsted</translation> <translation id="7744192722284567281">Funnet i databrudd</translation> <translation id="808894953321890993">Endre passord</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_pl.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_pl.xtb index d6907ecd..acf80d8 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_pl.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_pl.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pl"> +<translation id="5539342724706569402">Wpisano na stronie wprowadzającej w błąd</translation> <translation id="7744192722284567281">Doszło do naruszenia bezpieczeństwa danych</translation> <translation id="808894953321890993">Zmień hasło</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_pt-PT.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_pt-PT.xtb index 3d5d48981..1e5a4bd 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_pt-PT.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_pt-PT.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pt-PT"> +<translation id="5539342724706569402">Introduzida num site fraudulento.</translation> <translation id="7744192722284567281">Encontrada numa violação de dados</translation> <translation id="808894953321890993">Alterar palavra-passe</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_ro.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_ro.xtb index 520aba1b..5cd43c57 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_ro.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_ro.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ro"> +<translation id="5539342724706569402">A fost introdusă pe un site înșelător</translation> <translation id="7744192722284567281">S-a găsit în urma încălcării securității datelor</translation> <translation id="808894953321890993">Schimbă parola</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_si.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_si.xtb index 9cf34b59..752d605 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_si.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_si.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="si"> +<translation id="5539342724706569402">රැවටිලිකාර අඩවියක ඇතුළත් කරන ලදි</translation> <translation id="7744192722284567281">දත්ත කඩ කිරීම තුළ හමු විය</translation> <translation id="808894953321890993">මුරපදය වෙනස් කරන්න</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sl.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sl.xtb index 21f2e69..927f9f6 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sl.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sl.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sl"> +<translation id="5539342724706569402">Vneseno na zavajajočem spletnem mestu</translation> <translation id="7744192722284567281">Najdeno pri podatkovni kršitvi</translation> <translation id="808894953321890993">Sprememba gesla</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sr-Latn.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sr-Latn.xtb index 72e39454..315e70b 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sr-Latn.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sr-Latn.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sr-Latn"> +<translation id="5539342724706569402">Otvoren je obmanjujuć sajt</translation> <translation id="7744192722284567281">Pronađeno u upadu u podatke</translation> <translation id="808894953321890993">Promeni lozinku</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sr.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sr.xtb index 7cf3cc3..1836a02 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sr.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sr.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sr"> +<translation id="5539342724706569402">Отворен је обмањујућ сајт</translation> <translation id="7744192722284567281">Пронађено у упаду у податке</translation> <translation id="808894953321890993">Промени лозинку</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sw.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sw.xtb index 21e49ca..28bce03 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sw.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_sw.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sw"> +<translation id="5539342724706569402">Limewekwa kwenye tovuti inayopotosha</translation> <translation id="7744192722284567281">Limepatikana kwenye tukio la ufichuzi haramu wa data</translation> <translation id="808894953321890993">Badilisha nenosiri</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_zu.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_zu.xtb index 5d453eb..55d3be3 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_zu.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_zu.xtb
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zu"> +<translation id="5539342724706569402">Kufakwe kusayithi ekhohlisayo</translation> <translation id="7744192722284567281">Kutholakele ekukhuphuleni isivumelwano sedatha</translation> <translation id="808894953321890993">Shintsha iphasiwedi</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/password_manager/android_test_helpers/BUILD.gn b/chrome/browser/password_manager/android_test_helpers/BUILD.gn index 66106e9..ddce79a2 100644 --- a/chrome/browser/password_manager/android_test_helpers/BUILD.gn +++ b/chrome/browser/password_manager/android_test_helpers/BUILD.gn
@@ -24,9 +24,11 @@ testonly = true sources = [ "javatests/src/org/chromium/chrome/browser/password_manager/PasswordManagerClientBridgeForTesting.java" ] deps = [ + "//base:base_java", "//base:base_jni_headers", "//base:jni_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] }
diff --git a/chrome/browser/payments/BUILD.gn b/chrome/browser/payments/BUILD.gn index d516062b..29cc6a1ea 100644 --- a/chrome/browser/payments/BUILD.gn +++ b/chrome/browser/payments/BUILD.gn
@@ -17,6 +17,7 @@ "payment_handler_capabilities_browsertest.cc", "payment_handler_change_shipping_address_option_browsertest.cc", "payment_handler_enable_delegations_browsertest.cc", + "payment_handler_enforce_full_delegation_browsertest.cc", "payment_handler_exploit_browsertest.cc", "payment_handler_just_in_time_installation_browsertest.cc", "payment_request_app_store_billing_browsertest.cc",
diff --git a/chrome/browser/payments/payment_handler_enforce_full_delegation_browsertest.cc b/chrome/browser/payments/payment_handler_enforce_full_delegation_browsertest.cc new file mode 100644 index 0000000..9a7fb050 --- /dev/null +++ b/chrome/browser/payments/payment_handler_enforce_full_delegation_browsertest.cc
@@ -0,0 +1,76 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/macros.h" +#include "base/test/scoped_feature_list.h" +#include "chrome/test/payments/payment_request_platform_browsertest_base.h" +#include "components/payments/core/features.h" +#include "content/public/test/browser_test.h" + +namespace payments { +namespace { + +enum EnforceFullDelegationFlag { + ENABLED, + DISABLED, +}; + +class PaymentHandlerEnforceFullDelegationTest + : public PaymentRequestPlatformBrowserTestBase, + public testing::WithParamInterface<EnforceFullDelegationFlag> { + public: + PaymentHandlerEnforceFullDelegationTest() { + if (GetParam() == ENABLED) { + scoped_feature_list_.InitAndEnableFeature( + payments::features::kEnforceFullDelegation); + } else { + scoped_feature_list_.InitAndDisableFeature( + payments::features::kEnforceFullDelegation); + } + } + ~PaymentHandlerEnforceFullDelegationTest() override = default; + + void SetUpOnMainThread() override { + PaymentRequestPlatformBrowserTestBase::SetUpOnMainThread(); + NavigateTo("/enforce_full_delegation.com/index.html"); + } + + private: + base::test::ScopedFeatureList scoped_feature_list_; +}; + +IN_PROC_BROWSER_TEST_P(PaymentHandlerEnforceFullDelegationTest, + ShowPaymentSheetWhenEnabledRejectWhenDisabled) { + std::string expected = "success"; + EXPECT_EQ(expected, content::EvalJs(GetActiveWebContents(), "install()")); + EXPECT_EQ(expected, content::EvalJs(GetActiveWebContents(), + "addDefaultSupportedMethod()")); + EXPECT_EQ(expected, + content::EvalJs(GetActiveWebContents(), "enableDelegations([])")); + EXPECT_EQ(expected, + content::EvalJs( + GetActiveWebContents(), + "createPaymentRequestWithOptions({requestPayerName: true})")); + + if (GetParam() == ENABLED) { + ResetEventWaiterForSingleEvent(TestEvent::kNotSupportedError); + } else { + ResetEventWaiterForSingleEvent(TestEvent::kAppListReady); + } + + EXPECT_EQ(expected, content::EvalJs(GetActiveWebContents(), "show()")); + WaitForObservedEvent(); + + if (GetParam() == ENABLED) { + EXPECT_GE(1u, test_controller()->app_descriptions().size()); + } +} + +// Run all tests with both values for +// features::kEnforceFullDelegation. +INSTANTIATE_TEST_SUITE_P(All, + PaymentHandlerEnforceFullDelegationTest, + ::testing::Values(ENABLED, DISABLED)); +} // namespace +} // namespace payments
diff --git a/chrome/browser/performance_hints/android/BUILD.gn b/chrome/browser/performance_hints/android/BUILD.gn index e1c44ea..5aa2682 100644 --- a/chrome/browser/performance_hints/android/BUILD.gn +++ b/chrome/browser/performance_hints/android/BUILD.gn
@@ -15,6 +15,7 @@ "//base:base_java", "//base:jni_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
diff --git a/chrome/browser/plugins/plugin_utils.cc b/chrome/browser/plugins/plugin_utils.cc index a3fec7c2..1471b8f 100644 --- a/chrome/browser/plugins/plugin_utils.cc +++ b/chrome/browser/plugins/plugin_utils.cc
@@ -183,7 +183,8 @@ base::flat_map<std::string, std::string> mime_type_to_extension_id_map; #if BUILDFLAG(ENABLE_EXTENSIONS) Profile* profile = Profile::FromBrowserContext(browser_context); - std::vector<std::string> allowlist = MimeTypesHandler::GetMIMETypeAllowlist(); + const std::vector<std::string>& allowlist = + MimeTypesHandler::GetMIMETypeAllowlist(); // Go through the allowed extensions and try to use them to intercept // the URL request. for (const std::string& extension_id : allowlist) {
diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn index aec7e103..903dba6 100644 --- a/chrome/browser/preferences/BUILD.gn +++ b/chrome/browser/preferences/BUILD.gn
@@ -19,6 +19,7 @@ deps = [ "//base:base_java", "//base:jni_java", + "//third_party/android_deps:androidx_annotation_annotation_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] srcjar_deps = [ ":java_pref_names_srcjar" ] @@ -66,6 +67,7 @@ "//base:base_java_test_support", "//base:base_junit_test_support", "//base/test:test_support_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/junit:junit", "//third_party/mockito:mockito_java", ]
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_tab_helper.cc b/chrome/browser/prerender/isolated/isolated_prerender_tab_helper.cc index b4b5527..1779ac55 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_tab_helper.cc +++ b/chrome/browser/prerender/isolated/isolated_prerender_tab_helper.cc
@@ -457,20 +457,39 @@ new_page->after_srp_metrics_->probe_latency_ = page_->probe_latency_; - auto status_iter = page_->prefetch_status_by_url_.find(url); - if (status_iter != page_->prefetch_status_by_url_.end()) { - new_page->after_srp_metrics_->prefetch_status_ = - MaybeUpdatePrefetchStatusWithNSPContext(url, status_iter->second); + // Check every url in the redirect chain for a status, starting at the end + // and working backwards. Note: When a redirect chain is eligible all the + // way to the end, the status is already propagated. But if a redirect was + // not eligible then this will find its last known status. + DCHECK(!navigation_handle->GetRedirectChain().empty()); + base::Optional<PrefetchStatus> status; + base::Optional<size_t> prediction_position; + for (auto back_iter = navigation_handle->GetRedirectChain().rbegin(); + back_iter != navigation_handle->GetRedirectChain().rend(); + ++back_iter) { + GURL chain_url = *back_iter; + auto status_iter = page_->prefetch_status_by_url_.find(chain_url); + if (!status && status_iter != page_->prefetch_status_by_url_.end()) { + status = MaybeUpdatePrefetchStatusWithNSPContext(chain_url, + status_iter->second); + } + + // Same check for the original prediction ordering. + auto position_iter = page_->original_prediction_ordering_.find(chain_url); + if (!prediction_position && + position_iter != page_->original_prediction_ordering_.end()) { + prediction_position = position_iter->second; + } + } + + if (status) { + new_page->after_srp_metrics_->prefetch_status_ = *status; } else { new_page->after_srp_metrics_->prefetch_status_ = PrefetchStatus::kNavigatedToLinkNotOnSRP; } - - auto position_iter = page_->original_prediction_ordering_.find(url); - if (position_iter != page_->original_prediction_ordering_.end()) { - new_page->after_srp_metrics_->clicked_link_srp_position_ = - position_iter->second; - } + new_page->after_srp_metrics_->clicked_link_srp_position_ = + prediction_position; // See if the page being navigated to was prerendered. If so, copy over its // subresource manager and networking pipes.
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_tab_helper_unittest.cc b/chrome/browser/prerender/isolated/isolated_prerender_tab_helper_unittest.cc index 659e5d85..a576e94 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_tab_helper_unittest.cc +++ b/chrome/browser/prerender/isolated/isolated_prerender_tab_helper_unittest.cc
@@ -192,6 +192,7 @@ handle.set_url(url); tab_helper_->DidStartNavigation(&handle); handle.set_has_committed(true); + handle.set_redirect_chain({url}); tab_helper_->DidFinishNavigation(&handle); } @@ -203,6 +204,7 @@ handle.set_is_same_document(true); tab_helper_->DidStartNavigation(&handle); handle.set_has_committed(true); + handle.set_redirect_chain({GURL("https://test.com")}); tab_helper_->DidFinishNavigation(&handle); } @@ -1561,6 +1563,43 @@ EXPECT_EQ(base::Optional<size_t>(0), after_srp_clicked_link_srp_position()); } +TEST_F(IsolatedPrerenderTabHelperRedirectTest, NoRedirect_Insecure_Continued) { + NavigateSomewhere(); + + GURL url("http://insecure.com"); + + RunNoRedirectTest(url); + + EXPECT_EQ(predicted_urls_count(), 1U); + EXPECT_EQ(prefetch_eligible_count(), 1U); + EXPECT_EQ(prefetch_attempted_count(), 1U); + EXPECT_EQ(prefetch_successful_count(), 0U); + EXPECT_EQ(prefetch_total_redirect_count(), 1U); + EXPECT_TRUE(navigation_to_prefetch_start().has_value()); + + GURL final_url("http://final.com/"); + + content::MockNavigationHandle handle(web_contents()); + handle.set_url(final_url); + tab_helper()->DidStartNavigation(&handle); + handle.set_has_committed(true); + handle.set_redirect_chain({ + GURL("https://start.test.com"), + url, + final_url, + }); + tab_helper()->DidFinishNavigation(&handle); + + ASSERT_TRUE(tab_helper()->after_srp_metrics().has_value()); + ASSERT_TRUE(tab_helper()->after_srp_metrics()->prefetch_status_.has_value()); + EXPECT_EQ(IsolatedPrerenderTabHelper::PrefetchStatus:: + kPrefetchNotEligibleSchemeIsNotHttps, + tab_helper()->after_srp_metrics()->prefetch_status_.value()); + + EXPECT_EQ(after_srp_prefetch_eligible_count(), 1U); + EXPECT_EQ(base::Optional<size_t>(0), after_srp_clicked_link_srp_position()); +} + TEST_F(IsolatedPrerenderTabHelperRedirectTest, NoRedirect_Google) { NavigateSomewhere();
diff --git a/chrome/browser/profiles/android/BUILD.gn b/chrome/browser/profiles/android/BUILD.gn index 982a89f..09abb53 100644 --- a/chrome/browser/profiles/android/BUILD.gn +++ b/chrome/browser/profiles/android/BUILD.gn
@@ -14,6 +14,7 @@ "//chrome/browser/preferences:java", "//components/embedder_support/android:browser_context_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] sources = [
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js index ad576b9..b8d7435 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
@@ -2820,3 +2820,43 @@ .replay(); }); }); + +TEST_F('ChromeVoxBackgroundTest', 'SmartStickyModeJumpCommands', function() { + const mockFeedback = this.createMockFeedback(); + this.runWithLoadedTree( + ` + <p>start</p> + <input type="text"></input> + <button>end</button> + `, + function(root) { + mockFeedback.call(doCmd('toggleStickyMode')) + .expectSpeech('Sticky mode enabled') + .call(doCmd('nextFormField')) + .expectSpeech('Edit text') + .call(() => assertTrue(ChromeVox.isStickyModeOn())) + .call(doCmd('nextFormField')) + .expectSpeech('Button') + .call(doCmd('previousFormField')) + .expectSpeech('Edit text') + .call(() => assertTrue(ChromeVox.isStickyModeOn())) + .call(doCmd('previousObject')) + .expectSpeech('start') + .call(doCmd('nextEditText')) + .expectSpeech('Edit text') + .call(() => assertTrue(ChromeVox.isStickyModeOn())) + .call(doCmd('nextObject')) + .expectSpeech('Button') + .call(doCmd('previousEditText')) + .expectSpeech('Edit text') + .call(() => assertTrue(ChromeVox.isStickyModeOn())) + .call(doCmd('nextObject')) + .expectSpeech('Button') + .call(doCmd('previousObject')) + .expectSpeech('Sticky mode disabled') + .expectSpeech('Edit text') + .call(() => assertFalse(ChromeVox.isStickyModeOn())) + + .replay(); + }); +});
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/command_handler.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/command_handler.js index 862b652..4fb88d5 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/command_handler.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/command_handler.js
@@ -437,11 +437,13 @@ case 'nextFormField': pred = AutomationPredicate.formField; predErrorMsg = 'no_next_form_field'; + CommandHandler.smartStickyMode_.startIgnoringRangeChanges(); break; case 'previousFormField': dir = Dir.BACKWARD; pred = AutomationPredicate.formField; predErrorMsg = 'no_previous_form_field'; + CommandHandler.smartStickyMode_.startIgnoringRangeChanges(); break; case 'previousGraphic': dir = Dir.BACKWARD;
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/i_tutorial.html b/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/i_tutorial.html index 447e7220..d842882 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/i_tutorial.html +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/i_tutorial.html
@@ -2,110 +2,171 @@ Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. --> <style> - -#tutorialContainer { - background: linear-gradient(to bottom,rgba(255, 255, 255, 1) 40%, - rgba(215, 215, 215, 1) 100%); - bottom: 0; - left: 0; - position: fixed; - right: 0; - top: 0; + +#tutorial { + background: #FFF; + bottom: 0; + left: 0; + margin-bottom: 30px; + margin-top: 30px; + position: fixed; + right: 0; + top: 0; } -#routingPageContainer { - margin: auto; - text-align: center; - width: 50%; +#mainMenu { + margin: auto; + text-align: center; + width: 50%; } -#mainMenuContainer { - margin: auto; - text-align: center; - width: 50%; +#lessonMenu { + margin: auto; + text-align: center; + width: 50%; +} + +#lessonShortcuts { + background: #FFF; + border-radius: 4px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.3); + display: flex; + flex-direction: column; } #lessonContainer { - margin: auto; - text-align: center; - width: 50%; + margin: auto; + text-align: center; + width: 50%; } -#navigationContainer { - margin: auto; - text-align: center; - width: 50%; +#nav { + margin: auto; + text-align: center; + width: 50%; +} + +h1 { + display: flex; + flex-direction: column; + font-family: Google Sans; + font-size: 24px; + line-height: 32px; + padding: 8px; +} + +#mainMenuButtons { + background: #FFF; + border-radius: 4px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.3); + display: flex; + flex-direction: column; +} + +#navSeparator { + background: rgb(232, 234, 237); + height: 1px; + margin: 10px; +} + +#mainMenu cr-button, +#lessonMenu cr-button { + color: rgb(32, 33, 36); + font-family: Roboto; + font-size: 18px; + font-style: normal; + font-weight: normal; + line-height: 20px; + padding: 30px; +} + +#navButtons cr-button { + color: rgb(26, 115, 232); + font-family: Roboto; + font-size: 13px; + font-style: normal; + font-weight: 500; + line-height: 20px; + margin-bottom: 10px; + margin-inline-end: 10px; + margin-inline-start: 10px; + margin-top: 10px; } </style> -<div id="tutorialContainer"> +<div id="tutorial"> -<div id="routingPageContainer" - hidden$="[[ shouldHideRoutingContainer_(activeContainer) ]]"> - <h1 id="welcomeRoutingPage" tabindex="-1">[[ routingPageWelcome ]]</h1> - <h2>[[ chooseYourExperience ]]</h2> - <cr-button id="newUserButton" on-click="chooseCurriculum_"> - [[ newUser ]] - </cr-button> - <cr-button id="experiencedUserButton" on-click="chooseCurriculum_"> - [[ experiencedUser ]] - </cr-button> - <cr-button id="developerButton" on-click="chooseCurriculum_"> - [[ developer ]] - </cr-button> +<div id="mainMenu" + hidden$="[[ shouldHideMainMenu(activeScreen) ]]"> + <h1 id="mainMenuHeader" tabindex="-1">[[ chooseYourExperience ]]</h1> + <div id="mainMenuButtons"> + <cr-button id="newUserButton" on-click="chooseCurriculum"> + [[ newUser ]] + </cr-button> + <cr-button id="experiencedUserButton" on-click="chooseCurriculum"> + [[ experiencedUser ]] + </cr-button> + <cr-button id="developerButton" on-click="chooseCurriculum"> + [[ developer ]] + </cr-button> + </div> </div> -<div id="mainMenuContainer" - hidden$="[[ shouldHideMainMenuContainer_(activeContainer) ]]"> - <h1 id="welcomeMainMenu" - tabindex="-1">[[ computeMainMenuHeader_(curriculum, medium) ]]</h1> - <div id="lessonShortcuts"></div> +<div id="lessonMenu" + hidden$="[[ shouldHideLessonMenu(activeScreen) ]]"> + <h1 id="lessonMenuHeader" + tabindex="-1">[[ computeLessonMenuHeader(curriculum, medium) ]]</h1> + <div id="lessonShortcuts"></div> </div> <div id="lessonContainer" - hidden$="[[ shouldHideLessonContainer_(activeContainer) ]]"> + hidden$="[[ shouldHideLessonContainer(activeScreen) ]]"> - <!-- Use lessonData object to create all lessons --> - <template is="dom-repeat" items="[[ lessonData ]]" as="lesson" - index-as="index"> - <tutorial-lesson - lesson-num="[[ index ]]" - title="[[ lesson.title ]]" - content="[[ lesson.content ]]" - medium="[[ lesson.medium ]]" - curriculums="[[ lesson.curriculums ]]" - test-area-title="[[ lesson.testAreaTitle ]]" - test-area-instructions="[[ lesson.testAreaInstructions ]]" - test-area-file="[[ lesson.testAreaFile ]]" - test-area-state="[[ lesson.testAreaState ]]" - hints="[[ lesson.hints ]]" - events="[[ lesson.events ]]" - active-lesson-num="[[ activeLessonNum ]]"> - </tutorial-lesson> - </template> + <!-- Use lessonData object to create all lessons --> + <template is="dom-repeat" items="[[ lessonData ]]" as="lesson" + index-as="index"> + <tutorial-lesson + lesson-num="[[ index ]]" + title="[[ lesson.title ]]" + content="[[ lesson.content ]]" + medium="[[ lesson.medium ]]" + curriculums="[[ lesson.curriculums ]]" + practice-title="[[ lesson.practiceTitle ]]" + practice-instructions="[[ lesson.practiceInstructions ]]" + practice-file="[[ lesson.practiceFile ]]" + practice-state="[[ lesson.practiceState ]]" + hints="[[ lesson.hints ]]" + events="[[ lesson.events ]]" + active-lesson-num="[[ activeLessonNum ]]"> + </tutorial-lesson> + </template> </div> -<div id="navigationContainer"> - <cr-button id="previousLesson" on-click="previousLesson_" - hidden$="[[ - shouldHidePreviousLessonButton_(activeLessonIndex, activeContainer) ]]"> - [[ previousLesson ]] - </cr-button> - <cr-button id="nextLesson" on-click="nextLesson_" - hidden$="[[ - shouldHideNextLessonButton_(activeLessonIndex, activeContainer) ]]"> - [[ nextLesson ]] - </cr-button> - <cr-button id="showRoutingPage" on-click="showRoutingContainer_" - hidden$="[[ !shouldHideRoutingContainer_(activeContainer) ]]"> - [[ showRoutingPage ]] - </cr-button> - <cr-button id="showMainMenu" on-click="showMainMenuContainer_" - hidden$="[[ !shouldHideMainMenuContainer_(activeContainer) ]]"> - [[ showMainMenu ]] - </cr-button> - <cr-button id="quit" on-click="quit_">[[ quitTutorial ]]</cr-button> +<div id="nav"> + <div id="navSeparator"> + </div> + <div id="navButtons"> + <cr-button on-click="showPreviousLesson" + hidden$="[[ + shouldHidePreviousLessonButton(activeLessonIndex, activeScreen) ]]"> + [[ previousLesson ]] + </cr-button> + <cr-button on-click="showNextLesson" + hidden$="[[ + shouldHideNextLessonButton(activeLessonIndex, activeScreen) ]]"> + [[ nextLesson ]] + </cr-button> + <cr-button on-click="showLessonMenu" + hidden$="[[ !shouldHideLessonMenu(activeScreen) ]]"> + [[ lessonMenu ]] + </cr-button> + <cr-button on-click="showMainMenu" + hidden$="[[ !shouldHideMainMenu(activeScreen) ]]"> + [[ mainMenu ]] + </cr-button> + <cr-button on-click="exit">[[ exitTutorial ]]</cr-button> + </div> </div> </div> \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/i_tutorial.js b/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/i_tutorial.js index cffdf74..11b7d04 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/i_tutorial.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/i_tutorial.js
@@ -26,14 +26,13 @@ }; /** - * The various containers within the tutorial. + * The various screens within the tutorial. * @enum {string} */ -const Container = { - ROUTING: 'routing', +const Screen = { MAIN_MENU: 'main_menu', + LESSON_MENU: 'lesson_menu', LESSON: 'lesson', - NAVIGATION: 'navigation', }; Polymer({ @@ -42,12 +41,12 @@ _template: html`{__html_template__}`, properties: { - curriculum: {type: String, observer: '_updateIncludedLessons'}, + curriculum: {type: String, observer: 'updateIncludedLessons'}, medium: { type: String, value: InteractionMedium.KEYBOARD, - observer: '_updateIncludedLessons' + observer: 'updateIncludedLessons' }, // Bookkeeping variables. @@ -63,13 +62,10 @@ numLessons: {type: Number, value: 0}, - activeContainer: {type: String}, + activeScreen: {type: String}, // Labels and text content. - routingPageWelcome: - {type: String, value: 'Welcome to the ChromeVox Tutorial'}, - chooseYourExperience: { type: String, value: 'Choose your tutorial experience', @@ -87,61 +83,61 @@ nextLesson: {type: String, value: 'Next lesson'}, - showRoutingPage: {type: String, value: 'Show routing page'}, + mainMenu: {type: String, value: 'Main menu'}, - showMainMenu: {type: String, value: 'Show main menu'}, + lessonMenu: {type: String, value: 'All lessons'}, - quitTutorial: {type: String, value: 'Quit tutorial'}, + exitTutorial: {type: String, value: 'Exit tutorial'}, lessonData: { type: Array, value: [ { - 'title': 'On, Off, and Stop', - 'content': [ + title: 'On, Off, and Stop', + content: [ 'To temporarily stop ChromeVox from speaking, press the Control ' + 'key.', 'To turn ChromeVox on or off, use Control+Alt+Z.', ], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [Curriculum.OOBE, Curriculum.NEW_USER], + medium: InteractionMedium.KEYBOARD, + curriculums: [Curriculum.OOBE, Curriculum.NEW_USER], }, { - 'title': 'The ChromeVox Modifier Key', - 'content': [ + title: 'The ChromeVox Modifier Key', + content: [ 'In ChromeVox, the Search key is the modifier key. ' + 'Most ChromeVox shortcuts start with the Search key. ' + 'You’ll also use the arrow keys for navigation.', 'On the Chromebook, the Search key is immediately above the ' + 'left Shift key.', ], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [Curriculum.OOBE, Curriculum.NEW_USER], + medium: InteractionMedium.KEYBOARD, + curriculums: [Curriculum.OOBE, Curriculum.NEW_USER], }, { - 'title': 'Basic Navigation', - 'content': [ + title: 'Basic Navigation', + content: [ 'To move forward between items on a page, press Search + Right ' + 'Arrow, or Search + Left Arrow to jump back.', 'To go to the next line, press Search + Down Arrow. ' + 'To get to the previous line, use Search + Up Arrow.', 'If you reach an item you want to click, press Search + Space.', ], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [Curriculum.OOBE, Curriculum.NEW_USER], - 'testAreaTitle': 'Basic Navigation Test Area', - 'testAreaInstructions': + medium: InteractionMedium.KEYBOARD, + curriculums: [Curriculum.OOBE, Curriculum.NEW_USER], + practiceTitle: 'Basic Navigation Practice', + practiceInstructions: 'Try using basic navigation to navigate through the items ' + 'below. Find the button titled "Click me" and use Search ' + '+ Space to click it. Then move to the next lesson.', - 'testAreaFile': 'basic_navigation', - 'testAreaState': { - 'goal': {'click': false}, + practiceFile: 'basic_navigation', + practiceState: { + goal: {click: false}, }, - 'events': ['click'], - 'hints': [ + events: ['click'], + hints: [ 'Try pressing Search + left/right arrow. The search key directly ' + ' above the shift key', 'Use search + space to click an item' @@ -149,8 +145,8 @@ }, { - 'title': 'Jump Commands', - 'content': [ + title: 'Jump Commands', + content: [ 'Use jump commands to skip to specific types of elements.', 'To jump forward between headings, press Search + H, or to ' + 'jump backward, press Search + Shift + H.', @@ -159,28 +155,28 @@ 'To jump foorward beetween links, press Search + L, or to ' + 'jump backward, press Search + Shift + L' ], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [Curriculum.NEW_USER], - 'testAreaTitle': 'Jump Commands Test Area', - 'testAreaInstructions': + medium: InteractionMedium.KEYBOARD, + curriculums: [Curriculum.NEW_USER], + practiceTitle: 'Jump Commands Practice', + practiceInstructions: 'Try using what you have learned to navigate by element type. ' + 'Notice that navigation wraps if you are on the first or ' + 'last element and press previous element or next element, ' + 'respectively.', - 'testAreaFile': 'jump_commands', - 'testAreaState': { - 'first-heading': {'focus': false}, - 'first-link': {'focus': false}, - 'first-button': {'focus': false}, - 'second-heading': {'focus': false}, - 'second-link': {'focus': false}, - 'second-button': {'focus': false}, - 'last-heading': {'focus': false}, - 'last-link': {'focus': false}, - 'last-button': {'focus': false}, + practiceFile: 'jump_commands', + practiceState: { + 'first-heading': {focus: false}, + 'first-link': {focus: false}, + 'first-button': {focus: false}, + 'second-heading': {focus: false}, + 'second-link': {focus: false}, + 'second-button': {focus: false}, + 'last-heading': {focus: false}, + 'last-link': {focus: false}, + 'last-button': {focus: false}, }, - 'events': ['focus'], - 'hints': [ + events: ['focus'], + hints: [ 'Try using search + h to move by header', 'Try using search + b to move by button', 'Try using search + l to move by link' @@ -188,20 +184,20 @@ }, { - 'title': 'The ChromeVox Menu', - 'content': [ + title: 'The ChromeVox Menu', + content: [ 'To explore all ChromeVox commands and shortcuts, press ' + 'Search + Period, then use the Arrow keys to navigate the ' + 'menus, and Enter to activate a command. Return here by ' + 'pressing Search+o then t.', ], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [Curriculum.NEW_USER] + medium: InteractionMedium.KEYBOARD, + curriculums: [Curriculum.NEW_USER] }, { - 'title': 'Helpful Chrome Shortcuts', - 'content': [ + title: 'Helpful Chrome Shortcuts', + content: [ 'The next few shortcuts aren’t ChromeVox commands, but they are ' + 'still very useful for getting the most out of Chrome.', 'To navigate forward through actionable items like buttons and ' + @@ -217,13 +213,13 @@ 'To open the full list of keyboard shortcuts, press ' + 'Control + Alt + /' ], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [Curriculum.NEW_USER] + medium: InteractionMedium.KEYBOARD, + curriculums: [Curriculum.NEW_USER] }, { - 'title': 'Sounds', - 'content': [ + title: 'Sounds', + content: [ 'ChromeVox uses sounds to give you essential and additional ' + 'information. You can use these sounds to navigate more ' + 'quickly by learning what each sound means. Once you get ' + @@ -231,34 +227,34 @@ 'speech and rely on them for essential information about the ' + 'page. Here is a complete list of sounds and what they mean', ], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [Curriculum.NEW_USER] + medium: InteractionMedium.KEYBOARD, + curriculums: [Curriculum.NEW_USER] }, { - 'title': 'Text fields', - 'content': ['Text content for text fields lesson'], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [Curriculum.EXPERIENCED_USER], - 'testAreaTitle': 'Edit fields Test Area', - 'testAreaInstructions': + title: 'Text fields', + content: ['Text content for text fields lesson'], + medium: InteractionMedium.KEYBOARD, + curriculums: [Curriculum.EXPERIENCED_USER], + practiceTitle: 'Edit fields practice', + practiceInstructions: 'Try using what you have learned about text fields and edit ' + 'the text fields below.', - 'testAreaFile': 'text_fields', - 'testAreaState': { - 'input': {'focus': false, 'input': false}, - 'editable': {'focus': false, 'input': false} + practiceFile: 'text_fields', + practiceState: { + input: {focus: false, input: false}, + editable: {focus: false, input: false} }, - 'events': ['focus', 'input'], - 'hints': [ + events: ['focus', 'input'], + hints: [ 'Once you find an editable element, you can type normally.', 'Try editing the content you entered' ] }, { - 'title': 'Congratulations', - 'content': [ + title: 'Congratulations', + content: [ 'You’ve learned the essentials to use ChromeVox successfully. ' + 'Remember that you can open the ChromeVox command menu at ' + 'any time by pressing Search+Period. To learn even more ' + @@ -266,8 +262,8 @@ 'If you are done with the tutorial, use ChromeVox to navigate ' + 'to the Quit button and click it.' ], - 'medium': InteractionMedium.KEYBOARD, - 'curriculums': [ + medium: InteractionMedium.KEYBOARD, + curriculums: [ Curriculum.OOBE, Curriculum.NEW_USER, Curriculum.DEVELOPER, Curriculum.EXPERIENCED_USER ], @@ -278,10 +274,14 @@ /** @override */ ready() { - this.showRoutingContainer_(); + this.showMainMenu(); }, - chooseCurriculum_(evt) { + /** + * @param {!MouseEvent} evt + * @private + */ + chooseCurriculum(evt) { const id = evt.target.id; if (id === 'newUserButton') { this.curriculum = Curriculum.NEW_USER; @@ -290,23 +290,26 @@ } else if (id === 'developerButton') { this.curriculum = Curriculum.DEVELOPER; } else { - throw new Error('Invalid target for chooseCurriculum_: ' + evt.target.id); + throw new Error('Invalid target for chooseCurriculum: ' + evt.target.id); } - this.showMainMenuContainer_(); + this.showLessonMenu(); }, - nextLesson_() { - this.showLesson_(this.activeLessonIndex + 1); + /** @private */ + showNextLesson() { + this.showLesson(this.activeLessonIndex + 1); }, - previousLesson_() { - this.showLesson_(this.activeLessonIndex - 1); + /** @private */ + showPreviousLesson() { + this.showLesson(this.activeLessonIndex - 1); }, /** * @param {number} index + * @private */ - showLesson_(index) { + showLesson(index) { this.showLessonContainer(); if (index < 0 || index >= this.numLessons) { return; @@ -320,25 +323,28 @@ }, - // Methods for hiding and showing containers. + // Methods for hiding and showing screens. - - showRoutingContainer_() { - this.activeContainer = Container.ROUTING; - this.$.welcomeRoutingPage.focus(); + /** @private */ + showMainMenu() { + this.activeScreen = Screen.MAIN_MENU; + this.$.mainMenuHeader.focus(); }, - showMainMenuContainer_() { - this.activeContainer = Container.MAIN_MENU; + /** @private */ + showLessonMenu() { + this.activeScreen = Screen.LESSON_MENU; this.createLessonShortcuts(); - this.$.welcomeMainMenu.focus(); + this.$.lessonMenuHeader.focus(); }, + /** @private */ showLessonContainer() { - this.activeContainer = Container.LESSON; + this.activeScreen = Screen.LESSON; }, - _updateIncludedLessons() { + /** @private */ + updateIncludedLessons() { this.includedLessons = []; this.activeLessonNum = -1; this.activeLessonIndex = -1; @@ -359,6 +365,7 @@ this.createLessonShortcuts(); }, + /** @private */ createLessonShortcuts() { // Clear previous lesson shortcuts, as the user may have chosen a new // curriculum or medium for the tutorial. @@ -368,8 +375,8 @@ let count = 1; for (const lesson of this.includedLessons) { const button = document.createElement('cr-button'); - button.addEventListener('click', this.showLesson_.bind(this, count - 1)); - button.textContent = count + ': ' + lesson.title; + button.addEventListener('click', this.showLesson.bind(this, count - 1)); + button.textContent = lesson.title; this.$.lessonShortcuts.appendChild(button); count += 1; } @@ -378,53 +385,86 @@ // Methods for computing attributes and properties. - - shouldHideNextLessonButton_(activeLessonIndex, activeContainer) { + /** + * @param {number} activeLessonIndex + * @param {Screen} activeScreen + * @return {boolean} + * @private + */ + shouldHideNextLessonButton(activeLessonIndex, activeScreen) { if (activeLessonIndex === this.numLessons - 1 || - activeContainer !== Container.LESSON) { + activeScreen !== Screen.LESSON) { return true; } return false; }, - shouldHidePreviousLessonButton_(activeLessonIndex, activeContainer) { - if (activeLessonIndex === 0 || activeContainer !== Container.LESSON) { + /** + * @param {number} activeLessonIndex + * @param {Screen} activeScreen + * @return {boolean} + * @private + */ + shouldHidePreviousLessonButton(activeLessonIndex, activeScreen) { + if (activeLessonIndex === 0 || activeScreen !== Screen.LESSON) { return true; } return false; }, - shouldHideRoutingContainer_(activeContainer) { - if (activeContainer === Container.ROUTING) { + /** + * @param {Screen} activeScreen + * @return {boolean} + * @private + */ + shouldHideMainMenu(activeScreen) { + if (activeScreen === Screen.MAIN_MENU) { return false; } return true; }, - shouldHideLessonContainer_(activeContainer) { - if (activeContainer === Container.LESSON) { + /** + * @param {Screen} activeScreen + * @return {boolean} + * @private + */ + shouldHideLessonContainer(activeScreen) { + if (activeScreen === Screen.LESSON) { return false; } return true; }, - shouldHideMainMenuContainer_(activeContainer) { - if (activeContainer === Container.MAIN_MENU) { + /** + * @param {Screen} activeScreen + * @return {boolean} + * @private + */ + shouldHideLessonMenu(activeScreen) { + if (activeScreen === Screen.LESSON_MENU) { return false; } return true; }, - computeMainMenuHeader_(curriculum, medium) { + /** + * @param {Curriculum} curriculum + * @param {InteractionMedium} medium + * @return {string} + * @private + */ + computeLessonMenuHeader(curriculum, medium) { return 'Lessons for the ' + curriculum + ' ' + medium + ' experience'; }, - quit_() { + /** @private */ + exit() { this.dispatchEvent(new CustomEvent('tutorial-close', {})); }, });
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/tutorial_lesson.html b/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/tutorial_lesson.html index a0a4c39b..4049e00 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/tutorial_lesson.html +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/tutorial_lesson.html
@@ -3,37 +3,40 @@ found in the LICENSE file. --> <style> -#lessonTitle { - font-family: 'Roboto', sans-serif; - font-size: 30pt; - font-weight: bold; +#content { + display: block; + font-family: Google Sans; + font-size: 18px; + font-style: normal; + font-weight: 500; + line-height: 24px; + text-align: center; } -#lessonContent { - display: block; - font-family: 'Roboto', sans-serif; - font-size: 16pt; - line-height: 150%; +#startPractice { + margin-bottom: 10px; + margin-inline-end: 10px; + margin-inline-start: 10px; + margin-top: 10px; } </style> -<div id="lessonContainer" hidden> - <h1 id="lessonTitle" tabindex="-1">[[title]]</h1> - <div id="lessonContent"> - <template is="dom-repeat" items="[[ content ]]" as="text"> - <p>[[ text ]]</p> - </template> - </div> - <cr-dialog id="testAreaContainer" close-text="Exit test area" - on-close="closeTestArea" show-close-button> - <div id="testAreaTitle" class="title" - slot="title">[[testAreaTitle]]</div> - <div class="body" slot="body"> - <p id="testAreaInstructions">[[testAreaInstructions]]</p> - <div id="testArea"></div> - </div> - </cr-dialog> - <cr-button id="showTestArea" on-click="showTestArea" - hidden$="[[ shouldHideTestAreaButton_() ]]">Show test area</cr-button> +<div id="container" hidden> + <h1 id="title" tabindex="-1">[[ title ]]</h1> + <div id="content"> + <template is="dom-repeat" items="[[ content ]]" as="text"> + <p>[[ text ]]</p> + </template> + </div> + <cr-dialog id="practice" close-text="Exit practice area" + on-close="endPractice" show-close-button> + <div class="title" slot="title">[[ practiceTitle ]]</div> + <div class="body" slot="body"> + <p>[[ practiceInstructions ]]</p> + <div id="practiceContent"></div> + </div> + </cr-dialog> + <cr-button id="startPractice" on-click="startPractice" + hidden$="[[ shouldHidePracticeButton() ]]">Practice Area</cr-button> </div> \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/tutorial_lesson.js b/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/tutorial_lesson.js index 58f04265e..27f36fd 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/tutorial_lesson.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/i_tutorial/components/tutorial_lesson.js
@@ -23,13 +23,13 @@ curriculums: {type: Array}, - testAreaTitle: {type: String}, + practiceTitle: {type: String}, - testAreaInstructions: {type: String}, + practiceInstructions: {type: String}, - testAreaFile: {type: String}, + practiceFile: {type: String}, - testAreaState: {type: Object}, + practiceState: {type: Object}, events: {type: Array}, @@ -43,16 +43,16 @@ // Observed properties. - activeLessonNum: {type: Number, observer: '_setVisibility'}, + activeLessonNum: {type: Number, observer: 'setVisibility'}, }, /** @override */ ready() { - if (this.testAreaFile) { - this.populateTestArea_(); + if (this.practiceFile) { + this.populatePracticeContent(); for (const evt of this.events) { - this.$.testArea.addEventListener( - evt, this.onTestAreaEvent.bind(this), true); + this.$.practiceContent.addEventListener( + evt, this.onPracticeEvent.bind(this), true); } } }, @@ -60,8 +60,9 @@ /** * Updates this lessons visibility whenever the active lesson of the tutorial * changes. + * @private */ - _setVisibility() { + setVisibility() { if (this.lessonNum === this.activeLessonNum) { this.show(); } else { @@ -69,63 +70,70 @@ } }, + /** @private */ show() { - this.$.lessonContainer.hidden = false; - this.$.lessonTitle.focus(); + this.$.container.hidden = false; + this.$.title.focus(); }, + /** @private */ hide() { - this.$.lessonContainer.hidden = true; + this.$.container.hidden = true; }, - // Methods for managing the test area. + // Methods for managing the practice area. /** - * Asynchronously populates test area. + * Asynchronously populates practice area. * @private */ - populateTestArea_() { - const path = '../i_tutorial/lessons/' + this.testAreaFile + '.html'; + populatePracticeContent() { + const path = '../i_tutorial/lessons/' + this.practiceFile + '.html'; const xhr = new XMLHttpRequest(); xhr.open('GET', path, true); xhr.onload = (evt) => { if (xhr.readyState === 4 && xhr.status === 200) { - this.$.testArea.innerHTML = xhr.responseText; + this.$.practiceContent.innerHTML = xhr.responseText; } else { console.error(xhr.statusText); } }; xhr.onerror = function(evt) { - console.error('Failed to open test area file: ' + path); + console.error('Failed to open practice file: ' + path); console.error(xhr.statusText); }; xhr.send(null); }, - showTestArea() { - this.$.testAreaContainer.showModal(); + /** @private */ + startPractice() { + this.$.practice.showModal(); this.startHints(); }, - closeTestArea() { + /** @private */ + endPractice() { this.stopHints(); - this.$.showTestArea.focus(); + this.$.startPractice.focus(); }, - // Methods for tracking the state of the test area. + // Methods for tracking the state of the practice area. - /** @param {Event} event */ - onTestAreaEvent(event) { + /** + * @param {Event} event + * @private + */ + onPracticeEvent(event) { const elt = event.target.id; const type = event.type; // Maybe update goal state. - if (elt in this.testAreaState) { - if (type in this.testAreaState[elt]) { - this.testAreaState[elt][type] = true; + if (elt in this.practiceState) { + if (type in this.practiceState[elt]) { + this.practiceState[elt][type] = true; } } @@ -134,13 +142,16 @@ } }, - /** @return {boolean} */ + /** + * @return {boolean} + * @private + */ isGoalStateReached() { if (this.goalStateReached === true) { return true; } - for (const [elt, state] of Object.entries(this.testAreaState)) { + for (const [elt, state] of Object.entries(this.practiceState)) { for (const [evt, performed] of Object.entries(state)) { if (performed == false) { return false; @@ -150,6 +161,7 @@ return true; }, + /** @private */ onGoalStateReached() { const previousState = this.goalStateReached; this.goalStateReached = true; @@ -157,15 +169,15 @@ // Only perform when crossing the threshold from not reached to reached. this.stopHints(); this.requestSpeech( - 'You have passed this tutorial lesson. Find and press the close ' + - 'test area button to continue'); + 'You have passed this tutorial lesson. Find and press the exit ' + + 'practice area button to continue'); } }, // Methods for managing hints. - + /** @private */ startHints() { this.hintCounter = 0; this.hintIntervalId = setInterval(() => { @@ -175,9 +187,10 @@ } this.requestSpeech(this.hints[this.hintCounter]); this.hintCounter += 1; - }, 20000); + }, 20 * 1000); }, + /** @private */ stopHints() { if (this.hintIntervalId) { clearInterval(this.hintIntervalId); @@ -203,15 +216,19 @@ /** * Requests speech from the Panel. * @param {string} text + * @private */ requestSpeech(text) { this.dispatchEvent( new CustomEvent('request-speech', {composed: true, detail: {text}})); }, - /** @return {boolean} */ - shouldHideTestAreaButton_() { - if (!this.testAreaFile) { + /** + * @return {boolean} + * @private + */ + shouldHidePracticeButton() { + if (!this.practiceFile) { return true; }
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_it.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_it.xtb index 42b7370..a62cc62c 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_it.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_it.xtb
@@ -195,7 +195,7 @@ <translation id="2523609930580546572">Tutorial di ChromeVox</translation> <translation id="2525706221823668172">Scorciatoie da tastiera di Chromebook</translation> <translation id="2553108862507765288">grammatical mistake</translation> -<translation id="257674075312929031">Gruppo</translation> +<translation id="257674075312929031">Raggruppa</translation> <translation id="2582407057977008361">Di lato</translation> <translation id="2592212930811759050">Tocca due volte per iniziare la modifica</translation> <translation id="2598495320872286378">Errore grammaticale</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ja.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ja.xtb index 02ac020..7a68592 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ja.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ja.xtb
@@ -967,6 +967,7 @@ <translation id="8770473310765924354">表などの構造化コンテンツの外に出ます</translation> <translation id="8779057862865475116">前のリンクはありません</translation> <translation id="8796411681063377102">次のレベル 3 見出し</translation> +<translation id="8823311177246872527"><ph name="CURRENTPAGE" />/<ph name="TOTALPAGES" /> ページ目</translation> <translation id="8825828890761629845">バナー</translation> <translation id="8851136666856101339">本文</translation> <translation id="8882002077197914455">行見出し</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb index f52ddf99..866e2a3 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb
@@ -966,7 +966,7 @@ <translation id="8770473310765924354">ಕೋಷ್ಟಕಗಳಂತಹ, ವ್ಯವಸ್ಥಿತಗೊಳಿಸಿದ ವಿಷಯ ನಿರ್ಗಮಿಸಿ</translation> <translation id="8779057862865475116">ಯಾವುದೇ ಹಿಂದಿನ ಲಿಂಕ್ ಇಲ್ಲ</translation> <translation id="8796411681063377102">ಮುಂದಿನ ಹಂತ 3 ಶಿರೋನಾಮೆ</translation> -<translation id="8823311177246872527">ಪುಟ <ph name="CURRENTPAGE" /> ರಲ್ಲಿ <ph name="TOTALPAGES" /></translation> +<translation id="8823311177246872527"><ph name="TOTALPAGES" /> ರಲ್ಲಿ <ph name="CURRENTPAGE" /> ನೇ ಪುಟ</translation> <translation id="8825828890761629845">bnr</translation> <translation id="8851136666856101339">ಮುಖ್ಯ</translation> <translation id="8882002077197914455">ಸಾಲಿನ ಶಿರೋನಾಮೆ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_or.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_or.xtb index 828b1db..3bfd440 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_or.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_or.xtb
@@ -967,7 +967,7 @@ <translation id="8770473310765924354">ସଂଗଠିତ ବିଷୟବସ୍ତୁ, ଯେପରି ଟେବଲ୍ଗୁଡ଼ିକରୁ ପ୍ରସ୍ଥାନ କରନ୍ତୁ</translation> <translation id="8779057862865475116">କୌଣସି ପୂର୍ବବର୍ତ୍ତୀ ଲିଙ୍କ୍ ନାହିଁ</translation> <translation id="8796411681063377102">ପରବର୍ତ୍ତୀ ସ୍ତର 3 ଶୀର୍ଷକ</translation> -<translation id="8823311177246872527"><ph name="TOTALPAGES" /> ମଧ୍ୟରୁ <ph name="CURRENTPAGE" /> ପୃଷ୍ଠା</translation> +<translation id="8823311177246872527"><ph name="TOTALPAGES" /> ରୁ <ph name="CURRENTPAGE" /> ପୃଷ୍ଠା</translation> <translation id="8825828890761629845">bnr</translation> <translation id="8851136666856101339">ମୁଖ୍ୟ</translation> <translation id="8882002077197914455">ଧାଡ଼ି ଶୀର୍ଷକ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_pt-PT.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_pt-PT.xtb index 74f147e0..fba9bca7 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_pt-PT.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_pt-PT.xtb
@@ -652,7 +652,7 @@ <translation id="6082768461603900813">Navegação básica</translation> <translation id="609281021724813947">Não existe nenhum controlo de deslize anterior.</translation> <translation id="6100239002225743044">Mover para cima uma linha</translation> -<translation id="6118126368611144850">Aplicações Android para o Chrome. Se tiver a Play Store instalada no seu dispositivo, conheça em primeira mão o ChromeVox com aplicações para Android. Transfira o Google Chrome Canary a partir da Play Store para experimentar o suporte experimental.</translation> +<translation id="6118126368611144850">Apps Android para o Chrome. Se tiver a Play Store instalada no seu dispositivo, conheça em primeira mão o ChromeVox com aplicações para Android. Descarregue o Google Chrome Canary a partir da Play Store para experimentar o suporte experimental.</translation> <translation id="611827076493383239">vtd</translation> <translation id="6122013438240733403">btn</translation> <translation id="6132506484792346370">Uma caixa de lista ou uma caixa de combinação</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access/navigation_manager.js b/chrome/browser/resources/chromeos/accessibility/switch_access/navigation_manager.js index 6e90ea9e..92820f8 100644 --- a/chrome/browser/resources/chromeos/accessibility/switch_access/navigation_manager.js +++ b/chrome/browser/resources/chromeos/accessibility/switch_access/navigation_manager.js
@@ -49,8 +49,8 @@ */ static enterKeyboard() { const navigator = NavigationManager.instance; - const keyboard = KeyboardRootNode.buildTree(); navigator.node_.automationNode.focus(); + const keyboard = KeyboardRootNode.buildTree(); navigator.jumpTo_(keyboard); }
diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access/nodes/keyboard_node.js b/chrome/browser/resources/chromeos/accessibility/switch_access/nodes/keyboard_node.js index f096c5c..467c4f5 100644 --- a/chrome/browser/resources/chromeos/accessibility/switch_access/nodes/keyboard_node.js +++ b/chrome/browser/resources/chromeos/accessibility/switch_access/nodes/keyboard_node.js
@@ -134,18 +134,18 @@ KeyboardRootNode.loadKeyboard_(); AutoScanManager.setInKeyboard(true); - if (!KeyboardRootNode.keyboardObject_) { + const keyboardObject = KeyboardRootNode.getKeyboardObject(); + if (!keyboardObject) { throw SwitchAccess.error( SAConstants.ErrorType.MISSING_KEYBOARD, 'Could not find keyboard in the automation tree', true /* shouldRecover */); } const keyboard = - new AutomationTreeWalker( - KeyboardRootNode.keyboardObject_, constants.Dir.FORWARD, { - visit: (node) => SwitchAccessPredicate.isGroup(node, null), - root: (node) => node === KeyboardRootNode.keyboardObject_ - }) + new AutomationTreeWalker(keyboardObject, constants.Dir.FORWARD, { + visit: (node) => SwitchAccessPredicate.isGroup(node, null), + root: (node) => node === keyboardObject + }) .next() .node; @@ -158,10 +158,18 @@ * Start listening for keyboard open/closed. */ static startWatchingVisibility() { - KeyboardRootNode.isVisible_ = - SwitchAccessPredicate.isVisible(KeyboardRootNode.keyboardObject_); + const keyboardObject = KeyboardRootNode.getKeyboardObject(); + if (!keyboardObject) { + const isKeyboard = (n) => n.role === chrome.automation.RoleType.KEYBOARD; + SwitchAccess.findNodeMatchingPredicate( + isKeyboard, KeyboardRootNode.startWatchingVisibility); + return; + } - KeyboardRootNode.keyboardObject_.addEventListener( + KeyboardRootNode.isVisible_ = + SwitchAccessPredicate.isVisible(keyboardObject); + + keyboardObject.addEventListener( chrome.automation.EventType.ARIA_ATTRIBUTE_CHANGED, KeyboardRootNode.checkVisibilityChanged_, false /* capture */); } @@ -174,7 +182,7 @@ */ static checkVisibilityChanged_(event) { const currentlyVisible = - SwitchAccessPredicate.isVisible(KeyboardRootNode.keyboardObject_); + SwitchAccessPredicate.isVisible(KeyboardRootNode.getKeyboardObject()); if (currentlyVisible === KeyboardRootNode.isVisible_) { return; } @@ -199,7 +207,7 @@ * @return {AutomationNode} * @private */ - static get keyboardObject_() { + static getKeyboardObject() { if (!this.object_ || !this.object_.role) { this.object_ = NavigationManager.desktopNode.find( {role: chrome.automation.RoleType.KEYBOARD});
diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access.js b/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access.js index a601a020..c50539c 100644 --- a/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access.js +++ b/chrome/browser/resources/chromeos/accessibility/switch_access/switch_access.js
@@ -18,10 +18,8 @@ NavigationManager.initialize(desktop); Commands.initialize(); - SwitchAccessPreferences.initialize(); - - // This can throw an error, so it is done last. KeyboardRootNode.startWatchingVisibility(); + SwitchAccessPreferences.initialize(); }); }
diff --git a/chrome/browser/resources/ntp4/new_tab.html b/chrome/browser/resources/ntp4/new_tab.html index 56015cf..2423932 100644 --- a/chrome/browser/resources/ntp4/new_tab.html +++ b/chrome/browser/resources/ntp4/new_tab.html
@@ -13,6 +13,12 @@ <meta name="viewport" content="user-scalable=no, width=device-width, maximum-scale=1.0"> +<link id="themecss" rel="stylesheet"> +<script src="../../../../ui/webui/resources/js/util.js"></script> +<script> +// Until themes can clear the cache, force-reload the theme stylesheet. +$('themecss').href = 'chrome://theme/css/new_tab_theme.css?' + Date.now(); +</script> <link rel="stylesheet" href="chrome://resources/css/text_defaults.css"> <link rel="stylesheet" href="../../../../ui/webui/resources/css/bubble.css"> <link rel="stylesheet" href="../../../../ui/webui/resources/css/menu.css"> @@ -23,15 +29,9 @@ <link rel="stylesheet" href="new_tab.css"> <link rel="stylesheet" href="tile_page.css"> <link rel="stylesheet" href="trash.css"> -<link id="themecss" rel="stylesheet"> <script src="../../../../ui/webui/resources/js/action_link.js"></script> <script src="../../../../ui/webui/resources/js/event_tracker.js"></script> <script src="../../../../ui/webui/resources/js/parse_html_subset.js"></script> -<script src="../../../../ui/webui/resources/js/util.js"></script> -<script> -// Until themes can clear the cache, force-reload the theme stylesheet. -$('themecss').href = 'chrome://theme/css/new_tab_theme.css?' + Date.now(); -</script> <script src="../../../../ui/webui/resources/js/cr.js"></script> <script src="../../../../ui/webui/resources/js/cr/event_target.js"></script>
diff --git a/chrome/browser/resources/pdf/pdf_viewer.js b/chrome/browser/resources/pdf/pdf_viewer.js index ce0606f..c42844e 100644 --- a/chrome/browser/resources/pdf/pdf_viewer.js +++ b/chrome/browser/resources/pdf/pdf_viewer.js
@@ -203,8 +203,8 @@ // Non-Polymer properties - /** @private {number} */ - this.beepCount_ = 0; + /** @type {number} */ + this.beepCount = 0; /** @private {boolean} */ this.hadPassword_ = false; @@ -732,7 +732,7 @@ */ handleBeep_() { // Beeps are annoying, so just track count for now. - this.beepCount_ += 1; + this.beepCount += 1; } /**
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn index 86779cd..0601c30 100644 --- a/chrome/browser/resources/settings/chromeos/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -146,6 +146,7 @@ group("closure_compile") { deps = [ + ":deep_linking_behavior", ":metrics_recorder", ":os_page_visibility", ":os_route", @@ -185,6 +186,15 @@ ] } +js_library("deep_linking_behavior") { + deps = [ + "..:router", + "//chrome/browser/ui/webui/settings/chromeos/constants:mojom_js_library_for_compile", + "//ui/webui/resources/js:assert", + "//ui/webui/resources/js:load_time_data", + ] +} + js_library("os_page_visibility") { deps = [ "//ui/webui/resources/js:cr", @@ -288,6 +298,17 @@ ] } +js_library("deep_linking_behavior.m") { + sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/deep_linking_behavior.m.js" ] + deps = [ + "..:router.m", + "//chrome/browser/ui/webui/settings/chromeos/constants:mojom_js_library_for_compile", + "//ui/webui/resources/js:assert.m", + "//ui/webui/resources/js:load_time_data.m", + ] + extra_deps = [ ":modulize" ] +} + js_library("metrics_recorder.m") { sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/metrics_recorder.m.js" ] deps = [ "//chrome/browser/ui/webui/settings/chromeos/search:mojo_bindings_js_library_for_compile" ] @@ -434,6 +455,7 @@ "route_origin_behavior.js", "search_handler.js", "os_route.js", + "deep_linking_behavior.js", ] namespace_rewrites = os_settings_namespace_rewrites }
diff --git a/chrome/browser/resources/settings/chromeos/deep_linking_behavior.html b/chrome/browser/resources/settings/chromeos/deep_linking_behavior.html new file mode 100644 index 0000000..154fbb6 --- /dev/null +++ b/chrome/browser/resources/settings/chromeos/deep_linking_behavior.html
@@ -0,0 +1,5 @@ +<link rel="import" href="../router.html"> +<link rel="import" href="chrome://resources/html/load_time_data.html"> + +<script src="chrome://os-settings/constants/setting.mojom-lite.js"></script> +<script src="deep_linking_behavior.js"></script> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/deep_linking_behavior.js b/chrome/browser/resources/settings/chromeos/deep_linking_behavior.js new file mode 100644 index 0000000..29f9b05 --- /dev/null +++ b/chrome/browser/resources/settings/chromeos/deep_linking_behavior.js
@@ -0,0 +1,67 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileoverview Polymer behavior for scrolling/focusing/indicating + * setting elements with deep links. + */ + +// clang-format off +// #import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js' +// #import '../constants/setting.mojom-lite.js'; + +// #import {afterNextRender, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +// #import {assert} from 'chrome://resources/js/assert.m.js'; +// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; +// #import {Router} from '../router.m.js'; +// clang-format on + +const kDeepLinkSettingId = 'settingId'; +const kDeepLinkFocusId = 'deep-link-focus-id'; + +/** @polymerBehavior */ +/* #export */ const DeepLinkingBehavior = { + properties: { + /** + * An object whose values are the kSetting mojom values which can be used to + * define deep link IDs on HTML elems. + * @type {!Object} + */ + Setting: { + type: Object, + value: chromeos.settings.mojom.Setting, + }, + }, + + /** + * Retrieves the settingId saved in the url's query parameter. Returns null if + * deep linking is disabled or if no settingId is found. + * @return {?chromeos.settings.mojom.Setting} + */ + getDeepLinkSettingId() { + if (!loadTimeData.getBoolean('isDeepLinkingEnabled')) { + return null; + } + const settingIdStr = settings.Router.getInstance().getQueryParameters().get( + kDeepLinkSettingId); + const settingIdNum = Number(settingIdStr); + if (isNaN(settingIdNum)) { + return null; + } + return /** @type {!chromeos.settings.mojom.Setting} */ (settingIdNum); + }, + + /** + * Focuses the deep linked element referred to by |settindId|. + * @param {chromeos.settings.mojom.Setting} settingId + */ + showDeepLink(settingId) { + assert(loadTimeData.getBoolean('isDeepLinkingEnabled')); + const elToFocus = this.$$(`[${kDeepLinkFocusId}~="${settingId}"]`); + Polymer.RenderStatus.afterNextRender(this, () => { + elToFocus.focus(); + }); + } +};
diff --git a/chrome/browser/resources/settings/chromeos/os_reset_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_reset_page/BUILD.gn index e05a989..a363496a 100644 --- a/chrome/browser/resources/settings/chromeos/os_reset_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/os_reset_page/BUILD.gn
@@ -26,9 +26,11 @@ js_library("os_reset_page") { deps = [ + "..:deep_linking_behavior", + "..:os_route", + "../..:router", "//ui/webui/resources/js:assert", "//ui/webui/resources/js:cr", - "//ui/webui/resources/js:load_time_data", "//ui/webui/resources/js/cr/ui:focus_without_ink", ] } @@ -71,9 +73,11 @@ js_library("os_reset_page.m") { sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.m.js" ] deps = [ + "..:deep_linking_behavior.m", + "..:os_route.m", + "../..:router.m", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//ui/webui/resources/js:assert.m", - "//ui/webui/resources/js:load_time_data.m", "//ui/webui/resources/js/cr/ui:focus_without_ink.m", ] extra_deps = [ ":os_reset_page_module" ]
diff --git a/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.html b/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.html index 0b075bc..6b08be2 100644 --- a/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.html +++ b/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.html
@@ -3,7 +3,10 @@ <link rel="import" href="chrome://resources/html/assert.html"> <link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html"> <link rel="import" href="os_powerwash_dialog.html"> +<link rel="import" href="../deep_linking_behavior.html"> +<link rel="import" href="../os_route.html"> <link rel="import" href="../../i18n_setup.html"> +<link rel="import" href="../../router.html"> <dom-module id="os-settings-reset-page"> <template> @@ -22,7 +25,8 @@ on-click="onShowPowerwashDialog_" aria-labelledby="title" aria-describedby="secondaryText" - aria-roledescription="$i18n{powerwashButtonRoleDescription}"> + aria-roledescription="$i18n{powerwashButtonRoleDescription}" + deep-link-focus-id$="[[Setting.kPowerwash]]"> $i18n{powerwashButton} </cr-button> </div>
diff --git a/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.js b/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.js index effd68ce..e6da298 100644 --- a/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.js +++ b/chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_page.js
@@ -10,6 +10,7 @@ Polymer({ is: 'os-settings-reset-page', + behaviors: [DeepLinkingBehavior, settings.RouteObserverBehavior], properties: { /** @private */ @@ -31,4 +32,22 @@ this.showPowerwashDialog_ = false; cr.ui.focusWithoutInk(assert(this.$.powerwash)); }, + + /** + * settings.RouteObserverBehavior + * @param {!settings.Route} newRoute + * @param {!settings.Route} oldRoute + * @protected + */ + currentRouteChanged(newRoute, oldRoute) { + // Does not apply to this page. + if (newRoute != settings.routes.OS_RESET) { + return; + } + + const settingId = this.getDeepLinkSettingId(); + if (settingId === chromeos.settings.mojom.Setting.kPowerwash) { + this.showDeepLink(settingId); + } + }, });
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.gni b/chrome/browser/resources/settings/chromeos/os_settings.gni index 6c3a5b6..4b130af 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings.gni +++ b/chrome/browser/resources/settings/chromeos/os_settings.gni
@@ -32,29 +32,30 @@ "settings.WallpaperBrowserProxy|WallpaperBrowserProxy", ] -os_settings_auto_imports = - settings_auto_imports + cr_components_chromeos_auto_imports + - cr_elements_chromeos_auto_imports + [ - "chrome/browser/resources/settings/chromeos/ambient_mode_page/constants.html|AmbientModeTopicSource,AmbientModeSettings", - "chrome/browser/resources/settings/chromeos/ambient_mode_page/ambient_mode_browser_proxy.html|AmbientModeBrowserProxy,AmbientModeBrowserProxyImpl", - "chrome/browser/resources/settings/chromeos/metrics_recorder.html|recordSettingChange", - "chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.html|MultiDeviceSettingsMode,MultiDeviceFeature,MultiDeviceFeatureState,MultiDevicePageContentData,SmartLockSignInEnabledState", - "chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_feature_behavior.html|MultiDeviceFeatureBehavior", - "chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_browser_proxy.html|MultiDeviceBrowserProxy,MultiDeviceBrowserProxyImpl", - "chrome/browser/resources/settings/chromeos/os_people_page/kerberos_accounts_browser_proxy.html|KerberosAccount,KerberosAccountsBrowserProxyImpl,KerberosAccountsBrowserProxy,KerberosErrorType,KerberosConfigErrorCode,ValidateKerberosConfigResult", - "chrome/browser/resources/settings/chromeos/os_people_page/os_sync_browser_proxy.html|OsSyncBrowserProxy,OsSyncBrowserProxyImpl,OsSyncPrefs", - "chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_browser_proxy.html|OsResetBrowserProxy,OsResetBrowserProxyImpl", - "chrome/browser/resources/settings/chromeos/os_route.html|routes", - "chrome/browser/resources/settings/chromeos/os_settings_routes.html|OsSettingsRoutes", - "chrome/browser/resources/settings/chromeos/personalization_page/change_picture_browser_proxy.html|ChangePictureBrowserProxy,ChangePictureBrowserProxyImpl,DefaultImage", - "chrome/browser/resources/settings/chromeos/personalization_page/wallpaper_browser_proxy.html|WallpaperBrowserProxy,WallpaperBrowserProxyImpl", - "chrome/browser/resources/settings/chromeos/route_origin_behavior.html|RouteOriginBehaviorImpl,RouteOriginBehavior", - "chrome/browser/resources/settings/lifetime_browser_proxy.html|LifetimeBrowserProxy,LifetimeBrowserProxyImpl", - "chrome/browser/resources/settings/people_page/account_manager_browser_proxy.html|AccountManagerBrowserProxy,AccountManagerBrowserProxyImpl", - "chrome/browser/resources/settings/route.html|routes", - "chrome/browser/resources/settings/router.html|Router,Route,RouteObserverBehavior", - "ui/webui/resources/html/polymer.html|Polymer,html,flush", - "ui/webui/resources/html/icon.html|getImage", - ] +os_settings_auto_imports = settings_auto_imports + + cr_components_chromeos_auto_imports + + cr_elements_chromeos_auto_imports + [ + "chrome/browser/resources/settings/chromeos/ambient_mode_page/constants.html|AmbientModeTopicSource,AmbientModeSettings", + "chrome/browser/resources/settings/chromeos/ambient_mode_page/ambient_mode_browser_proxy.html|AmbientModeBrowserProxy,AmbientModeBrowserProxyImpl", + "chrome/browser/resources/settings/chromeos/deep_linking_behavior.html|DeepLinkingBehavior", + "chrome/browser/resources/settings/chromeos/metrics_recorder.html|recordSettingChange", + "chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.html|MultiDeviceSettingsMode,MultiDeviceFeature,MultiDeviceFeatureState,MultiDevicePageContentData,SmartLockSignInEnabledState", + "chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_feature_behavior.html|MultiDeviceFeatureBehavior", + "chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_browser_proxy.html|MultiDeviceBrowserProxy,MultiDeviceBrowserProxyImpl", + "chrome/browser/resources/settings/chromeos/os_people_page/kerberos_accounts_browser_proxy.html|KerberosAccount,KerberosAccountsBrowserProxyImpl,KerberosAccountsBrowserProxy,KerberosErrorType,KerberosConfigErrorCode,ValidateKerberosConfigResult", + "chrome/browser/resources/settings/chromeos/os_people_page/os_sync_browser_proxy.html|OsSyncBrowserProxy,OsSyncBrowserProxyImpl,OsSyncPrefs", + "chrome/browser/resources/settings/chromeos/os_reset_page/os_reset_browser_proxy.html|OsResetBrowserProxy,OsResetBrowserProxyImpl", + "chrome/browser/resources/settings/chromeos/os_route.html|routes", + "chrome/browser/resources/settings/chromeos/os_settings_routes.html|OsSettingsRoutes", + "chrome/browser/resources/settings/chromeos/personalization_page/change_picture_browser_proxy.html|ChangePictureBrowserProxy,ChangePictureBrowserProxyImpl,DefaultImage", + "chrome/browser/resources/settings/chromeos/personalization_page/wallpaper_browser_proxy.html|WallpaperBrowserProxy,WallpaperBrowserProxyImpl", + "chrome/browser/resources/settings/chromeos/route_origin_behavior.html|RouteOriginBehaviorImpl,RouteOriginBehavior", + "chrome/browser/resources/settings/lifetime_browser_proxy.html|LifetimeBrowserProxy,LifetimeBrowserProxyImpl", + "chrome/browser/resources/settings/people_page/account_manager_browser_proxy.html|AccountManagerBrowserProxy,AccountManagerBrowserProxyImpl", + "chrome/browser/resources/settings/route.html|routes", + "chrome/browser/resources/settings/router.html|Router,Route,RouteObserverBehavior", + "ui/webui/resources/html/polymer.html|Polymer,html,flush", + "ui/webui/resources/html/icon.html|getImage", + ] os_settings_migrated_imports = settings_migrated_imports
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_resources_v3.grdp b/chrome/browser/resources/settings/chromeos/os_settings_resources_v3.grdp index 7f744ed..0fe2ea0 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings_resources_v3.grdp +++ b/chrome/browser/resources/settings/chromeos/os_settings_resources_v3.grdp
@@ -117,6 +117,11 @@ use_base_dir="false" compress="false" type="BINDATA" /> + <include name="IDR_OS_SETTINGS_DEEP_LINKING_BEHAVIOR_M_JS" + file="${root_gen_dir}/chrome/browser/resources/settings/chromeos/deep_linking_behavior.m.js" + use_base_dir="false" + compress="false" + type="BINDATA" /> <include name="IDR_OS_SETTINGS_LOCALIZED_LINK_M_JS" file="${root_gen_dir}/chrome/browser/resources/settings/chromeos/localized_link/localized_link.m.js" use_base_dir="false" @@ -282,11 +287,11 @@ file="i18n_setup.js" compress="false" type="BINDATA" /> - <include name="IDR_OS_SETTINGS_SETTINGS_V3_HTML" + <include name="IDR_OS_SETTINGS_OS_SETTINGS_V3_HTML" file="chromeos/os_settings_v3.html" compress="false" type="BINDATA" /> - <include name="IDR_OS_SETTINGS_SETTINGS_V3_JS" + <include name="IDR_OS_SETTINGS_OS_SETTINGS_V3_JS" file="chromeos/os_settings.js" compress="false" type="BINDATA" />
diff --git a/chrome/browser/resources/settings/os_settings_resources.grd b/chrome/browser/resources/settings/os_settings_resources.grd index 9cc11d9..2180101a 100644 --- a/chrome/browser/resources/settings/os_settings_resources.grd +++ b/chrome/browser/resources/settings/os_settings_resources.grd
@@ -510,6 +510,12 @@ <structure name="IDR_OS_SETTINGS_CONTROLS_TOGGLE_BUTTON_JS" file="controls/settings_toggle_button.js" compress="false" type="chrome_html" /> + <structure name="IDR_OS_SETTINGS_DEEP_LINKING_BEHAVIOR_HTML" + file="chromeos/deep_linking_behavior.html" + compress="false" type="chrome_html" /> + <structure name="IDR_OS_SETTINGS_DEEP_LINKING_BEHAVIOR_JS" + file="chromeos/deep_linking_behavior.js" + compress="false" type="chrome_html" /> <structure name="IDR_OS_SETTINGS_DEVICE_BROWSER_PROXY_HTML" file="chromeos/device_page/device_page_browser_proxy.html" compress="false" type="chrome_html" />
diff --git a/chrome/browser/resources/settings/os_settings_resources_vulcanized.grd b/chrome/browser/resources/settings/os_settings_resources_vulcanized.grd index a6e9963..e36fc1ee3 100644 --- a/chrome/browser/resources/settings/os_settings_resources_vulcanized.grd +++ b/chrome/browser/resources/settings/os_settings_resources_vulcanized.grd
@@ -82,7 +82,7 @@ type="BINDATA" /> <!-- Polymer3 related files--> - <include name="IDR_OS_SETTINGS_SETTINGS_ROLLUP_JS" + <include name="IDR_OS_SETTINGS_OS_SETTINGS_ROLLUP_JS" file="${root_gen_dir}\chrome\browser\resources\settings\chromeos\os_settings.rollup.js" use_base_dir="false" preprocess="true"
diff --git a/chrome/browser/resources/tab_strip/drag_manager.js b/chrome/browser/resources/tab_strip/drag_manager.js index ed8fb441..4ad39fd 100644 --- a/chrome/browser/resources/tab_strip/drag_manager.js +++ b/chrome/browser/resources/tab_strip/drag_manager.js
@@ -297,7 +297,7 @@ /** @param {!DragEvent} event */ start(event) { event.dataTransfer.effectAllowed = 'move'; - const draggedItemRect = this.element_.getBoundingClientRect(); + const draggedItemRect = event.composedPath()[0].getBoundingClientRect(); this.element_.setDragging(true); const dragImage = this.element_.getDragImage(); @@ -313,14 +313,26 @@ verticalOffset = 25; // </if> - const xDiffFromCenter = - event.clientX - draggedItemRect.left - (draggedItemRect.width / 2); - const yDiffFromCenter = event.clientY - draggedItemRect.top - - verticalOffset - (draggedItemRect.height / 2); + const eventXPercentage = + (event.clientX - draggedItemRect.left) / draggedItemRect.width; + const eventYPercentage = + (event.clientY - draggedItemRect.top) / draggedItemRect.height; - event.dataTransfer.setDragImage( - dragImage, (dragImageRect.width / 2 + xDiffFromCenter / scaleFactor), - (dragImageRect.height / 2 + yDiffFromCenter / scaleFactor)); + // First, align the top-left corner of the drag image's center element + // to the event's coordinates. + const dragImageCenterRect = + this.element_.getDragImageCenter().getBoundingClientRect(); + let xOffset = (dragImageCenterRect.left - dragImageRect.left) * scaleFactor; + let yOffset = (dragImageCenterRect.top - dragImageRect.top) * scaleFactor; + + // Then, offset the drag image again by using the event's coordinates + // within the dragged item itself so that the drag image appears positioned + // as closely as its state before dragging. + xOffset += dragImageCenterRect.width * eventXPercentage; + yOffset += dragImageCenterRect.height * eventYPercentage; + yOffset -= verticalOffset; + + event.dataTransfer.setDragImage(dragImage, xOffset, yOffset); if (isTabElement(this.element_)) { event.dataTransfer.setData(
diff --git a/chrome/browser/resources/tab_strip/tab.html b/chrome/browser/resources/tab_strip/tab.html index 26a0ea48..ad68d93d 100644 --- a/chrome/browser/resources/tab_strip/tab.html +++ b/chrome/browser/resources/tab_strip/tab.html
@@ -295,15 +295,8 @@ :host([dragging_]) #dragImage { /* Enough padding to not crop the box shadow set on #tab below. */ --drag-image-padding: 25px; - align-items: center; - display: flex; height: 100%; - justify-content: center; - padding-block-end: var(--drag-image-padding); - padding-block-start: var(--drag-image-padding); - padding-inline-end: calc( - var(--tabstrip-tab-spacing) + var(--drag-image-padding)); - padding-inline-start: var(--drag-image-padding); + padding: var(--drag-image-padding); position: absolute; top: 100vh; width: 100%;
diff --git a/chrome/browser/resources/tab_strip/tab.js b/chrome/browser/resources/tab_strip/tab.js index 77b60b90..c24cbd6 100644 --- a/chrome/browser/resources/tab_strip/tab.js +++ b/chrome/browser/resources/tab_strip/tab.js
@@ -200,6 +200,13 @@ return this.dragImageEl_; } + /** @return {!HTMLElement} */ + getDragImageCenter() { + // dragImageEl_ has padding, so the drag image should be centered relative + // to tabEl_, the element within the padding. + return this.tabEl_; + } + /** * @param {string} imgData */
diff --git a/chrome/browser/resources/tab_strip/tab_group.js b/chrome/browser/resources/tab_strip/tab_group.js index 81bb0c6a1..c49407b8 100644 --- a/chrome/browser/resources/tab_strip/tab_group.js +++ b/chrome/browser/resources/tab_strip/tab_group.js
@@ -48,6 +48,13 @@ return /** @type {!HTMLElement} */ (this.$('#dragImage')); } + /** @return {!HTMLElement} */ + getDragImageCenter() { + // Since the drag handle is #chip, the drag image should be centered + // relatively to it. + return /** @type {!HTMLElement} */ (this.$('#chip')); + } + /** @private */ onClickChip_() { if (!this.dataset.groupId) {
diff --git a/chrome/browser/safe_browsing/android/BUILD.gn b/chrome/browser/safe_browsing/android/BUILD.gn index 7db45b4..83ea8f8 100644 --- a/chrome/browser/safe_browsing/android/BUILD.gn +++ b/chrome/browser/safe_browsing/android/BUILD.gn
@@ -31,6 +31,7 @@ "//chrome/browser/flags:java", "//components/browser_ui/settings/android:java", "//components/browser_ui/widget/android:java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_fragment_fragment_java", "//third_party/android_deps:androidx_preference_preference_java", "//ui/android:ui_full_java", @@ -44,10 +45,13 @@ sources = [ "javatests/src/org/chromium/chrome/browser/safe_browsing/settings/SecuritySettingsFragmentTest.java" ] deps = [ ":java", + "//base:base_java_test_support", + "//chrome/browser/flags:java", "//chrome/browser/settings:test_support_java", "//chrome/test/android:chrome_java_test_support", "//components/browser_ui/widget/android:java", "//content/public/test/android:content_java_test_support", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/junit", ] }
diff --git a/chrome/browser/safety_check/android/BUILD.gn b/chrome/browser/safety_check/android/BUILD.gn index 68171e0..18d41a09 100644 --- a/chrome/browser/safety_check/android/BUILD.gn +++ b/chrome/browser/safety_check/android/BUILD.gn
@@ -40,6 +40,7 @@ "//chrome/browser/preferences:java", "//components/browser_ui/settings/android:java", "//third_party/android_deps:android_support_v7_appcompat_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_fragment_fragment_java", "//third_party/android_deps:androidx_lifecycle_lifecycle_common_java", "//third_party/android_deps:androidx_lifecycle_lifecycle_common_java8_java", @@ -67,6 +68,7 @@ "//chrome/test/android:chrome_java_test_support", "//content/public/test/android:content_java_test_support", "//third_party/android_deps:androidx_preference_preference_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_support_test_runner:runner_java", "//third_party/junit:junit", "//third_party/mockito:mockito_java",
diff --git a/chrome/browser/settings/BUILD.gn b/chrome/browser/settings/BUILD.gn index 61c55221..8c2ac20 100644 --- a/chrome/browser/settings/BUILD.gn +++ b/chrome/browser/settings/BUILD.gn
@@ -15,6 +15,8 @@ "//components/browser_ui/settings/android:java", "//components/prefs/android:java", "//components/user_prefs/android:java", + "//third_party/android_deps:androidx_annotation_annotation_java", + "//third_party/android_deps:androidx_fragment_fragment_java", ] } @@ -37,6 +39,7 @@ "//content/public/test/android:content_java_test_support", "//third_party/android_deps:android_support_v7_appcompat_java", "//third_party/android_deps:androidx_preference_preference_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_deps:espresso_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java",
diff --git a/chrome/browser/subresource_filter/BUILD.gn b/chrome/browser/subresource_filter/BUILD.gn index e6e45eda..4b783c6 100644 --- a/chrome/browser/subresource_filter/BUILD.gn +++ b/chrome/browser/subresource_filter/BUILD.gn
@@ -25,6 +25,7 @@ "//base:base_java_test_support", "//chrome/android:chrome_java", "//chrome/android:chrome_test_java", + "//chrome/browser/flags:java", "//chrome/browser/tab:java", "//chrome/browser/tabmodel:java", "//chrome/browser/ui/messages/android:java", @@ -33,6 +34,7 @@ "//components/safe_browsing/android:safe_browsing_java", "//content/public/test/android:content_java_test_support", "//net/android:net_java_test_support", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", "//third_party/junit",
diff --git a/chrome/browser/sync/DEPS b/chrome/browser/sync/DEPS deleted file mode 100644 index 936cd3b..0000000 --- a/chrome/browser/sync/DEPS +++ /dev/null
@@ -1,3 +0,0 @@ -include_rules = [ - "+google/cacheinvalidation", -]
diff --git a/chrome/browser/sync/test/integration/enable_disable_test.cc b/chrome/browser/sync/test/integration/enable_disable_test.cc index 84335a0..8c52d15 100644 --- a/chrome/browser/sync/test/integration/enable_disable_test.cc +++ b/chrome/browser/sync/test/integration/enable_disable_test.cc
@@ -11,7 +11,6 @@ #include "base/test/metrics/histogram_tester.h" #include "base/values.h" #include "chrome/browser/sync/test/integration/bookmarks_helper.h" -#include "chrome/browser/sync/test/integration/feature_toggler.h" #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" #include "chrome/browser/sync/test/integration/sync_test.h" #include "chrome/browser/sync/test/integration/updated_progress_marker_checker.h" @@ -19,7 +18,6 @@ #include "components/sync/base/model_type.h" #include "components/sync/base/user_selectable_type.h" #include "components/sync/driver/profile_sync_service.h" -#include "components/sync/driver/sync_driver_switches.h" #include "components/sync/driver/sync_user_settings_impl.h" #include "components/sync/test/fake_server/bookmark_entity_builder.h" #include "components/sync/test/fake_server/entity_builder_factory.h" @@ -66,12 +64,10 @@ // This test enables and disables types and verifies the type is sufficiently // affected by checking for existence of a root node. -class EnableDisableSingleClientTest : public FeatureToggler, public SyncTest { +class EnableDisableSingleClientTest : public SyncTest { public: - EnableDisableSingleClientTest() - : FeatureToggler(switches::kProfileSyncServiceUsesThreadPool), - SyncTest(SINGLE_CLIENT) {} - ~EnableDisableSingleClientTest() override {} + EnableDisableSingleClientTest() : SyncTest(SINGLE_CLIENT) {} + ~EnableDisableSingleClientTest() override = default; // Don't use self-notifications as they can trigger additional sync cycles. bool TestUsesSelfNotifications() override { return false; } @@ -157,7 +153,7 @@ DISALLOW_COPY_AND_ASSIGN(EnableDisableSingleClientTest); }; -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, EnableOneAtATime) { +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, EnableOneAtATime) { // Setup sync with no enabled types. SetupTest(/*all_types_enabled=*/false); @@ -192,7 +188,7 @@ } } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, DisableOneAtATime) { +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, DisableOneAtATime) { // Setup sync with no disabled types. SetupTest(/*all_types_enabled=*/true); @@ -219,7 +215,7 @@ } } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, FastEnableDisableOneAtATime) { // Setup sync with no enabled types. SetupTest(/*all_types_enabled=*/false); @@ -251,7 +247,7 @@ } } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, FastDisableEnableOneAtATime) { // Setup sync with no disabled types. SetupTest(/*all_types_enabled=*/true); @@ -275,7 +271,7 @@ } } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, FastEnableDisableEnableOneAtATime) { // Setup sync with no enabled types. SetupTest(/*all_types_enabled=*/false); @@ -301,7 +297,7 @@ } } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, EnableDisable) { +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, EnableDisable) { SetupTest(/*all_types_enabled=*/false); // Enable all, and then disable immediately afterwards, before datatypes @@ -318,11 +314,11 @@ } } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, PRE_EnableAndRestart) { +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, PRE_EnableAndRestart) { SetupTest(/*all_types_enabled=*/true); } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, EnableAndRestart) { +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, EnableAndRestart) { ASSERT_TRUE(SetupClients()); EXPECT_TRUE(GetClient(0)->AwaitEngineInitialization()); @@ -335,7 +331,7 @@ } } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, FastEnableDisableEnable) { +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, FastEnableDisableEnable) { SetupTest(/*all_types_enabled=*/false); // Enable all, and then disable+reenable immediately afterwards, before @@ -357,7 +353,7 @@ // redownloaded when Sync is started again. This does not actually verify that // the data is gone from disk (which seems infeasible); it's mostly here as a // baseline for the following tests. -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, RedownloadsAfterClearData) { ASSERT_TRUE(SetupClients()); ASSERT_FALSE(bookmarks_helper::GetBookmarkModel(0)->IsBookmarked( @@ -387,7 +383,7 @@ EXPECT_EQ(GetNumUpdatesDownloadedInLastCycle(), initial_updates_downloaded); } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, DoesNotRedownloadAfterKeepData) { ASSERT_TRUE(SetupClients()); ASSERT_FALSE(bookmarks_helper::GetBookmarkModel(0)->IsBookmarked( @@ -429,7 +425,7 @@ /*REMOTE_INITIAL_UPDATE=*/5)); } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, ClearsPrefsIfClearData) { +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, ClearsPrefsIfClearData) { SetupTest(/*all_types_enabled=*/true); SyncPrefs prefs(GetProfile(0)->GetPrefs()); @@ -439,7 +435,7 @@ EXPECT_EQ("", prefs.GetCacheGuid()); } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientTest, +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, DoesNotClearPrefsWithKeepData) { SetupTest(/*all_types_enabled=*/true); @@ -467,7 +463,7 @@ } }; -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientSelfNotifyTest, +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientSelfNotifyTest, PRE_ResendsBagOfChips) { sync_pb::ChipBag bag_of_chips; bag_of_chips.set_server_chips(kTestServerChips); @@ -484,7 +480,7 @@ EXPECT_EQ(kTestServerChips, message.bag_of_chips().server_chips()); } -IN_PROC_BROWSER_TEST_P(EnableDisableSingleClientSelfNotifyTest, +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientSelfNotifyTest, ResendsBagOfChips) { ASSERT_TRUE(SetupClients()); SyncPrefs prefs(GetProfile(0)->GetPrefs()); @@ -496,12 +492,4 @@ EXPECT_EQ(kTestServerChips, message.bag_of_chips().server_chips()); } -INSTANTIATE_TEST_SUITE_P(All, - EnableDisableSingleClientTest, - ::testing::Values(false, true)); - -INSTANTIATE_TEST_SUITE_P(All, - EnableDisableSingleClientSelfNotifyTest, - ::testing::Values(false, true)); - } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc index 9cc7477..1d80e69 100644 --- a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
@@ -11,7 +11,6 @@ #include "base/test/metrics/histogram_tester.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/test/integration/bookmarks_helper.h" -#include "chrome/browser/sync/test/integration/feature_toggler.h" #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" #include "chrome/browser/sync/test/integration/single_client_status_change_checker.h" #include "chrome/browser/sync/test/integration/sync_test.h" @@ -19,7 +18,6 @@ #include "components/bookmarks/browser/bookmark_model.h" #include "components/bookmarks/browser/url_and_title.h" #include "components/sync/driver/profile_sync_service.h" -#include "components/sync/driver/sync_driver_switches.h" #include "components/sync/engine_impl/bookmark_update_preprocessing.h" #include "components/sync/engine_impl/loopback_server/loopback_server_entity.h" #include "components/sync/test/fake_server/bookmark_entity_builder.h" @@ -73,12 +71,10 @@ // fake server across PRE_MyTest and MyTest. const char kBookmarkGuid[] = "e397ed62-9532-4dbf-ae55-200236eba15c"; -class SingleClientBookmarksSyncTest : public FeatureToggler, public SyncTest { +class SingleClientBookmarksSyncTest : public SyncTest { public: - SingleClientBookmarksSyncTest() - : FeatureToggler(switches::kProfileSyncServiceUsesThreadPool), - SyncTest(SINGLE_CLIENT) {} - ~SingleClientBookmarksSyncTest() override {} + SingleClientBookmarksSyncTest() : SyncTest(SINGLE_CLIENT) {} + ~SingleClientBookmarksSyncTest() override = default; // Verify that the local bookmark model (for the Profile corresponding to // |index|) matches the data on the FakeServer. It is assumed that FakeServer @@ -144,7 +140,7 @@ } }; -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, Sanity) { +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, Sanity) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; // Starting state: @@ -278,7 +274,7 @@ VerifyBookmarkModelMatchesFakeServer(kSingleProfileIndex); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, CommitLocalCreations) { +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, CommitLocalCreations) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; // Starting state: @@ -319,7 +315,7 @@ EXPECT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, InjectedBookmark) { +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, InjectedBookmark) { std::string title = "Montreal Canadiens"; fake_server::EntityBuilderFactory entity_builder_factory; fake_server::BookmarkEntityBuilder bookmark_builder = @@ -334,7 +330,7 @@ EXPECT_EQ(1u, CountBookmarksWithTitlesMatching(kSingleProfileIndex, title)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DownloadTwoPre2015BookmarksWithSameItemId) { const std::string title1 = "Title1"; const std::string title2 = "Title2"; @@ -360,7 +356,7 @@ EXPECT_EQ(1u, CountBookmarksWithTitlesMatching(kSingleProfileIndex, title2)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DownloadLegacyUppercaseGuid2016BookmarksAndCommit) { const std::string lowercase_guid = base::GenerateGUID(); ASSERT_EQ(lowercase_guid, base::ToLowerASCII(lowercase_guid)); @@ -408,7 +404,7 @@ EXPECT_EQ(lowercase_guid, server_bookmarks[0].specifics().bookmark().guid()); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DownloadModernBookmarkCollidingPre2015BookmarkId) { const std::string title1 = "Title1"; const std::string title2 = "Title2"; @@ -447,7 +443,7 @@ // Test that a client doesn't mutate the favicon data in the process // of storing the favicon data from sync to the database or in the process // of requesting data from the database for sync. -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, SetFaviconHiDPIDifferentCodec) { // Set the supported scale factors to 1x and 2x such that // BookmarkModel::GetFavicon() requests both 1x and 2x. @@ -492,7 +488,7 @@ // Test that a client deletes favicons from sync when they have been removed // from the local database. -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, DeleteFaviconFromSync) { +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DeleteFaviconFromSync) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -518,7 +514,7 @@ GetBookmarkModel(kSingleProfileIndex)->GetFavicon(bookmark).IsEmpty()); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, BookmarkAllNodesRemovedEvent) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; // Starting state: @@ -579,7 +575,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, DownloadDeletedBookmark) { +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DownloadDeletedBookmark) { std::string title = "Patrick Star"; fake_server::EntityBuilderFactory entity_builder_factory; fake_server::BookmarkEntityBuilder bookmark_builder = @@ -606,7 +602,7 @@ .Wait()); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DownloadModifiedBookmark) { std::string title = "Syrup"; GURL original_url = GURL("https://en.wikipedia.org/?title=Maple_syrup"); @@ -642,7 +638,7 @@ ASSERT_EQ(1u, CountBookmarksWithTitlesMatching(kSingleProfileIndex, title)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, DownloadBookmarkFolder) { +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DownloadBookmarkFolder) { const std::string title = "Seattle Sounders FC"; fake_server::EntityBuilderFactory entity_builder_factory; fake_server::BookmarkEntityBuilder bookmark_builder = @@ -658,7 +654,7 @@ ASSERT_EQ(1u, CountFoldersWithTitlesMatching(kSingleProfileIndex, title)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DownloadLegacyBookmarkFolder) { const std::string title = "Seattle Sounders FC"; fake_server::EntityBuilderFactory entity_builder_factory; @@ -679,7 +675,7 @@ // before committing them because historically they were illegal server titles. // This test makes sure that this functionality is implemented for backward // compatibility with legacy clients. -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, ShouldCommitBookmarksWithIllegalServerNames) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; @@ -715,7 +711,7 @@ // commit because historically they were considered illegal server titles. This // test makes sure that this functionality is implemented for backward // compatibility with legacy clients. -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, ShouldCreateLocalBookmarksWithIllegalServerNames) { const std::vector<std::string> illegal_titles = {"", ".", ".."}; @@ -743,7 +739,7 @@ // Legacy bookmark clients append a blank space to empty titles. This tests that // this is respected when merging local and remote hierarchies. -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, ShouldTruncateBlanksWhenMatchingTitles) { const std::string remote_blank_title = " "; const std::string local_empty_title; @@ -778,7 +774,7 @@ // Legacy bookmark clients truncate long titles up to 255 bytes. This tests that // this is respected when merging local and remote hierarchies. -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, ShouldTruncateLongTitles) { const std::string remote_truncated_title = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst" @@ -818,7 +814,7 @@ remote_truncated_title)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, DownloadBookmarkFoldersWithPositions) { const std::string title0 = "Folder left"; const std::string title1 = "Folder middle"; @@ -858,11 +854,11 @@ EXPECT_EQ(base::ASCIIToUTF16(title2), bar->children()[2]->GetTitle()); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, E2E_ONLY(SanitySetup)) { +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, E2E_ONLY(SanitySetup)) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; } -IN_PROC_BROWSER_TEST_P( +IN_PROC_BROWSER_TEST_F( SingleClientBookmarksSyncTest, RemoveRightAfterAddShouldNotSendCommitRequestsOrTombstones) { base::HistogramTester histogram_tester; @@ -892,7 +888,7 @@ /*LOCAL_DELETION=*/0)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, PRE_PersistProgressMarkerOnRestart) { const std::string title = "Seattle Sounders FC"; fake_server::EntityBuilderFactory entity_builder_factory; @@ -911,7 +907,7 @@ /*REMOTE_INITIAL_UPDATE=*/5)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, PersistProgressMarkerOnRestart) { const std::string title = "Seattle Sounders FC"; fake_server::EntityBuilderFactory entity_builder_factory; @@ -943,7 +939,7 @@ /*REMOTE_INITIAL_UPDATE=*/5)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, ApplyRemoteCreationWithValidGUID) { // Start syncing. DisableVerifier(); @@ -974,7 +970,7 @@ /*kSpecifics=*/0)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, ApplyRemoteCreationWithoutValidGUID) { // Start syncing. DisableVerifier(); @@ -1012,7 +1008,7 @@ /*kValidOCII=*/1)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, ApplyRemoteCreationWithoutValidGUIDOrOCII) { // Start syncing. DisableVerifier(); @@ -1047,7 +1043,7 @@ /*kInferred=*/3)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, MergeRemoteCreationWithValidGUID) { const GURL url = GURL("http://www.foo.com"); fake_server::EntityBuilderFactory entity_builder_factory; @@ -1083,7 +1079,7 @@ /*kInferred=*/3)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, ShouldStartTrackingRestoredBookmark) { ASSERT_TRUE(SetupClients()); DisableVerifier(); @@ -1121,7 +1117,7 @@ server_bookmarks_before.front().id_string()); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, MergeRemoteCreationWithoutValidGUID) { const GURL url = GURL("http://www.foo.com"); const std::string originator_client_item_id = base::GenerateGUID(); @@ -1162,7 +1158,7 @@ /*kInferred=*/3)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, MergeRemoteCreationWithoutValidGUIDOrOCII) { const GURL url = GURL("http://www.foo.com"); const std::string originator_client_item_id = "INVALID OCII"; @@ -1204,7 +1200,7 @@ /*kInferred=*/3)); } -IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest, MergeRemoteUpdateWithValidGUID) { DisableVerifier(); ASSERT_TRUE(SetupClients()); @@ -1380,7 +1376,7 @@ /*LOCAL_UPDATE=*/2)); } -IN_PROC_BROWSER_TEST_P( +IN_PROC_BROWSER_TEST_F( SingleClientBookmarksSyncTestWithEnabledReuploadRemoteBookmarks, ShouldReuploadFullTitleAfterInitialMerge) { ASSERT_TRUE(SetupClients()); @@ -1411,7 +1407,7 @@ // ShouldReuploadFullTitleAfterRestartOnIncrementalChange, but current test // initiates reupload after restart only (before restart the entity is in synced // state). -IN_PROC_BROWSER_TEST_P( +IN_PROC_BROWSER_TEST_F( SingleClientBookmarksSyncTestWithEnabledReuploadPreexistingBookmarks, PRE_ShouldReuploadFullTitleForOldClients) { // Prepare legacy bookmark without full_title field in specifics and store it @@ -1438,7 +1434,7 @@ .Wait()); } -IN_PROC_BROWSER_TEST_P( +IN_PROC_BROWSER_TEST_F( SingleClientBookmarksSyncTestWithEnabledReuploadPreexistingBookmarks, ShouldReuploadFullTitleForOldClients) { // This test checks that the legacy bookmark which was stored locally will @@ -1478,7 +1474,7 @@ // TODO(rushans): add the same test as before with favicons. -IN_PROC_BROWSER_TEST_P( +IN_PROC_BROWSER_TEST_F( SingleClientBookmarksSyncTestWithEnabledReuploadRemoteBookmarks, PRE_ShouldReuploadFullTitleAfterRestartOnIncrementalChange) { ASSERT_TRUE(SetupSync()); @@ -1507,7 +1503,7 @@ server_bookmarks.front().specifics().bookmark().has_full_title()); } -IN_PROC_BROWSER_TEST_P( +IN_PROC_BROWSER_TEST_F( SingleClientBookmarksSyncTestWithEnabledReuploadRemoteBookmarks, ShouldReuploadFullTitleAfterRestartOnIncrementalChange) { ASSERT_TRUE(SetupClients()); @@ -1531,17 +1527,4 @@ EXPECT_TRUE(server_bookmarks.front().specifics().bookmark().has_full_title()); } -INSTANTIATE_TEST_SUITE_P(All, - SingleClientBookmarksSyncTest, - ::testing::Values(false, true)); -// TODO(crbug.com/1067191): remove feature toggle. -INSTANTIATE_TEST_SUITE_P( - All, - SingleClientBookmarksSyncTestWithEnabledReuploadRemoteBookmarks, - ::testing::Values(false, true)); -INSTANTIATE_TEST_SUITE_P( - All, - SingleClientBookmarksSyncTestWithEnabledReuploadPreexistingBookmarks, - ::testing::Values(false, true)); - } // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc b/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc index 04f7a866..ba15b8f 100644 --- a/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc
@@ -16,7 +16,6 @@ #include "chrome/browser/policy/profile_policy_connector_builder.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/test/integration/bookmarks_helper.h" -#include "chrome/browser/sync/test/integration/feature_toggler.h" #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" #include "chrome/browser/sync/test/integration/sync_integration_test_util.h" #include "chrome/browser/sync/test/integration/sync_test.h" @@ -28,7 +27,6 @@ #include "components/policy/core/common/policy_types.h" #include "components/policy/policy_constants.h" #include "components/sync/driver/profile_sync_service.h" -#include "components/sync/driver/sync_driver_switches.h" #include "components/sync/driver/sync_service.h" #include "components/sync/engine/cycle/sync_cycle_snapshot.h" #include "components/sync/engine_impl/loopback_server/persistent_permanent_entity.h" @@ -84,12 +82,10 @@ const char kGenericSubfolderName[] = "Subfolder Name"; const char kValidPassphrase[] = "passphrase!"; -class TwoClientBookmarksSyncTest : public FeatureToggler, public SyncTest { +class TwoClientBookmarksSyncTest : public SyncTest { public: - TwoClientBookmarksSyncTest() - : FeatureToggler(switches::kProfileSyncServiceUsesThreadPool), - SyncTest(TWO_CLIENT) {} - ~TwoClientBookmarksSyncTest() override {} + TwoClientBookmarksSyncTest() : SyncTest(TWO_CLIENT) {} + ~TwoClientBookmarksSyncTest() override = default; void TearDownInProcessBrowserTestFixture() override { SyncTest::TearDownInProcessBrowserTestFixture(); @@ -104,7 +100,7 @@ DISALLOW_COPY_AND_ASSIGN(TwoClientBookmarksSyncTest); }; -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, Sanity) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, Sanity) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -134,7 +130,7 @@ ASSERT_TRUE(BookmarksMatchChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SimultaneousURLChanges) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SimultaneousURLChanges) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -155,7 +151,7 @@ ASSERT_TRUE(BookmarksMatchChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddFirstFolder) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddFirstFolder) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -163,7 +159,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_Add3FoldersInShuffledOrder) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -174,7 +170,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddFirstBMWithoutFavicon) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -183,7 +179,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddFirstBMWithFavicon) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddFirstBMWithFavicon) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); const GURL page_url(kGenericURL); @@ -202,7 +198,7 @@ // In particular, the synced 16x16 favicon bitmap should overwrite 16x16 // favicon bitmaps on all clients. (Though non-16x16 favicon bitmaps // are unchanged). -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_SetFaviconHiDPI) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SetFaviconHiDPI) { // Set the supported scale factors to include 2x such that CreateFavicon() // creates a favicon with hidpi representations and that methods in the // FaviconService request hidpi favicons. @@ -242,7 +238,7 @@ // favicon should be redownloaded when the web when the bookmark is visited. // If sync prevents the "last updated time" from expiring, the favicon is // never redownloaded from the web. (http://crbug.com/481414) -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_UpdatingTitleDoesNotUpdateFaviconLastUpdatedTime) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; @@ -288,7 +284,7 @@ // ensures that sync has the most up to date data and prevents sync from // reverting the newly updated bookmark favicon back to the old favicon. // crbug.com/485657 -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SetFaviconTwoBookmarksSameIconURL) { const GURL page_url1("http://www.google.com/a"); const GURL page_url2("http://www.google.com/b"); @@ -321,7 +317,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_DeleteFavicon) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DeleteFavicon) { const GURL page_url("http://www.google.com/a"); const GURL icon_url("http://www.google.com/favicon.ico"); @@ -351,7 +347,7 @@ CheckHasNoFavicon(0, page_url); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddNonHTTPBMs) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddNonHTTPBMs) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -361,7 +357,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddFirstBMUnderFolder) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddFirstBMUnderFolder) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -371,7 +367,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddSeveralBMsUnderBMBarAndOtherBM) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -385,7 +381,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddSeveralBMsAndFolders) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddSeveralBMsAndFolders) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -415,7 +411,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DuplicateBMWithDifferentURLSameName) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -428,7 +424,7 @@ } // Add bookmarks with different name and same URL. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DuplicateBookmarksWithSameURL) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -440,7 +436,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameBMName) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMName) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -454,7 +450,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameBMURL) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMURL) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -469,7 +465,7 @@ } // Renaming the same bookmark name twice. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_TwiceRenamingBookmarkName) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -488,7 +484,7 @@ } // Renaming the same bookmark URL twice. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_TwiceRenamingBookmarkURL) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -506,7 +502,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameBMFolder) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMFolder) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -520,7 +516,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameEmptyBMFolder) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameEmptyBMFolder) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -533,7 +529,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMFolderWithLongHierarchy) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -558,7 +554,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMFolderThatHasParentAndChildren) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -589,7 +585,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameBMNameAndURL) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMNameAndURL) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -607,7 +603,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DeleteBMEmptyAccountAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -619,7 +615,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelBMNonEmptyAccountAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -635,7 +631,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelFirstBMUnderBMFoldNonEmptyFoldAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -653,7 +649,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelLastBMUnderBMFoldNonEmptyFoldAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -671,7 +667,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelMiddleBMUnderBMFoldNonEmptyFoldAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -689,7 +685,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelBMsUnderBMFoldEmptyFolderAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -708,7 +704,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelEmptyBMFoldEmptyAccountAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -720,7 +716,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelEmptyBMFoldNonEmptyAccountAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -742,7 +738,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelBMFoldWithBMsNonEmptyAccountAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -771,7 +767,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelBMFoldWithBMsAndBMFoldsNonEmptyACAfterwards) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -819,7 +815,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_DelBMFoldWithParentAndChildrenBMsAndBMFolds) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -850,7 +846,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOfTwoBMs) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOfTwoBMs) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -868,7 +864,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOf10BMs) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOf10BMs) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -883,7 +879,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_MovingBMsFromBMBarToBMFolder) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -906,7 +902,7 @@ } } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_MovingBMsFromBMFoldToBMBar) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -929,7 +925,7 @@ } } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_MovingBMsFromParentBMFoldToChildBMFold) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -958,7 +954,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_MovingBMsFromChildBMFoldToParentBMFold) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -987,7 +983,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_HoistBMs10LevelUp) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_HoistBMs10LevelUp) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1025,7 +1021,7 @@ } // Flaky. http://crbug.com/107744. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_SinkBMs10LevelDown) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SinkBMs10LevelDown) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1062,7 +1058,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SinkEmptyBMFold5LevelsDown) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1090,7 +1086,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SinkNonEmptyBMFold5LevelsDown) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1123,7 +1119,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_HoistFolder5LevelsUp) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_HoistFolder5LevelsUp) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1156,7 +1152,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOfTwoBMFolders) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1177,7 +1173,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOfTenBMFolders) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1198,7 +1194,7 @@ ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_BiDirectionalPushAddingBM) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1216,7 +1212,7 @@ ASSERT_FALSE(ContainsDuplicateBookmarks(0)); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_BiDirectionalPush_AddingSameBMs) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1233,14 +1229,14 @@ ASSERT_TRUE(BookmarksMatchChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_BootStrapEmptyStateEverywhere) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(AwaitQuiescence()); ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_Merge_CaseInsensitivity_InNames) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1263,7 +1259,7 @@ ASSERT_FALSE(ContainsDuplicateBookmarks(0)); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_SimpleMergeOfDifferentBMModels) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1290,7 +1286,7 @@ ASSERT_FALSE(ContainsDuplicateBookmarks(0)); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_MergeSimpleBMHierarchyUnderBMBar) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1314,7 +1310,7 @@ ASSERT_FALSE(ContainsDuplicateBookmarks(0)); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_MergeSimpleBMHierarchyEqualSetsUnderBMBar) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1334,7 +1330,7 @@ } // Merge bookmark folders with different bookmarks. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_MergeBMFoldersWithDifferentBMs) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1358,7 +1354,7 @@ } // Merge moderately complex bookmark models. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_MergeDifferentBMModelsModeratelyComplex) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1401,7 +1397,7 @@ } // Merge simple bookmark subset under bookmark folder. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_MergeSimpleBMHierarchySubsetUnderBMFolder) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1427,7 +1423,7 @@ } // Merge subsets of bookmark under bookmark bar. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_MergeSimpleBMHierarchySubsetUnderBookmarkBar) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1452,7 +1448,7 @@ } // Merge simple bookmark hierarchy under bookmark folder. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_Merge_SimpleBMHierarchy_Under_BMFolder) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1484,7 +1480,7 @@ // Merge disjoint sets of bookmark hierarchy under bookmark // folder. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_Merge_SimpleBMHierarchy_DisjointSets_Under_BMFolder) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1514,7 +1510,7 @@ } // Merge disjoint sets of bookmark hierarchy under bookmark bar. -IN_PROC_BROWSER_TEST_P( +IN_PROC_BROWSER_TEST_F( TwoClientBookmarksSyncTest, MC_Merge_SimpleBMHierarchy_DisjointSets_Under_BookmarkBar) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; @@ -1538,7 +1534,7 @@ } // Merge sets of duplicate bookmarks under bookmark bar. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_Merge_SimpleBMHierarchy_DuplicateBMs_Under_BMBar) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1569,7 +1565,7 @@ } } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, DisableBookmarks) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, DisableBookmarks) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1584,7 +1580,7 @@ ASSERT_TRUE(BookmarksMatchChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, DisableSync) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, DisableSync) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1601,7 +1597,7 @@ } // Test adding duplicate folder - Both with different BMs underneath. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, MC_DuplicateFolders) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_DuplicateFolders) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1623,7 +1619,7 @@ ASSERT_FALSE(ContainsDuplicateBookmarks(0)); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, MC_DeleteBookmark) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_DeleteBookmark) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE( GetClient(1)->DisableSyncForType(syncer::UserSelectableType::kBookmarks)); @@ -1659,7 +1655,7 @@ // Test a scenario of updating the name of the same bookmark from two clients at // the same time. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_BookmarkNameChangeConflict) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; @@ -1684,7 +1680,7 @@ // Test a scenario of updating the URL of the same bookmark from two clients at // the same time. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_BookmarkURLChangeConflict) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; @@ -1711,7 +1707,7 @@ // Test a scenario of updating the BM Folder name from two clients at the same // time. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_FolderNameChangeConflict) { ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; DisableVerifier(); @@ -1786,7 +1782,7 @@ ASSERT_FALSE(ContainsDuplicateBookmarks(0)); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, FirstClientEnablesEncryptionWithPassSecondChanges) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1828,7 +1824,7 @@ // Deliberately racy rearranging of bookmarks to test that our conflict resolver // code results in a consistent view across machines (no matter what the final // order is). -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, RacyPositionChanges) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, RacyPositionChanges) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1887,7 +1883,7 @@ // Trigger the server side creation of Synced Bookmarks. Ensure both clients // remain syncing afterwards. Add bookmarks to the synced bookmarks folder // and ensure both clients receive the bookmark. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, CreateSyncedBookmarks) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, CreateSyncedBookmarks) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1910,7 +1906,7 @@ ASSERT_TRUE(BookmarksMatchChecker().Wait()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, BookmarkAllNodesRemovedEvent) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait()); @@ -1964,7 +1960,7 @@ } // Verifies that managed bookmarks (installed by policy) don't get synced. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, ManagedBookmarks) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, ManagedBookmarks) { // Make sure the first Profile has an overridden policy provider. EXPECT_CALL(policy_provider_, IsInitializationComplete(testing::_)) .WillRepeatedly(testing::Return(true)); @@ -2030,12 +2026,12 @@ ASSERT_EQ(0u, managed_node1->children().size()); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, E2E_ONLY(SanitySetup)) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, E2E_ONLY(SanitySetup)) { ResetSyncForPrimaryAccount(); ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, E2E_ONLY(OneClientAddsBookmark)) { ResetSyncForPrimaryAccount(); ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; @@ -2061,7 +2057,7 @@ } // TODO(shadi): crbug.com/569213: Enable this as E2E test. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, OneClientAddsFolderAndBookmark) { ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; // All profiles should sync same bookmarks. @@ -2086,7 +2082,7 @@ } } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, E2E_ONLY(TwoClientsAddBookmarks)) { ResetSyncForPrimaryAccount(); ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; @@ -2117,7 +2113,7 @@ // Verify that a bookmark added on a client with bookmark syncing disabled gets // synced to a second client once bookmark syncing is re-enabled. -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, E2E_ENABLED(AddBookmarkWhileDisabled)) { ResetSyncForPrimaryAccount(); ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; @@ -2149,7 +2145,7 @@ ASSERT_EQ(initial_count + 2, CountAllBookmarks(1)); } -IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, ReorderChildren) { +IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, ReorderChildren) { const GURL google_url("http://www.google.com"); const GURL yahoo_url("http://www.yahoo.com"); @@ -2181,8 +2177,4 @@ EXPECT_EQ(google_url, GetBookmarkBarNode(1)->children().back()->url()); } -INSTANTIATE_TEST_SUITE_P(All, - TwoClientBookmarksSyncTest, - ::testing::Values(false, true)); - } // namespace
diff --git a/chrome/browser/tab/BUILD.gn b/chrome/browser/tab/BUILD.gn index 47192f9..6da342d 100644 --- a/chrome/browser/tab/BUILD.gn +++ b/chrome/browser/tab/BUILD.gn
@@ -54,9 +54,13 @@ "//components/find_in_page/android:java", "//components/navigation_interception/android:navigation_interception_java", "//content/public/android:content_java", + "//net/android:net_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:com_google_protobuf_protobuf_javalite_java", "//ui/android:ui_full_java", + "//url:gurl_java", + "//url:origin_java", ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
diff --git a/chrome/browser/tabmodel/BUILD.gn b/chrome/browser/tabmodel/BUILD.gn index ab77bd7..7447067 100644 --- a/chrome/browser/tabmodel/BUILD.gn +++ b/chrome/browser/tabmodel/BUILD.gn
@@ -29,5 +29,6 @@ "//chrome/browser/tab:java", "//components/embedder_support/android:util_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", ] }
diff --git a/chrome/browser/tabpersistence/BUILD.gn b/chrome/browser/tabpersistence/BUILD.gn index 95373b1..68ba50eb 100644 --- a/chrome/browser/tabpersistence/BUILD.gn +++ b/chrome/browser/tabpersistence/BUILD.gn
@@ -8,6 +8,7 @@ sources = [ "android/java/src/org/chromium/chrome/browser/tabpersistence/TabStateDirectory.java" ] deps = [ "//base:base_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_core_core_java", ] }
diff --git a/chrome/browser/thumbnail/generator/BUILD.gn b/chrome/browser/thumbnail/generator/BUILD.gn index 3e4e7395..04dffbd 100644 --- a/chrome/browser/thumbnail/generator/BUILD.gn +++ b/chrome/browser/thumbnail/generator/BUILD.gn
@@ -121,6 +121,8 @@ "//content/public/android:content_java", "//content/public/test/android:content_java_test_support", "//third_party/android_deps:android_support_v4_java", + "//third_party/android_deps:androidx_annotation_annotation_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_support_test_runner:runner_java", "//third_party/hamcrest:hamcrest_java", "//third_party/junit",
diff --git a/chrome/browser/touch_to_fill/android/BUILD.gn b/chrome/browser/touch_to_fill/android/BUILD.gn index 9231bf84..c192a5e 100644 --- a/chrome/browser/touch_to_fill/android/BUILD.gn +++ b/chrome/browser/touch_to_fill/android/BUILD.gn
@@ -27,7 +27,9 @@ android_library("public_java") { deps = [ + "//base:base_java", "//components/browser_ui/android/bottomsheet:java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//ui/android:ui_java", ] @@ -48,6 +50,7 @@ "//base:base_junit_test_support", "//chrome/android:chrome_java", "//chrome/android:chrome_test_util_java", + "//chrome/browser/flags:java", "//chrome/browser/touch_to_fill/android:public_java", "//chrome/browser/touch_to_fill/android/internal:java", "//chrome/browser/ui/android/favicon:java", @@ -55,6 +58,7 @@ "//components/browser_ui/android/bottomsheet:java", "//components/module_installer/android:module_installer_java", "//components/url_formatter/android:url_formatter_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/hamcrest:hamcrest_java", "//third_party/junit", "//third_party/mockito:mockito_java", @@ -77,12 +81,14 @@ "//chrome/android:chrome_java", "//chrome/android:chrome_test_java", "//chrome/android:chrome_test_util_java", + "//chrome/browser/flags:java", "//chrome/browser/touch_to_fill/android/internal:java", "//chrome/test/android:chrome_java_test_support", "//components/browser_ui/android/bottomsheet:java", "//components/browser_ui/android/bottomsheet/test:java", "//content/public/test/android:content_java_test_support", "//third_party/android_deps:androidx_recyclerview_recyclerview_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_deps:espresso_java", "//third_party/hamcrest:hamcrest_java", "//third_party/junit",
diff --git a/chrome/browser/touch_to_fill/android/internal/BUILD.gn b/chrome/browser/touch_to_fill/android/internal/BUILD.gn index 29c6f33..a81880e 100644 --- a/chrome/browser/touch_to_fill/android/internal/BUILD.gn +++ b/chrome/browser/touch_to_fill/android/internal/BUILD.gn
@@ -20,6 +20,7 @@ "//components/browser_ui/android/bottomsheet:java", "//components/embedder_support/android:util_java", "//components/url_formatter/android:url_formatter_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_recyclerview_recyclerview_java", "//ui/android:ui_java", ]
diff --git a/chrome/browser/ui/android/appmenu/BUILD.gn b/chrome/browser/ui/android/appmenu/BUILD.gn index 6b117b5..5aa15ac 100644 --- a/chrome/browser/ui/android/appmenu/BUILD.gn +++ b/chrome/browser/ui/android/appmenu/BUILD.gn
@@ -17,12 +17,18 @@ "java/src/org/chromium/chrome/browser/ui/appmenu/CustomViewBinder.java", "java/src/org/chromium/chrome/browser/ui/appmenu/MenuButtonDelegate.java", ] - deps = [ "//chrome/browser/android/lifecycle:java" ] + deps = [ + "//chrome/browser/android/lifecycle:java", + "//third_party/android_deps:androidx_annotation_annotation_java", + ] } android_library_factory("factory_java") { # These deps will be inherited by the resulting android_library target. - deps = [ ":java" ] + deps = [ + ":java", + "//chrome/browser/android/lifecycle:java", + ] # This internal file will be replaced by a generated file so the resulting # android_library target does not actually depend on this internal file.
diff --git a/chrome/browser/ui/android/appmenu/internal/BUILD.gn b/chrome/browser/ui/android/appmenu/internal/BUILD.gn index 91cf3e0..63a29f3 100644 --- a/chrome/browser/ui/android/appmenu/internal/BUILD.gn +++ b/chrome/browser/ui/android/appmenu/internal/BUILD.gn
@@ -26,6 +26,7 @@ ":java_resources", "//base:base_java", "//chrome/browser/android/lifecycle:java", + "//chrome/browser/flags:java", "//chrome/browser/ui/android/appmenu:java", "//components/browser_ui/widget/android:java", "//third_party/android_deps:android_support_v7_appcompat_java", @@ -69,13 +70,16 @@ "//base:base_java", "//base:base_java_test_support", "//chrome/browser/android/lifecycle:java", + "//chrome/browser/flags:java", "//chrome/browser/ui/android/appmenu:java", "//chrome/browser/ui/android/appmenu/test:test_support_java", "//chrome/test/android:chrome_java_test_support", "//components/browser_ui/widget/android:test_support_java", "//content/public/test/android:content_java_test_support", "//third_party/android_deps:android_support_v7_appcompat_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_appcompat_appcompat_resources_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", "//third_party/junit",
diff --git a/chrome/browser/ui/android/appmenu/test/BUILD.gn b/chrome/browser/ui/android/appmenu/test/BUILD.gn index 96827d1..4e07f81 100644 --- a/chrome/browser/ui/android/appmenu/test/BUILD.gn +++ b/chrome/browser/ui/android/appmenu/test/BUILD.gn
@@ -12,6 +12,7 @@ "java/src/org/chromium/chrome/browser/ui/appmenu/TestAppMenuObserver.java", ] deps = [ + "//base:base_java", "//base:base_java_test_support", "//chrome/browser/ui/android/appmenu:java", "//chrome/browser/ui/android/appmenu/internal:java",
diff --git a/chrome/browser/ui/android/default_browser_promo/BUILD.gn b/chrome/browser/ui/android/default_browser_promo/BUILD.gn index 24478b7..24726865 100644 --- a/chrome/browser/ui/android/default_browser_promo/BUILD.gn +++ b/chrome/browser/ui/android/default_browser_promo/BUILD.gn
@@ -19,6 +19,7 @@ "//chrome/browser/preferences:java", "//chrome/browser/profiles/android:java", "//components/browser_ui/widget/android:java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//ui/android:ui_full_java", ] } @@ -68,6 +69,7 @@ "//content/public/test/android:content_java_test_support", "//third_party/android_deps:android_support_v7_appcompat_java", "//third_party/android_deps:androidx_preference_preference_java", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_deps:espresso_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java",
diff --git a/chrome/browser/ui/android/favicon/BUILD.gn b/chrome/browser/ui/android/favicon/BUILD.gn index b58869d..63eb5d6 100644 --- a/chrome/browser/ui/android/favicon/BUILD.gn +++ b/chrome/browser/ui/android/favicon/BUILD.gn
@@ -21,6 +21,8 @@ "//components/embedder_support/android:util_java", "//components/url_formatter/android:url_formatter_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", + "//third_party/android_deps:androidx_core_core_java", "//ui/android:ui_java", "//url:gurl_java", ]
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb index 771250b..fe94103c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -357,6 +357,7 @@ <translation id="3892148308691398805">পাঠৰ প্ৰতিলিপি কৰক</translation> <translation id="3894427358181296146">ফ’ল্ডাৰ যোগ কৰক</translation> <translation id="3895926599014793903">বলেৰে জুম সক্ষম কৰক</translation> +<translation id="3909763690984331376">সুৰক্ষা পৰীক্ষা <ph name="BEGIN_NEW" />নতুন<ph name="END_NEW" /></translation> <translation id="3912508018559818924">ৱেবৰ পৰা উৎকৃষ্টসমূহ বিচাৰি উলিয়াই থকা হৈছে…</translation> <translation id="3927692899758076493">ছান্ছ-ছেৰিফ</translation> <translation id="3928666092801078803">মোৰ ডেটা সংযুক্ত কৰক</translation> @@ -579,6 +580,7 @@ <translation id="5686790454216892815">ফাইলৰ নামটো বহুত দীঘল</translation> <translation id="5694049548840660018">সহজে গৃহপৃষ্ঠালৈ উভতি যাওক</translation> <translation id="569536719314091526">অধিক বিকল্প-ৰ বুটামটো ব্যৱহাৰ কৰি এই পৃষ্ঠাটো যিকোনো ভাষালৈ অনুবাদ কৰক</translation> +<translation id="5696597120588531049">Chromeএ আপোনাক ডেটা উলংঘন, অসুৰক্ষিত ৱেবছাইট তথা আন বহুতৰ পৰা সুৰক্ষিত থকাত সহায় কৰিব পাৰে</translation> <translation id="5697688514913266141">আপোনাৰ ফাইলটো <ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" />ত ছেভ কৰা হ’ব। <ph name="BEGIN_LINK2" />সম্পাদনা কৰক<ph name="END_LINK2" />।</translation> <translation id="570347048394355941">টেবলৈ সলনি কৰক</translation> <translation id="572328651809341494">শেহতীয়াকৈ বন্ধ কৰা টেব</translation> @@ -712,6 +714,7 @@ <translation id="6656545060687952787">ডিভাইচ স্কেন কৰিবলৈ Chromeএ অৱস্থান এক্সেছ কৰাটো প্ৰয়োজনীয়। <ph name="BEGIN_LINK" />অনুমতি আপডে’ট কৰক<ph name="END_LINK" /></translation> <translation id="6657585470893396449">পাছৱৰ্ড</translation> <translation id="6659594942844771486">টেব</translation> +<translation id="6663079968236414793">পাঠৰ সৈতে লিংক কৰক</translation> <translation id="666573598175432848">Chromeৰ এটা নতুন সংস্কৰণ উপলব্ধ। Play Storeলৈ যাবলৈ এই উপাদানটো টিপক।</translation> <translation id="666731172850799929"><ph name="APP_NAME" />ত খোলক</translation> <translation id="666981079809192359">Chrome গোপনীয়তাৰ জাননী</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb index 8768646..7e01ecb 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">Имейл</translation> <translation id="5665379678064389456">Създайте събитие в <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Отмяна на искането на уебсайта да не се допуска увеличаване на мащаба</translation> +<translation id="5683547024293500885">Chrome не може да провери за актуализации</translation> <translation id="5686790454216892815">Името на файла е твърде дълго</translation> <translation id="5694049548840660018">Връщайте се лесно към началната си страница</translation> <translation id="569536719314091526">Страницата може да бъде преведена на който и да е език чрез бутона за още опции</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Изтеглянето ще стартира при връзка с Wi-Fi мрежа.</translation> <translation id="5748802427693696783">Превключихте към стандартните раздели</translation> <translation id="5749068826913805084">Chrome се нуждае от достъп до хранилището, за да изтегля файлове.</translation> +<translation id="5749237766298580851">Изключено <ph name="SEPARATOR" /> Не се препоръчва</translation> <translation id="5754350196967618083">Не може да се опресни Discover</translation> <translation id="5763382633136178763">Раздели в режим „инкогнито“</translation> <translation id="5763514718066511291">Докоснете, за да копирате URL адреса за това приложение</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb index 5435537..c5bc3c0 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -357,6 +357,7 @@ <translation id="3892148308691398805">টেক্সট কপি করুন</translation> <translation id="3894427358181296146">ফোল্ডার যোগ করুন</translation> <translation id="3895926599014793903">ফোর্স জুম চালু করুন</translation> +<translation id="3909763690984331376">নিরাপত্তা পরীক্ষা <ph name="BEGIN_NEW" />নতুন<ph name="END_NEW" /></translation> <translation id="3912508018559818924">ওয়েব থেকে সেরা ফলাফল লোড করা হচ্ছে…</translation> <translation id="3927692899758076493">Sans Serif</translation> <translation id="3928666092801078803">আমার ডেটা একত্রিত করুন</translation> @@ -581,6 +582,7 @@ <translation id="5686790454216892815">ফাইলের নামটি খুব বড়</translation> <translation id="5694049548840660018">হোমে সহজেই ফিরে যান</translation> <translation id="569536719314091526">আরও বিকল্প বোতাম থেকে এই পৃষ্ঠাটিকে যেকোনও ভাষায় অনুবাদ করুন</translation> +<translation id="5696597120588531049">Chrome আপনাকে ডেটার নিরাপত্তা লঙ্ঘন, ক্ষতিকর ওয়েবসাইট ও আরও অন্যান্য কিছু থেকে সুরক্ষিত থাকতে সাহায্য করে</translation> <translation id="5697688514913266141">আপনার ফাইল <ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" /> ডিরেক্টরিতে সেভ করা হবে। <ph name="BEGIN_LINK2" />এডিট করুন<ph name="END_LINK2" />।</translation> <translation id="570347048394355941">বদল করে ট্যাবে যান</translation> <translation id="572328651809341494">সাম্প্রতিক ট্যাবগুলি</translation> @@ -714,6 +716,7 @@ <translation id="6656545060687952787">ডিভাইস স্ক্যান করার জন্য Chrome এর স্থান এক্সেস প্রয়োজন। <ph name="BEGIN_LINK" />অনুমতি আপডেট করুন<ph name="END_LINK" /></translation> <translation id="6657585470893396449">পাসওয়ার্ড</translation> <translation id="6659594942844771486">ট্যাব</translation> +<translation id="6663079968236414793">টেক্সটের সাথে লিঙ্ক করুন</translation> <translation id="666573598175432848">Chrome-এর একটি নতুন ভার্সন উপলভ্য রয়েছে। Play Store-এ যেতে এই এলিমেন্টে ট্যাপ করুন।</translation> <translation id="666731172850799929"><ph name="APP_NAME" /> এ খুলুন</translation> <translation id="666981079809192359">Chrome এর গোপনীয়তা বিজ্ঞপ্তি</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb index 958cdc0..0909b63b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">E-pošta</translation> <translation id="5665379678064389456">Kreirajte događaj u aplikaciji <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Zaobilaženje zahtjeva web lokacije kako bi se spriječilo zumiranje</translation> +<translation id="5683547024293500885">Chrome ne može provjeriti ima li ažuriranja</translation> <translation id="5686790454216892815">Naziv fajla je predugačak</translation> <translation id="5694049548840660018">Jednostavan povratak na početnu stranicu</translation> <translation id="569536719314091526">Prevedite ovu stranicu na bilo koji jezik koristeći dugme Više opcija</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Preuzimanje će se pokrenuti putem WiFi mreže.</translation> <translation id="5748802427693696783">Prebačeno na standardne kartice</translation> <translation id="5749068826913805084">Chromeu treba pristup pohrani za preuzimanje fajlova.</translation> +<translation id="5749237766298580851">Isključeno <ph name="SEPARATOR" /> Ne preporučuje se</translation> <translation id="5754350196967618083">Nije moguće osvježiti Discover</translation> <translation id="5763382633136178763">Anonimne kartice</translation> <translation id="5763514718066511291">Dodirnite da kopirate URL za ovu aplikaciju</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb index daecd04..7326a5f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">E-mail</translation> <translation id="5665379678064389456">Vytvořit událost v aplikaci <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Přepsat požadavek webu na zákaz přiblížení</translation> +<translation id="5683547024293500885">Chrome nemůže vyhledat dostupné aktualizace</translation> <translation id="5686790454216892815">Název souboru je příliš dlouhý</translation> <translation id="5694049548840660018">Snadno se vraťte na domovskou stránku</translation> <translation id="569536719314091526">Pomocí tlačítka Další možnosti můžete tuto stránku přeložit do libovolného jazyka.</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Stahování bude zahájeno při připojení k Wi-Fi.</translation> <translation id="5748802427693696783">Přepnuto na standardní karty</translation> <translation id="5749068826913805084">Aby bylo možné stahovat soubory, Chrome potřebuje přístup k úložišti.</translation> +<translation id="5749237766298580851">Vypnuto <ph name="SEPARATOR" /> Nedoporučuje se</translation> <translation id="5754350196967618083">Kanál Objevit nelze obnovit</translation> <translation id="5763382633136178763">Anonymní karty</translation> <translation id="5763514718066511291">Klepnutím zkopírujete adresu URL této aplikace</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb index 9613f17..6419dfba 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">Mail</translation> <translation id="5665379678064389456">Opret begivenhed i <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Tilsidesæt en anmodning fra et website om at undgå at zoome ind</translation> +<translation id="5683547024293500885">Chrome kan ikke søge efter opdateringer</translation> <translation id="5686790454216892815">Filnavnet er for langt</translation> <translation id="5694049548840660018">Vend nemt tilbage til startsiden</translation> <translation id="569536719314091526">Oversæt denne side til et hvilket som helst sprog via knappen Flere valgmuligheder</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Downloaden starter, når der er Wi-Fi-forbindelse.</translation> <translation id="5748802427693696783">Skiftet til standardfaner</translation> <translation id="5749068826913805084">Chrome skal have lageradgang for at kunne downloade filer.</translation> +<translation id="5749237766298580851">Fra <ph name="SEPARATOR" /> Anbefales ikke</translation> <translation id="5754350196967618083">Discover kan ikke opdateres</translation> <translation id="5763382633136178763">Inkognitofaner</translation> <translation id="5763514718066511291">Tryk for at kopiere webadressen til denne app</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb index b0c22bc..3a0d855 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">Διεύθυνση ηλεκτρονικού ταχυδρομείου</translation> <translation id="5665379678064389456">Δημιουργία συμβάντος στην εφαρμογή <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Παράκαμψη του αιτήματος ενός ιστότοπου για παρεμπόδιση εστίασης</translation> +<translation id="5683547024293500885">Το Chrome δεν μπορεί να ελέγξει για ενημερώσεις.</translation> <translation id="5686790454216892815">Το όνομα του αρχείου είναι πολύ μεγάλο</translation> <translation id="5694049548840660018">Επιστρέψτε εύκολα στην αρχική σελίδα</translation> <translation id="569536719314091526">Μεταφράστε αυτήν τη σελίδα σε οποιαδήποτε γλώσσα από το κουμπί "Περισσότερες επιλογές"</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Η λήψη θα ξεκινήσει σε Wi-Fi.</translation> <translation id="5748802427693696783">Έγινε εναλλαγή σε τυπικές καρτέλες</translation> <translation id="5749068826913805084">Το Chrome χρειάζεται πρόσβαση στο χώρο αποθήκευσης για τη λήψη αρχείων.</translation> +<translation id="5749237766298580851">Ανενεργό <ph name="SEPARATOR" /> Δεν συνιστάται</translation> <translation id="5754350196967618083">Δεν είναι δυνατή η ανανέωση του Discover</translation> <translation id="5763382633136178763">Καρτέλες ανώνυμης περιήγησης</translation> <translation id="5763514718066511291">Πατήστε για αντιγραφή του URL για αυτήν την εφαρμογή</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb index 4522e6c..d92b8a8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">Email</translation> <translation id="5665379678064389456">Create event in <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Override a website’s request to prevent zooming in</translation> +<translation id="5683547024293500885">Chrome can’t check for updates</translation> <translation id="5686790454216892815">File name too long</translation> <translation id="5694049548840660018">Get back home easily</translation> <translation id="569536719314091526">Translate this page to any language from the More options button</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Download will start on Wi-Fi.</translation> <translation id="5748802427693696783">Switched to standard tabs</translation> <translation id="5749068826913805084">Chrome needs storage access to download files.</translation> +<translation id="5749237766298580851">Off <ph name="SEPARATOR" /> Not recommended</translation> <translation id="5754350196967618083">Can't refresh Discover</translation> <translation id="5763382633136178763">Incognito tabs</translation> <translation id="5763514718066511291">Tap to copy the URL for this app</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb index f123db88..95cea58f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -173,7 +173,7 @@ <translation id="2387895666653383613">Ajuste de texto</translation> <translation id="2394602618534698961">Los archivos que descargues aparecerán aquí</translation> <translation id="2407481962792080328">Esta función se activará cuando inicies sesión en tu cuenta de Google</translation> -<translation id="2407674018644220013">¿Establecer <ph name="APP_NAME" /> como predeterminado?</translation> +<translation id="2407674018644220013">¿Establecer <ph name="APP_NAME" /> como navegador predeterminado?</translation> <translation id="2410754283952462441">Elegir una cuenta</translation> <translation id="2414886740292270097">Oscuro</translation> <translation id="2426805022920575512">Elegir otra cuenta</translation> @@ -357,6 +357,7 @@ <translation id="3892148308691398805">Copiar texto</translation> <translation id="3894427358181296146">Añadir carpeta</translation> <translation id="3895926599014793903">Forzar zoom</translation> +<translation id="3909763690984331376">Comprobación de seguridad <ph name="BEGIN_NEW" />Nuevo<ph name="END_NEW" /></translation> <translation id="3912508018559818924">Buscando lo mejor de la Web…</translation> <translation id="3927692899758076493">Sans Serif</translation> <translation id="3928666092801078803">Combinar mis datos</translation> @@ -579,6 +580,7 @@ <translation id="5686790454216892815">El nombre del archivo es demasiado largo</translation> <translation id="5694049548840660018">Vuelve al principio fácilmente</translation> <translation id="569536719314091526">Traduce esta página a cualquier idioma con el botón Más opciones</translation> +<translation id="5696597120588531049">Chrome puede ser ayudarte a protegerte frente a quiebras de seguridad de datos, sitios web no seguros y mucho más</translation> <translation id="5697688514913266141">El archivo se guardará en <ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" />. <ph name="BEGIN_LINK2" />Editar<ph name="END_LINK2" />.</translation> <translation id="570347048394355941">Cambiar a la pestaña</translation> <translation id="572328651809341494">Pestañas recientes</translation> @@ -712,13 +714,14 @@ <translation id="6656545060687952787">Chrome necesita acceder a la ubicación para buscar dispositivos. <ph name="BEGIN_LINK" />Actualizar los permisos<ph name="END_LINK" /></translation> <translation id="6657585470893396449">Contraseña</translation> <translation id="6659594942844771486">Pestaña</translation> +<translation id="6663079968236414793">Enlazar con el texto</translation> <translation id="666573598175432848">Hay una versión más reciente de Chrome disponible. Toca este elemento para ir a Play Store.</translation> <translation id="666731172850799929">Abrir en <ph name="APP_NAME" /></translation> <translation id="666981079809192359">Aviso de privacidad de Chrome</translation> <translation id="6671495933530132209">Copiar imagen</translation> <translation id="6676840375528380067">¿Quieres borrar tus datos de Chrome en este dispositivo?</translation> <translation id="6689172468748959065">Fotos de perfil</translation> -<translation id="6691888250440401212">1. Elige <ph name="APP_NAME" />\n2. Toca "Definir como predet."</translation> +<translation id="6691888250440401212">1. Elige <ph name="APP_NAME" />\n2. Toca "Establecer como predeterminado"</translation> <translation id="6697492270171225480">Mostrar sugerencias de páginas similares cuando no se encuentre una página</translation> <translation id="6698801883190606802">Administrar datos sincronizados</translation> <translation id="6699370405921460408">Los servidores de Google optimizan las páginas web que visitas.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb index f94057c..d0df7a93 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -357,6 +357,7 @@ <translation id="3892148308691398805">ટેક્સ્ટ કૉપિ કરો</translation> <translation id="3894427358181296146">ફોલ્ડર ઉમેરો</translation> <translation id="3895926599014793903">ફરજિયાતપૂર્વક ઝૂમ ચાલુ કરો</translation> +<translation id="3909763690984331376">સલામતી માટે તપાસ <ph name="BEGIN_NEW" />નવું<ph name="END_NEW" /></translation> <translation id="3912508018559818924">વેબમાંથી શ્રેષ્ઠ શોધવું…</translation> <translation id="3927692899758076493">Sans Serif</translation> <translation id="3928666092801078803">મારા ડેટાને સંયોજિત કરો</translation> @@ -579,6 +580,7 @@ <translation id="5686790454216892815">ફાઇલનું નામ ખૂબ લાંબું છે</translation> <translation id="5694049548840660018">પાછા સરળતાથી હોમ પર જાઓ</translation> <translation id="569536719314091526">વધુ વિકલ્પો બટનમાંથી આ પેજનો અનુવાદ કોઈપણ ભાષામાં કરો</translation> +<translation id="5696597120588531049">ડેટા ઉલ્લંઘનો, અસુરક્ષિત વેબસાઇટ જેવી બીજી ઘણી બાબતોથી તમને સુરક્ષિત રાખવામાં Chrome તમારી સહાય કરી શકે છે</translation> <translation id="5697688514913266141">તમારી ફાઇલ <ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" />માં સચવાશે. <ph name="BEGIN_LINK2" />ફેરફાર કરો<ph name="END_LINK2" />.</translation> <translation id="570347048394355941">ટૅબ પર સ્વિચ કરો</translation> <translation id="572328651809341494">તાજેતરના ટેબ્સ</translation> @@ -712,6 +714,7 @@ <translation id="6656545060687952787">ઉપકરણો માટે સ્કેન કરવા માટે Chrome ને સ્થાન ઍક્સેસની જરૂર છે. <ph name="BEGIN_LINK" />પરવાનગીઓ અપડેટ કરો<ph name="END_LINK" /></translation> <translation id="6657585470893396449">પાસવર્ડ</translation> <translation id="6659594942844771486">ટૅબ</translation> +<translation id="6663079968236414793">ટેક્સ્ટને લિંક કરો</translation> <translation id="666573598175432848">Chromeનું એકદમ નવું વર્ઝન ઉપલબ્ધ છે. Play સ્ટોર પર જવા માટે, અહીં ટૅપ કરો.</translation> <translation id="666731172850799929"><ph name="APP_NAME" /> માં ખોલો</translation> <translation id="666981079809192359">Chrome ગોપનીયતા સૂચના</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb index 2e871c5..7914442 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">E-pošta</translation> <translation id="5665379678064389456">Stvorite događaj u aplikaciji <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Nadjača zahtjev web-lokacije za sprječavanje povećavanja</translation> +<translation id="5683547024293500885">Chrome ne može provjeriti ima li ažuriranja</translation> <translation id="5686790454216892815">Datoteka ima predugačak naziv</translation> <translation id="5694049548840660018">Vratite se kući jednostavno</translation> <translation id="569536719314091526">Prevedite ovu stranicu na bilo koji jezik pomoću gumba Više opcija</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Preuzimanje će se pokrenuti na Wi-Fiju.</translation> <translation id="5748802427693696783">Prešli ste na standardne kartice</translation> <translation id="5749068826913805084">Chrome treba pristup pohrani radi preuzimanja datoteka.</translation> +<translation id="5749237766298580851">Isključeno <ph name="SEPARATOR" /> ne preporučuje se</translation> <translation id="5754350196967618083">Nije moguće osvježiti Discover</translation> <translation id="5763382633136178763">Anonimne kartice</translation> <translation id="5763514718066511291">Dodirnite da biste kopirali URL za tu aplikaciju</translation> @@ -641,7 +643,7 @@ <translation id="6140912465461743537">Država/regija</translation> <translation id="614940544461990577">Pokušajte sljedeće:</translation> <translation id="6154478581116148741">Uključite zaključavanje zaslona u postavkama da biste izvezli svoje zaporke s ovog uređaja</translation> -<translation id="6157392216611456285">Odaberite <ph name="APP_NAME" />.</translation> +<translation id="6157392216611456285">Odaberite <ph name="APP_NAME" /></translation> <translation id="6159335304067198720"><ph name="PERCENT" /> manji podatkovni promet</translation> <translation id="6201345951596836663">Veza je kopirana</translation> <translation id="6206830853671714236">Odaberite vrijeme preuzimanja</translation> @@ -721,7 +723,7 @@ <translation id="6671495933530132209">Kopiraj sliku</translation> <translation id="6676840375528380067">Želite li izbrisati svoje podatke iz Chromea s ovog uređaja?</translation> <translation id="6689172468748959065">Fotografije profila</translation> -<translation id="6691888250440401212">1. Odaberite <ph name="APP_NAME" />.\n2. Dodirnite "Postavi kao zadano".</translation> +<translation id="6691888250440401212">1. Odaberite <ph name="APP_NAME" />\n2. Dodirnite "Postavi kao zadano"</translation> <translation id="6697492270171225480">Prikaži prijedloge za slične stranice kada se stranica ne može pronaći</translation> <translation id="6698801883190606802">Upravljanje sinkroniziranim podacima</translation> <translation id="6699370405921460408">Googleovi poslužitelji optimizirat će stranice koje posjećujete.</translation> @@ -953,7 +955,7 @@ <translation id="8555836665334561807">Putem Wi-Fija</translation> <translation id="8558485628462305855">Za prikaz sadržaja proširene stvarnosti ažurirajte ARCore</translation> <translation id="8559990750235505898">Ponudi prevođenje stranica na druge jezike</translation> -<translation id="8561196567344536112">1. Otvorite Postavke.\n2. Dodirnite opciju "Aplikacija preglednika".\n3. Odaberite <ph name="APP_NAME" />.</translation> +<translation id="8561196567344536112">1. Otvorite Postavke\n2. Dodirnite opciju "Aplikacija preglednika"\n3. Odaberite <ph name="APP_NAME" /></translation> <translation id="8562452229998620586">Ovdje će se pojaviti spremljene zaporke.</translation> <translation id="8569404424186215731">od <ph name="DATE" /></translation> <translation id="8571213806525832805">Protekla 4 tjedna</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb index 6b382791..14871c2 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -567,7 +567,7 @@ <translation id="5578795271662203820">Telusuri <ph name="SEARCH_ENGINE" /> untuk gambar ini</translation> <translation id="5581519193887989363">Anda dapat memilih konten apa yang akan disinkronkan di <ph name="BEGIN_LINK1" />setelan<ph name="END_LINK1" /> kapan saja.</translation> <translation id="5595485650161345191">Edit alamat</translation> -<translation id="5599455543593328020">Mode samaran</translation> +<translation id="5599455543593328020">Mode Samaran</translation> <translation id="5620163320393916465">Tidak ada sandi yang tersimpan</translation> <translation id="5620928963363755975">Temukan file dan halaman di Download dari tombol Opsi Lainnya</translation> <translation id="5626134646977739690">Nama:</translation> @@ -996,7 +996,7 @@ <translation id="8970887620466824814">Terjadi error.</translation> <translation id="8972098258593396643">Download ke folder default?</translation> <translation id="8988028529677883095">Gunakan ponsel sebagai kunci keamanan</translation> -<translation id="8993760627012879038">Membuka tab baru dalam Mode samaran</translation> +<translation id="8993760627012879038">Membuka tab baru dalam mode Samaran</translation> <translation id="8998729206196772491">Anda akan login dengan akun yang dikelola oleh <ph name="MANAGED_DOMAIN" /> dan memberikan kontrol data Chrome kepada administratornya. Data akan terikat dengan akun ini secara permanen. Bila Anda logout dari Chrome, data akan dihapus dari perangkat ini, tetapi data tetap tersimpan di Akun Google.</translation> <translation id="9028914725102941583">Aktifkan sinkronisasi untuk berbagi ke seluruh perangkat</translation> <translation id="9040142327097499898">Notifikasi diizinkan. Lokasi dinonaktifkan untuk perangkat ini.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb index ecf4789..e4d4033 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">Netfang</translation> <translation id="5665379678064389456">Búa til viðburð í <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Hunsa beiðni vefsvæðis um að koma í veg fyrir aðdrátt</translation> +<translation id="5683547024293500885">Chrome getur ekki leitað að uppfærslum.</translation> <translation id="5686790454216892815">Skráarheiti of langt</translation> <translation id="5694049548840660018">Þú kemst alltaf aftur heim</translation> <translation id="569536719314091526">Notaðu hnappinn „Fleiri valkostir“ til að þýða þessa síðu yfir á hvaða tungumál sem er</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Niðurhal hefst um Wi-Fi.</translation> <translation id="5748802427693696783">Skipt yfir í staðlaða flipa</translation> <translation id="5749068826913805084">Chrome þarf aðgang að geymslu til að geta sótt skrár.</translation> +<translation id="5749237766298580851">Slökkt <ph name="SEPARATOR" /> Ekki mælt með</translation> <translation id="5754350196967618083">Ekki er hægt að endurnýja Tillögur</translation> <translation id="5763382633136178763">Huliðsflipar</translation> <translation id="5763514718066511291">Ýttu til að afrita vefslóðina fyrir þetta forrit</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb index d0a38a5..02db966 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -173,7 +173,7 @@ <translation id="2387895666653383613">Ridimensionamento testo</translation> <translation id="2394602618534698961">I file scaricati vengono visualizzati qui</translation> <translation id="2407481962792080328">Questa funzionalità viene attivata quando accedi al tuo Account Google</translation> -<translation id="2407674018644220013">Impostare <ph name="APP_NAME" /> come browser predefinito?</translation> +<translation id="2407674018644220013">Impostare <ph name="APP_NAME" /> come app browser predefinita?</translation> <translation id="2410754283952462441">Scegli un account</translation> <translation id="2414886740292270097">Scuro</translation> <translation id="2426805022920575512">Scegli un altro account</translation> @@ -445,7 +445,7 @@ <translation id="4665282149850138822">Il sito <ph name="NAME" /> è stato aggiunto alla schermata Home</translation> <translation id="4684427112815847243">Sincronizza tutto</translation> <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 e altre <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 e altre <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation> -<translation id="4696983787092045100">Invia un messaggio ai tuoi dispositivi</translation> +<translation id="4696983787092045100">Invia testo ai tuoi dispositivi</translation> <translation id="4698034686595694889">Visualizza offline in <ph name="APP_NAME" /></translation> <translation id="4699172675775169585">Immagini e file memorizzati nella cache</translation> <translation id="4714588616299687897">Riduci l'utilizzo di dati fino al 60%</translation> @@ -667,7 +667,7 @@ <translation id="6342069812937806050">In questo momento</translation> <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e altri <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 e altri <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" />}}</translation> <translation id="6364438453358674297">Rimuovere il suggerimento dalla cronologia?</translation> -<translation id="6366047038980456022"><ph name="APP_NAME" /> ha l'esperienza e la velocità che ti servono per eseguire operazioni, creare e navigare online in sicurezza.</translation> +<translation id="6366047038980456022"><ph name="APP_NAME" /> ha le funzionalità e la velocità che ti servono per eseguire attività, creare e navigare online in sicurezza.</translation> <translation id="6369229450655021117">Da qui puoi eseguire ricerche sul Web, condividere contenuti con amici e vedere le pagine aperte.</translation> <translation id="6378173571450987352">Dettagli: ordinati per quantità di dati utilizzati</translation> <translation id="6379829913050047669"><ph name="APP_NAME" /> si aprirà in Chrome. Se continui, accetti i <ph name="BEGIN_LINK1" />Termini di servizio di Google<ph name="END_LINK1" /> e i <ph name="BEGIN_LINK2" />Termini di servizio aggiuntivi di Google Chrome e Chrome OS<ph name="END_LINK2" />.</translation> @@ -714,14 +714,14 @@ <translation id="6656545060687952787">Chrome ha bisogno dell'accesso alla posizione per cercare dispositivi. <ph name="BEGIN_LINK" />Aggiorna le autorizzazioni<ph name="END_LINK" /></translation> <translation id="6657585470893396449">Password</translation> <translation id="6659594942844771486">Scheda</translation> -<translation id="6663079968236414793">Link al testo</translation> +<translation id="6663079968236414793">Crea link al testo</translation> <translation id="666573598175432848">È disponibile una versione più recente di Chrome. Tocca questo elemento per andare al Play Store.</translation> <translation id="666731172850799929">Apri in <ph name="APP_NAME" /></translation> <translation id="666981079809192359">Informativa sulla privacy di Chrome</translation> <translation id="6671495933530132209">Copia immagine</translation> <translation id="6676840375528380067">Eliminare i dati di Chrome dal dispositivo?</translation> <translation id="6689172468748959065">Foto del profilo</translation> -<translation id="6691888250440401212">1. Scegli <ph name="APP_NAME" />\n2. Tocca "Imposta predefinito"</translation> +<translation id="6691888250440401212">1. Scegli <ph name="APP_NAME" />\n2. Tocca "Imposta predefinita"</translation> <translation id="6697492270171225480">Mostra suggerimenti per pagine simili quando una pagina non viene trovata</translation> <translation id="6698801883190606802">Gestisci dati sincronizzati</translation> <translation id="6699370405921460408">I server di Google ottimizzeranno le pagine che visiti.</translation> @@ -953,7 +953,7 @@ <translation id="8555836665334561807">Con Wi-Fi</translation> <translation id="8558485628462305855">Per visualizzare i contenuti di realtà aumentata, aggiorna ARCore</translation> <translation id="8559990750235505898">Proponi di tradurre le pagine in altre lingue</translation> -<translation id="8561196567344536112">1. Vai a Impostazioni\n2. Tocca "App browser"\n3. Scegli <ph name="APP_NAME" /></translation> +<translation id="8561196567344536112">1. Vai a Impostazioni\n2. Tocca "App Browser"\n3. Scegli <ph name="APP_NAME" /></translation> <translation id="8562452229998620586">Le password salvate verranno visualizzate qui.</translation> <translation id="8569404424186215731">dal giorno <ph name="DATE" /></translation> <translation id="8571213806525832805">Ultime 4 settimane</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb index 1264404..e3d645317 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
@@ -457,6 +457,7 @@ <translation id="4749960740855309258">新しいタブを開く</translation> <translation id="4759238208242260848">ダウンロード</translation> <translation id="4763829664323285145">{FILE_COUNT,plural, =1{1 件のダウンロードが完了しました。}other{# 件のダウンロードが完了しました。}}</translation> +<translation id="4766678251456904326">デバイスへのアカウントの追加</translation> <translation id="4767937498890654900">{FILE_COUNT,plural, =1{1 件のダウンロードがスケジュール設定されました。}other{# 件のダウンロードがスケジュール設定されました。}}</translation> <translation id="478981486571169252">Chrome での <ph name="SITE_NAME" /> のログイン ステータス、閲覧データ、サイトデータが表示されます。</translation> <translation id="4802417911091824046">パスフレーズ暗号化の対象に Google Pay のお支払い方法と住所は含まれません。
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb index 1412e34..1107660 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -458,7 +458,7 @@ <translation id="4749960740855309258">Жаңы өтмөк ачуу</translation> <translation id="4759238208242260848">Жүктөлүп алынгандар</translation> <translation id="4763829664323285145">{FILE_COUNT,plural, =1{1 жүктөп алуу аяктады.}other{# жүктөп алуу аяктады.}}</translation> -<translation id="4766678251456904326">Аккаунт же түзмөк кошуңуз</translation> +<translation id="4766678251456904326">Түзмөккө аккаунт кошуңуз</translation> <translation id="4767937498890654900">{FILE_COUNT,plural, =1{1 жүктөп алуу графикке киргизилди.}other{# жүктөп алуу графикке киргизилди.}}</translation> <translation id="478981486571169252"><ph name="SITE_NAME" /> сайтына кирип же кирбей турганыңызды, серептөө дайындарын жана сайттын дайындарын Chrome'дон көрөсүз.</translation> <translation id="4802417911091824046">Купуя сөз айкашы менен шифрлөө Google Pay'деги төлөм ыкмалары менен даректерине карата колдонулбайт.
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb index f79c189..51ad4862 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">El. paštas</translation> <translation id="5665379678064389456">Sukurti įvykį naudojant „<ph name="APP_NAME" />“</translation> <translation id="5668404140385795438">Nepaisyti svetainės mastelio keitimo vengimo užklausos</translation> +<translation id="5683547024293500885">„Chrome“ negali tikrinti, ar yra naujinių</translation> <translation id="5686790454216892815">Failo pavadinimas per ilgas</translation> <translation id="5694049548840660018">Lengvai grįžkite į pagrindinį ekraną</translation> <translation id="569536719314091526">Išverskite šį puslapį į bet kokią kalbą spustelėję mygtuką „Daugiau parinkčių“</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Atsisiuntimas bus pradėtas prisijungus prie „Wi-Fi“.</translation> <translation id="5748802427693696783">Perjungta į įprastus skirtukus</translation> <translation id="5749068826913805084">„Chrome“ reikia prieigos prie saugyklos failams atsisiųsti.</translation> +<translation id="5749237766298580851">Išjungta <ph name="SEPARATOR" /> Nerekomenduojama</translation> <translation id="5754350196967618083">Nepavyko atnaujinti „Discover“</translation> <translation id="5763382633136178763">Inkognito skirtukai</translation> <translation id="5763514718066511291">Palieskite, jei norite nukopijuoti šios programos URL</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb index 1eec6a7..ce60faa 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -357,6 +357,7 @@ <translation id="3892148308691398805">मजकूर कॉपी करा</translation> <translation id="3894427358181296146">फोल्डर जोडा</translation> <translation id="3895926599014793903">झूम सुरू करण्याची सक्ती</translation> +<translation id="3909763690984331376">सुरक्षा तपासण्या <ph name="BEGIN_NEW" />नवीन<ph name="END_NEW" /></translation> <translation id="3912508018559818924">वेबवरून सर्वोत्तम शोधत आहे…</translation> <translation id="3927692899758076493">Sans Serif</translation> <translation id="3928666092801078803">माझा डेटा एकत्र करा</translation> @@ -579,6 +580,7 @@ <translation id="5686790454216892815">फाइलचे नाव खूप लांब आहे</translation> <translation id="5694049548840660018">होमवर सहजपणे परत जा</translation> <translation id="569536719314091526">अधिक पर्याय बटणावरून या पेजचे कोणत्याही भाषेत भाषांतर करा</translation> +<translation id="5696597120588531049">Chrome तुम्हाला डेटा भंग, असुरक्षित वेबसाइट आणि आणखी बर्याच गोष्टींपासून सुरक्षित ठेवण्यात मदत करू शकते</translation> <translation id="5697688514913266141">तुमची फाइल <ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" /> मध्ये सेव्ह केली जाईल. <ph name="BEGIN_LINK2" />संपादित करा<ph name="END_LINK2" />.</translation> <translation id="570347048394355941">टॅब वर स्विच करा</translation> <translation id="572328651809341494">अलीकडील टॅब</translation> @@ -712,6 +714,7 @@ <translation id="6656545060687952787">डिव्हाइस स्कॅन करण्यासाठी Chrome ला स्थान ॲक्सेसची आवश्यकता असते. <ph name="BEGIN_LINK" />परवानग्या अपडेट करा<ph name="END_LINK" /></translation> <translation id="6657585470893396449">पासवर्ड</translation> <translation id="6659594942844771486">टॅब</translation> +<translation id="6663079968236414793">मजकुराशी लिंक करा</translation> <translation id="666573598175432848">Chrome ची नवीन आवृत्ती उपलब्ध आहे. Play Store वर जाण्यासाठी या घटकावर टॅप करा.</translation> <translation id="666731172850799929"><ph name="APP_NAME" /> मध्ये उघडा</translation> <translation id="666981079809192359">Chrome गोपनीयता सूचना</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb index 2b90364..904eba4 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">E-post</translation> <translation id="5665379678064389456">Opprett en aktivitet i <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Overstyr nettstedets forespørsel om å forhindre zooming</translation> +<translation id="5683547024293500885">Chrome kan ikke se etter oppdateringer</translation> <translation id="5686790454216892815">Filnavnet er for langt</translation> <translation id="5694049548840660018">Kom enkelt tilbake til start</translation> <translation id="569536719314091526">Oversett denne siden til hvilket som helst språk via Flere alternativer-knappen</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Nedlastingen starter når du er tilkoblet Wi-Fi.</translation> <translation id="5748802427693696783">Byttet til standardfaner</translation> <translation id="5749068826913805084">Chrome må ha lagringstilgang for å laste ned filer.</translation> +<translation id="5749237766298580851">Av <ph name="SEPARATOR" /> Anbefales ikke</translation> <translation id="5754350196967618083">Kan ikke oppdatere Discover</translation> <translation id="5763382633136178763">Inkognitofaner</translation> <translation id="5763514718066511291">Trykk for å kopiere nettadressen for denne appen</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb index cfd04ac..381bf3a 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">E-mail</translation> <translation id="5665379678064389456">Utwórz wydarzenie w aplikacji <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Zignoruj żądanie strony, gdy chce zapobiec powiększeniu widoku</translation> +<translation id="5683547024293500885">Chrome nie może sprawdzić dostępności aktualizacji</translation> <translation id="5686790454216892815">Nazwa pliku jest za długa</translation> <translation id="5694049548840660018">Łatwy powrót na stronę główną</translation> <translation id="569536719314091526">Możesz przetłumaczyć tę stronę na dowolny język, używając przycisku Więcej opcji</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Pobieranie rozpocznie się po połączeniu z siecią Wi-Fi.</translation> <translation id="5748802427693696783">Przełączono na karty standardowe</translation> <translation id="5749068826913805084">Chrome musi mieć dostęp do pamięci, by pobierać pliki.</translation> +<translation id="5749237766298580851">Wyłączono <ph name="SEPARATOR" /> Niezalecane</translation> <translation id="5754350196967618083">Nie można odświeżyć karty Discover</translation> <translation id="5763382633136178763">Karty incognito</translation> <translation id="5763514718066511291">Kliknij, by skopiować URL tej aplikacji</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb index b63c24fc..b6b7bed 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -383,7 +383,7 @@ <translation id="4084712963632273211">De <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />fornecido pela Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Pretende eliminar os dados da aplicação?</translation> <translation id="4099578267706723511">Ajude a melhorar o Chrome ao enviar estatísticas de utilização e relatórios de falhas para a Google.</translation> -<translation id="4116038641877404294">Transfira páginas para as utilizar offline.</translation> +<translation id="4116038641877404294">Descarregue páginas para as utilizar offline.</translation> <translation id="4135200667068010335">A lista de dispositivos com os quais pretende partilhar um separador está fechada.</translation> <translation id="4149994727733219643">Vista simplificada de páginas Web</translation> <translation id="4170011742729630528">O serviço não está disponível. Tente novamente mais tarde.</translation> @@ -479,7 +479,7 @@ <translation id="4882831918239250449">Controlar a forma como o histórico de navegação é utilizado para personalizar a Pesquisa, os anúncios e muito mais</translation> <translation id="4885273946141277891">Número não suportado de instâncias do Chrome.</translation> <translation id="4908869848243824489">Discover da Google</translation> -<translation id="4910889077668685004">Aplicações de pagamento</translation> +<translation id="4910889077668685004">Apps de pagamento</translation> <translation id="4913161338056004800">Repor estatísticas</translation> <translation id="4913169188695071480">Parar a atualização</translation> <translation id="4915549754973153784"><ph name="BEGIN_LINK" />Obter ajuda<ph name="END_LINK" /> enquanto procura dispositivos…</translation> @@ -577,6 +577,7 @@ <translation id="5659593005791499971">Email</translation> <translation id="5665379678064389456">Criar evento no <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Substituir pedido de um Website para evitar aumentar o zoom</translation> +<translation id="5683547024293500885">O Chrome não consegue verificar se existem atualizações.</translation> <translation id="5686790454216892815">O nome do ficheiro é demasiado longo</translation> <translation id="5694049548840660018">Volte ao início facilmente</translation> <translation id="569536719314091526">Traduzir esta página para qualquer idioma a partir do botão Mais opções</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">A transferência vai ser iniciada através de Wi-Fi.</translation> <translation id="5748802427693696783">Mudado para separadores padrão</translation> <translation id="5749068826913805084">O Chrome necessita de acesso ao armazenamento para transferir ficheiros.</translation> +<translation id="5749237766298580851">Desativada <ph name="SEPARATOR" /> Não recomendado</translation> <translation id="5754350196967618083">Não é possível atualizar o Discover</translation> <translation id="5763382633136178763">Separadores de navegação anónima</translation> <translation id="5763514718066511291">Toque para copiar o URL desta aplicação.</translation> @@ -988,7 +990,7 @@ <translation id="8912362522468806198">Conta Google</translation> <translation id="8920114477895755567">A aguardar os detalhes dos pais.</translation> <translation id="8921772741368021346"><ph name="POSITION" />/<ph name="DURATION" /></translation> -<translation id="8922289737868596582">Transfira páginas através do botão Mais opções para as utilizar offline.</translation> +<translation id="8922289737868596582">Descarregue páginas através do botão Mais opções para as utilizar offline.</translation> <translation id="8937772741022875483">Remover a sua atividade do Chrome do Bem-estar digital?</translation> <translation id="8942627711005830162">Abrir noutra janela</translation> <translation id="8951232171465285730">O Chrome permitiu-lhe poupar <ph name="MEGABYTES" /> MB</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb index cfc1c17f..a70eb427 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">Adresă de e-mail</translation> <translation id="5665379678064389456">Creează un eveniment în <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Ignoră solicitarea unui site de a împiedica mărirea</translation> +<translation id="5683547024293500885">Chrome nu poate căuta actualizări</translation> <translation id="5686790454216892815">Numele fișierului este prea lung</translation> <translation id="5694049548840660018">Întoarce-te acasă cu ușurință</translation> <translation id="569536719314091526">Tradu această pagină în orice limbă folosind butonul Mai multe opțiuni</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Descărcarea va începe prin Wi-Fi.</translation> <translation id="5748802427693696783">Ai comutat la filele standard</translation> <translation id="5749068826913805084">Pentru a descărca fișiere, Chrome necesită acces la stocare.</translation> +<translation id="5749237766298580851">Dezactivată <ph name="SEPARATOR" /> Nu este recomandată</translation> <translation id="5754350196967618083">Nu se poate actualiza Discover</translation> <translation id="5763382633136178763">File incognito</translation> <translation id="5763514718066511291">Atinge pentru a copia adresa URL pentru această aplicație</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb index b442d31..e97ad26 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">ඊතැපෑල</translation> <translation id="5665379678064389456"><ph name="APP_NAME" /> තුළ සිදුවීමක් සාදන්න</translation> <translation id="5668404140385795438">විශාලනය වැඩි කිරීම සඳහා වෙබ් අඩවියෙහි ඉල්ලීමක් අතික්රමණය කරන්න</translation> +<translation id="5683547024293500885">Chrome හට යාවත්කාලීන සඳහා පරීක්ෂා කළ නොහැකිය</translation> <translation id="5686790454216892815">ගොනු නාමය දිග වැඩිය</translation> <translation id="5694049548840660018">පහසුවෙන් ආපසු නිවසට යන්න</translation> <translation id="569536719314091526">තවත් විකල්ප බොත්තමෙන් මෙම පිටුව ඕනෑම භාෂාවකට පරිවර්තන කරන්න</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">බාගැනීම Wi-Fi හි ආරම්භ වනු ඇත.</translation> <translation id="5748802427693696783">සම්මත ටැබ වෙත මාරු විය</translation> <translation id="5749068826913805084">Chrome හට ගොනු බාගැනීමට ආචයන ප්රවේශය අවශ්යයි.</translation> +<translation id="5749237766298580851">ක්රියාවිරහිත <ph name="SEPARATOR" /> නිර්දේශ නොකෙරේ</translation> <translation id="5754350196967618083">Discover නැවුම් කිරීමට නොහැකිය</translation> <translation id="5763382633136178763">Incognito ටැබ</translation> <translation id="5763514718066511291">මෙම යෙදුම සඳහා URL පිටපත් කිරීමට තට්ටු කරන්න</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb index 04ef3f632..e12d27e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -173,7 +173,7 @@ <translation id="2387895666653383613">Mierka textu</translation> <translation id="2394602618534698961">Tu sa zobrazia stiahnuté súbory</translation> <translation id="2407481962792080328">Keď sa prihlásite do svojho účtu Google, táto funkcia je zapnutá</translation> -<translation id="2407674018644220013">Chcete aplikáciu <ph name="APP_NAME" /> nastaviť ako predvolenú?</translation> +<translation id="2407674018644220013">Chcete nastaviť aplikáciu <ph name="APP_NAME" /> ako predvolenú?</translation> <translation id="2410754283952462441">Výber účtu</translation> <translation id="2414886740292270097">Tmavý režim</translation> <translation id="2426805022920575512">Vybrať iný účet</translation> @@ -667,7 +667,7 @@ <translation id="6342069812937806050">Práve teraz</translation> <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 a <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ďalšia}few{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 a <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ďalšie}many{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 a <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ďalšej}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 a <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ďalších}}</translation> <translation id="6364438453358674297">Odstrániť návrh z histórie?</translation> -<translation id="6366047038980456022"><ph name="APP_NAME" /> má inteligenciu a rýchlosť na všetko, čo potrebujete na internete robiť, tvoriť alebo skúmať</translation> +<translation id="6366047038980456022"><ph name="APP_NAME" /> vám poskytuje inteligentné funkcie a rýchlosť, aby ste mohli bezpečne konať, vytvárať a skúmať obsah na internete</translation> <translation id="6369229450655021117">Môžete v ňom vyhľadávať na internete, zdieľať obsah s priateľmi a prezerať otvorené stránky</translation> <translation id="6378173571450987352">Podrobnosti: zoradené podľa množstva využitých dát</translation> <translation id="6379829913050047669"><ph name="APP_NAME" /> sa otvorí v Chrome. Pokračovaním vyjadrujete súhlas so <ph name="BEGIN_LINK1" />zmluvnými podmienkami spoločnosti Google<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />dodatočnými zmluvnými podmienkami prehliadača Google Chrome a systému Chrome OS<ph name="END_LINK2" />.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb index 1ee811e..0af4467 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -458,7 +458,7 @@ <translation id="4749960740855309258">Odpiranje novega zavihka</translation> <translation id="4759238208242260848">Prenosi</translation> <translation id="4763829664323285145">{FILE_COUNT,plural, =1{1 prenos je končan.}one{# prenos je končan.}two{# prenosa sta končana.}few{# prenosi so končani.}other{# prenosov je končanih.}}</translation> -<translation id="4766678251456904326">Dodajanje računa v napravi</translation> +<translation id="4766678251456904326">Dodajte račun v napravo</translation> <translation id="4767937498890654900">{FILE_COUNT,plural, =1{Načrtovan je 1 prenos.}one{Načrtovan je # prenos.}two{Načrtovana sta # prenosa.}few{Načrtovani so # prenosi.}other{Načrtovanih je # prenosov.}}</translation> <translation id="478981486571169252">Prikazano bo stanje prijave na spletnem mestu <ph name="SITE_NAME" />, podatki brskanja in podatki spletnega mesta v Chromu.</translation> <translation id="4802417911091824046">Šifriranje gesla ne vključuje plačilnih sredstev in naslovov iz Googla Pay. @@ -577,6 +577,7 @@ <translation id="5659593005791499971">E-pošta</translation> <translation id="5665379678064389456">Ustvarite dogodek v aplikaciji <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Preglasi zahtevo spletnega mesta za preprečevanje povečave</translation> +<translation id="5683547024293500885">Chrome ne more preveriti, ali so na voljo posodobitve</translation> <translation id="5686790454216892815">Ime datoteke je predolgo</translation> <translation id="5694049548840660018">Preprosta vrnitev na domačo stran</translation> <translation id="569536719314091526">Prevedite to stran v kateri koli jezik z gumbom »Več možnosti«</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Prenos se bo začel v omrežju Wi-Fi.</translation> <translation id="5748802427693696783">Preklopljeno na standardne zavihke</translation> <translation id="5749068826913805084">Chrome za prenos datotek potrebuje dostop do shrambe.</translation> +<translation id="5749237766298580851">Izklopljeno <ph name="SEPARATOR" /> Ni priporočljivo</translation> <translation id="5754350196967618083">Odkrivanja ni mogoče osvežiti</translation> <translation id="5763382633136178763">Zavihki brez beleženja zgodovine</translation> <translation id="5763514718066511291">Dotaknite se, če želite kopirati URL za to aplikacijo</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb index fd66c3d..b0d54ac 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
@@ -458,7 +458,7 @@ <translation id="4749960740855309258">Otvorite novu karticu</translation> <translation id="4759238208242260848">Preuzimanja</translation> <translation id="4763829664323285145">{FILE_COUNT,plural, =1{1 preuzimanje je dovršeno.}one{# preuzimanje je dovršeno.}few{# preuzimanja su dovršena.}other{# preuzimanja je dovršeno.}}</translation> -<translation id="4766678251456904326">Dodajte nalog na uređaj</translation> +<translation id="4766678251456904326">Dodaj nalog na uređaj</translation> <translation id="4767937498890654900">{FILE_COUNT,plural, =1{Zakazano je 1 preuzimanje.}one{Zakazano je # preuzimanje.}few{Zakazana su # preuzimanja.}other{Zakazano je # preuzimanja.}}</translation> <translation id="478981486571169252">Videćete status prijave na <ph name="SITE_NAME" />, podatke pregledanja i podatke o sajtu u Chrome-u.</translation> <translation id="4802417911091824046">Šifrovanje pomoću pristupne fraze ne obuhvata načine plaćanja i adrese iz Google Pay-a. @@ -577,10 +577,11 @@ <translation id="5659593005791499971">Imejl</translation> <translation id="5665379678064389456">Napravite događaj u aplikaciji <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Odbijanje zahteva veb-sajta da se spreči uvećavanje</translation> +<translation id="5683547024293500885">Chrome ne može da traži ažuriranja</translation> <translation id="5686790454216892815">Ime datoteke je predugačko</translation> <translation id="5694049548840660018">Jednostavno se vratite na početnu stranicu</translation> <translation id="569536719314091526">Prevedite ovu stranicu na bilo koji jezik pomoću dugmeta Još opcija</translation> -<translation id="5696597120588531049">Chrome može da vas štiti od upada u podatke, nebezbednih veb-lokacija i drugo</translation> +<translation id="5696597120588531049">Chrome može da vas štiti od upada u podatke, nebezbednih veb-sajtova i drugo</translation> <translation id="5697688514913266141">Datoteka će se sačuvati u direktorijumu <ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" />. <ph name="BEGIN_LINK2" />Izmeni<ph name="END_LINK2" />.</translation> <translation id="570347048394355941">Pređi na karticu</translation> <translation id="572328651809341494">Nedavno korišćene kartice</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Preuzimanje će početi preko Wi-Fi mreže.</translation> <translation id="5748802427693696783">Prebacili ste na standardne kartice</translation> <translation id="5749068826913805084">Chrome-u je potreban pristup memorijskom prostoru da bi preuzimao datoteke.</translation> +<translation id="5749237766298580851">Isključeno <ph name="SEPARATOR" /> Ne preporučuje se</translation> <translation id="5754350196967618083">Osvežavanje Discover-a nije uspelo</translation> <translation id="5763382633136178763">Kartice bez arhiviranja</translation> <translation id="5763514718066511291">Dodirnite da biste kopirali URL za ovu aplikaciju</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb index 97fc7d3..c52d8a3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -458,7 +458,7 @@ <translation id="4749960740855309258">Отворите нову картицу</translation> <translation id="4759238208242260848">Преузимања</translation> <translation id="4763829664323285145">{FILE_COUNT,plural, =1{1 преузимање је довршено.}one{# преузимање је довршено.}few{# преузимања су довршена.}other{# преузимања је довршено.}}</translation> -<translation id="4766678251456904326">Додајте налог на уређај</translation> +<translation id="4766678251456904326">Додај налог на уређај</translation> <translation id="4767937498890654900">{FILE_COUNT,plural, =1{Заказано је 1 преузимање.}one{Заказано је # преузимање.}few{Заказана су # преузимања.}other{Заказано је # преузимања.}}</translation> <translation id="478981486571169252">Видећете статус пријаве на <ph name="SITE_NAME" />, податке прегледања и податке о сајту у Chrome-у.</translation> <translation id="4802417911091824046">Шифровање помоћу приступне фразе не обухвата начине плаћања и адресе из Google Pay-а. @@ -577,10 +577,11 @@ <translation id="5659593005791499971">Имејл</translation> <translation id="5665379678064389456">Направите догађај у апликацији <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Одбијање захтева веб-сајта да се спречи увећавање</translation> +<translation id="5683547024293500885">Chrome не може да тражи ажурирања</translation> <translation id="5686790454216892815">Име датотеке је предугачко</translation> <translation id="5694049548840660018">Једноставно се вратите на почетну страницу</translation> <translation id="569536719314091526">Преведите ову страницу на било који језик помоћу дугмета Још опција</translation> -<translation id="5696597120588531049">Chrome може да вас штити од упада у податке, небезбедних веб-локација и друго</translation> +<translation id="5696597120588531049">Chrome може да вас штити од упада у податке, небезбедних веб-сајтова и друго</translation> <translation id="5697688514913266141">Датотека ће се сачувати у директоријуму <ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" />. <ph name="BEGIN_LINK2" />Измени<ph name="END_LINK2" />.</translation> <translation id="570347048394355941">Пређи на картицу</translation> <translation id="572328651809341494">Недавно коришћене картице</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Преузимање ће почети преко Wi-Fi мреже.</translation> <translation id="5748802427693696783">Пребацили сте на стандардне картице</translation> <translation id="5749068826913805084">Chrome-у је потребан приступ меморијском простору да би преузимао датотеке.</translation> +<translation id="5749237766298580851">Искључено <ph name="SEPARATOR" /> Не препоручује се</translation> <translation id="5754350196967618083">Освежавање Discover-а није успело</translation> <translation id="5763382633136178763">Картице без архивирања</translation> <translation id="5763514718066511291">Додирните да бисте копирали URL за ову апликацију</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb index e56315e..2d445e1f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -458,7 +458,7 @@ <translation id="4749960740855309258">Fungua kichupo kipya</translation> <translation id="4759238208242260848">Vipakuliwa</translation> <translation id="4763829664323285145">{FILE_COUNT,plural, =1{Imemaliza kupakua faili 1.}other{Imemaliza kupakua faili #.}}</translation> -<translation id="4766678251456904326">Weka akaunti kwenye kifaa</translation> +<translation id="4766678251456904326">Ongeza akaunti kwenye kifaa</translation> <translation id="4767937498890654900">{FILE_COUNT,plural, =1{Faili moja imeratibiwa kupakuliwa.}other{Faili # zimeratibiwa kupakuliwa.}}</translation> <translation id="478981486571169252">Utaona hali yako ya kuingia katika akaunti ya <ph name="SITE_NAME" />, data ya kuvinjari na data ya tovuti katika Chrome.</translation> <translation id="4802417911091824046">Usimbaji fiche kwa kutumia kauli ya siri haujumuishi njia za kulipa na anwani kutoka Google Pay. @@ -577,6 +577,7 @@ <translation id="5659593005791499971">Barua pepe</translation> <translation id="5665379678064389456">Unda tukio katika <ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Batilisha ombi la tovuti ili kuzuia kuvuta karibu</translation> +<translation id="5683547024293500885">Chrome imeshindwa kukagua masasisho</translation> <translation id="5686790454216892815">Jina la faili ni ndefu mno</translation> <translation id="5694049548840660018">Rudi kwenye ukurasa wa kwanza kwa urahisi</translation> <translation id="569536719314091526">Tafsiri ukurasa huu katika lugha yoyote kutoka kitufe cha Chaguo zaidi</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Itaanza kupakua kupitia Wi-Fi.</translation> <translation id="5748802427693696783">Imebadilisha kwenda vichupo muundo-msingi</translation> <translation id="5749068826913805084">Chrome inahitaji idhini ya kufikia hifadhi ili ipakue faili.</translation> +<translation id="5749237766298580851">Imezimwa <ph name="SEPARATOR" /> Haipendekezwi</translation> <translation id="5754350196967618083">Imeshindwa kuonyesha upya kipengele cha Dokezo</translation> <translation id="5763382633136178763">Vichupo fiche</translation> <translation id="5763514718066511291">Gusa ili unakili URL ya programu hii</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb index 91afd75..5f76350 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -995,7 +995,7 @@ <translation id="8965591936373831584">beklemede</translation> <translation id="8970887620466824814">Bir hata oluştu.</translation> <translation id="8972098258593396643">Varsayılan klasöre indirilsin mi?</translation> -<translation id="8988028529677883095">Telefonu güvenlik anahtarı olarak kullanın</translation> +<translation id="8988028529677883095">Telefonu güvenlik anahtarı olarak kullan</translation> <translation id="8993760627012879038">Gizli modda yeni bir sekme açar</translation> <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" /> tarafından yönetilen bir hesapla oturum açıyorsunuz ve yöneticiye tüm Chrome verileriniz üzerinde denetim olanağı veriyorsunuz. Verileriniz kalıcı olarak bu hesaba bağlanacaktır. Chrome'da oturumu kapattığınızda verileriniz bu cihazdan silinir, ancak Google Hesabınızda kalmaya devam eder.</translation> <translation id="9028914725102941583">Cihazlar arasında senkronizasyonu açın</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb index cf43004..44a8ba4 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -950,7 +950,7 @@ <translation id="8555836665334561807">Wi-Fi پر</translation> <translation id="8558485628462305855">افزودہ حقیقت کا مواد دیکھنے کیلئے، ARCore کو اپ ڈیٹ کریں</translation> <translation id="8559990750235505898">صفحات کو دیگر زبانوں میں ترجمہ کرنے کی پیشکش کریں</translation> -<translation id="8561196567344536112">1۔ ترتیبات پر جائیں\n2۔ "براؤزر ایپ" پر تھپتھپائیںn3\۔ <ph name="APP_NAME" /> منتخب کریں</translation> +<translation id="8561196567344536112">1۔ ترتیبات پر جائیں\n2۔ "براؤزر ایپ" پر تھپتھپائیں\n3۔ <ph name="APP_NAME" /> منتخب کریں</translation> <translation id="8562452229998620586">محفوظ کردہ پاس ورڈز یہاں نمودار ہوں گے۔</translation> <translation id="8569404424186215731"><ph name="DATE" /> سے</translation> <translation id="8571213806525832805">گزشتہ 4 ہفتے</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb index 90644b1..df74a6c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -357,6 +357,7 @@ <translation id="3892148308691398805">Sao chép văn bản</translation> <translation id="3894427358181296146">Thêm thư mục</translation> <translation id="3895926599014793903">Buộc bật thu phóng</translation> +<translation id="3909763690984331376">Kiểm tra an toàn <ph name="BEGIN_NEW" />Mới<ph name="END_NEW" /></translation> <translation id="3912508018559818924">Đang tìm dữ liệu thích hợp nhất từ web…</translation> <translation id="3927692899758076493">Sans Serif</translation> <translation id="3928666092801078803">Kết hợp dữ liệu của tôi</translation> @@ -579,6 +580,7 @@ <translation id="5686790454216892815">Tên tệp quá dài</translation> <translation id="5694049548840660018">Dễ dàng quay lại trang chủ</translation> <translation id="569536719314091526">Dịch trang này sang ngôn ngữ bất kỳ từ nút Tùy chọn khác</translation> +<translation id="5696597120588531049">Chrome có thể bảo vệ bạn trước các sự cố rò rỉ dữ liệu, trang web không an toàn và những vấn đề khác</translation> <translation id="5697688514913266141">Tệp của bạn sẽ được lưu vào <ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" />. <ph name="BEGIN_LINK2" />Chỉnh sửa<ph name="END_LINK2" />.</translation> <translation id="570347048394355941">Chuyển sang thẻ</translation> <translation id="572328651809341494">Các tab gần đây</translation> @@ -712,6 +714,7 @@ <translation id="6656545060687952787">Chrome cần có quyền truy cập vị trí để quét tìm thiết bị. <ph name="BEGIN_LINK" />Cập nhật quyền<ph name="END_LINK" /></translation> <translation id="6657585470893396449">Mật khẩu</translation> <translation id="6659594942844771486">Thẻ</translation> +<translation id="6663079968236414793">Đường liên kết tới văn bản</translation> <translation id="666573598175432848">Đã có phiên bản Chrome mới. Hãy nhấn vào thành phần này để chuyển đến Cửa hàng Play.</translation> <translation id="666731172850799929">Mở trong <ph name="APP_NAME" /></translation> <translation id="666981079809192359">Thông báo quyền riêng tư của Chrome</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb index 0201e2bf..a954523 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -357,6 +357,7 @@ <translation id="3892148308691398805">复制文字</translation> <translation id="3894427358181296146">添加文件夹</translation> <translation id="3895926599014793903">强制启用缩放功能</translation> +<translation id="3909763690984331376">安全检查<ph name="BEGIN_NEW" />新<ph name="END_NEW" /></translation> <translation id="3912508018559818924">正在从网络中查找最具价值的数据…</translation> <translation id="3927692899758076493">Sans Serif</translation> <translation id="3928666092801078803">合并我的数据</translation> @@ -579,6 +580,7 @@ <translation id="5686790454216892815">文件名过长</translation> <translation id="5694049548840660018">轻松访问主页</translation> <translation id="569536719314091526">通过“更多选项”按钮将此页面翻译成任何语言</translation> +<translation id="5696597120588531049">Chrome 有助于保护您免受数据泄露、不安全网站等问题的影响</translation> <translation id="5697688514913266141">您的文件将会保存到<ph name="BEGIN_BOLD" /><ph name="DIRECTORY" /><ph name="END_BOLD" />。<ph name="BEGIN_LINK2" />修改<ph name="END_LINK2" />。</translation> <translation id="570347048394355941">切换至标签页</translation> <translation id="572328651809341494">最近打开的标签页</translation> @@ -712,6 +714,7 @@ <translation id="6656545060687952787">Chrome 需要拥有位置信息权限才能扫描设备。<ph name="BEGIN_LINK" />更新权限<ph name="END_LINK" /></translation> <translation id="6657585470893396449">密码</translation> <translation id="6659594942844771486">标签页</translation> +<translation id="6663079968236414793">关联到所选文字</translation> <translation id="666573598175432848">已推出新版 Chrome。点按此元素即可转到 Play 商店。</translation> <translation id="666731172850799929">在 <ph name="APP_NAME" />中打开</translation> <translation id="666981079809192359">Chrome 隐私权声明</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb index bfa98d5..4e6d705 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -577,6 +577,7 @@ <translation id="5659593005791499971">I-imeyili</translation> <translation id="5665379678064389456">Dala umcimbi ku-<ph name="APP_NAME" /></translation> <translation id="5668404140385795438">Bhala ngaphezulu izicelo zamawebhusayithi ukuvikela ukusondeza</translation> +<translation id="5683547024293500885">I-Chrome ayikwazi ukuhlola izibuyekezo</translation> <translation id="5686790454216892815">Igama lefayela lide kakhulu</translation> <translation id="5694049548840660018">Buyela ekhaya kalula</translation> <translation id="569536719314091526">Humusha leli khasi ukuya kunoma iluphi ulimi kusukela kunkinobho yezinketho zokuningi</translation> @@ -589,6 +590,7 @@ <translation id="5732819098735351888">Ukulanda kuzoqala uma i-Wi-Fi ivuliwe.</translation> <translation id="5748802427693696783">Ishintshele kumathebhu ajwayelekile</translation> <translation id="5749068826913805084">I-Chrome idinga ukufinyelela kwesitoreji ukuze ilande amafayela.</translation> +<translation id="5749237766298580851">Valiwe <ph name="SEPARATOR" /> Akunconywa</translation> <translation id="5754350196967618083">Ayikwazi ukuvuselela i-Discover</translation> <translation id="5763382633136178763">Amathebhu we-Incognito</translation> <translation id="5763514718066511291">Thepha ukuze ukopishe i-URL yalolu hlelo lokusebenza</translation>
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc index 04b6acb..a578000 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc
@@ -83,6 +83,7 @@ #include "chrome/browser/web_applications/components/web_app_helpers.h" #include "chrome/browser/web_applications/components/web_app_id.h" #include "chrome/browser/web_applications/components/web_app_provider_base.h" +#include "chrome/browser/web_applications/os_integration_manager.h" #include "chrome/browser/web_applications/system_web_app_manager.h" #include "chrome/browser/web_applications/test/web_app_install_observer.h" #include "chrome/browser/web_applications/test/web_app_test.h" @@ -461,7 +462,7 @@ WebAppProviderBase* provider = WebAppProviderBase::GetProviderBase(browser()->profile()); DCHECK(provider); - provider->shortcut_manager().SuppressShortcutsForTesting(); + provider->os_integration_manager().SuppressOsHooksForTesting(); } private:
diff --git a/chrome/browser/ui/messages/android/BUILD.gn b/chrome/browser/ui/messages/android/BUILD.gn index 5324d4e7..bf6ace3 100644 --- a/chrome/browser/ui/messages/android/BUILD.gn +++ b/chrome/browser/ui/messages/android/BUILD.gn
@@ -41,6 +41,7 @@ "//components/infobars/android:infobar_android_enums_java", "//components/infobars/android:java", "//components/infobars/core:infobar_enums_java", + "//content/public/android:content_java", "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_appcompat_appcompat_java", "//third_party/android_deps:androidx_appcompat_appcompat_resources_java", @@ -83,6 +84,7 @@ "//chrome/test/android:chrome_java_test_support", "//content/public/android:content_java", "//content/public/test/android:content_java_test_support", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", "//third_party/junit",
diff --git a/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller.cc b/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller.cc index db6375c..0217f5b 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller.cc
@@ -153,10 +153,12 @@ dismissal_reason_ = metrics_util::CLICKED_ACCEPT; if (delegate_) { CleanStatisticsForSite(GetProfile(), origin_); - if (!IsUsingAccountStore() || + if (IsCurrentStateUpdate() || !IsUsingAccountStore() || delegate_->GetPasswordFeatureManager()->IsOptedInForAccountStorage()) { - // User is saving locally or already has opted in to the account store. - // Save directly without the need for reauth. + // The following cases don't require gaia reauth: + // 1. Password Update. + // 2. User is saving locally . + // 3. User has already opted in to the account store. delegate_->SavePassword(pending_password_.username_value, pending_password_.password_value); } else {
diff --git a/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller_unittest.cc b/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller_unittest.cc index d87170c..2e1eb4c 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller_unittest.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/save_update_with_account_store_bubble_controller_unittest.cc
@@ -348,6 +348,30 @@ DestroyModelExpectReason(password_manager::metrics_util::CLICKED_ACCEPT); } +TEST_F(SaveUpdateWithAccountStoreBubbleControllerTest, + ClickUpdateWhileNotOptedIn) { + // This is testing that updating a password should not trigger an account + // store opt in flow even if the user isn't opted in. + ON_CALL(*password_feature_manager(), GetDefaultPasswordStore) + .WillByDefault(Return(autofill::PasswordForm::Store::kAccountStore)); + ON_CALL(*password_feature_manager(), IsOptedInForAccountStorage) + .WillByDefault(Return(false)); + PretendUpdatePasswordWaiting(); + + EXPECT_TRUE(controller()->enable_editing()); + EXPECT_TRUE(controller()->IsCurrentStateUpdate()); + + EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); + EXPECT_CALL(*delegate(), SavePassword(pending_password().username_value, + pending_password().password_value)); + EXPECT_CALL(*delegate(), NeverSavePassword()).Times(0); + EXPECT_CALL(*delegate(), OnNopeUpdateClicked()).Times(0); + EXPECT_CALL(*delegate(), AuthenticateUserForAccountStoreOptInAndSavePassword) + .Times(0); + controller()->OnSaveClicked(); + DestroyModelExpectReason(password_manager::metrics_util::CLICKED_ACCEPT); +} + TEST_F(SaveUpdateWithAccountStoreBubbleControllerTest, ClickSaveInUpdateState) { PretendUpdatePasswordWaiting();
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc index 2f59928..52a6a0e 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
@@ -521,10 +521,12 @@ void OmniboxResultView::UpdateRemoveSuggestionVisibility() { bool old_visibility = remove_suggestion_button_->GetVisible(); - bool new_visibility = match_.SupportsDeletion() && - !match_.associated_keyword && - !match_.ShouldShowTabMatchButtonInlineInResultView() && - (IsMatchSelected() || IsMouseHovered()); + bool new_visibility = + popup_contents_view_->model()->IsControlPresentOnMatch( + OmniboxPopupModel::Selection( + model_index_, + OmniboxPopupModel::FOCUSED_BUTTON_REMOVE_SUGGESTION)) && + (IsMatchSelected() || IsMouseHovered()); remove_suggestion_button_->SetVisible(new_visibility);
diff --git a/chrome/browser/ui/views/tabs/tab_groups_iph_controller_unittest.cc b/chrome/browser/ui/views/tabs/tab_groups_iph_controller_unittest.cc index c2ff4daa..0cb4fd9 100644 --- a/chrome/browser/ui/views/tabs/tab_groups_iph_controller_unittest.cc +++ b/chrome/browser/ui/views/tabs/tab_groups_iph_controller_unittest.cc
@@ -35,7 +35,8 @@ views::Widget::InitParams widget_params; widget_params.context = GetContext(); - anchor_widget_ = std::unique_ptr<views::Widget>(new ChromeTestWidget); + anchor_widget_ = + views::UniqueWidgetPtr(std::make_unique<ChromeTestWidget>()); anchor_widget_->Init(std::move(widget_params)); mock_tracker_ =
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc index a8a07ce..79781be 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_view.cc +++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -379,7 +379,6 @@ break; } case TranslateBubbleModel::VIEW_STATE_TRANSLATING: - break; case TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE: { if (accelerator.key_code() == ui::VKEY_RETURN) { ShowOriginal(); @@ -591,12 +590,14 @@ void TranslateBubbleView::Translate() { model_->Translate(); model_->SetViewState(TranslateBubbleModel::VIEW_STATE_TRANSLATING); + SwitchView(TranslateBubbleModel::VIEW_STATE_TRANSLATING); translate::ReportUiAction(translate::TRANSLATE_BUTTON_CLICKED); } void TranslateBubbleView::ShowOriginal() { model_->RevertTranslation(); model_->SetViewState(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE); + SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE); translate::ReportUiAction(translate::SHOW_ORIGINAL_BUTTON_CLICKED); }
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc index eda8c6d0..62f3a5d 100644 --- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc +++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
@@ -59,7 +59,6 @@ #include "chrome/browser/web_applications/components/web_app_provider_base.h" #include "chrome/browser/web_applications/extensions/bookmark_app_finalizer_utils.h" #include "chrome/browser/web_applications/extensions/bookmark_app_util.h" -#include "chrome/browser/web_applications/os_integration_manager.h" #include "chrome/browser/web_applications/web_app_icon_manager.h" #include "chrome/browser/web_applications/web_app_provider.h" #include "chrome/common/buildflags.h" @@ -971,9 +970,16 @@ true); web_app_provider_->registry_controller().SetAppInstallTime(app_id, base::Time::Now()); + web_app::InstallOsHooksOptions options; + options.add_to_applications_menu = true; + options.add_to_desktop = true; + options.add_to_quick_launch_bar = false; + options.run_on_os_login = false; web_app_provider_->os_integration_manager().InstallOsHooks( - app_id, base::BindOnce(&AppLauncherHandler::OnOsHooksInstalled, - weak_ptr_factory_.GetWeakPtr(), app_id)); + app_id, + base::BindOnce(&AppLauncherHandler::OnOsHooksInstalled, + weak_ptr_factory_.GetWeakPtr(), app_id), + nullptr, std::move(options)); // Use the appAdded to update the app icon's color to no longer be // greyscale. @@ -1195,10 +1201,11 @@ extension_enable_flow_->StartForWebContents(web_ui()->GetWebContents()); } -void AppLauncherHandler::OnOsHooksInstalled(const web_app::AppId& app_id, - bool shortcuts_created) { +void AppLauncherHandler::OnOsHooksInstalled( + const web_app::AppId& app_id, + const web_app::OsHooksResults os_hooks_results) { LOCAL_HISTOGRAM_BOOLEAN("Apps.Launcher.InstallLocallyShortcutsCreated", - shortcuts_created); + os_hooks_results[web_app::OsHookType::kShortcuts]); } void AppLauncherHandler::OnExtensionUninstallDialogClosed(
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.h b/chrome/browser/ui/webui/ntp/app_launcher_handler.h index 6efbad52..04ec97b 100644 --- a/chrome/browser/ui/webui/ntp/app_launcher_handler.h +++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.h
@@ -18,6 +18,7 @@ #include "chrome/browser/web_applications/components/app_registrar.h" #include "chrome/browser/web_applications/components/app_registrar_observer.h" #include "chrome/browser/web_applications/components/web_app_id.h" +#include "chrome/browser/web_applications/os_integration_manager.h" #include "chrome/common/extensions/extension_constants.h" #include "components/favicon/core/favicon_service.h" #include "components/prefs/pref_change_registrar.h" @@ -175,7 +176,8 @@ void PromptToEnableApp(const std::string& extension_id); // Records result to UMA after OS Hooks are installed. - void OnOsHooksInstalled(const web_app::AppId& app_id, bool shortcuts_created); + void OnOsHooksInstalled(const web_app::AppId& app_id, + const web_app::OsHooksResults os_hooks_results); // ExtensionUninstallDialog::Delegate: void OnExtensionUninstallDialogClosed(bool did_start_uninstall,
diff --git a/chrome/browser/ui/webui/settings/chromeos/os_settings_ui.cc b/chrome/browser/ui/webui/settings/chromeos/os_settings_ui.cc index 8bddd59..43351fd 100644 --- a/chrome/browser/ui/webui/settings/chromeos/os_settings_ui.cc +++ b/chrome/browser/ui/webui/settings/chromeos/os_settings_ui.cc
@@ -62,21 +62,28 @@ html_source)); #if BUILDFLAG(OPTIMIZE_WEBUI) - html_source->AddResourcePath("crisper.js", IDR_OS_SETTINGS_CRISPER_JS); - html_source->AddResourcePath("lazy_load.crisper.js", - IDR_OS_SETTINGS_LAZY_LOAD_CRISPER_JS); - html_source->AddResourcePath("chromeos/lazy_load.html", - IDR_OS_SETTINGS_LAZY_LOAD_VULCANIZED_HTML); - html_source->SetDefaultResource(IDR_OS_SETTINGS_VULCANIZED_HTML); - html_source->AddResourcePath("chromeos/os_settings_v3.html", - IDR_OS_SETTINGS_OS_SETTINGS_V3_HTML); - html_source->AddResourcePath("chromeos/os_settings.js", - IDR_OS_SETTINGS_SETTINGS_ROLLUP_JS); + if (base::FeatureList::IsEnabled(::chromeos::features::kOsSettingsPolymer3)) { + // Polymer3 Source files + webui::SetupBundledWebUIDataSource(html_source, "chromeos/os_settings.js", + IDR_OS_SETTINGS_OS_SETTINGS_ROLLUP_JS, + IDR_OS_SETTINGS_OS_SETTINGS_V3_HTML); + } else { + // Polymer2 Source files + html_source->AddResourcePath("crisper.js", IDR_OS_SETTINGS_CRISPER_JS); + html_source->AddResourcePath("lazy_load.crisper.js", + IDR_OS_SETTINGS_LAZY_LOAD_CRISPER_JS); + html_source->AddResourcePath("chromeos/lazy_load.html", + IDR_OS_SETTINGS_LAZY_LOAD_VULCANIZED_HTML); + html_source->SetDefaultResource(IDR_OS_SETTINGS_VULCANIZED_HTML); + } #else webui::SetupWebUIDataSource( html_source, base::make_span(kOsSettingsResources, kOsSettingsResourcesSize), - kOsGeneratedPath, IDR_OS_SETTINGS_SETTINGS_HTML); + kOsGeneratedPath, + base::FeatureList::IsEnabled(chromeos::features::kOsSettingsPolymer3) + ? IDR_OS_SETTINGS_OS_SETTINGS_V3_HTML + : IDR_OS_SETTINGS_SETTINGS_HTML); #endif ManagedUIHandler::Initialize(web_ui, html_source);
diff --git a/chrome/browser/util/BUILD.gn b/chrome/browser/util/BUILD.gn index 6df6a92..405fbcf7 100644 --- a/chrome/browser/util/BUILD.gn +++ b/chrome/browser/util/BUILD.gn
@@ -22,6 +22,7 @@ "//components/browser_ui/util/android:java", "//components/embedder_support/android:util_java", "//content/public/android:content_java", + "//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_collection_collection_java", "//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:androidx_legacy_legacy_support_core_utils_java", @@ -51,6 +52,7 @@ "//chrome/test/android:chrome_java_test_support", "//components/signin/core/browser/android:java", "//content/public/test/android:content_java_test_support", + "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_sdk:android_test_mock_java", "//third_party/android_support_test_runner:runner_java", "//third_party/junit",
diff --git a/chrome/browser/web_applications/BUILD.gn b/chrome/browser/web_applications/BUILD.gn index d74e40c9..c3b4ae5 100644 --- a/chrome/browser/web_applications/BUILD.gn +++ b/chrome/browser/web_applications/BUILD.gn
@@ -142,6 +142,8 @@ "test/test_file_utils.h", "test/test_install_finalizer.cc", "test/test_install_finalizer.h", + "test/test_os_integration_manager.cc", + "test/test_os_integration_manager.h", "test/test_pending_app_manager.cc", "test/test_pending_app_manager.h", "test/test_pending_app_manager_impl.cc",
diff --git a/chrome/browser/web_applications/components/install_finalizer.cc b/chrome/browser/web_applications/components/install_finalizer.cc index e48f2a62..e86691f 100644 --- a/chrome/browser/web_applications/components/install_finalizer.cc +++ b/chrome/browser/web_applications/components/install_finalizer.cc
@@ -50,14 +50,6 @@ registry_controller_ = registry_controller; } -bool InstallFinalizer::CanAddAppToQuickLaunchBar() const { - return ui_manager().CanAddAppToQuickLaunchBar(); -} - -void InstallFinalizer::AddAppToQuickLaunchBar(const AppId& app_id) { - ui_manager().AddAppToQuickLaunchBar(app_id); -} - bool InstallFinalizer::CanReparentTab(const AppId& app_id, bool shortcut_created) const { // Reparent the web contents into its own window only if that is the
diff --git a/chrome/browser/web_applications/components/install_finalizer.h b/chrome/browser/web_applications/components/install_finalizer.h index 1d9fbf9a..40074c7 100644 --- a/chrome/browser/web_applications/components/install_finalizer.h +++ b/chrome/browser/web_applications/components/install_finalizer.h
@@ -89,10 +89,6 @@ virtual bool WasExternalAppUninstalledByUser(const AppId& app_id) const = 0; // |virtual| for testing. - virtual bool CanAddAppToQuickLaunchBar() const; - virtual void AddAppToQuickLaunchBar(const AppId& app_id); - - // |virtual| for testing. virtual bool CanReparentTab(const AppId& app_id, bool shortcut_created) const; virtual void ReparentTab(const AppId& app_id, bool shortcut_created,
diff --git a/chrome/browser/web_applications/components/install_manager.cc b/chrome/browser/web_applications/components/install_manager.cc index 2142c69a..1e3068cd 100644 --- a/chrome/browser/web_applications/components/install_manager.cc +++ b/chrome/browser/web_applications/components/install_manager.cc
@@ -20,11 +20,11 @@ void InstallManager::SetSubsystems(AppRegistrar* registrar, AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager, + OsIntegrationManager* os_integration_manager, InstallFinalizer* finalizer) { registrar_ = registrar; shortcut_manager_ = shortcut_manager; - file_handler_manager_ = file_handler_manager; + os_integration_manager_ = os_integration_manager; finalizer_ = finalizer; }
diff --git a/chrome/browser/web_applications/components/install_manager.h b/chrome/browser/web_applications/components/install_manager.h index 0489d95..286798e 100644 --- a/chrome/browser/web_applications/components/install_manager.h +++ b/chrome/browser/web_applications/components/install_manager.h
@@ -32,7 +32,7 @@ class InstallFinalizer; class AppRegistrar; class AppShortcutManager; -class FileHandlerManager; +class OsIntegrationManager; // TODO(loyso): Rework this interface. Unify the API and merge similar // InstallWebAppZZZZ functions. @@ -162,7 +162,7 @@ void SetSubsystems(AppRegistrar* registrar, AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager, + OsIntegrationManager* os_integration_manager, InstallFinalizer* finalizer); // Loads |web_app_url| in a new WebContents and determines whether it has a @@ -183,7 +183,9 @@ Profile* profile() { return profile_; } AppRegistrar* registrar() { return registrar_; } AppShortcutManager* shortcut_manager() { return shortcut_manager_; } - FileHandlerManager* file_handler_manager() { return file_handler_manager_; } + OsIntegrationManager* os_integration_manager() { + return os_integration_manager_; + } InstallFinalizer* finalizer() { return finalizer_; } bool disable_bookmark_app_sync_install_for_testing() const { @@ -199,7 +201,7 @@ AppRegistrar* registrar_ = nullptr; AppShortcutManager* shortcut_manager_ = nullptr; - FileHandlerManager* file_handler_manager_ = nullptr; + OsIntegrationManager* os_integration_manager_ = nullptr; InstallFinalizer* finalizer_ = nullptr; bool disable_bookmark_app_sync_install_for_testing_ = false;
diff --git a/chrome/browser/web_applications/components/pending_app_manager.cc b/chrome/browser/web_applications/components/pending_app_manager.cc index e34219b..5287759 100644 --- a/chrome/browser/web_applications/components/pending_app_manager.cc +++ b/chrome/browser/web_applications/components/pending_app_manager.cc
@@ -36,15 +36,16 @@ DCHECK(!registration_callback_); } -void PendingAppManager::SetSubsystems(AppRegistrar* registrar, - AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager, - WebAppUiManager* ui_manager, - InstallFinalizer* finalizer, - InstallManager* install_manager) { +void PendingAppManager::SetSubsystems( + AppRegistrar* registrar, + AppShortcutManager* shortcut_manager, + OsIntegrationManager* os_integration_manager, + WebAppUiManager* ui_manager, + InstallFinalizer* finalizer, + InstallManager* install_manager) { registrar_ = registrar; shortcut_manager_ = shortcut_manager; - file_handler_manager_ = file_handler_manager; + os_integration_manager_ = os_integration_manager; ui_manager_ = ui_manager; finalizer_ = finalizer; install_manager_ = install_manager;
diff --git a/chrome/browser/web_applications/components/pending_app_manager.h b/chrome/browser/web_applications/components/pending_app_manager.h index 253bf77..6cfb501 100644 --- a/chrome/browser/web_applications/components/pending_app_manager.h +++ b/chrome/browser/web_applications/components/pending_app_manager.h
@@ -25,7 +25,7 @@ class AppRegistrar; class AppShortcutManager; -class FileHandlerManager; +class OsIntegrationManager; class InstallFinalizer; class InstallManager; class WebAppUiManager; @@ -59,7 +59,7 @@ void SetSubsystems(AppRegistrar* registrar, AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager, + OsIntegrationManager* os_integration_manager, WebAppUiManager* ui_manager, InstallFinalizer* finalizer, InstallManager* install_manager); @@ -120,7 +120,9 @@ protected: AppRegistrar* registrar() { return registrar_; } AppShortcutManager* shortcut_manager() { return shortcut_manager_; } - FileHandlerManager* file_handler_manager() { return file_handler_manager_; } + OsIntegrationManager* os_integration_manager() { + return os_integration_manager_; + } WebAppUiManager* ui_manager() { return ui_manager_; } InstallFinalizer* finalizer() { return finalizer_; } InstallManager* install_manager() { return install_manager_; } @@ -155,7 +157,7 @@ AppRegistrar* registrar_ = nullptr; AppShortcutManager* shortcut_manager_ = nullptr; - FileHandlerManager* file_handler_manager_ = nullptr; + OsIntegrationManager* os_integration_manager_ = nullptr; WebAppUiManager* ui_manager_ = nullptr; InstallFinalizer* finalizer_ = nullptr; InstallManager* install_manager_ = nullptr;
diff --git a/chrome/browser/web_applications/components/web_app_constants.cc b/chrome/browser/web_applications/components/web_app_constants.cc index 1d9ccbc..5954fca 100644 --- a/chrome/browser/web_applications/components/web_app_constants.cc +++ b/chrome/browser/web_applications/components/web_app_constants.cc
@@ -11,6 +11,9 @@ static_assert(Source::kMinValue == 0, "Source enum should be zero based"); +static_assert(OsHookType::kShortcuts == 0, + "OsHookType enum should be zero based"); + bool IsSuccess(InstallResultCode code) { return code == InstallResultCode::kSuccessNewInstall || code == InstallResultCode::kSuccessAlreadyInstalled;
diff --git a/chrome/browser/web_applications/components/web_app_constants.h b/chrome/browser/web_applications/components/web_app_constants.h index 6e35e03..48def69 100644 --- a/chrome/browser/web_applications/components/web_app_constants.h +++ b/chrome/browser/web_applications/components/web_app_constants.h
@@ -31,6 +31,21 @@ }; } // namespace Source +// Type of OS hook. +// +// This enum should be zero based. It is not strongly typed enum class to +// support implicit conversion to int. Values are also used as index in +// OsHooksResults. +namespace OsHookType { +enum Type { + kShortcuts = 0, + kRunOnOsLogin, + kShortcutsMenu, + kFileHandlers, + kMaxValue = kFileHandlers, +}; +} + // The result of an attempted web app installation, uninstallation or update. // // This is an enum, instead of a struct with multiple fields (e.g. one field for
diff --git a/chrome/browser/web_applications/extensions/install_manager_bookmark_app_unittest.cc b/chrome/browser/web_applications/extensions/install_manager_bookmark_app_unittest.cc index a0b85fa..7f54adab 100644 --- a/chrome/browser/web_applications/extensions/install_manager_bookmark_app_unittest.cc +++ b/chrome/browser/web_applications/extensions/install_manager_bookmark_app_unittest.cc
@@ -95,7 +95,6 @@ ~BookmarkAppInstallFinalizerInstallOnly() override = default; // InstallFinalizer: - void AddAppToQuickLaunchBar(const web_app::AppId& app_id) override {} void ReparentTab(const web_app::AppId& app_id, bool shortcut_created, content::WebContents* web_contents) override {}
diff --git a/chrome/browser/web_applications/extensions/pending_app_install_task_unittest.cc b/chrome/browser/web_applications/extensions/pending_app_install_task_unittest.cc index f195cb0d..b60c2db 100644 --- a/chrome/browser/web_applications/extensions/pending_app_install_task_unittest.cc +++ b/chrome/browser/web_applications/extensions/pending_app_install_task_unittest.cc
@@ -30,10 +30,9 @@ #include "chrome/browser/web_applications/components/web_app_id.h" #include "chrome/browser/web_applications/components/web_app_provider_base.h" #include "chrome/browser/web_applications/test/test_app_registrar.h" -#include "chrome/browser/web_applications/test/test_app_shortcut_manager.h" #include "chrome/browser/web_applications/test/test_data_retriever.h" -#include "chrome/browser/web_applications/test/test_file_handler_manager.h" #include "chrome/browser/web_applications/test/test_install_finalizer.h" +#include "chrome/browser/web_applications/test/test_os_integration_manager.h" #include "chrome/browser/web_applications/test/test_web_app_provider.h" #include "chrome/browser/web_applications/test/test_web_app_ui_manager.h" #include "chrome/browser/web_applications/test/test_web_app_url_loader.h" @@ -134,9 +133,7 @@ const std::vector<GURL>& uninstall_external_web_app_urls() const { return uninstall_external_web_app_urls_; } - size_t num_add_app_to_quick_launch_bar_calls() { - return num_add_app_to_quick_launch_bar_calls_; - } + size_t num_reparent_tab_calls() { return num_reparent_tab_calls_; } // InstallFinalizer @@ -234,12 +231,6 @@ return false; } - bool CanAddAppToQuickLaunchBar() const override { return true; } - - void AddAppToQuickLaunchBar(const AppId& app_id) override { - ++num_add_app_to_quick_launch_bar_calls_; - } - bool CanReparentTab(const AppId& app_id, bool shortcut_created) const override { return true; @@ -258,7 +249,6 @@ std::vector<FinalizeOptions> finalize_options_list_; std::vector<GURL> uninstall_external_web_app_urls_; - size_t num_add_app_to_quick_launch_bar_calls_ = 0; size_t num_reparent_tab_calls_ = 0; std::map<GURL, std::pair<AppId, InstallResultCode>> @@ -298,12 +288,8 @@ auto install_manager = std::make_unique<WebAppInstallManager>(profile()); install_manager_ = install_manager.get(); - auto shortcut_manager = std::make_unique<TestAppShortcutManager>(profile()); - shortcut_manager_ = shortcut_manager.get(); - - auto file_handler_manager = - std::make_unique<TestFileHandlerManager>(profile()); - file_handler_manager_ = file_handler_manager.get(); + auto os_integration_manager = std::make_unique<TestOsIntegrationManager>(); + os_integration_manager_ = os_integration_manager.get(); auto ui_manager = std::make_unique<TestWebAppUiManager>(); ui_manager_ = ui_manager.get(); @@ -312,8 +298,7 @@ provider->SetInstallManager(std::move(install_manager)); provider->SetInstallFinalizer(std::move(install_finalizer)); provider->SetWebAppUiManager(std::move(ui_manager)); - provider->SetShortcutManager(std::move(shortcut_manager)); - provider->SetFileHandlerManager(std::move(file_handler_manager)); + provider->SetOsIntegrationManager(std::move(os_integration_manager)); provider->Start(); // Start only WebAppInstallManager for real. @@ -325,9 +310,8 @@ TestAppRegistrar* registrar() { return registrar_; } TestPendingAppInstallFinalizer* finalizer() { return install_finalizer_; } WebAppInstallManager* install_manager() { return install_manager_; } - TestAppShortcutManager* shortcut_manager() { return shortcut_manager_; } - TestFileHandlerManager* file_handler_manager() { - return file_handler_manager_; + TestOsIntegrationManager* os_integration_manager() { + return os_integration_manager_; } TestDataRetriever* data_retriever() { return data_retriever_; } @@ -362,12 +346,12 @@ install_finalizer_->SetNextFinalizeInstallResult( options.url, InstallResultCode::kSuccessNewInstall); - shortcut_manager_->SetNextCreateShortcutsResult( + os_integration_manager_->SetNextCreateShortcutsResult( install_finalizer_->GetAppIdForUrl(options.url), true); auto task = std::make_unique<PendingAppInstallTask>( - profile(), registrar_, shortcut_manager_, file_handler_manager_, - ui_manager_, install_finalizer_, install_manager_, std::move(options)); + profile(), registrar_, os_integration_manager_, ui_manager_, + install_finalizer_, install_manager_, std::move(options)); return task; } @@ -379,8 +363,7 @@ TestDataRetriever* data_retriever_ = nullptr; TestPendingAppInstallFinalizer* install_finalizer_ = nullptr; TestWebAppUiManager* ui_manager_ = nullptr; - TestAppShortcutManager* shortcut_manager_ = nullptr; - TestFileHandlerManager* file_handler_manager_ = nullptr; + TestOsIntegrationManager* os_integration_manager_ = nullptr; DISALLOW_COPY_AND_ASSIGN(PendingAppInstallTaskTest); }; @@ -420,10 +403,12 @@ EXPECT_EQ(result.app_id.value(), id.value()); - EXPECT_EQ(1u, shortcut_manager()->num_create_shortcuts_calls()); - EXPECT_TRUE(shortcut_manager()->did_add_to_desktop().value()); + EXPECT_EQ(1u, os_integration_manager()->num_create_shortcuts_calls()); + EXPECT_TRUE(os_integration_manager()->did_add_to_desktop().value()); - EXPECT_EQ(1u, finalizer()->num_add_app_to_quick_launch_bar_calls()); + EXPECT_EQ( + 1u, + os_integration_manager()->num_add_app_to_quick_launch_bar_calls()); EXPECT_EQ(0u, finalizer()->num_reparent_tab_calls()); EXPECT_FALSE(web_app_info().open_as_window); @@ -479,10 +464,12 @@ EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code); EXPECT_TRUE(result.app_id.has_value()); - EXPECT_EQ(1u, shortcut_manager()->num_create_shortcuts_calls()); - EXPECT_FALSE(shortcut_manager()->did_add_to_desktop().value()); + EXPECT_EQ(1u, os_integration_manager()->num_create_shortcuts_calls()); + EXPECT_FALSE(os_integration_manager()->did_add_to_desktop().value()); - EXPECT_EQ(1u, finalizer()->num_add_app_to_quick_launch_bar_calls()); + EXPECT_EQ( + 1u, + os_integration_manager()->num_add_app_to_quick_launch_bar_calls()); EXPECT_EQ(0u, finalizer()->num_reparent_tab_calls()); run_loop.Quit(); @@ -506,10 +493,12 @@ EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code); EXPECT_TRUE(result.app_id.has_value()); - EXPECT_EQ(1u, shortcut_manager()->num_create_shortcuts_calls()); - EXPECT_TRUE(shortcut_manager()->did_add_to_desktop().value()); + EXPECT_EQ(1u, os_integration_manager()->num_create_shortcuts_calls()); + EXPECT_TRUE(os_integration_manager()->did_add_to_desktop().value()); - EXPECT_EQ(0u, finalizer()->num_add_app_to_quick_launch_bar_calls()); + EXPECT_EQ( + 0u, + os_integration_manager()->num_add_app_to_quick_launch_bar_calls()); EXPECT_EQ(0u, finalizer()->num_reparent_tab_calls()); run_loop.Quit(); @@ -535,10 +524,12 @@ EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code); EXPECT_TRUE(result.app_id.has_value()); - EXPECT_EQ(1u, shortcut_manager()->num_create_shortcuts_calls()); - EXPECT_FALSE(shortcut_manager()->did_add_to_desktop().value()); + EXPECT_EQ(1u, os_integration_manager()->num_create_shortcuts_calls()); + EXPECT_FALSE(os_integration_manager()->did_add_to_desktop().value()); - EXPECT_EQ(0u, finalizer()->num_add_app_to_quick_launch_bar_calls()); + EXPECT_EQ( + 0u, + os_integration_manager()->num_add_app_to_quick_launch_bar_calls()); EXPECT_EQ(0u, finalizer()->num_reparent_tab_calls()); run_loop.Quit(); @@ -644,7 +635,7 @@ EXPECT_TRUE(IsPlaceholderApp(profile(), WebAppUrl())); - EXPECT_EQ(1u, shortcut_manager()->num_create_shortcuts_calls()); + EXPECT_EQ(1u, os_integration_manager()->num_create_shortcuts_calls()); EXPECT_EQ(1u, finalizer()->finalize_options_list().size()); EXPECT_EQ(WebappInstallSource::EXTERNAL_POLICY, finalize_options().install_source); @@ -669,7 +660,7 @@ ExternalInstallSource::kExternalPolicy); options.install_placeholder = true; auto task = GetInstallationTaskWithTestMocks(std::move(options)); - shortcut_manager()->set_can_create_shortcuts(false); + os_integration_manager()->set_can_create_shortcuts(false); base::RunLoop run_loop; task->Install( @@ -680,7 +671,7 @@ EXPECT_TRUE(IsPlaceholderApp(profile(), WebAppUrl())); - EXPECT_EQ(0u, shortcut_manager()->num_create_shortcuts_calls()); + EXPECT_EQ(0u, os_integration_manager()->num_create_shortcuts_calls()); EXPECT_EQ(1u, finalizer()->finalize_options_list().size()); EXPECT_EQ(WebappInstallSource::EXTERNAL_POLICY, finalize_options().install_source); @@ -896,8 +887,8 @@ GURL(), DisplayMode::kStandalone, ExternalInstallSource::kInternalDefault); PendingAppInstallTask install_task( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - ui_manager(), finalizer(), install_manager(), install_options); + profile(), registrar(), os_integration_manager(), ui_manager(), + finalizer(), install_manager(), install_options); install_task.Install( web_contents(), result_pair.loader_result, @@ -915,8 +906,8 @@ GURL(), DisplayMode::kStandalone, ExternalInstallSource::kInternalDefault); PendingAppInstallTask install_task( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - ui_manager(), finalizer(), install_manager(), install_options); + profile(), registrar(), os_integration_manager(), ui_manager(), + finalizer(), install_manager(), install_options); install_task.Install( web_contents(), WebAppUrlLoader::Result::kFailedWebContentsDestroyed, @@ -943,12 +934,15 @@ EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code); EXPECT_TRUE(result.app_id.has_value()); - EXPECT_EQ(1u, shortcut_manager()->num_create_shortcuts_calls()); - EXPECT_TRUE(shortcut_manager()->did_add_to_desktop().value()); + EXPECT_EQ(1u, os_integration_manager()->num_create_shortcuts_calls()); + EXPECT_TRUE(os_integration_manager()->did_add_to_desktop().value()); - EXPECT_EQ(1u, shortcut_manager()->num_register_run_on_os_login_calls()); + EXPECT_EQ( + 1u, os_integration_manager()->num_register_run_on_os_login_calls()); - EXPECT_EQ(1u, finalizer()->num_add_app_to_quick_launch_bar_calls()); + EXPECT_EQ( + 1u, + os_integration_manager()->num_add_app_to_quick_launch_bar_calls()); EXPECT_EQ(0u, finalizer()->num_reparent_tab_calls()); run_loop.Quit(); @@ -973,12 +967,15 @@ EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code); EXPECT_TRUE(result.app_id.has_value()); - EXPECT_EQ(1u, shortcut_manager()->num_create_shortcuts_calls()); - EXPECT_TRUE(shortcut_manager()->did_add_to_desktop().value()); + EXPECT_EQ(1u, os_integration_manager()->num_create_shortcuts_calls()); + EXPECT_TRUE(os_integration_manager()->did_add_to_desktop().value()); - EXPECT_EQ(0u, shortcut_manager()->num_register_run_on_os_login_calls()); + EXPECT_EQ( + 0u, os_integration_manager()->num_register_run_on_os_login_calls()); - EXPECT_EQ(1u, finalizer()->num_add_app_to_quick_launch_bar_calls()); + EXPECT_EQ( + 1u, + os_integration_manager()->num_add_app_to_quick_launch_bar_calls()); EXPECT_EQ(0u, finalizer()->num_reparent_tab_calls()); run_loop.Quit();
diff --git a/chrome/browser/web_applications/os_integration_manager.cc b/chrome/browser/web_applications/os_integration_manager.cc index a98306b..deccabb 100644 --- a/chrome/browser/web_applications/os_integration_manager.cc +++ b/chrome/browser/web_applications/os_integration_manager.cc
@@ -7,54 +7,146 @@ #include <utility> #include "base/bind.h" +#include "base/feature_list.h" +#include "base/optional.h" +#include "base/threading/sequenced_task_runner_handle.h" #include "chrome/browser/web_applications/components/app_shortcut_manager.h" #include "chrome/browser/web_applications/components/file_handler_manager.h" +#include "chrome/browser/web_applications/components/web_app_ui_manager.h" +#include "chrome/common/chrome_features.h" namespace web_app { +// This is adapted from base/barrier_closure.cc. os_hooks_results is maintained +// to track install results from different OS hooks callers +class OsHooksBarrierInfo { + public: + explicit OsHooksBarrierInfo(InstallOsHooksCallback done_callback) + : done_callback_(std::move(done_callback)) {} + + void Run(OsHookType::Type os_hook, bool created) { + DCHECK(!os_hooks_called_[os_hook]); + + os_hooks_called_[os_hook] = true; + os_hooks_results_[os_hook] = created; + + if (os_hooks_called_.all()) { + std::move(done_callback_).Run(os_hooks_results_); + } + } + + private: + OsHooksResults os_hooks_results_{false}; + std::bitset<OsHookType::kMaxValue + 1> os_hooks_called_{false}; + InstallOsHooksCallback done_callback_; +}; + OsIntegrationManager::OsIntegrationManager() = default; OsIntegrationManager::~OsIntegrationManager() = default; void OsIntegrationManager::SetSubsystems( AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager) { + FileHandlerManager* file_handler_manager, + WebAppUiManager* ui_manager) { shortcut_manager_ = shortcut_manager; file_handler_manager_ = file_handler_manager; + ui_manager_ = ui_manager; } -void OsIntegrationManager::InstallOsHooks(const AppId& app_id, - InstallOsHooksCallback callback) { +void OsIntegrationManager::SuppressOsHooksForTesting() { + suppress_os_hooks_for_testing_ = true; +} + +void OsIntegrationManager::InstallOsHooks( + const AppId& app_id, + InstallOsHooksCallback callback, + std::unique_ptr<WebApplicationInfo> web_app_info, + InstallOsHooksOptions options) { DCHECK(shortcut_manager_); - if (shortcut_manager_->CanCreateShortcuts()) { + if (suppress_os_hooks_for_testing_) { + OsHooksResults os_hooks_results{true}; + std::move(callback).Run(os_hooks_results); + return; + } + // Note: This barrier protects against multiple calls on the same type, but + // it doesn't protect against the case where we fail to call Run / create a + // callback for every type. Developers should double check that Run is + // called for every OsHookType::Type. If there is any missing type, the + // InstallOsHooksCallback will not get run. + base::RepeatingCallback<void(OsHookType::Type os_hook, bool created)> + barrier = base::BindRepeating( + &OsHooksBarrierInfo::Run, + base::Owned(new OsHooksBarrierInfo(std::move(callback)))); + + // TODO(ortuno): Make adding a shortcut to the applications menu independent + // from adding a shortcut to desktop. + if (options.add_to_applications_menu && + shortcut_manager_->CanCreateShortcuts()) { shortcut_manager_->CreateShortcuts( - app_id, /*add_to_desktop=*/true, + app_id, options.add_to_desktop, base::BindOnce(&OsIntegrationManager::OnShortcutsCreated, weak_ptr_factory_.GetWeakPtr(), app_id, - std::move(callback))); + std::move(web_app_info), std::move(options), barrier)); + } else { + base::SequencedTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::BindOnce(&OsIntegrationManager::OnShortcutsCreated, + weak_ptr_factory_.GetWeakPtr(), app_id, + std::move(web_app_info), std::move(options), barrier, + /*shortcuts_created=*/false)); } } -void OsIntegrationManager::OnShortcutsCreated(const AppId& app_id, - InstallOsHooksCallback callback, - bool shortcuts_created) { +void OsIntegrationManager::OnShortcutsCreated( + const AppId& app_id, + std::unique_ptr<WebApplicationInfo> web_app_info, + InstallOsHooksOptions options, + base::RepeatingCallback<void(OsHookType::Type os_hook, bool created)> + barrier_callback, + bool shortcuts_created) { DCHECK(file_handler_manager_); + DCHECK(ui_manager_); + + barrier_callback.Run(OsHookType::kShortcuts, true); // TODO(crbug.com/1087219): callback should be run after all hooks are // deployed, need to refactor filehandler to allow this. file_handler_manager_->EnableAndRegisterOsFileHandlers(app_id); - shortcut_manager_->ReadAllShortcutsMenuIconsAndRegisterShortcutsMenu( - app_id, base::BindOnce(&OsIntegrationManager::OnShortcutsMenuRegistered, - weak_ptr_factory_.GetWeakPtr(), - std::move(callback), shortcuts_created)); -} + barrier_callback.Run(OsHookType::kFileHandlers, true); -void OsIntegrationManager::OnShortcutsMenuRegistered( - InstallOsHooksCallback callback, - bool shortcuts_created, - bool shortcuts_menu_registered) { - std::move(callback).Run(shortcuts_created); + if (options.add_to_quick_launch_bar && + ui_manager_->CanAddAppToQuickLaunchBar()) { + ui_manager_->AddAppToQuickLaunchBar(app_id); + } + if (shortcuts_created) { + if (web_app_info) { + shortcut_manager_->RegisterShortcutsMenuWithOs( + app_id, web_app_info->shortcut_infos, + web_app_info->shortcuts_menu_icons_bitmaps); + // TODO(https://crbug.com/1098471): fix RegisterShortcutsMenuWithOs to + // take callback. + barrier_callback.Run(OsHookType::kShortcutsMenu, true); + } else { + shortcut_manager_->ReadAllShortcutsMenuIconsAndRegisterShortcutsMenu( + app_id, base::BindOnce(barrier_callback, OsHookType::kShortcutsMenu)); + } + } else { + barrier_callback.Run(OsHookType::kShortcutsMenu, false); + } + + if (base::FeatureList::IsEnabled(features::kDesktopPWAsRunOnOsLogin) && + options.run_on_os_login) { + // TODO(crbug.com/897302): Add run on OS login dev activation from + // manifest, for now it is on by default if feature flag is enabled. + shortcut_manager_->RegisterRunOnOsLogin( + app_id, base::BindOnce(barrier_callback, OsHookType::kRunOnOsLogin)); + } else { + base::SequencedTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::BindOnce(barrier_callback, OsHookType::kRunOnOsLogin, false)); + } } } // namespace web_app
diff --git a/chrome/browser/web_applications/os_integration_manager.h b/chrome/browser/web_applications/os_integration_manager.h index fe63b60..40db265 100644 --- a/chrome/browser/web_applications/os_integration_manager.h +++ b/chrome/browser/web_applications/os_integration_manager.h
@@ -5,20 +5,36 @@ #ifndef CHROME_BROWSER_WEB_APPLICATIONS_OS_INTEGRATION_MANAGER_H_ #define CHROME_BROWSER_WEB_APPLICATIONS_OS_INTEGRATION_MANAGER_H_ +#include <bitset> #include <vector> #include "base/callback_forward.h" #include "base/memory/weak_ptr.h" +#include "chrome/browser/web_applications/components/web_app_constants.h" #include "chrome/browser/web_applications/components/web_app_id.h" +#include "chrome/common/web_application_info.h" namespace web_app { class AppShortcutManager; class FileHandlerManager; +class WebAppUiManager; + +// OsHooksResults contains the result of all Os hook deployments +using OsHooksResults = std::bitset<OsHookType::kMaxValue + 1>; + +// Used to pass install options configured from upstream caller +struct InstallOsHooksOptions { + bool add_to_applications_menu = false; + bool add_to_desktop = false; + bool add_to_quick_launch_bar = false; + bool run_on_os_login = false; +}; // Callback made when InstallOsHooks has finished trying to deploy all // needed OS hooks. -using InstallOsHooksCallback = base::OnceCallback<void(bool shortcuts_created)>; +using InstallOsHooksCallback = + base::OnceCallback<void(OsHooksResults os_hooks_info)>; // OsIntegrationManager is responsible of creating/updating/deleting // all OS hooks during Web App lifecycle. @@ -27,25 +43,37 @@ class OsIntegrationManager { public: OsIntegrationManager(); - ~OsIntegrationManager(); + virtual ~OsIntegrationManager(); void SetSubsystems(AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager); + FileHandlerManager* file_handler_manager, + WebAppUiManager* ui_manager); - void InstallOsHooks(const AppId& app_id, InstallOsHooksCallback callback); + // Install all needed OS hooks for the web app. + // If provided |web_app_info| is a nullptr, it will read icons data from disk, + // otherwise it will use (SkBitmaps) from |web_app_info|. + // virtual for testing + virtual void InstallOsHooks(const AppId& app_id, + InstallOsHooksCallback callback, + std::unique_ptr<WebApplicationInfo> web_app_info, + InstallOsHooksOptions options); + + void SuppressOsHooksForTesting(); + + protected: + WebAppUiManager* ui_manager_ = nullptr; private: void OnShortcutsCreated(const AppId& app_id, - InstallOsHooksCallback callback, + std::unique_ptr<WebApplicationInfo> web_app_info, + InstallOsHooksOptions options, + base::RepeatingCallback<void(OsHookType::Type os_hook, + bool created)> callback, bool shortcuts_created); - void OnShortcutsMenuRegistered(InstallOsHooksCallback callback, - bool shortcuts_created, - bool shortcuts_menu_registered); - AppShortcutManager* shortcut_manager_ = nullptr; FileHandlerManager* file_handler_manager_ = nullptr; - + bool suppress_os_hooks_for_testing_ = false; base::WeakPtrFactory<OsIntegrationManager> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/web_applications/pending_app_install_task.cc b/chrome/browser/web_applications/pending_app_install_task.cc index d27bab6..e563d85 100644 --- a/chrome/browser/web_applications/pending_app_install_task.cc +++ b/chrome/browser/web_applications/pending_app_install_task.cc
@@ -17,12 +17,11 @@ #include "chrome/browser/installable/installable_metrics.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ssl/security_state_tab_helper.h" -#include "chrome/browser/web_applications/components/app_shortcut_manager.h" -#include "chrome/browser/web_applications/components/file_handler_manager.h" #include "chrome/browser/web_applications/components/install_finalizer.h" #include "chrome/browser/web_applications/components/install_manager.h" #include "chrome/browser/web_applications/components/web_app_constants.h" #include "chrome/browser/web_applications/components/web_app_ui_manager.h" +#include "chrome/browser/web_applications/os_integration_manager.h" #include "chrome/common/web_application_info.h" #include "content/public/browser/browser_thread.h" @@ -49,16 +48,14 @@ PendingAppInstallTask::PendingAppInstallTask( Profile* profile, AppRegistrar* registrar, - AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager, + OsIntegrationManager* os_integration_manager, WebAppUiManager* ui_manager, InstallFinalizer* install_finalizer, InstallManager* install_manager, ExternalInstallOptions install_options) : profile_(profile), registrar_(registrar), - shortcut_manager_(shortcut_manager), - file_handler_manager_(file_handler_manager), + os_integration_manager_(os_integration_manager), install_finalizer_(install_finalizer), install_manager_(install_manager), ui_manager_(ui_manager), @@ -246,36 +243,19 @@ if (!is_placeholder) { return; } + InstallOsHooksOptions options; + options.add_to_applications_menu = install_options_.add_to_applications_menu; + options.add_to_desktop = install_options_.add_to_desktop; + options.add_to_quick_launch_bar = install_options_.add_to_quick_launch_bar; + options.run_on_os_login = install_options_.run_on_os_login; - // Installation through InstallFinalizer doesn't create shortcuts so create - // them here. - if (install_options_.add_to_quick_launch_bar && - install_finalizer_->CanAddAppToQuickLaunchBar()) { - install_finalizer_->AddAppToQuickLaunchBar(app_id); - } - - // TODO(ortuno): Make adding a shortcut to the applications menu independent - // from adding a shortcut to desktop. - if (install_options_.add_to_applications_menu && - shortcut_manager_->CanCreateShortcuts()) { - shortcut_manager_->CreateShortcuts( - app_id, install_options_.add_to_desktop, - base::BindOnce( - [](base::WeakPtr<PendingAppInstallTask> task, const AppId& app_id, - base::ScopedClosureRunner scoped_closure, - bool shortcuts_created) { - if (task) { - task->file_handler_manager_->EnableAndRegisterOsFileHandlers( - app_id); - } - - // Even if the shortcuts failed to be created, we consider the - // installation successful since an app was created. - scoped_closure.RunAndReset(); - }, - weak_ptr_factory_.GetWeakPtr(), app_id, std::move(scoped_closure))); - return; - } + os_integration_manager_->InstallOsHooks( + app_id, + base::BindOnce( + [](base::ScopedClosureRunner scoped_closure, + OsHooksResults os_hooks_results) { scoped_closure.RunAndReset(); }, + std::move(scoped_closure)), + nullptr, options); } } // namespace web_app
diff --git a/chrome/browser/web_applications/pending_app_install_task.h b/chrome/browser/web_applications/pending_app_install_task.h index 271e3b99..e1a8bd1 100644 --- a/chrome/browser/web_applications/pending_app_install_task.h +++ b/chrome/browser/web_applications/pending_app_install_task.h
@@ -25,8 +25,7 @@ namespace web_app { -class AppShortcutManager; -class FileHandlerManager; +class OsIntegrationManager; class InstallFinalizer; class InstallManager; class WebAppUiManager; @@ -59,8 +58,7 @@ // policy, etc. explicit PendingAppInstallTask(Profile* profile, AppRegistrar* registrar, - AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager, + OsIntegrationManager* os_integration_manager, WebAppUiManager* ui_manager, InstallFinalizer* install_finalizer, InstallManager* install_manager, @@ -94,8 +92,7 @@ Profile* const profile_; AppRegistrar* const registrar_; - AppShortcutManager* const shortcut_manager_; - FileHandlerManager* const file_handler_manager_; + OsIntegrationManager* const os_integration_manager_; InstallFinalizer* const install_finalizer_; InstallManager* const install_manager_; WebAppUiManager* const ui_manager_;
diff --git a/chrome/browser/web_applications/pending_app_manager_impl.cc b/chrome/browser/web_applications/pending_app_manager_impl.cc index 4f11ca9..b073feda 100644 --- a/chrome/browser/web_applications/pending_app_manager_impl.cc +++ b/chrome/browser/web_applications/pending_app_manager_impl.cc
@@ -100,8 +100,8 @@ PendingAppManagerImpl::CreateInstallationTask( ExternalInstallOptions install_options) { return std::make_unique<PendingAppInstallTask>( - profile_, registrar(), shortcut_manager(), file_handler_manager(), - ui_manager(), finalizer(), install_manager(), std::move(install_options)); + profile_, registrar(), os_integration_manager(), ui_manager(), + finalizer(), install_manager(), std::move(install_options)); } std::unique_ptr<PendingAppRegistrationTaskBase>
diff --git a/chrome/browser/web_applications/pending_app_manager_impl_unittest.cc b/chrome/browser/web_applications/pending_app_manager_impl_unittest.cc index faffda19..53c103d 100644 --- a/chrome/browser/web_applications/pending_app_manager_impl_unittest.cc +++ b/chrome/browser/web_applications/pending_app_manager_impl_unittest.cc
@@ -215,8 +215,7 @@ : PendingAppInstallTask( profile, pending_app_manager_impl->registrar(), - pending_app_manager_impl->shortcut_manager(), - pending_app_manager_impl->file_handler_manager(), + pending_app_manager_impl->os_integration_manager(), pending_app_manager_impl->ui_manager(), pending_app_manager_impl->finalizer(), pending_app_manager_impl->install_manager(),
diff --git a/chrome/browser/web_applications/system_web_app_manager_unittest.cc b/chrome/browser/web_applications/system_web_app_manager_unittest.cc index 2cf7b15..7c0b4e2 100644 --- a/chrome/browser/web_applications/system_web_app_manager_unittest.cc +++ b/chrome/browser/web_applications/system_web_app_manager_unittest.cc
@@ -20,6 +20,7 @@ #include "chrome/browser/web_applications/test/test_data_retriever.h" #include "chrome/browser/web_applications/test/test_file_handler_manager.h" #include "chrome/browser/web_applications/test/test_file_utils.h" +#include "chrome/browser/web_applications/test/test_os_integration_manager.h" #include "chrome/browser/web_applications/test/test_pending_app_manager_impl.h" #include "chrome/browser/web_applications/test/test_system_web_app_manager.h" #include "chrome/browser/web_applications/test/test_web_app_database_factory.h" @@ -186,6 +187,7 @@ test_system_web_app_manager_ = std::make_unique<TestSystemWebAppManager>(profile()); test_ui_manager_ = std::make_unique<TestWebAppUiManager>(); + test_os_integration_manager_ = std::make_unique<TestOsIntegrationManager>(); install_finalizer().SetSubsystems(&controller().registrar(), &ui_manager(), &controller().sync_bridge()); @@ -193,15 +195,16 @@ install_manager().SetUrlLoaderForTesting( std::make_unique<TestWebAppUrlLoader>()); install_manager().SetSubsystems( - &controller().registrar(), &shortcut_manager(), &file_handler_manager(), - &install_finalizer()); + &controller().registrar(), &shortcut_manager(), + &os_integration_manager(), &install_finalizer()); auto url_loader = std::make_unique<TestWebAppUrlLoader>(); url_loader_ = url_loader.get(); pending_app_manager().SetUrlLoaderForTesting(std::move(url_loader)); pending_app_manager().SetSubsystems( - &controller().registrar(), &shortcut_manager(), &file_handler_manager(), - &ui_manager(), &install_finalizer(), &install_manager()); + &controller().registrar(), &shortcut_manager(), + &os_integration_manager(), &ui_manager(), &install_finalizer(), + &install_manager()); system_web_app_manager().SetSubsystems( &pending_app_manager(), &controller().registrar(), @@ -261,6 +264,10 @@ TestWebAppUiManager& ui_manager() { return *test_ui_manager_; } + TestOsIntegrationManager& os_integration_manager() { + return *test_os_integration_manager_; + } + TestWebAppUrlLoader& url_loader() { return *url_loader_; } bool IsInstalled(const GURL& install_url) { @@ -353,6 +360,7 @@ std::unique_ptr<TestAppShortcutManager> test_shortcut_manager_; std::unique_ptr<TestSystemWebAppManager> test_system_web_app_manager_; std::unique_ptr<TestWebAppUiManager> test_ui_manager_; + std::unique_ptr<TestOsIntegrationManager> test_os_integration_manager_; TestWebAppUrlLoader* url_loader_ = nullptr; std::unique_ptr<TestDataRetrieverFactory> test_data_retriever_factory_;
diff --git a/chrome/browser/web_applications/test/test_install_finalizer.cc b/chrome/browser/web_applications/test/test_install_finalizer.cc index e0dfa30..1808fc6 100644 --- a/chrome/browser/web_applications/test/test_install_finalizer.cc +++ b/chrome/browser/web_applications/test/test_install_finalizer.cc
@@ -102,14 +102,6 @@ return base::Contains(user_uninstalled_external_apps_, app_id); } -bool TestInstallFinalizer::CanAddAppToQuickLaunchBar() const { - return true; -} - -void TestInstallFinalizer::AddAppToQuickLaunchBar(const AppId& app_id) { - ++num_add_app_to_quick_launch_bar_calls_; -} - bool TestInstallFinalizer::CanReparentTab(const AppId& app_id, bool shortcut_created) const { return true;
diff --git a/chrome/browser/web_applications/test/test_install_finalizer.h b/chrome/browser/web_applications/test/test_install_finalizer.h index d229cc9..2ccf46e1 100644 --- a/chrome/browser/web_applications/test/test_install_finalizer.h +++ b/chrome/browser/web_applications/test/test_install_finalizer.h
@@ -47,8 +47,6 @@ void UninstallExternalAppByUser(const AppId& app_id, UninstallWebAppCallback callback) override; bool WasExternalAppUninstalledByUser(const AppId& app_id) const override; - bool CanAddAppToQuickLaunchBar() const override; - void AddAppToQuickLaunchBar(const AppId& app_id) override; bool CanReparentTab(const AppId& app_id, bool shortcut_created) const override; void ReparentTab(const AppId& app_id, @@ -78,9 +76,6 @@ } int num_reparent_tab_calls() { return num_reparent_tab_calls_; } - int num_add_app_to_quick_launch_bar_calls() { - return num_add_app_to_quick_launch_bar_calls_; - } private: void Finalize(const WebApplicationInfo& web_app_info, @@ -97,7 +92,6 @@ std::set<AppId> user_uninstalled_external_apps_; int num_reparent_tab_calls_ = 0; - int num_add_app_to_quick_launch_bar_calls_ = 0; DISALLOW_COPY_AND_ASSIGN(TestInstallFinalizer); };
diff --git a/chrome/browser/web_applications/test/test_os_integration_manager.cc b/chrome/browser/web_applications/test/test_os_integration_manager.cc new file mode 100644 index 0000000..87d3979 --- /dev/null +++ b/chrome/browser/web_applications/test/test_os_integration_manager.cc
@@ -0,0 +1,60 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/web_applications/test/test_os_integration_manager.h" + +#include "base/threading/sequenced_task_runner_handle.h" +#include "chrome/browser/web_applications/components/web_app_constants.h" +#include "chrome/browser/web_applications/components/web_app_ui_manager.h" + +namespace web_app { + +TestOsIntegrationManager::TestOsIntegrationManager() = default; + +TestOsIntegrationManager::~TestOsIntegrationManager() = default; + +void TestOsIntegrationManager::SetNextCreateShortcutsResult(const AppId& app_id, + bool success) { + DCHECK(!base::Contains(next_create_shortcut_results_, app_id)); + next_create_shortcut_results_[app_id] = success; +} + +void TestOsIntegrationManager::InstallOsHooks( + const AppId& app_id, + InstallOsHooksCallback callback, + std::unique_ptr<WebApplicationInfo> web_app_info, + InstallOsHooksOptions options) { + OsHooksResults os_hooks_results{false}; + os_hooks_results[OsHookType::kFileHandlers] = true; + os_hooks_results[OsHookType::kShortcutsMenu] = true; + + did_add_to_desktop_ = options.add_to_desktop; + + if (options.add_to_applications_menu && can_create_shortcuts_) { + bool success = true; + auto it = next_create_shortcut_results_.find(app_id); + if (it != next_create_shortcut_results_.end()) { + success = it->second; + next_create_shortcut_results_.erase(app_id); + } + if (success) { + ++num_create_shortcuts_calls_; + os_hooks_results[OsHookType::kShortcutsMenu] = true; + } + } + + if (options.run_on_os_login) { + ++num_register_run_on_os_login_calls_; + os_hooks_results[OsHookType::kRunOnOsLogin] = true; + } + + if (options.add_to_quick_launch_bar) + ++num_add_app_to_quick_launch_bar_calls_; + + base::SequencedTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::BindOnce(std::move(callback), std::move(os_hooks_results))); +} + +} // namespace web_app
diff --git a/chrome/browser/web_applications/test/test_os_integration_manager.h b/chrome/browser/web_applications/test/test_os_integration_manager.h new file mode 100644 index 0000000..43c90b8 --- /dev/null +++ b/chrome/browser/web_applications/test/test_os_integration_manager.h
@@ -0,0 +1,60 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_WEB_APPLICATIONS_TEST_TEST_OS_INTEGRATION_MANAGER_H_ +#define CHROME_BROWSER_WEB_APPLICATIONS_TEST_TEST_OS_INTEGRATION_MANAGER_H_ + +#include <map> + +#include "base/optional.h" +#include "chrome/browser/web_applications/components/web_app_id.h" +#include "chrome/browser/web_applications/os_integration_manager.h" + +namespace web_app { + +class TestOsIntegrationManager : public OsIntegrationManager { + public: + TestOsIntegrationManager(); + ~TestOsIntegrationManager() override; + + void InstallOsHooks(const AppId& app_id, + InstallOsHooksCallback callback, + std::unique_ptr<WebApplicationInfo> web_app_info, + InstallOsHooksOptions options) override; + + size_t num_create_shortcuts_calls() const { + return num_create_shortcuts_calls_; + } + + size_t num_register_run_on_os_login_calls() const { + return num_register_run_on_os_login_calls_; + } + + size_t num_add_app_to_quick_launch_bar_calls() const { + return num_add_app_to_quick_launch_bar_calls_; + } + + void set_can_create_shortcuts(bool can_create_shortcuts) { + can_create_shortcuts_ = can_create_shortcuts; + } + + base::Optional<bool> did_add_to_desktop() const { + return did_add_to_desktop_; + } + + void SetNextCreateShortcutsResult(const AppId& app_id, bool success); + + private: + size_t num_create_shortcuts_calls_ = 0; + size_t num_register_run_on_os_login_calls_ = 0; + size_t num_add_app_to_quick_launch_bar_calls_ = 0; + base::Optional<bool> did_add_to_desktop_; + + bool can_create_shortcuts_ = true; + std::map<AppId, bool> next_create_shortcut_results_; +}; + +} // namespace web_app + +#endif // CHROME_BROWSER_WEB_APPLICATIONS_TEST_TEST_OS_INTEGRATION_MANAGER_H_
diff --git a/chrome/browser/web_applications/test/test_web_app_provider.cc b/chrome/browser/web_applications/test/test_web_app_provider.cc index 4c34de1..7e74441 100644 --- a/chrome/browser/web_applications/test/test_web_app_provider.cc +++ b/chrome/browser/web_applications/test/test_web_app_provider.cc
@@ -16,6 +16,7 @@ #include "chrome/browser/web_applications/components/policy/web_app_policy_manager.h" #include "chrome/browser/web_applications/components/web_app_ui_manager.h" #include "chrome/browser/web_applications/components/web_app_utils.h" +#include "chrome/browser/web_applications/os_integration_manager.h" #include "chrome/browser/web_applications/system_web_app_manager.h" #include "chrome/browser/web_applications/test/test_system_web_app_manager.h" #include "chrome/browser/web_applications/web_app_install_manager.h" @@ -122,6 +123,12 @@ shortcut_manager_ = std::move(shortcut_manager); } +void TestWebAppProvider::SetOsIntegrationManager( + std::unique_ptr<OsIntegrationManager> os_integration_manager) { + CheckNotStarted(); + os_integration_manager_ = std::move(os_integration_manager); +} + void TestWebAppProvider::CheckNotStarted() const { CHECK(!started_) << "Attempted to set a WebAppProvider subsystem after " "Start() was called.";
diff --git a/chrome/browser/web_applications/test/test_web_app_provider.h b/chrome/browser/web_applications/test/test_web_app_provider.h index dee1d6f..b6ca7cb 100644 --- a/chrome/browser/web_applications/test/test_web_app_provider.h +++ b/chrome/browser/web_applications/test/test_web_app_provider.h
@@ -23,6 +23,7 @@ class AppRegistrar; class AppShortcutManager; class FileHandlerManager; +class OsIntegrationManager; class InstallFinalizer; class PendingAppManager; class SystemWebAppManager; @@ -57,6 +58,8 @@ void SetRegistryController(std::unique_ptr<AppRegistryController> controller); void SetFileHandlerManager( std::unique_ptr<FileHandlerManager> file_handler_manager); + void SetOsIntegrationManager( + std::unique_ptr<OsIntegrationManager> os_integration_manager); void SetInstallManager(std::unique_ptr<WebAppInstallManager> install_manager); void SetInstallFinalizer(std::unique_ptr<InstallFinalizer> install_finalizer); void SetPendingAppManager(
diff --git a/chrome/browser/web_applications/web_app_install_manager.cc b/chrome/browser/web_applications/web_app_install_manager.cc index b486351..66a2d1c9 100644 --- a/chrome/browser/web_applications/web_app_install_manager.cc +++ b/chrome/browser/web_applications/web_app_install_manager.cc
@@ -89,8 +89,8 @@ DCHECK(started_); auto task = std::make_unique<WebAppInstallTask>( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - finalizer(), data_retriever_factory_.Run()); + profile(), shortcut_manager(), os_integration_manager(), finalizer(), + data_retriever_factory_.Run()); task->LoadWebAppAndCheckManifest( web_app_url, install_source, url_loader_.get(), @@ -110,8 +110,8 @@ DCHECK(started_); auto task = std::make_unique<WebAppInstallTask>( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - finalizer(), data_retriever_factory_.Run()); + profile(), shortcut_manager(), os_integration_manager(), finalizer(), + data_retriever_factory_.Run()); task->InstallWebAppFromManifest( contents, bypass_service_worker_check, install_source, std::move(dialog_callback), @@ -130,8 +130,8 @@ DCHECK(started_); auto task = std::make_unique<WebAppInstallTask>( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - finalizer(), data_retriever_factory_.Run()); + profile(), shortcut_manager(), os_integration_manager(), finalizer(), + data_retriever_factory_.Run()); task->InstallWebAppFromManifestWithFallback( contents, force_shortcut_app, install_source, std::move(dialog_callback), base::BindOnce(&WebAppInstallManager::OnInstallTaskCompleted, @@ -148,8 +148,8 @@ DCHECK(started_); auto task = std::make_unique<WebAppInstallTask>( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - finalizer(), data_retriever_factory_.Run()); + profile(), shortcut_manager(), os_integration_manager(), finalizer(), + data_retriever_factory_.Run()); task->InstallWebAppFromInfo( std::move(web_application_info), for_installable_site, install_source, base::BindOnce(&WebAppInstallManager::OnInstallTaskCompleted, @@ -166,8 +166,8 @@ DCHECK(started_); auto task = std::make_unique<WebAppInstallTask>( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - finalizer(), data_retriever_factory_.Run()); + profile(), shortcut_manager(), os_integration_manager(), finalizer(), + data_retriever_factory_.Run()); task->InstallWebAppWithParams( web_contents, install_params, install_source, base::BindOnce(&WebAppInstallManager::OnInstallTaskCompleted, @@ -221,8 +221,8 @@ GURL launch_url = web_application_info->app_url; auto task = std::make_unique<WebAppInstallTask>( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - finalizer(), data_retriever_factory_.Run()); + profile(), shortcut_manager(), os_integration_manager(), finalizer(), + data_retriever_factory_.Run()); task->ExpectAppId(sync_app_id); task->SetInstallParams(CreateSyncInstallParams( @@ -266,8 +266,8 @@ DCHECK(started_); auto task = std::make_unique<WebAppInstallTask>( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - finalizer(), data_retriever_factory_.Run()); + profile(), shortcut_manager(), os_integration_manager(), finalizer(), + data_retriever_factory_.Run()); base::OnceClosure start_task = base::BindOnce( &WebAppInstallTask::UpdateWebAppFromInfo, base::Unretained(task.get()), @@ -358,8 +358,8 @@ // Install failed. Do the fallback install from info fetching just icon URLs. auto task = std::make_unique<WebAppInstallTask>( - profile(), registrar(), shortcut_manager(), file_handler_manager(), - finalizer(), data_retriever_factory_.Run()); + profile(), shortcut_manager(), os_integration_manager(), finalizer(), + data_retriever_factory_.Run()); InstallFinalizer::FinalizeOptions finalize_options; finalize_options.install_source = WebappInstallSource::SYNC;
diff --git a/chrome/browser/web_applications/web_app_install_manager_unittest.cc b/chrome/browser/web_applications/web_app_install_manager_unittest.cc index f22e2f22f..1bc1b99 100644 --- a/chrome/browser/web_applications/web_app_install_manager_unittest.cc +++ b/chrome/browser/web_applications/web_app_install_manager_unittest.cc
@@ -22,8 +22,8 @@ #include "chrome/browser/web_applications/components/web_app_utils.h" #include "chrome/browser/web_applications/test/test_app_shortcut_manager.h" #include "chrome/browser/web_applications/test/test_data_retriever.h" -#include "chrome/browser/web_applications/test/test_file_handler_manager.h" #include "chrome/browser/web_applications/test/test_file_utils.h" +#include "chrome/browser/web_applications/test/test_os_integration_manager.h" #include "chrome/browser/web_applications/test/test_web_app_database_factory.h" #include "chrome/browser/web_applications/test/test_web_app_registry_controller.h" #include "chrome/browser/web_applications/test/test_web_app_ui_manager.h" @@ -130,9 +130,8 @@ std::unique_ptr<WebAppInstallTask> CreateDummyTask() { return std::make_unique<WebAppInstallTask>( /*profile=*/nullptr, - /*registrar=*/nullptr, /*shortcut_manager=*/nullptr, - /*file_handler_manager=*/nullptr, + /*os_integration_manager=*/nullptr, /*install_finalizer=*/nullptr, /*data_retriever=*/nullptr); } @@ -161,11 +160,11 @@ profile(), icon_manager_.get(), /*legacy_finalizer=*/nullptr); shortcut_manager_ = std::make_unique<TestAppShortcutManager>(profile()); - file_handler_manager_ = std::make_unique<TestFileHandlerManager>(profile()); + os_integration_manager_ = std::make_unique<TestOsIntegrationManager>(); install_manager_ = std::make_unique<WebAppInstallManager>(profile()); install_manager_->SetSubsystems(®istrar(), shortcut_manager_.get(), - file_handler_manager_.get(), + os_integration_manager_.get(), install_finalizer_.get()); auto test_url_loader = std::make_unique<TestWebAppUrlLoader>(); @@ -188,8 +187,8 @@ WebAppRegistrar& registrar() { return controller().registrar(); } WebAppInstallManager& install_manager() { return *install_manager_; } TestAppShortcutManager& shortcut_manager() { return *shortcut_manager_; } - TestFileHandlerManager& file_handler_manager() { - return *file_handler_manager_; + TestOsIntegrationManager& os_integration_manager() { + return *os_integration_manager_; } WebAppInstallFinalizer& finalizer() { return *install_finalizer_; } WebAppIconManager& icon_manager() { return *icon_manager_; } @@ -444,7 +443,7 @@ std::unique_ptr<WebAppIconManager> icon_manager_; std::unique_ptr<TestAppShortcutManager> shortcut_manager_; - std::unique_ptr<TestFileHandlerManager> file_handler_manager_; + std::unique_ptr<TestOsIntegrationManager> os_integration_manager_; std::unique_ptr<WebAppInstallManager> install_manager_; std::unique_ptr<WebAppInstallFinalizer> install_finalizer_; std::unique_ptr<TestWebAppUiManager> ui_manager_;
diff --git a/chrome/browser/web_applications/web_app_install_task.cc b/chrome/browser/web_applications/web_app_install_task.cc index 3b940860..1dd4c65fb 100644 --- a/chrome/browser/web_applications/web_app_install_task.cc +++ b/chrome/browser/web_applications/web_app_install_task.cc
@@ -15,9 +15,7 @@ #include "chrome/browser/installable/installable_metrics.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ssl/security_state_tab_helper.h" -#include "chrome/browser/web_applications/components/app_registrar.h" #include "chrome/browser/web_applications/components/app_shortcut_manager.h" -#include "chrome/browser/web_applications/components/file_handler_manager.h" #include "chrome/browser/web_applications/components/install_bounce_metric.h" #include "chrome/browser/web_applications/components/web_app_constants.h" #include "chrome/browser/web_applications/components/web_app_data_retriever.h" @@ -70,15 +68,13 @@ WebAppInstallTask::WebAppInstallTask( Profile* profile, - AppRegistrar* registrar, AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager, + OsIntegrationManager* os_integration_manager, InstallFinalizer* install_finalizer, std::unique_ptr<WebAppDataRetriever> data_retriever) : data_retriever_(std::move(data_retriever)), - registrar_(registrar), shortcut_manager_(shortcut_manager), - file_handler_manager_(file_handler_manager), + os_integration_manager_(os_integration_manager), install_finalizer_(install_finalizer), profile_(profile) {} @@ -769,85 +765,50 @@ RecordWebAppInstallationTimestamp(profile_->GetPrefs(), app_id, install_source_); - bool add_to_applications_menu = true; - bool add_to_desktop = true; + InstallOsHooksOptions options; + + options.add_to_applications_menu = true; + options.add_to_desktop = true; + options.add_to_quick_launch_bar = kAddAppsToQuickLaunchBarByDefault; + options.run_on_os_login = web_app_info->run_on_os_login; + + if (install_source_ == WebappInstallSource::SYNC) + options.add_to_quick_launch_bar = false; if (install_params_) { - add_to_applications_menu = install_params_->add_to_applications_menu; - add_to_desktop = install_params_->add_to_desktop; + options.add_to_applications_menu = + install_params_->add_to_applications_menu; + options.add_to_desktop = install_params_->add_to_desktop; + options.add_to_quick_launch_bar = install_params_->add_to_quick_launch_bar; + options.run_on_os_login = install_params_->run_on_os_login; } - auto create_shortcuts_callback = base::BindOnce( - &WebAppInstallTask::OnShortcutsCreated, weak_ptr_factory_.GetWeakPtr(), - std::move(web_app_info), app_id); + auto hooks_created_callback = base::BindOnce( + &WebAppInstallTask::OnOsHooksCreated, weak_ptr_factory_.GetWeakPtr(), + web_app_info->open_as_window, app_id); - if (add_to_applications_menu && shortcut_manager_->CanCreateShortcuts()) { - // TODO(ortuno): Make adding a shortcut to the applications menu independent - // from adding a shortcut to desktop. - shortcut_manager_->CreateShortcuts(app_id, add_to_desktop, - std::move(create_shortcuts_callback)); - } else { - std::move(create_shortcuts_callback).Run(false /* created_shortcuts */); - } + os_integration_manager_->InstallOsHooks(app_id, + std::move(hooks_created_callback), + std::move(web_app_info), options); } -void WebAppInstallTask::OnShortcutsCreated( - std::unique_ptr<WebApplicationInfo> web_app_info, +void WebAppInstallTask::OnOsHooksCreated( + bool open_as_window, const AppId& app_id, - bool shortcut_created) { + const OsHooksResults os_hooks_results) { if (ShouldStopInstall()) return; - bool add_to_quick_launch_bar = kAddAppsToQuickLaunchBarByDefault; - if (install_source_ == WebappInstallSource::SYNC) - add_to_quick_launch_bar = false; - - if (install_params_) - add_to_quick_launch_bar = install_params_->add_to_quick_launch_bar; - - if (add_to_quick_launch_bar && - install_finalizer_->CanAddAppToQuickLaunchBar()) { - install_finalizer_->AddAppToQuickLaunchBar(app_id); - } - if (!background_installation_) { - const bool can_reparent_tab = - install_finalizer_->CanReparentTab(app_id, shortcut_created); + const bool can_reparent_tab = install_finalizer_->CanReparentTab( + app_id, os_hooks_results[OsHookType::kShortcuts]); - if (can_reparent_tab && web_app_info->open_as_window) - install_finalizer_->ReparentTab(app_id, shortcut_created, web_contents()); - } - - // Enable file handlers, if the app is locally installed. - if (registrar_->IsLocallyInstalled(app_id)) - file_handler_manager_->EnableAndRegisterOsFileHandlers(app_id); - - if (base::FeatureList::IsEnabled( - features::kDesktopPWAsAppIconShortcutsMenu) && - !web_app_info->shortcut_infos.empty() && add_to_quick_launch_bar) { - shortcut_manager_->RegisterShortcutsMenuWithOs( - app_id, web_app_info->shortcut_infos, - web_app_info->shortcuts_menu_icons_bitmaps); - } - - if (base::FeatureList::IsEnabled(features::kDesktopPWAsRunOnOsLogin)) { - // TODO(crbug.com/897302): Add run on OS login dev activation from - // manifest, for now it is on by default if feature flag is enabled - bool run_on_os_login = web_app_info->run_on_os_login; - - if (install_params_) - run_on_os_login = install_params_->run_on_os_login; - - if (run_on_os_login) { - shortcut_manager_->RegisterRunOnOsLogin( - app_id, base::BindOnce(&WebAppInstallTask::OnRegisteredRunOnOsLogin, - weak_ptr_factory_.GetWeakPtr(), app_id)); - } else { - CallInstallCallback(app_id, InstallResultCode::kSuccessNewInstall); + if (can_reparent_tab && open_as_window) { + install_finalizer_->ReparentTab( + app_id, os_hooks_results[OsHookType::kShortcuts], web_contents()); } - } else { - CallInstallCallback(app_id, InstallResultCode::kSuccessNewInstall); } + CallInstallCallback(app_id, InstallResultCode::kSuccessNewInstall); } void WebAppInstallTask::OnRegisteredRunOnOsLogin(
diff --git a/chrome/browser/web_applications/web_app_install_task.h b/chrome/browser/web_applications/web_app_install_task.h index e0a15e6..944cc61d5 100644 --- a/chrome/browser/web_applications/web_app_install_task.h +++ b/chrome/browser/web_applications/web_app_install_task.h
@@ -19,6 +19,7 @@ #include "chrome/browser/web_applications/components/web_app_id.h" #include "chrome/browser/web_applications/components/web_app_install_utils.h" #include "chrome/browser/web_applications/components/web_app_url_loader.h" +#include "chrome/browser/web_applications/os_integration_manager.h" #include "chrome/common/web_application_info.h" #include "content/public/browser/web_contents_observer.h" @@ -37,7 +38,7 @@ namespace web_app { class AppShortcutManager; -class FileHandlerManager; +class OsIntegrationManager; class InstallFinalizer; class WebAppDataRetriever; class WebAppUrlLoader; @@ -48,9 +49,8 @@ base::OnceCallback<void(std::unique_ptr<WebApplicationInfo>)>; WebAppInstallTask(Profile* profile, - AppRegistrar* registrar, AppShortcutManager* shortcut_manager, - FileHandlerManager* file_handler_manager, + OsIntegrationManager* os_integration_manager, InstallFinalizer* install_finalizer, std::unique_ptr<WebAppDataRetriever> data_retriever); ~WebAppInstallTask() override; @@ -228,9 +228,9 @@ std::unique_ptr<WebApplicationInfo> web_app_info, const AppId& app_id, InstallResultCode code); - void OnShortcutsCreated(std::unique_ptr<WebApplicationInfo> web_app_info, - const AppId& app_id, - bool shortcut_created); + void OnOsHooksCreated(bool open_as_window, + const AppId& app_id, + const OsHooksResults os_hooks_results); void OnRegisteredRunOnOsLogin(const AppId& app_id, bool registered_run_on_os_login); void OnUpdateFinalizedRegisterShortcutsMenu( @@ -260,9 +260,8 @@ std::unique_ptr<WebApplicationInfo> web_application_info_; std::unique_ptr<content::WebContents> web_contents_; - AppRegistrar* registrar_; AppShortcutManager* shortcut_manager_; - FileHandlerManager* file_handler_manager_; + OsIntegrationManager* os_integration_manager_; InstallFinalizer* install_finalizer_; Profile* const profile_;
diff --git a/chrome/browser/web_applications/web_app_install_task_unittest.cc b/chrome/browser/web_applications/web_app_install_task_unittest.cc index a3e0417..b6775414 100644 --- a/chrome/browser/web_applications/web_app_install_task_unittest.cc +++ b/chrome/browser/web_applications/web_app_install_task_unittest.cc
@@ -31,6 +31,7 @@ #include "chrome/browser/web_applications/test/test_file_handler_manager.h" #include "chrome/browser/web_applications/test/test_file_utils.h" #include "chrome/browser/web_applications/test/test_install_finalizer.h" +#include "chrome/browser/web_applications/test/test_os_integration_manager.h" #include "chrome/browser/web_applications/test/test_web_app_database_factory.h" #include "chrome/browser/web_applications/test/test_web_app_registry_controller.h" #include "chrome/browser/web_applications/test/test_web_app_ui_manager.h" @@ -99,21 +100,19 @@ std::make_unique<WebAppInstallFinalizer>(profile(), icon_manager_.get(), /*legacy_finalizer=*/nullptr); shortcut_manager_ = std::make_unique<TestAppShortcutManager>(profile()); - file_handler_manager_ = std::make_unique<TestFileHandlerManager>(profile()); + os_integration_manager_ = std::make_unique<TestOsIntegrationManager>(); install_finalizer_->SetSubsystems( ®istrar(), ui_manager_.get(), &test_registry_controller_->sync_bridge()); shortcut_manager_->SetSubsystems(icon_manager_.get(), ®istrar()); - file_handler_manager_->SetSubsystems(®istrar()); auto data_retriever = std::make_unique<TestDataRetriever>(); data_retriever_ = data_retriever.get(); install_task_ = std::make_unique<WebAppInstallTask>( - profile(), ®istrar(), shortcut_manager_.get(), - file_handler_manager_.get(), install_finalizer_.get(), - std::move(data_retriever)); + profile(), shortcut_manager_.get(), os_integration_manager_.get(), + install_finalizer_.get(), std::move(data_retriever)); url_loader_ = std::make_unique<TestWebAppUrlLoader>(); controller().Init(); @@ -322,6 +321,9 @@ WebAppRegistrar& registrar() { return controller().registrar(); } TestAppShortcutManager& test_shortcut_manager() { return *shortcut_manager_; } + TestOsIntegrationManager& test_os_integration_manager() { + return *os_integration_manager_; + } TestWebAppUrlLoader& url_loader() { return *url_loader_; } TestDataRetriever& data_retriever() { DCHECK(data_retriever_); @@ -333,7 +335,7 @@ std::unique_ptr<TestWebAppUiManager> ui_manager_; std::unique_ptr<InstallFinalizer> install_finalizer_; std::unique_ptr<TestAppShortcutManager> shortcut_manager_; - std::unique_ptr<TestFileHandlerManager> file_handler_manager_; + std::unique_ptr<TestOsIntegrationManager> os_integration_manager_; // Owned by install_task_: TestFileUtils* file_utils_ = nullptr; @@ -794,17 +796,18 @@ InstallWebAppFromManifestWithFallback(); - EXPECT_EQ(1u, test_shortcut_manager().num_create_shortcuts_calls()); + EXPECT_EQ(1u, test_os_integration_manager().num_create_shortcuts_calls()); EXPECT_EQ(1, test_install_finalizer().num_reparent_tab_calls()); #if defined(OS_CHROMEOS) - const int expected_num_add_app_to_quick_launch_bar_calls = 0; + const size_t expected_num_add_app_to_quick_launch_bar_calls = 0; #else - const int expected_num_add_app_to_quick_launch_bar_calls = 1; + const size_t expected_num_add_app_to_quick_launch_bar_calls = 1; #endif - EXPECT_EQ(expected_num_add_app_to_quick_launch_bar_calls, - test_install_finalizer().num_add_app_to_quick_launch_bar_calls()); + EXPECT_EQ( + expected_num_add_app_to_quick_launch_bar_calls, + test_os_integration_manager().num_add_app_to_quick_launch_bar_calls()); } TEST_F(WebAppInstallTaskTest, FinalizerMethodsNotCalled) { @@ -817,10 +820,11 @@ EXPECT_TRUE(result.app_id.empty()); EXPECT_EQ(InstallResultCode::kBookmarkExtensionInstallError, result.code); - EXPECT_EQ(0u, test_shortcut_manager().num_create_shortcuts_calls()); + EXPECT_EQ(0u, test_os_integration_manager().num_create_shortcuts_calls()); EXPECT_EQ(0, test_install_finalizer().num_reparent_tab_calls()); - EXPECT_EQ(0, - test_install_finalizer().num_add_app_to_quick_launch_bar_calls()); + EXPECT_EQ( + 0u, + test_os_integration_manager().num_add_app_to_quick_launch_bar_calls()); } TEST_F(WebAppInstallTaskTest, InstallWebAppFromManifest_Success) { @@ -1010,9 +1014,8 @@ /*scope=*/GURL{}); auto install_task = std::make_unique<WebAppInstallTask>( - guest_profile, ®istrar(), shortcut_manager_.get(), - file_handler_manager_.get(), install_finalizer_.get(), - std::move(data_retriever)); + guest_profile, shortcut_manager_.get(), os_integration_manager_.get(), + install_finalizer_.get(), std::move(data_retriever)); base::RunLoop run_loop; install_task->InstallWebAppWithParams( @@ -1173,9 +1176,8 @@ url_loader().SetNextLoadUrlResult(url, WebAppUrlLoader::Result::kUrlLoaded); auto task = std::make_unique<WebAppInstallTask>( - profile(), ®istrar(), shortcut_manager_.get(), - file_handler_manager_.get(), install_finalizer_.get(), - std::move(data_retriever)); + profile(), shortcut_manager_.get(), os_integration_manager_.get(), + install_finalizer_.get(), std::move(data_retriever)); std::unique_ptr<WebApplicationInfo> info; task->LoadAndRetrieveWebApplicationInfoWithIcons( @@ -1232,7 +1234,8 @@ EXPECT_EQ(url, web_app->launch_url()); EXPECT_EQ(scope, web_app->scope()); EXPECT_EQ(theme_color, web_app->theme_color()); - EXPECT_EQ(1u, test_shortcut_manager().num_register_run_on_os_login_calls()); + EXPECT_EQ(1u, + test_os_integration_manager().num_register_run_on_os_login_calls()); } TEST_F(WebAppInstallTaskWithRunOnOsLoginTest, @@ -1277,7 +1280,8 @@ EXPECT_EQ(url, web_app->launch_url()); EXPECT_EQ(scope, web_app->scope()); EXPECT_EQ(theme_color, web_app->theme_color()); - EXPECT_EQ(0u, test_shortcut_manager().num_register_run_on_os_login_calls()); + EXPECT_EQ(0u, + test_os_integration_manager().num_register_run_on_os_login_calls()); } // TODO(https://crbug.com/1096953): Move these tests out into a dedicated
diff --git a/chrome/browser/web_applications/web_app_provider.cc b/chrome/browser/web_applications/web_app_provider.cc index fafb6db0..7d77c3f 100644 --- a/chrome/browser/web_applications/web_app_provider.cc +++ b/chrome/browser/web_applications/web_app_provider.cc
@@ -258,13 +258,13 @@ install_finalizer_->SetSubsystems(registrar_.get(), ui_manager_.get(), registry_controller_.get()); install_manager_->SetSubsystems(registrar_.get(), shortcut_manager_.get(), - file_handler_manager_.get(), + os_integration_manager_.get(), install_finalizer_.get()); manifest_update_manager_->SetSubsystems( registrar_.get(), icon_manager_.get(), ui_manager_.get(), install_manager_.get(), system_web_app_manager_.get()); pending_app_manager_->SetSubsystems( - registrar_.get(), shortcut_manager_.get(), file_handler_manager_.get(), + registrar_.get(), shortcut_manager_.get(), os_integration_manager_.get(), ui_manager_.get(), install_finalizer_.get(), install_manager_.get()); external_web_app_manager_->SetSubsystems(pending_app_manager_.get()); system_web_app_manager_->SetSubsystems( @@ -273,8 +273,8 @@ web_app_policy_manager_->SetSubsystems(pending_app_manager_.get()); file_handler_manager_->SetSubsystems(registrar_.get()); shortcut_manager_->SetSubsystems(icon_manager_.get(), registrar_.get()); - os_integration_manager_->SetSubsystems(shortcut_manager_.get(), - file_handler_manager_.get()); + os_integration_manager_->SetSubsystems( + shortcut_manager_.get(), file_handler_manager_.get(), ui_manager_.get()); connected_ = true; }
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index b0695e7..28ba7ba 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1595246042-98b0c1a3c65c5614c7a736e7fb083fada959e352.profdata +chrome-mac-master-1595267899-0b639e1a830eedc083c30d777051dfd02b3a214f.profdata
diff --git a/chrome/installer/util/master_preferences.h b/chrome/installer/util/master_preferences.h index fb5948e..3f88141 100644 --- a/chrome/installer/util/master_preferences.h +++ b/chrome/installer/util/master_preferences.h
@@ -201,6 +201,8 @@ DISALLOW_COPY_AND_ASSIGN(MasterPreferences); }; +using InitialPreferences = MasterPreferences; + } // namespace installer #endif // CHROME_INSTALLER_UTIL_MASTER_PREFERENCES_H_
diff --git a/chrome/installer/util/set_reg_value_work_item.cc b/chrome/installer/util/set_reg_value_work_item.cc index 148afcc..e4a9119f 100644 --- a/chrome/installer/util/set_reg_value_work_item.cc +++ b/chrome/installer/util/set_reg_value_work_item.cc
@@ -4,8 +4,10 @@ #include "chrome/installer/util/set_reg_value_work_item.h" +#include "base/debug/alias.h" #include "base/logging.h" #include "base/strings/string_util.h" +#include "base/strings/utf_string_conversions.h" #include "base/win/registry.h" #include "chrome/installer/util/logging_installer.h" @@ -151,6 +153,13 @@ if (!size) { previous_type_ = type; } else { + // TODO(crbug.com/1106328): Remove after bug is resolved. + DEBUG_ALIAS_FOR_CSTR(key_path_copy, base::WideToUTF8(key_path_).c_str(), + 255); + DEBUG_ALIAS_FOR_CSTR(value_name_copy, + base::WideToUTF8(value_name_).c_str(), 200); + base::debug::Alias(&size); + base::debug::Alias(&type); previous_value_.resize(size); result = key.ReadValue(value_name_.c_str(), &previous_value_[0], &size, &previous_type_);
diff --git a/chrome/test/data/pdf/BUILD.gn b/chrome/test/data/pdf/BUILD.gn index f4d49a4..344aa0c2 100644 --- a/chrome/test/data/pdf/BUILD.gn +++ b/chrome/test/data/pdf/BUILD.gn
@@ -13,10 +13,10 @@ ] deps = [ #":annotations_feature_enabled_test", - #":basic_plugin_test", + ":basic_plugin_test", ":basic_test", + ":beep_test", - #":beep_test", #":bookmarks_test", ":download_controls_test", ":gesture_detector_test", @@ -25,22 +25,32 @@ #":material_elements_test", #":metrics_test", #":navigator_test", - #":nobeep_test", + ":nobeep_test", + #":page_change_test", #":params_parser_test", #":printing_icon_test", #":redirects_fail_test", ":test_util", + ":title_test", - #":title_test", #":toolbar_manager_test", #":touch_handling_test", #":viewport_test", - #":whitespace_title_test", + ":whitespace_title_test", + #":zoom_manager_test", ] } +js_library("basic_plugin_test") { + deps = [ + "//chrome/browser/resources/pdf:pdf_scripting_api", + "//chrome/browser/resources/pdf:pdf_viewer", + ] + externs_list = [ "$externs_path/test.js" ] +} + js_library("basic_test") { deps = [ "//chrome/browser/resources/pdf:pdf_viewer", @@ -50,6 +60,14 @@ externs_list = [ "$externs_path/test.js" ] } +js_library("beep_test") { + deps = [ + "//chrome/browser/resources/pdf:pdf_scripting_api", + "//chrome/browser/resources/pdf:pdf_viewer", + ] + externs_list = [ "$externs_path/test.js" ] +} + js_library("gesture_detector_test") { deps = [ "//chrome/browser/resources/pdf:gesture_detector", @@ -71,9 +89,25 @@ externs_list = [ "$externs_path/test.js" ] } +js_library("nobeep_test") { + deps = [ + "//chrome/browser/resources/pdf:pdf_scripting_api", + "//chrome/browser/resources/pdf:pdf_viewer", + ] + externs_list = [ "$externs_path/test.js" ] +} + js_library("test_util") { deps = [ "//chrome/browser/resources/pdf:viewport", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", ] } + +js_library("title_test") { + externs_list = [ "$externs_path/test.js" ] +} + +js_library("whitespace_title_test") { + externs_list = [ "$externs_path/test.js" ] +}
diff --git a/chrome/test/data/pdf/basic_plugin_test.js b/chrome/test/data/pdf/basic_plugin_test.js index 07896a5..3910002 100644 --- a/chrome/test/data/pdf/basic_plugin_test.js +++ b/chrome/test/data/pdf/basic_plugin_test.js
@@ -3,6 +3,7 @@ // found in the LICENSE file. import {PDFScriptingAPI} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_scripting_api.js'; +import {PDFViewerElement} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer.js'; /** * These tests require that the PDF plugin be available to run correctly. @@ -12,25 +13,25 @@ * Test that the page is sized to the size of the document. */ function testPageSize() { + const viewer = /** @type {!PDFViewerElement} */ ( + document.body.querySelector('#viewer')); // Verify that the initial zoom is less than or equal to 100%. chrome.test.assertTrue(viewer.viewport.getZoom() <= 1); viewer.viewport.setZoom(1); const sizer = viewer.shadowRoot.querySelector('#sizer'); chrome.test.assertEq(826, sizer.offsetWidth); - chrome.test.assertEq( - 1066 + viewer.viewport.topToolbarHeight_, sizer.offsetHeight); + chrome.test.assertEq(1066 + viewer.getToolbarHeight(), sizer.offsetHeight); chrome.test.succeed(); - console.log('done page size'); }, function testGetSelectedText() { const client = new PDFScriptingAPI(window, window); client.selectAll(); - client.getSelectedText(chrome.test.callbackPass(function(selectedText) { + client.getSelectedText(function(selectedText) { chrome.test.assertEq('this is some text\nsome more text', selectedText); - })); - console.log('done select'); + chrome.test.succeed(); + }); }, /** @@ -38,8 +39,6 @@ */ function testHasCorrectTitle() { chrome.test.assertEq('test.pdf', document.title); - - console.log('done title'); chrome.test.succeed(); }, ];
diff --git a/chrome/test/data/pdf/beep_test.js b/chrome/test/data/pdf/beep_test.js index 9865f3f..c17fc7c 100644 --- a/chrome/test/data/pdf/beep_test.js +++ b/chrome/test/data/pdf/beep_test.js
@@ -3,13 +3,16 @@ // found in the LICENSE file. import {PDFScriptingAPI} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_scripting_api.js'; +import {PDFViewerElement} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer.js'; const tests = [ /** * Test that the JS was able to call back via "app.beep()" */ function testHasCorrectBeepCount() { - chrome.test.assertEq(1, viewer.beepCount_); + const viewer = /** @type {!PDFViewerElement} */ ( + document.body.querySelector('#viewer')); + chrome.test.assertEq(1, viewer.beepCount); chrome.test.succeed(); } ];
diff --git a/chrome/test/data/pdf/nobeep_test.js b/chrome/test/data/pdf/nobeep_test.js index 0bd9c64..c6ec899 100644 --- a/chrome/test/data/pdf/nobeep_test.js +++ b/chrome/test/data/pdf/nobeep_test.js
@@ -3,13 +3,16 @@ // found in the LICENSE file. import {PDFScriptingAPI} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_scripting_api.js'; +import {PDFViewerElement} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer.js'; const tests = [ /** * Test that blocked JS was not able to call back via "app.beep()" */ function testHasCorrectBeepCount() { - chrome.test.assertEq(0, viewer.beepCount_); + const viewer = /** @type {!PDFViewerElement} */ ( + document.body.querySelector('#viewer')); + chrome.test.assertEq(0, viewer.beepCount); chrome.test.succeed(); } ];
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn index 8440c475..ba650f1 100644 --- a/chrome/test/data/webui/BUILD.gn +++ b/chrome/test/data/webui/BUILD.gn
@@ -142,11 +142,9 @@ "settings/chromeos/a11y/tts_subpage_a11y_test.js", "settings/chromeos/os_settings_browsertest.js", "settings/chromeos/os_settings_ui_browsertest.js", + "settings/chromeos/os_settings_v3_browsertest.js", "sys_internals/sys_internals_browsertest.js", ] - if (!optimize_webui) { - sources += [ "settings/chromeos/os_settings_v3_browsertest.js" ] - } } else { sources += [ "signin/signin_browsertest.js",
diff --git a/chrome/test/data/webui/settings/chromeos/os_namespace_rewrites.gni b/chrome/test/data/webui/settings/chromeos/os_namespace_rewrites.gni index 119ac95..5d88e8b0 100644 --- a/chrome/test/data/webui/settings/chromeos/os_namespace_rewrites.gni +++ b/chrome/test/data/webui/settings/chromeos/os_namespace_rewrites.gni
@@ -12,5 +12,6 @@ "settings.MultiDeviceSettingsMode|MultiDeviceSettingsMode", "test_util.flushTasks|flushTasks", "test_util.eventToPromise|eventToPromise", + "test_util.waitAfterNextRender|waitAfterNextRender", "settings.TestWallpaperBrowserProxy|TestWallpaperBrowserProxy", ]
diff --git a/chrome/test/data/webui/settings/chromeos/os_reset_page_test.js b/chrome/test/data/webui/settings/chromeos/os_reset_page_test.js index 2d15c1a..099c596 100644 --- a/chrome/test/data/webui/settings/chromeos/os_reset_page_test.js +++ b/chrome/test/data/webui/settings/chromeos/os_reset_page_test.js
@@ -2,17 +2,24 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// clang-format off // #import {TestLifetimeBrowserProxy} from './test_os_lifetime_browser_proxy.m.js'; -// #import {LifetimeBrowserProxy, LifetimeBrowserProxyImpl, OsResetBrowserProxyImpl} from 'chrome://os-settings/chromeos/os_settings.js'; +// #import {LifetimeBrowserProxy, LifetimeBrowserProxyImpl, OsResetBrowserProxyImpl, Router, routes} from 'chrome://os-settings/chromeos/os_settings.js'; // #import {TestOsResetBrowserProxy} from './test_os_reset_browser_proxy.m.js'; // #import {assertEquals, assertFalse, assertNotEquals, assertTrue} from '../../chai_assert.js'; // #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +// #import {getDeepActiveElement} from 'chrome://resources/js/util.m.js'; +// #import {waitAfterNextRender} from 'chrome://test/test_util.m.js'; +// clang-format on cr.define('settings_reset_page', function() { /** @enum {string} */ const TestNames = { PowerwashDialogAction: 'PowerwashDialogAction', PowerwashDialogOpenClose: 'PowerwashDialogOpenClose', + PowerwashFocusDeepLink: 'PowerwashFocusDeepLink', + PowerwashFocusDeepLinkNoFlag: 'PowerwashFocusDeepLinkNoFlag', + PowerwashFocusDeepLinkWrongId: 'PowerwashFocusDeepLinkWrongId', }; suite('DialogTests', function() { @@ -38,6 +45,7 @@ }); teardown(function() { + settings.Router.getInstance().resetRouteForTesting(); resetPage.remove(); }); @@ -69,6 +77,23 @@ ]); } + /** + * Navigates to the deep link provided by |settingId| and returns true if + * the focused element is |deepLinkElement|. + * @param {!Element} deepLinkElement + * @param {!string} settingId + * @returns {!boolean} + */ + async function isDeepLinkFocusedForSettingId(deepLinkElement, settingId) { + const params = new URLSearchParams; + params.append('settingId', settingId); + settings.Router.getInstance().navigateTo( + settings.routes.OS_RESET, params); + + await test_util.waitAfterNextRender(deepLinkElement); + return deepLinkElement === getDeepActiveElement(); + } + // Tests that the powerwash dialog opens and closes correctly, and // that chrome.send calls are propagated as expected. test(TestNames.PowerwashDialogOpenClose, function() { @@ -91,6 +116,36 @@ await lifetimeBrowserProxy.whenCalled('factoryReset'); assertFalse(requestTpmFirmwareUpdate); }); + + // Tests that when the route changes to one containing a deep link to + // powerwash, powerwash is focused. + test(TestNames.PowerwashFocusDeepLink, async () => { + loadTimeData.overrideValues({isDeepLinkingEnabled: true}); + assertTrue(loadTimeData.getBoolean('isDeepLinkingEnabled')); + assertTrue( + await isDeepLinkFocusedForSettingId(resetPage.$.powerwash, '1600'), + 'Powerwash should be focused for settingId=1600.'); + }); + + // Tests that when the deep linking flag is disabled, no focusing of deep + // links occurs. + test(TestNames.PowerwashFocusDeepLinkNoFlag, async () => { + loadTimeData.overrideValues({isDeepLinkingEnabled: false}); + assertFalse(loadTimeData.getBoolean('isDeepLinkingEnabled')); + assertFalse( + await isDeepLinkFocusedForSettingId(resetPage.$.powerwash, '1600'), + 'Powerwash should not be focused with flag disabled.'); + }); + + // Tests that when the route changes to one containing a deep link not equal + // to powerwash, no focusing of powerwash occurs. + test(TestNames.PowerwashFocusDeepLinkWrongId, async () => { + loadTimeData.overrideValues({isDeepLinkingEnabled: true}); + assertTrue(loadTimeData.getBoolean('isDeepLinkingEnabled')); + assertFalse( + await isDeepLinkFocusedForSettingId(resetPage.$.powerwash, '1234'), + 'Powerwash should not be focused for settingId=1234.'); + }); }); // #cr_define_end
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js index 15f05bb..6782559 100644 --- a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js +++ b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
@@ -8,6 +8,7 @@ GEN('#include "chrome/common/buildflags.h"'); GEN('#include "content/public/test/browser_test.h"'); GEN('#include "services/network/public/cpp/features.h"'); +GEN('#include "chromeos/constants/chromeos_features.h"'); /** Test fixture for shared Polymer 3 elements. */ // eslint-disable-next-line no-var @@ -30,6 +31,7 @@ return { enabled: [ 'network::features::kOutOfBlinkCors', + 'chromeos::features::kOsSettingsPolymer3', ], }; }
diff --git a/chrome/test/data/webui/tab_strip/drag_manager_test.js b/chrome/test/data/webui/tab_strip/drag_manager_test.js index bde3113a..77543e16 100644 --- a/chrome/test/data/webui/tab_strip/drag_manager_test.js +++ b/chrome/test/data/webui/tab_strip/drag_manager_test.js
@@ -150,12 +150,15 @@ test('DragStartSetsDragImage', () => { const draggedElement = delegate.children[0]; const dragImage = draggedElement.getDragImage(); + const dragImageCenter = draggedElement.getDragImageCenter(); // Mock the dimensions and position of the element and the drag image. const draggedElementRect = {top: 20, left: 30, width: 200, height: 150}; draggedElement.getBoundingClientRect = () => draggedElementRect; const dragImageRect = {top: 20, left: 30, width: 200, height: 150}; dragImage.getBoundingClientRect = () => dragImageRect; + const dragImageCenterRect = {top: 25, left: 25, width: 100, height: 120}; + dragImageCenter.getBoundingClientRect = () => dragImageCenterRect; const eventClientX = 100; const eventClientY = 50; @@ -172,26 +175,40 @@ assertEquals( mockDataTransfer.dragImageData.image, draggedElement.getDragImage()); - const xDiffFromCenter = - eventClientX - draggedElementRect.left - draggedElementRect.width / 2; - const yDiffFromCenter = - eventClientY - draggedElementRect.top - draggedElementRect.height / 2; + const eventXPercentage = + (eventClientX - draggedElementRect.left) / draggedElementRect.width; + const eventYPercentage = + (eventClientY - draggedElementRect.top) / draggedElementRect.height; + // Offset should account for any margins or padding between the + // dragImageCenter and the dragImage. + let dragImageCenterLeftMargin = + dragImageCenterRect.left - dragImageRect.left; + let dragImageCenterTopMargin = dragImageCenterRect.top - dragImageRect.top; if (isChromeOS) { - assertEquals( - dragImageRect.width / 2 + xDiffFromCenter / 1.2, - mockDataTransfer.dragImageData.offsetX); - assertEquals( - dragImageRect.height / 2 + (yDiffFromCenter - 25) / 1.2, - mockDataTransfer.dragImageData.offsetY); - } else { - assertEquals( - dragImageRect.width / 2 + xDiffFromCenter, - mockDataTransfer.dragImageData.offsetX); - assertEquals( - dragImageRect.height / 2 + yDiffFromCenter, - mockDataTransfer.dragImageData.offsetY); + // Dimensions are scaled on ChromeOS so the margins and paddings are also + // scaled. + dragImageCenterLeftMargin *= 1.2; + dragImageCenterTopMargin *= 1.2; } + + // Offset should map event's coordinates to within the dimensions of the + // dragImageCenter. + const eventXWithinDragImageCenter = + eventXPercentage * dragImageCenterRect.width; + const eventYWithinDragImageCenter = + eventYPercentage * dragImageCenterRect.height; + + let expectedOffsetX = + dragImageCenterLeftMargin + eventXWithinDragImageCenter; + let expectedOffsetY = + dragImageCenterTopMargin + eventYWithinDragImageCenter; + if (isChromeOS) { + expectedOffsetY -= 25; + } + + assertEquals(expectedOffsetX, mockDataTransfer.dragImageData.offsetX); + assertEquals(expectedOffsetY, mockDataTransfer.dragImageData.offsetY); }); test('DragOverMovesTabs', async () => {
diff --git a/chromecast/browser/DEPS b/chromecast/browser/DEPS index 564ce4d..140d0251 100644 --- a/chromecast/browser/DEPS +++ b/chromecast/browser/DEPS
@@ -49,7 +49,6 @@ "+extensions/shell/browser/api", "+gin/v8_initializer.h", "+gpu/command_buffer/service/gpu_switches.h", - "+media", "+media/audio", "+media/base", "+media/mojo",
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc index 087048a..c3458d39 100644 --- a/chromecast/browser/cast_browser_main_parts.cc +++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -69,7 +69,6 @@ #include "gpu/command_buffer/service/gpu_switches.h" #include "media/base/media.h" #include "media/base/media_switches.h" -#include "media/media_buildflags.h" #include "net/base/network_change_notifier.h" #include "services/network/public/cpp/shared_url_loader_factory.h" #include "ui/base/ui_base_switches.h" @@ -329,11 +328,6 @@ #endif #endif #endif // defined(OS_LINUX) -#if BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION) - // Force disable new video decoder, since it uses slice H.264, which is - // not currently supported on Linux-based Cast devices. - {switches::kForceDisableNewAcceleratedVideoDecoder, ""}, -#endif // BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION) // It's better to start GPU process on demand. For example, for TV platforms // cast starts in background and can't render until TV switches to cast // input.
diff --git a/chromeos/components/print_management/resources/print_job_clear_history_dialog.html b/chromeos/components/print_management/resources/print_job_clear_history_dialog.html index ca3e7115..8550858 100644 --- a/chromeos/components/print_management/resources/print_job_clear_history_dialog.html +++ b/chromeos/components/print_management/resources/print_job_clear_history_dialog.html
@@ -4,7 +4,20 @@ justify-content: flex-end; } + #clearDialog [slot=button-container] { + padding-bottom: 20px; + padding-inline-end: 24px; + padding-inline-start: 24px; + padding-top: 32px; + } + + #clearDialog { + --cr-dialog-top-container-min-height: 24px; + } + #confirmationText { + @apply --print-management-default-font; + color: var(--print-management-default-text-color); overflow-wrap: break-word; }
diff --git a/chromeos/crosapi/README.md b/chromeos/crosapi/README.md new file mode 100644 index 0000000..ec88c52f --- /dev/null +++ b/chromeos/crosapi/README.md
@@ -0,0 +1,5 @@ +This directory defines the ChromeOS API (crosapi). This is the +communication protocol between lacros (web-browser on ChromeOS) and ash +(user-space system executable on ChromeOS) for all new IPCs. Some existing IPCs +might use Wayland or D-Bus to avoid unnecessary rewrites. +
diff --git a/chromeos/dbus/cros_healthd/fake_cros_healthd_client.cc b/chromeos/dbus/cros_healthd/fake_cros_healthd_client.cc index 330dd74..1f7332a 100644 --- a/chromeos/dbus/cros_healthd/fake_cros_healthd_client.cc +++ b/chromeos/dbus/cros_healthd/fake_cros_healthd_client.cc
@@ -62,6 +62,11 @@ fake_service_.SetProbeTelemetryInfoResponseForTesting(info); } +void FakeCrosHealthdClient::SetProbeProcessInfoResponseForTesting( + mojom::ProcessResultPtr& result) { + fake_service_.SetProbeProcessInfoResponseForTesting(result); +} + void FakeCrosHealthdClient::EmitAcInsertedEventForTesting() { // Flush the receiver, so any pending observers are registered before the // event is emitted.
diff --git a/chromeos/dbus/cros_healthd/fake_cros_healthd_client.h b/chromeos/dbus/cros_healthd/fake_cros_healthd_client.h index 63ec8c91..b981acb4 100644 --- a/chromeos/dbus/cros_healthd/fake_cros_healthd_client.h +++ b/chromeos/dbus/cros_healthd/fake_cros_healthd_client.h
@@ -54,6 +54,10 @@ // ProbeTelemetryInfo IPCs received. void SetProbeTelemetryInfoResponseForTesting(mojom::TelemetryInfoPtr& info); + // Set the ProcessResultPtr that will be used in the response to any + // ProbeProcessInfo IPCs received. + void SetProbeProcessInfoResponseForTesting(mojom::ProcessResultPtr& result); + // Calls the power event OnAcInserted on all registered power observers. void EmitAcInsertedEventForTesting();
diff --git a/chromeos/dbus/cros_healthd/fake_cros_healthd_service.cc b/chromeos/dbus/cros_healthd/fake_cros_healthd_service.cc index e875ff40..72c9ff9 100644 --- a/chromeos/dbus/cros_healthd/fake_cros_healthd_service.cc +++ b/chromeos/dbus/cros_healthd/fake_cros_healthd_service.cc
@@ -148,6 +148,12 @@ std::move(callback).Run(telemetry_response_info_.Clone()); } +void FakeCrosHealthdService::ProbeProcessInfo( + const uint32_t process_id, + ProbeProcessInfoCallback callback) { + std::move(callback).Run(process_response_.Clone()); +} + void FakeCrosHealthdService::SetAvailableRoutinesForTesting( const std::vector<mojom::DiagnosticRoutineEnum>& available_routines) { available_routines_ = available_routines; @@ -168,6 +174,11 @@ telemetry_response_info_.Swap(&response_info); } +void FakeCrosHealthdService::SetProbeProcessInfoResponseForTesting( + mojom::ProcessResultPtr& result) { + process_response_.Swap(&result); +} + void FakeCrosHealthdService::EmitAcInsertedEventForTesting() { for (auto& observer : power_observers_) observer->OnAcInserted();
diff --git a/chromeos/dbus/cros_healthd/fake_cros_healthd_service.h b/chromeos/dbus/cros_healthd/fake_cros_healthd_service.h index 9e25681..12d1595 100644 --- a/chromeos/dbus/cros_healthd/fake_cros_healthd_service.h +++ b/chromeos/dbus/cros_healthd/fake_cros_healthd_service.h
@@ -93,6 +93,9 @@ const std::vector<mojom::ProbeCategoryEnum>& categories, ProbeTelemetryInfoCallback callback) override; + void ProbeProcessInfo(const uint32_t process_id, + ProbeProcessInfoCallback callback) override; + // Set the list of routines that will be used in the response to any // GetAvailableRoutines IPCs received. void SetAvailableRoutinesForTesting( @@ -111,6 +114,10 @@ void SetProbeTelemetryInfoResponseForTesting( mojom::TelemetryInfoPtr& response_info); + // Set the ProcessResultPtr that will be used in the response to any + // ProbeProcessInfo IPCs received. + void SetProbeProcessInfoResponseForTesting(mojom::ProcessResultPtr& result); + // Calls the power event OnAcInserted for all registered power observers. void EmitAcInsertedEventForTesting(); @@ -131,6 +138,9 @@ mojom::RoutineUpdatePtr routine_update_response_{mojom::RoutineUpdate::New()}; // Used as the response to any ProbeTelemetryInfo IPCs received. mojom::TelemetryInfoPtr telemetry_response_info_{mojom::TelemetryInfo::New()}; + // Used as the response to any ProbeProcessInfo IPCs received. + mojom::ProcessResultPtr process_response_{ + mojom::ProcessResult::NewProcessInfo(mojom::ProcessInfo::New())}; // Allows the remote end to call the probe, diagnostics and event service // methods.
diff --git a/chromeos/lacros/README.md b/chromeos/lacros/README.md index 7924586..40bbec3 100644 --- a/chromeos/lacros/README.md +++ b/chromeos/lacros/README.md
@@ -1,6 +1,10 @@ -This directory contains the low-level system interfaces that lacros-chrome needs -to function properly. This includes both device interaction (e.g. querying -displays) and system-provided UI components (e.g. file picker). +This directory contains the lacros-chrome client implementation of the ChromeOS +API (//chromeos/crosapi). This is primarily glue code that allows lacros-chrome +to access interfaces exposed by ash-chrome. + +Examples of contained functionality include: +* Device interaction (e.g. querying displays) +* System provided UI components (e.g. file picker) The closest equivalent on other operating systems would be a client-side library that provides OS-specific functionality, such as Win32 or Cocoa.
diff --git a/chromeos/profiles/airmont.afdo.newest.txt b/chromeos/profiles/airmont.afdo.newest.txt index 43a5441..2b07b47 100644 --- a/chromeos/profiles/airmont.afdo.newest.txt +++ b/chromeos/profiles/airmont.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-airmont-86-4181.3-1594633354-benchmark-86.0.4206.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-airmont-86-4183.25-1595237914-benchmark-86.0.4207.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/broadwell.afdo.newest.txt b/chromeos/profiles/broadwell.afdo.newest.txt index 9ffa2b6..4f52d54 100644 --- a/chromeos/profiles/broadwell.afdo.newest.txt +++ b/chromeos/profiles/broadwell.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-broadwell-86-4181.3-1594633791-benchmark-86.0.4206.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-broadwell-86-4181.3-1595240638-benchmark-86.0.4207.0-r1-redacted.afdo.xz
diff --git a/chromeos/services/cros_healthd/public/cpp/service_connection.cc b/chromeos/services/cros_healthd/public/cpp/service_connection.cc index 4558fd0..e698b7a33 100644 --- a/chromeos/services/cros_healthd/public/cpp/service_connection.cc +++ b/chromeos/services/cros_healthd/public/cpp/service_connection.cc
@@ -105,6 +105,9 @@ const std::vector<mojom::ProbeCategoryEnum>& categories_to_test, mojom::CrosHealthdProbeService::ProbeTelemetryInfoCallback callback) override; + void ProbeProcessInfo(pid_t process_id, + mojom::CrosHealthdProbeService::ProbeProcessInfoCallback + callback) override; void GetDiagnosticsService( mojom::CrosHealthdDiagnosticsServiceRequest service) override; void GetProbeService(mojom::CrosHealthdProbeServiceRequest service) override; @@ -330,6 +333,16 @@ std::move(callback)); } +void ServiceConnectionImpl::ProbeProcessInfo( + pid_t process_id, + mojom::CrosHealthdProbeService::ProbeProcessInfoCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(process_id > 0); + BindCrosHealthdProbeServiceIfNeeded(); + cros_healthd_probe_service_->ProbeProcessInfo( + static_cast<uint32_t>(process_id), std::move(callback)); +} + void ServiceConnectionImpl::GetDiagnosticsService( mojom::CrosHealthdDiagnosticsServiceRequest service) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
diff --git a/chromeos/services/cros_healthd/public/cpp/service_connection.h b/chromeos/services/cros_healthd/public/cpp/service_connection.h index 7db44157..774be6e2 100644 --- a/chromeos/services/cros_healthd/public/cpp/service_connection.h +++ b/chromeos/services/cros_healthd/public/cpp/service_connection.h
@@ -5,6 +5,8 @@ #ifndef CHROMEOS_SERVICES_CROS_HEALTHD_PUBLIC_CPP_SERVICE_CONNECTION_H_ #define CHROMEOS_SERVICES_CROS_HEALTHD_PUBLIC_CPP_SERVICE_CONNECTION_H_ +#include <sys/types.h> + #include <cstdint> #include <string> @@ -171,13 +173,20 @@ mojo::PendingRemote<mojom::CrosHealthdPowerObserver> pending_observer) = 0; - // Gather pieces of information about the platform. See + // Gathers pieces of information about the platform. See // src/chromeos/service/cros_healthd/public/mojom/cros_healthd.mojom for // details. virtual void ProbeTelemetryInfo( const std::vector<mojom::ProbeCategoryEnum>& categories_to_test, mojom::CrosHealthdProbeService::ProbeTelemetryInfoCallback callback) = 0; + // Gathers information about a particular process on the device. See + // src/chromeos/service/cros_healthd/public/mojom/cros_healthd.mojom for + // details. + virtual void ProbeProcessInfo( + pid_t process_id, + mojom::CrosHealthdProbeService::ProbeProcessInfoCallback callback) = 0; + // Binds |service| to an implementation of CrosHealthdDiagnosticsService. In // production, this implementation is provided by cros_healthd. See // src/chromeos/service/cros_healthd/public/mojom/cros_healthd.mojom for
diff --git a/chromeos/services/cros_healthd/public/cpp/service_connection_unittest.cc b/chromeos/services/cros_healthd/public/cpp/service_connection_unittest.cc index 11d96e8..e522ed82 100644 --- a/chromeos/services/cros_healthd/public/cpp/service_connection_unittest.cc +++ b/chromeos/services/cros_healthd/public/cpp/service_connection_unittest.cc
@@ -4,6 +4,8 @@ #include "chromeos/services/cros_healthd/public/cpp/service_connection.h" +#include <sys/types.h> + #include <utility> #include <vector> @@ -462,6 +464,21 @@ run_loop.Run(); } +// Test that we can request process info. +TEST_F(CrosHealthdServiceConnectionTest, ProbeProcessInfo) { + auto response = + mojom::ProcessResult::NewProcessInfo(mojom::ProcessInfo::New()); + FakeCrosHealthdClient::Get()->SetProbeProcessInfoResponseForTesting(response); + base::RunLoop run_loop; + ServiceConnection::GetInstance()->ProbeProcessInfo( + /*process_id=*/13, + base::BindLambdaForTesting([&](mojom::ProcessResultPtr result) { + EXPECT_EQ(result, response); + run_loop.Quit(); + })); + run_loop.Run(); +} + } // namespace } // namespace cros_healthd } // namespace chromeos
diff --git a/chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom b/chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom index ef897b45..41ecfc3 100644 --- a/chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom +++ b/chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom
@@ -295,6 +295,15 @@ // Probe interface exposed by the cros_healthd daemon. interface CrosHealthdProbeService { + // Returns information about a specific process running on the device. + // + // The request: + // * |process_id| - PID of the process whose information is requested. + // + // The response: + // * |process_info| - Information about the requested process. + ProbeProcessInfo(uint32 process_id) => (ProcessResult process_info); + // Returns telemetry information for the desired categories. // // The request:
diff --git a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom index 294b022..4553983 100644 --- a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom +++ b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom
@@ -62,6 +62,56 @@ uint64 value; }; +// An enumeration of states a process can be in. +[Extensible] +enum ProcessState { + // The process is running. + kRunning, + // The process is sleeping in an interruptible wait. + kSleeping, + // The process is waiting in an uninterruptible disk sleep. + kWaiting, + // The process is a zombie. + kZombie, + // The process is stopped on a signal. + kStopped, + // The process is stopped by tracing. + kTracingStop, + // The process is dead. + kDead, +}; + +// Process probe result. Can either be populated with the ProcessInfo or an +// error retrieving the information. +union ProcessResult { + // Valid ProcessInfo. + ProcessInfo process_info; + // The error that occurred attempting to retrieve the ProcessInfo. + ProbeError error; +}; + +// Information related to a particular process. +struct ProcessInfo { + // Command which started the process. + string command; + // User the process is running as. + uint32 user_id; + // If the process is running a real-time scheduling policy, this field is the + // negated scheduling priority, minus one. Real-time priorities range from 1 + // to 99, so this will range from -2 to -100. If the process is not running a + // real-time scheduling priority, this field will be the raw nice value, where + // 0 corresponds to the user-visible high priority nice value of -20, and 39 + // corresponds to the user-visible low priority nice value of 19. + int8 priority; + // User-visible nice value of the process, from a low priority of 19 to a high + // priority of -20. + int8 nice; + // Uptime of the process, in clock ticks. + uint64 uptime_ticks; + // State of the process. + ProcessState state; +}; + // Battery probe result. Can either be populated with the BatteryInfo or an // error retrieving the information. union BatteryResult {
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb index 2024ece5..0815ff8 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -18,7 +18,7 @@ <translation id="2161394479394250669">Cancelar tarefa de impressão</translation> <translation id="2338501278241028356">Ativar o Bluetooth para detetar dispositivos próximos</translation> <translation id="2375079107209812402"><ph name="ATTEMPTS_LEFT" /> tentativas restantes</translation> -<translation id="2805756323405976993">Aplicações</translation> +<translation id="2805756323405976993">Apps</translation> <translation id="2872961005593481000">Encerrar</translation> <translation id="3008341117444806826">ATUALIZAR</translation> <translation id="3091839911843451378">Falha – Parou</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_es.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_es.xtb index 77fae9b..4954a50 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_es.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_es.xtb
@@ -188,7 +188,7 @@ <translation id="7000754031042624318">Desactivado en los ajustes de Android</translation> <translation id="7016516562562142042">Permitido en el motor de búsqueda actual</translation> <translation id="7053983685419859001">Bloquear</translation> -<translation id="7066151586745993502">{NUM_SELECTED,plural, =1{1 seleccionado}other{# seleccionados}}</translation> +<translation id="7066151586745993502">{NUM_SELECTED,plural, =1{1 seleccionada}other{# seleccionadas}}</translation> <translation id="7087918508125750058">Elementos seleccionados: <ph name="ITEM_COUNT" />. Hay opciones disponibles en la parte superior de la pantalla</translation> <translation id="7128222689758636196">Permitir para el motor de búsqueda actual</translation> <translation id="7141896414559753902">Impedir que los sitios web muestren ventanas emergentes y redirecciones (recomendado)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb index 2d3285d..4aec74e0 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
@@ -21,7 +21,7 @@ <translation id="1620510694547887537">कैमरा</translation> <translation id="1647391597548383849">अपना कैमरा एक्सेस करें</translation> <translation id="1660204651932907780">साइटों को आवाज़ चलाने दें (सुझाया गया)</translation> -<translation id="1677097821151855053">कुकी और अन्य साइट डेटा का इस्तेमाल आपकी जानकारी को याद रखने के लिए किया जाता है, जैसे कि आपको साइन इन करने देना या आपकी पसंद को ध्यान में रखकर विज्ञापन दिखाना. सभी साइटों से जुड़े कुकी प्रबंधित करने के लिए, <ph name="BEGIN_LINK" />सेटिंग<ph name="END_LINK" /> देखें.</translation> +<translation id="1677097821151855053">कुकी और अन्य साइट डेटा का इस्तेमाल आपकी जानकारी को याद रखने के लिए किया जाता है, जैसे कि आपको साइन इन करने देना या आपकी पसंद को ध्यान में रखकर विज्ञापन दिखाना. सभी साइटों से जुड़ी कुकी प्रबंधित करने के लिए, <ph name="BEGIN_LINK" />सेटिंग<ph name="END_LINK" /> देखें.</translation> <translation id="1688867105868176567">'साइट डेटा' हटाएं?</translation> <translation id="169515064810179024">साइटों को हलचल पकड़ने वाले सेंसर ऐक्सेस करने से रोकें</translation> <translation id="1717218214683051432">मोशन सेंसर</translation> @@ -236,7 +236,7 @@ <translation id="8441146129660941386">पीछे जाएं</translation> <translation id="8444433999583714703"><ph name="APP_NAME" /> को अपनी जगह की जानकारी का ऐक्सेस देने के लिए, <ph name="BEGIN_LINK" />Android की सेटिंग<ph name="END_LINK" /> में भी जाकर भी, जगह की जानकारी चालू करें.</translation> <translation id="8447861592752582886">डिवाइस अनुमति निरस्त करें</translation> -<translation id="8451050538944905715">{NUM_SELECTED,plural, =1{1 कुकी इस्तेमाल किया जा रहा है}one{# कुकी इस्तेमाल किया जा रहा है}other{# कुकी इस्तेमाल किए जा रहे हैं}}</translation> +<translation id="8451050538944905715">{NUM_SELECTED,plural, =1{1 कुकी इस्तेमाल की जा रही है}one{# कुकी इस्तेमाल की जा रही है}other{# कुकी इस्तेमाल की जा रही हैं}}</translation> <translation id="8463851957836045671">साइट तेज़ी से लोड होती है</translation> <translation id="851751545965956758">साइटों को डिवाइस से कनेक्ट होने से रोकें</translation> <translation id="857943718398505171">अनुमति दी गई (सुझाया गया)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb index 307fee4..f2425cccb8 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
@@ -21,6 +21,7 @@ <translation id="1620510694547887537">カメラ</translation> <translation id="1647391597548383849">カメラへのアクセス</translation> <translation id="1660204651932907780">音声の再生をサイトに許可する(推奨)</translation> +<translation id="1677097821151855053">Cookie と他のサイトデータは、ログインや広告のカスタマイズなどでユーザーを特定するために使用されます。すべてのサイトの Cookie を管理するには、<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />をご覧ください。</translation> <translation id="1688867105868176567">サイトデータを削除しますか?</translation> <translation id="169515064810179024">サイトによるモーション センサーへのアクセスをブロックする</translation> <translation id="1717218214683051432">モーション センサー</translation> @@ -94,6 +95,7 @@ <translation id="4008040567710660924">特定のサイトの Cookie を許可します。</translation> <translation id="4046123991198612571">次のトラック</translation> <translation id="4165986682804962316">サイトの設定</translation> +<translation id="4200726100658658164">位置情報の設定を開く</translation> <translation id="4226663524361240545">通知を受け取るとデバイスが振動します</translation> <translation id="4242533952199664413">設定を開く</translation> <translation id="4259722352634471385"><ph name="URL" /> へのアクセスがブロックされました</translation> @@ -160,6 +162,7 @@ <translation id="6295158916970320988">すべてのサイト</translation> <translation id="6320088164292336938">バイブレーション</translation> <translation id="6388207532828177975">データを削除してリセット</translation> +<translation id="6423924377271166037">Cookie を消去</translation> <translation id="6439114592976064011">サイトによるバーチャル リアリティ デバイスとデータの使用をブロックする</translation> <translation id="6447842834002726250">Cookie</translation> <translation id="6527303717912515753">共有</translation> @@ -233,6 +236,7 @@ <translation id="8441146129660941386">後方にシーク再生</translation> <translation id="8444433999583714703"><ph name="APP_NAME" /> に現在地へのアクセスを許可するには、<ph name="BEGIN_LINK" />Android の設定<ph name="END_LINK" />でも位置情報をオンにしてください。</translation> <translation id="8447861592752582886">デバイスの許可を取り消します</translation> +<translation id="8451050538944905715">{NUM_SELECTED,plural, =1{1 個の Cookie が使用中です}other{# 個の Cookie が使用中です}}</translation> <translation id="8463851957836045671">サイトは高速です</translation> <translation id="851751545965956758">サイトからデバイスへの接続をブロックする</translation> <translation id="857943718398505171">許可(推奨)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb index 53fb196..ecd9d57 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
@@ -21,7 +21,7 @@ <translation id="1620510694547887537">ಕ್ಯಾಮರಾ</translation> <translation id="1647391597548383849">ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಪ್ರವೇಶಿಸಿ</translation> <translation id="1660204651932907780">ಧ್ವನಿಯನ್ನು ಪ್ಲೇ ಮಾಡಲು ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> -<translation id="1677097821151855053">ನಿಮ್ಮನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಕುಕೀಗಳು ಮತ್ತು ಇತರ ಸೈಟ್ ಡೇಟಾವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿದ ಅಥವಾ ಜಾಹೀರಾತುಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಿದ ಕುಕೀ ಸೈಟ್ ಡೇಟಾ. ಈ ಎಲ್ಲಾ ಸೈಟ್ಗಳಿಗಾಗಿ ಕುಕಿಗಳನ್ನು ನಿರ್ವಹಿಸಲು, <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು<ph name="END_LINK" /> ನೋಡಿ.</translation> +<translation id="1677097821151855053">ಕುಕೀಗಳು ಮತ್ತು ಇತರ ಸೈಟ್ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ನಿಮ್ಮನ್ನು ಸೈನ್ ಇನ್ ಮಾಡಲು ಅಥವಾ ಜಾಹೀರಾತುಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಈ ಎಲ್ಲಾ ಸೈಟ್ಗಳಿಗಾಗಿ ಕುಕಿಗಳನ್ನು ನಿರ್ವಹಿಸಲು, <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು<ph name="END_LINK" /> ನೋಡಿ.</translation> <translation id="1688867105868176567">ಸೈಟ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಬೇಕೇ?</translation> <translation id="169515064810179024">ಚಲನಾ ಸೆನ್ಸರ್ಗಳನ್ನು ಪ್ರವೇಶಿಸದಂತೆ ಸೈಟ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation> <translation id="1717218214683051432">ಮೋಷನ್ ಸೆನ್ಸಾರ್ಗಳು</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb index 005395fa..adf36b6 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb
@@ -188,7 +188,7 @@ <translation id="7000754031042624318">Imezimwa katika mipangilio ya Android</translation> <translation id="7016516562562142042">Imeruhusiwa kwa mtambo wa sasa wa kutafuta</translation> <translation id="7053983685419859001">Zuia</translation> -<translation id="7066151586745993502">{NUM_SELECTED,plural, =1{1 imechaguliwa}other{# vimechaguliwa}}</translation> +<translation id="7066151586745993502">{NUM_SELECTED,plural, =1{Umechagua 1}other{Umechagua #}}</translation> <translation id="7087918508125750058">Imechagua <ph name="ITEM_COUNT" />. Chaguo zinapatikana karibu na sehemu ya juu ya skrini</translation> <translation id="7128222689758636196">Ruhusu kwa mtambo wa sasa wa kutafuta</translation> <translation id="7141896414559753902">Zuia tovuti zisionyeshe madirisha ibukizi na kuelekeza kwingine (inapendekezwa)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb index c368951..3cbfeff 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb
@@ -21,7 +21,7 @@ <translation id="1620510694547887537">کیمرا</translation> <translation id="1647391597548383849">اپنے کیمرے تک رسائی حاصل کریں</translation> <translation id="1660204651932907780">سائٹس کو آواز چلانے کی اجازت دیں (تجویز کردہ)</translation> -<translation id="1677097821151855053">کوکیز اور دیگر سائٹ کا ڈیٹا آپ کو یاد رکھنے کے لئے استعمال ہوتا ہے، مثال کے طور پر آپ کو سائن ان کرنے یا اشتہارات کو ذاتی نوعیت کا بنانے کے لیے۔ سبھی سائٹس کی خاطر کوکیز کا نظم کرنے کے لیے، <ph name="BEGIN_LINK" />ترتیبات<ph name="END_LINK" /> دیکھیں۔</translation> +<translation id="1677097821151855053">کوکیز اور سائٹ کا دیگر ڈیٹا آپ کو یاد رکھنے کے لئے استعمال ہوتا ہے، مثال کے طور پر آپ کو سائن ان کرنے یا اشتہارات کو ذاتی نوعیت کا بنانے کے لیے۔ سبھی سائٹس کی خاطر کوکیز کا نظم کرنے کے لیے، <ph name="BEGIN_LINK" />ترتیبات<ph name="END_LINK" /> دیکھیں۔</translation> <translation id="1688867105868176567">سائٹ کا ڈیٹا صاف کریں؟</translation> <translation id="169515064810179024">سائٹس کو موشن سینسرز تک رسائی حاصل کرنے سے مسدود کریں</translation> <translation id="1717218214683051432">موشن سینسرز</translation>
diff --git a/components/browser_ui/widget/android/java/res/layout/promo_dialog_layout.xml b/components/browser_ui/widget/android/java/res/layout/promo_dialog_layout.xml index 7008991f..1597e8a3 100644 --- a/components/browser_ui/widget/android/java/res/layout/promo_dialog_layout.xml +++ b/components/browser_ui/widget/android/java/res/layout/promo_dialog_layout.xml
@@ -63,6 +63,7 @@ android:id="@+id/header" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:textDirection="locale" android:layout_marginTop="@dimen/dialog_header_margin" android:layout_marginBottom="@dimen/dialog_header_margin" android:textAppearance="@style/TextAppearance.Headline.Primary" /> @@ -71,6 +72,7 @@ android:id="@+id/subheader" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:textDirection="locale" app:leading="@dimen/text_size_medium_leading" style="@style/TextAppearance.TextMedium.Secondary" /> </org.chromium.components.browser_ui.widget.BoundedLinearLayout>
diff --git a/components/cast_certificate/cast_crl.cc b/components/cast_certificate/cast_crl.cc index e00158e3..e990dcd 100644 --- a/components/cast_certificate/cast_crl.cc +++ b/components/cast_certificate/cast_crl.cc
@@ -38,6 +38,14 @@ namespace { +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +// During fuzz testing, we won't have valid hashes for certificate revocation, +// so we use the empty string as a placeholder where a hash code is needed in +// production. This allows us to test the revocation logic without needing the +// fuzzing engine to produce a valid hash code. +constexpr char kFakeHashForFuzzing[] = "fake_hash_code"; +#endif + enum CrlVersion { // version 0: Spki Hash Algorithm = SHA-256 // Signature Algorithm = RSA-PKCS1 V1.5 with SHA-256 @@ -105,6 +113,11 @@ const base::Time& time, net::TrustStore* trust_store, net::der::GeneralizedTime* overall_not_after) { + if (!crl.has_signature() || !crl.has_signer_cert()) { + VLOG(2) << "CRL - Missing fields"; + return false; + } + // Verify the trust of the CRL authority. net::CertErrors parse_errors; scoped_refptr<net::ParsedCertificate> parsed_cert = @@ -128,7 +141,9 @@ *signature_algorithm_type, net::der::Input(&crl.tbs_crl()), signature_value_bit_string, parsed_cert->tbs().spki_tlv)) { VLOG(2) << "CRL - Signature verification failed"; +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION return false; +#endif } // Verify the issuer certificate. @@ -151,8 +166,10 @@ net::CertPathBuilder::Result result = path_builder.Run(); if (!result.HasValidPath()) { VLOG(2) << "CRL - Issuer certificate verification failed."; +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION // TODO(crbug.com/634443): Log the error information. return false; +#endif } // There are no requirements placed on the leaf certificate having any // particular KeyUsages. Leaf certificate checks are bypassed. @@ -170,7 +187,9 @@ } if ((verification_time < not_before) || (verification_time > not_after)) { VLOG(2) << "CRL - Not time-valid."; +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION return false; +#endif } // Set CRL expiry to the earliest of the cert chain expiry and CRL expiry. @@ -178,7 +197,15 @@ // "expiration" of the trust anchor is handled instead by its // presence in the trust store. *overall_not_after = not_after; - for (const auto& cert : result.GetBestValidPath()->certs) { +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + // We don't expect to have a valid path during fuzz testing, so just use a + // single cert. + const net::ParsedCertificateList path_certs = {parsed_cert}; +#else + const net::ParsedCertificateList& path_certs = + result.GetBestValidPath()->certs; +#endif + for (const auto& cert : path_certs) { net::der::GeneralizedTime cert_not_after = cert->tbs().validity_not_after; if (cert_not_after < *overall_not_after) *overall_not_after = cert_not_after; @@ -239,11 +266,19 @@ // Parse the revoked hashes. for (const auto& hash : tbs_crl.revoked_public_key_hashes()) { revoked_hashes_.insert(hash); +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + // Save fake hash code for later lookups. + revoked_hashes_.insert(kFakeHashForFuzzing); +#endif } // Parse the revoked serial ranges. for (const auto& range : tbs_crl.revoked_serial_number_ranges()) { std::string issuer_hash = range.issuer_public_key_hash(); +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + // Save range under fake hash code for later lookups. + issuer_hash = kFakeHashForFuzzing; +#endif uint64_t first_serial_number = range.first_serial_number(); uint64_t last_serial_number = range.last_serial_number(); @@ -280,6 +315,11 @@ // Calculate the public key's hash to check for revocation. std::string spki_hash = crypto::SHA256HashString(spki_tlv.AsString()); +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + // Revocation data (if any) was saved in the constructor using this fake + // hash code. + spki_hash = kFakeHashForFuzzing; +#endif if (revoked_hashes_.find(spki_hash) != revoked_hashes_.end()) { VLOG(2) << "Public key is revoked."; return false;
diff --git a/components/cast_channel/BUILD.gn b/components/cast_channel/BUILD.gn index a5a972e..0d7e1625 100644 --- a/components/cast_channel/BUILD.gn +++ b/components/cast_channel/BUILD.gn
@@ -3,6 +3,8 @@ # found in the LICENSE file. import("//testing/libfuzzer/fuzzer_test.gni") +import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni") +import("//third_party/protobuf/proto_library.gni") static_library("cast_channel") { sources = [ @@ -101,6 +103,55 @@ ] } +if (use_fuzzing_engine) { + fuzzable_proto_library("cast_channel_fuzzer_inputs") { + sources = [ "proto/fuzzer_inputs.proto" ] + import_dirs = [ + "//third_party/openscreen/src/cast/common/certificate/proto", + "//third_party/openscreen/src/cast/common/channel/proto", + ] + proto_out_dir = "components/cast_channel/fuzz_proto" + } + + protoc_convert("cast_auth_util_fuzzer_convert_corpus") { + sources = [ + "test/data/error.textproto", + "test/data/good.textproto", + ] + + inputs = [ "proto/fuzzer_inputs.proto" ] + + output_pattern = "$target_gen_dir/cast_auth_util_fuzzer_corpus/{{source_name_part}}.binarypb" + + args = [ + "--encode=cast_channel.fuzz.CastAuthUtilInputs", + "-I", + rebase_path("//third_party/openscreen/src/cast/common/channel/proto"), + "-I", + rebase_path("//third_party/openscreen/src/cast/common/certificate/proto"), + "-I", + rebase_path("proto"), + "fuzzer_inputs.proto", + ] + } +} + +fuzzer_test("cast_auth_util_fuzzer") { + sources = [ "cast_auth_util_fuzzer.cc" ] + deps = [ + ":cast_channel", + ":cast_channel_fuzzer_inputs", + "//components/cast_certificate", + "//components/cast_certificate:test_support", + "//net:test_support", + "//net/data/ssl/certificates:generate_fuzzer_cert_includes", + "//third_party/libprotobuf-mutator", + "//third_party/openscreen/src/cast/common/certificate/proto:certificate_proto", + ] + seed_corpus = "$target_gen_dir/cast_auth_util_fuzzer_corpus" + seed_corpus_deps = [ ":cast_auth_util_fuzzer_convert_corpus" ] +} + # TODO(jrw): Rename target to cast_framer_ingest_fuzzer. The name # is left unchanged for now to avoid the need to get reviews for # various files that include it. @@ -119,23 +170,11 @@ libfuzzer_options = [ "max_len=65535" ] } -fuzzer_test("cast_auth_util_fuzzer") { - sources = [ "cast_auth_util_fuzzer.cc" ] - dict = "fuzz.dict" - deps = [ - ":cast_channel", - "//components/cast_channel/proto:cast_channel_fuzzer_inputs_proto", - "//net/data/ssl/certificates:generate_fuzzer_cert_includes", - "//third_party/libprotobuf-mutator", - "//third_party/openscreen/src/cast/common/channel/proto:channel_proto", - ] -} - fuzzer_test("cast_framer_serialize_fuzzer") { sources = [ "cast_framer_serialize_fuzzer.cc" ] deps = [ ":cast_channel", - "//components/cast_channel/proto:cast_channel_fuzzer_inputs_proto", + ":cast_channel_fuzzer_inputs", "//third_party/libprotobuf-mutator", "//third_party/openscreen/src/cast/common/channel/proto:channel_proto", ] @@ -146,7 +185,7 @@ dict = "fuzz.dict" deps = [ ":cast_channel", - "//components/cast_channel/proto:cast_channel_fuzzer_inputs_proto", + ":cast_channel_fuzzer_inputs", "//third_party/libprotobuf-mutator", "//third_party/openscreen/src/cast/common/channel/proto:channel_proto", ]
diff --git a/components/cast_channel/README.md b/components/cast_channel/README.md index 3d5e230..0a5e139 100644 --- a/components/cast_channel/README.md +++ b/components/cast_channel/README.md
@@ -13,17 +13,27 @@ % ninja -C out/libfuzzer $TEST_NAME ``` -Create an empty corpus directory: +Create an empty corpus directory if you don't have one already. ```shell % mkdir ${TEST_NAME}_corpus ``` -Run the fuzz target, turning off detection of ODR violations that occur in -component builds: +Turning off detection of ODR violations that occur in component builds: ```shell % export ASAN_OPTIONS=detect_odr_violation=0 +``` + +If the test has a seed corpus: + +```shell +% ./out/libfuzzer/$TEST_NAME ${TEST_NAME}_corpus out/libfuzzer/gen/components/cast_channel/${TEST_NAME}_corpus +``` + +If the test has no seed corpus, omit the last parameter: + +```shell % ./out/libfuzzer/$TEST_NAME ${TEST_NAME}_corpus ```
diff --git a/components/cast_channel/cast_auth_util.cc b/components/cast_channel/cast_auth_util.cc index 876e8571..ceb368c 100644 --- a/components/cast_channel/cast_auth_util.cc +++ b/components/cast_channel/cast_auth_util.cc
@@ -453,9 +453,13 @@ if (!verification_context->VerifySignatureOverData( response.signature(), signature_input, digest_algorithm)) { + // For fuzz testing we just pretend the signature was OK. The signature is + // normally verified using boringssl, which has its own fuzz tests. +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION RecordSignatureEvent(SIGNATURE_VERIFY_FAILED); return AuthResult("Failed verifying signature over data.", AuthResult::ERROR_SIGNED_BLOBS_MISMATCH); +#endif } RecordSignatureEvent(SIGNATURE_OK);
diff --git a/components/cast_channel/cast_auth_util_fuzzer.cc b/components/cast_channel/cast_auth_util_fuzzer.cc index c652075e..979f718 100644 --- a/components/cast_channel/cast_auth_util_fuzzer.cc +++ b/components/cast_channel/cast_auth_util_fuzzer.cc
@@ -4,35 +4,152 @@ #include <cstdlib> #include <iostream> +#include <string> +#include <vector> +#include "base/no_destructor.h" #include "base/notreached.h" +#include "base/time/time_override.h" +#include "components/cast_certificate/cast_cert_validator_test_helpers.h" #include "components/cast_channel/cast_auth_util.h" #include "components/cast_channel/fuzz_proto/fuzzer_inputs.pb.h" #include "net/cert/x509_certificate.h" +#include "net/cert/x509_util.h" +#include "net/test/test_certificate_data.h" #include "testing/libfuzzer/proto/lpm_interface.h" namespace cast_channel { namespace fuzz { - namespace { + const char kCertData[] = { +// Generated by //net/data/ssl/certificates:generate_fuzzer_cert_includes #include "net/data/ssl/certificates/wildcard.inc" }; -} // namespace -DEFINE_PROTO_FUZZER(const CastAuthUtilInputs& input_union) { - // TODO(crbug.com/796717): Add tests for AuthenticateChallengeReply and - // VerifyTLSCertificate if necessary. Refer to updates on the bug, and check - // to see if there is already coverage through BoringSSL +base::NoDestructor<std::vector<std::string>> certs; + +static bool InitializeOnce() { + *certs = cast_certificate::testing::ReadCertificateChainFromFile( + "certificates/chromecast_gen1.pem"); + DCHECK(certs->size() >= 1); + return true; +} + +void UpdateTime(TimeBoundCase c, const base::Time* time, int direction) { + auto& mtime = const_cast<base::Time&>(*time); + switch (c) { + case TimeBoundCase::VALID: + // Create bound that include the current date. + mtime = base::Time::Now() + base::TimeDelta::FromDays(direction); + break; + case TimeBoundCase::INVALID: + // Create a bound that excludes the current date. + mtime = base::Time::Now() + base::TimeDelta::FromDays(-direction); + break; + case TimeBoundCase::OOB: + // Create a bound so far in the past/future it's not valid. + mtime = base::Time::Now() + base::TimeDelta::FromDays(direction * 10000); + break; + case TimeBoundCase::MISSING: + // Remove any existing bound. + mtime = base::Time(); + break; + default: + NOTREACHED(); + } +} + +DEFINE_PROTO_FUZZER(CastAuthUtilInputs& input_union) { + static bool init = InitializeOnce(); + CHECK(init); switch (input_union.input_case()) { case CastAuthUtilInputs::kAuthenticateChallengeReplyInput: { - const auto& input = input_union.authenticate_challenge_reply_input(); - cast::channel::DeviceAuthMessage auth_message = input.auth_message(); - AuthContext context = AuthContext::CreateForTest(input.nonce()); + auto& input = *input_union.mutable_authenticate_challenge_reply_input(); + + // If we have a DeviceAuthMessage, use it to override the cast_message() + // payload with a more interesting value. + if (input.has_auth_message()) { + // Optimization: if the payload_binary() field is going to be + // overwritten, insist that it has to be empty initially. This cuts + // down on how much time is spent generating identical arguments for + // AuthenticateChallengeReply() from different values of |input|. + if (input.cast_message().has_payload_binary()) + return; + + if (!input.auth_message().has_response()) { + // Optimization. + if (input.nonce_ok() || input.response_certs_ok() || + input.tbs_crls_size() || input.crl_certs_ok() || + input.crl_signatures_ok()) { + return; + } + } else { + auto& response = *input.mutable_auth_message()->mutable_response(); + + // Maybe force the nonce to be the correct value. + if (input.nonce_ok()) { + // Optimization. + if (response.has_sender_nonce()) + return; + + response.set_sender_nonce(input.nonce()); + } + + // Maybe force the response certs to be valid. + if (input.response_certs_ok()) { + // Optimization. + if (!response.client_auth_certificate().empty() || + response.intermediate_certificate_size() > 0) + return; + + response.set_client_auth_certificate(certs->front()); + response.clear_intermediate_certificate(); + for (std::size_t i = 1; i < certs->size(); i++) { + response.add_intermediate_certificate(certs->at(i)); + } + } + + // Maybe replace the crl() field in the response with valid data. + if (input.tbs_crls_size() == 0) { + // Optimization. + if (input.crl_certs_ok() || input.crl_signatures_ok()) + return; + } else { + // Optimization. + if (response.has_crl()) + return; + + cast::certificate::CrlBundle crl_bundle; + for (const auto& tbs_crl : input.tbs_crls()) { + cast::certificate::Crl& crl = *crl_bundle.add_crls(); + if (input.crl_certs_ok()) + crl.set_signer_cert(certs->at(0)); + if (input.crl_signatures_ok()) + crl.set_signature(""); + tbs_crl.SerializeToString(crl.mutable_tbs_crl()); + } + crl_bundle.SerializeToString(response.mutable_crl()); + } + } + + input.mutable_cast_message()->set_payload_type(CastMessage::BINARY); + input.auth_message().SerializeToString( + input.mutable_cast_message()->mutable_payload_binary()); + } + + // Build a well-formed cert with start and expiry times relative to the + // current time. The actual cert doesn't matter for testing purposes + // because validation failures are ignored. scoped_refptr<net::X509Certificate> peer_cert = net::X509Certificate::CreateFromBytes(kCertData, base::size(kCertData)); + UpdateTime(input.start_case(), &peer_cert->valid_start(), -1); + UpdateTime(input.expiry_case(), &peer_cert->valid_expiry(), +1); + + AuthContext context = AuthContext::CreateForTest(input.nonce()); + AuthenticateChallengeReply(input.cast_message(), *peer_cert, context); break; } @@ -41,5 +158,6 @@ } } +} // namespace } // namespace fuzz } // namespace cast_channel
diff --git a/components/cast_channel/fuzz.dict b/components/cast_channel/fuzz.dict index 056feeb..ecb01092 100644 --- a/components/cast_channel/fuzz.dict +++ b/components/cast_channel/fuzz.dict
@@ -63,3 +63,27 @@ "type" "userAgent" "version" + +# Names from cast_channel.proto +"UNSPECIFIED" +"RSASSA_PKCS1v15" +"RSASSA_PSS" +"INTERNAL_ERROR" +"NO_TLS" +"SIGNATURE_ALGORITHM_UNAVAILABLE" +"SHA1" +"SHA256" +"signature_algorithm" +"sender_nonce" +"hash_algorithm" +"signature" +"client_auth_certificate" +"intermediate_certificate" +"signature_algorithm" +"sender_nonce" +"hash_algorithm" +"crl" +"error_type" +"challenge" +"response" +"error"
diff --git a/components/cast_channel/proto/BUILD.gn b/components/cast_channel/proto/BUILD.gn deleted file mode 100644 index ca7ba295..0000000 --- a/components/cast_channel/proto/BUILD.gn +++ /dev/null
@@ -1,12 +0,0 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni") -import("//third_party/protobuf/proto_library.gni") - -fuzzable_proto_library("cast_channel_fuzzer_inputs_proto") { - sources = [ "fuzzer_inputs.proto" ] - import_dirs = [ "//third_party/openscreen/src/cast/common/channel/proto" ] - proto_out_dir = "components/cast_channel/fuzz_proto" -}
diff --git a/components/cast_channel/proto/fuzzer_inputs.proto b/components/cast_channel/proto/fuzzer_inputs.proto index b57cbe0..bbaa9b0 100644 --- a/components/cast_channel/proto/fuzzer_inputs.proto +++ b/components/cast_channel/proto/fuzzer_inputs.proto
@@ -21,24 +21,49 @@ syntax = "proto2"; import "cast_channel.proto"; +import "revocation.proto"; option optimize_for = LITE_RUNTIME; package cast_channel.fuzz; +enum TimeBoundCase { + VALID = 0; + INVALID = 1; + OOB = 2; + MISSING = 3; +} + // Inputs for functions in cast_auth_utils.cc message CastAuthUtilInputs { message AuthenticateChallengeReplyInput { - required cast.channel.DeviceAuthMessage auth_message = 1; - required cast.channel.CastMessage cast_message = 2; - required string nonce = 3; + // The actual input to the function, parts of which may be + // overridden based on the additional fields below. + required cast.channel.CastMessage cast_message = 1; + required string nonce = 2; + + // Values used to set the start and end times. + required TimeBoundCase start_case = 3; + required TimeBoundCase expiry_case = 4; + + // Value used to replace the payload of |cast_message| with data + // that is more likely to be valid (and thus exercise more code + // paths). + optional cast.channel.DeviceAuthMessage auth_message = 5; + + // Values used to replace the |crl| field of + // |auth_message.response|. + repeated cast.certificate.TbsCrl tbs_crls = 7; + + // Flags that force certain fields to have correct values. + required bool nonce_ok = 8; + required bool response_certs_ok = 9; + required bool crl_certs_ok = 10; + required bool crl_signatures_ok = 11; } oneof input { AuthenticateChallengeReplyInput authenticate_challenge_reply_input = 1; - // TODO(crbug.com/796717): Add inputs for other functions to test: - // - VerifyTLSCertificate - // - VerifyCredentials } }
diff --git a/components/cast_channel/test/data/error.textproto b/components/cast_channel/test/data/error.textproto new file mode 100644 index 0000000..c5b47b7 --- /dev/null +++ b/components/cast_channel/test/data/error.textproto
@@ -0,0 +1,23 @@ +authenticate_challenge_reply_input { + cast_message { + protocol_version: CASTV2_1_0 + source_id: "" + destination_id: "" + namespace: "" + payload_type: BINARY + } + nonce: "" + + start_case: VALID + expiry_case: VALID + nonce_ok: false + response_certs_ok: false + crl_certs_ok: false + crl_signatures_ok: false + + auth_message { + error { + error_type: INTERNAL_ERROR + } + } +}
diff --git a/components/cast_channel/test/data/good.textproto b/components/cast_channel/test/data/good.textproto new file mode 100644 index 0000000..0a3844b --- /dev/null +++ b/components/cast_channel/test/data/good.textproto
@@ -0,0 +1,37 @@ +authenticate_challenge_reply_input { + cast_message { + protocol_version: CASTV2_1_0 + source_id: "" + destination_id: "" + namespace: "" + payload_type: BINARY + } + nonce: "" + start_case: VALID + expiry_case: VALID + nonce_ok: true + response_certs_ok: true + crl_certs_ok: true + crl_signatures_ok: true + + auth_message { + response { + signature: "" + signature_algorithm: RSASSA_PKCS1v15 + hash_algorithm: SHA1 + client_auth_certificate: "" + } + } + + tbs_crls { + revoked_public_key_hashes: "" + revoked_serial_number_ranges { + issuer_public_key_hash: "" + first_serial_number: 0 + last_serial_number: 0 + } + version: 0 + not_before_seconds: 0 + not_after_seconds: 0 + } +}
diff --git a/components/exo/buffer_unittest.cc b/components/exo/buffer_unittest.cc index 85a5ef9..daaf2a3 100644 --- a/components/exo/buffer_unittest.cc +++ b/components/exo/buffer_unittest.cc
@@ -199,8 +199,8 @@ frame.metadata.device_scale_factor = 1; frame.metadata.local_surface_id_allocation_time = base::TimeTicks::Now(); std::unique_ptr<viz::RenderPass> pass = viz::RenderPass::Create(); - pass->SetNew(1, gfx::Rect(buffer_size), gfx::Rect(buffer_size), - gfx::Transform()); + pass->SetNew(viz::RenderPassId{1}, gfx::Rect(buffer_size), + gfx::Rect(buffer_size), gfx::Transform()); frame.render_pass_list.push_back(std::move(pass)); frame.resource_list.push_back(resource); VerifySyncTokensInCompositorFrame(&frame); @@ -251,8 +251,8 @@ frame.metadata.device_scale_factor = 1; frame.metadata.local_surface_id_allocation_time = base::TimeTicks::Now(); std::unique_ptr<viz::RenderPass> pass = viz::RenderPass::Create(); - pass->SetNew(1, gfx::Rect(buffer_size), gfx::Rect(buffer_size), - gfx::Transform()); + pass->SetNew(viz::RenderPassId{1}, gfx::Rect(buffer_size), + gfx::Rect(buffer_size), gfx::Transform()); frame.render_pass_list.push_back(std::move(pass)); frame.resource_list.push_back(resource); VerifySyncTokensInCompositorFrame(&frame); @@ -286,8 +286,8 @@ frame.metadata.device_scale_factor = 1; frame.metadata.local_surface_id_allocation_time = base::TimeTicks::Now(); std::unique_ptr<viz::RenderPass> pass = viz::RenderPass::Create(); - pass->SetNew(1, gfx::Rect(buffer_size), gfx::Rect(buffer_size), - gfx::Transform()); + pass->SetNew(viz::RenderPassId{1}, gfx::Rect(buffer_size), + gfx::Rect(buffer_size), gfx::Transform()); frame.render_pass_list.push_back(std::move(pass)); frame_sink_holder->SubmitCompositorFrame(std::move(frame)); }
diff --git a/components/exo/layer_tree_frame_sink_holder.cc b/components/exo/layer_tree_frame_sink_holder.cc index 9b7acd9..b3d8ef4 100644 --- a/components/exo/layer_tree_frame_sink_holder.cc +++ b/components/exo/layer_tree_frame_sink_holder.cc
@@ -58,7 +58,8 @@ frame.metadata.local_surface_id_allocation_time = holder->last_local_surface_id_allocation_time_; std::unique_ptr<viz::RenderPass> pass = viz::RenderPass::Create(); - pass->SetNew(1, gfx::Rect(holder->last_frame_size_in_pixels_), + pass->SetNew(viz::RenderPassId{1}, + gfx::Rect(holder->last_frame_size_in_pixels_), gfx::Rect(holder->last_frame_size_in_pixels_), gfx::Transform()); frame.render_pass_list.push_back(std::move(pass)); holder->last_frame_resources_.clear();
diff --git a/components/exo/surface_tree_host.cc b/components/exo/surface_tree_host.cc index b76d499..98228d8 100644 --- a/components/exo/surface_tree_host.cc +++ b/components/exo/surface_tree_host.cc
@@ -324,7 +324,7 @@ const std::unique_ptr<viz::RenderPass>& render_pass = frame.render_pass_list.back(); - const int kRenderPassId = 1; + const viz::RenderPassId kRenderPassId{1}; // Compute a temporally stable (across frames) size for the render pass output // rectangle that is consistent with the window size. It is used to set the // size of the output surface. Note that computing the actual coverage while
diff --git a/components/invalidation/impl/fcm_sync_network_channel.h b/components/invalidation/impl/fcm_sync_network_channel.h index f525f23..0a6c0b3 100644 --- a/components/invalidation/impl/fcm_sync_network_channel.h +++ b/components/invalidation/impl/fcm_sync_network_channel.h
@@ -69,11 +69,6 @@ callback) = 0; protected: - // Subclass should call NotifyNetworkStatusChange to notify about network - // changes. This triggers cacheinvalidation to try resending failed message - // ahead of schedule when client comes online or IP address changes. - void NotifyNetworkStatusChange(bool online); - // Subclass should notify about connection state through // NotifyChannelStateChange. If communication doesn't work and it is possible // that invalidations from server will not reach this client then channel
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc index b60f9021..a90880d 100644 --- a/components/omnibox/browser/autocomplete_match.cc +++ b/components/omnibox/browser/autocomplete_match.cc
@@ -75,6 +75,24 @@ return false; } +// Finds the first occurrence of |search| at a wordbreak within |text|. +size_t FindAtWordbreak(const base::string16& text, + const base::string16& search) { + WordStarts word_starts; + String16VectorFromString16(text, false, &word_starts); + size_t next_occurrence = std::string::npos; + for (auto word_start : word_starts) { + if (next_occurrence != std::string::npos && word_start < next_occurrence) + continue; + next_occurrence = text.find(search, word_start); + if (next_occurrence == std::string::npos) + break; + if (word_start == next_occurrence) + return next_occurrence; + } + return std::string::npos; +} + } // namespace // static @@ -1210,7 +1228,8 @@ return false; // Try matching a non-prefix the |primary_text|. - size_t primary_find_index = primary_text_lower.find(input_text_lower); + size_t primary_find_index = + FindAtWordbreak(primary_text_lower, input_text_lower); if (primary_find_index != base::string16::npos) { // |fill_into_edit| should already be set to |primary_text|. inline_autocompletion = @@ -1222,7 +1241,8 @@ } // Try matching a non-prefix the |secondary_text|. - size_t secondary_find_index = secondary_text_lower.find(input_text_lower); + size_t secondary_find_index = + FindAtWordbreak(secondary_text_lower, input_text_lower); if (can_autocomplete_titles && secondary_find_index != base::string16::npos) { fill_into_edit = secondary_text; fill_into_edit_additional_text = primary_text;
diff --git a/components/omnibox/browser/autocomplete_match_unittest.cc b/components/omnibox/browser/autocomplete_match_unittest.cc index 3277eb4..7cafde3 100644 --- a/components/omnibox/browser/autocomplete_match_unittest.cc +++ b/components/omnibox/browser/autocomplete_match_unittest.cc
@@ -546,28 +546,32 @@ }); // Prefer autocompleting primary text prefix. - test(0, "x", false, "x_mid_x_primary", "x_mid_x_secondary", true, - "_mid_x_primary", "", "x_mid_x_secondary", true); + test(0, "x", false, "x_mixd_x_primary", "x_mixd_x_secondary", true, + "_mixd_x_primary", "", "x_mixd_x_secondary", true); // Otherwise, prefer secondary text prefix. - test(1, "x", false, "y_mid_x_primary", "x_mid_x_secondary", true, - "_mid_x_secondary", "", "y_mid_x_primary", true); + test(1, "x", false, "y_mixd_x_primary", "x_mixd_x_secondary", true, + "_mixd_x_secondary", "", "y_mixd_x_primary", true); - // Otherwise, prefer primary text non-prefix - test(2, "x", false, "y_mid_x_primary", "y_mid_x_secondary", true, - "_primary", "y_mid_", "y_mid_x_secondary", true); + // Otherwise, prefer primary text non-prefix (wordbreak) + test(2, "x", false, "y_mixd_x_primary", "y_mixd_x_secondary", true, + "_primary", "y_mixd_", "y_mixd_x_secondary", true); - // Otherwise, prefer secondary text non-prefix - test(3, "x", false, "y_mid_y_primary", "y_mid_x_secondary", true, - "_secondary", "y_mid_", "y_mid_y_primary", true); + // Otherwise, prefer secondary text non-prefix (wordbreak) + test(3, "x", false, "y_mid_y_primary", "y_mixd_x_secondary", true, + "_secondary", "y_mixd_", "y_mid_y_primary", true); + + // We don't explicitly test that non-wordbreak matches aren't autocompleted, + // because we rely on providers to not provide suggestions that only match + // the input at non-wordbreaks. // Otherwise, don't autocomplete but still set |fill_into_edit_second_line| test(4, "x", false, "y_mid_y_primary", "y_mid_y_secondary", false, "", "", "y_mid_y_secondary", false); // Don't autocomplete if |prevent_inline_autocomplete| is true. - test(5, "x", true, "x_mid_x_primary", "x_mid_x_secondary", false, "", "", - "x_mid_x_secondary", false); + test(5, "x", true, "x_mixd_x_primary", "x_mixd_x_secondary", false, "", "", + "x_mixd_x_secondary", false); } { @@ -584,11 +588,11 @@ }); // Don't autocomplete title and non-prefix if input is less than limits. - test(6, "x", false, "y_mid_x_primary", "x_mid_x_secondary", false, "", "", - "x_mid_x_secondary", false); + test(6, "x", false, "y_mixd_x_primary", "x_mixd_x_secondary", false, "", "", + "x_mixd_x_secondary", false); } // Don't autocomplete if IsRichAutocompletionEnabled is disabled - test(7, "x", false, "x_mid_x_primary", "x_mid_x_secondary", false, "", "", "", - false); + test(7, "x", false, "x_mixd_x_primary", "x_mixd_x_secondary", false, "", "", + "", false); }
diff --git a/components/omnibox/browser/omnibox_popup_model.cc b/components/omnibox/browser/omnibox_popup_model.cc index 30045df..a038a4f 100644 --- a/components/omnibox/browser/omnibox_popup_model.cc +++ b/components/omnibox/browser/omnibox_popup_model.cc
@@ -498,12 +498,6 @@ return true; case KEYWORD: return match.associated_keyword != nullptr; - - // TODO(orinj): Here is an opportunity to clean up the presentational - // logic that pkasting wanted to take out of AutocompleteMatch. The view - // should be driven by the model, so this is really the place to decide. - // In other words, this duplicates logic within OmniboxResultView. - // This is the proper place. OmniboxResultView should refer to here. case FOCUSED_BUTTON_REMOVE_SUGGESTION: // Remove suggestion buttons are suppressed for matches with an associated // keyword or tab match, unless dedicated button row is enabled.
diff --git a/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameBitmapState.java b/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameBitmapState.java index 1a20cb33..51510c2 100644 --- a/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameBitmapState.java +++ b/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameBitmapState.java
@@ -73,6 +73,20 @@ } /** + * Locks the state out of further updates. + */ + void lock() { + mRequiredBitmaps = null; + } + + /** + * Returns whether this state can be updated. + */ + boolean isLocked() { + return mRequiredBitmaps == null && mBitmapMatrix != null; + } + + /** * Clears state so in-flight requests abort upon return. */ void clear() { @@ -128,8 +142,7 @@ for (int col = colStart; col < colEnd; col++) { for (int row = rowStart; row < rowEnd; row++) { - requestBitmapForTile(row, col); - if (mInitialMissingVisibleBitmaps != null) { + if (requestBitmapForTile(row, col) && mInitialMissingVisibleBitmaps != null) { mInitialMissingVisibleBitmaps.add(row * mBitmapMatrix.length + col); } } @@ -162,13 +175,13 @@ } } - private void requestBitmapForTile(int row, int col) { - if (mRequiredBitmaps == null) return; + private boolean requestBitmapForTile(int row, int col) { + if (mRequiredBitmaps == null) return false; mRequiredBitmaps[row][col] = true; if (mBitmapMatrix == null || mPendingBitmapRequests == null || mBitmapMatrix[row][col] != null || mPendingBitmapRequests[row][col]) { - return; + return false; } final int y = row * mTileSize.getHeight(); @@ -180,6 +193,7 @@ mCompositorDelegate.requestBitmap(mGuid, new Rect(x, y, x + mTileSize.getWidth(), y + mTileSize.getHeight()), mScaleFactor, bitmapRequestHandler, bitmapRequestHandler::onError); + return true; } /** @@ -187,7 +201,7 @@ * {@link #mRequiredBitmaps}. */ private void deleteUnrequiredBitmaps() { - if (mBitmapMatrix == null) return; + if (mBitmapMatrix == null || mRequiredBitmaps == null) return; for (int row = 0; row < mBitmapMatrix.length; row++) { for (int col = 0; col < mBitmapMatrix[row].length; col++) { @@ -244,8 +258,10 @@ onError(); return; } - if (mBitmapMatrix == null || !mPendingBitmapRequests[mRequestRow][mRequestCol] + if (mBitmapMatrix == null || mPendingBitmapRequests == null || mRequiredBitmaps == null + || !mPendingBitmapRequests[mRequestRow][mRequestCol] || !mRequiredBitmaps[mRequestRow][mRequestCol]) { + markBitmapReceived(mRequestRow, mRequestCol); result.recycle(); deleteUnrequiredBitmaps(); return; @@ -261,6 +277,8 @@ * Called when there was an error compositing the bitmap. */ public void onError() { + markBitmapReceived(mRequestRow, mRequestCol); + if (mPendingBitmapRequests == null) return; // TODO(crbug.com/1021590): Handle errors. @@ -269,7 +287,6 @@ assert mPendingBitmapRequests[mRequestRow][mRequestCol]; mPendingBitmapRequests[mRequestRow][mRequestCol] = false; - markBitmapReceived(mRequestRow, mRequestCol); } } }
diff --git a/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameBitmapStateController.java b/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameBitmapStateController.java index 77448be..3526d42 100644 --- a/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameBitmapStateController.java +++ b/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameBitmapStateController.java
@@ -101,6 +101,11 @@ return state == mVisibleBitmapState; } + void onStartScaling() { + invalidateLoadingBitmaps(); + mVisibleBitmapState.lock(); + } + /** * Invalidates loading bitmaps. */
diff --git a/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameMediator.java b/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameMediator.java index fe18175..6ee120e 100644 --- a/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameMediator.java +++ b/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/frame/PlayerFrameMediator.java
@@ -186,7 +186,7 @@ @Override public void onStartScaling() { - mBitmapStateController.invalidateLoadingBitmaps(); + mBitmapStateController.onStartScaling(); } @Override @@ -224,6 +224,12 @@ final float scaleFactor = mViewport.getScale(); PlayerFrameBitmapState activeLoadingState = mBitmapStateController.getBitmapState(scaleUpdated); + + // Scaling locks the visible state from further updates. If the state is locked we + // should not progress updating anything other than |mBitmapScaleMatrix| until + // a new state is present. + if (activeLoadingState.isLocked()) return; + Rect viewportRect = mViewport.asRect(); updateSubframes(viewportRect, scaleFactor); // Let the view know |mViewport| changed. PropertyModelChangeProcessor is smart about
diff --git a/components/paint_preview/renderer/paint_preview_recorder_browsertest.cc b/components/paint_preview/renderer/paint_preview_recorder_browsertest.cc index fdfe4c8..218172b 100644 --- a/components/paint_preview/renderer/paint_preview_recorder_browsertest.cc +++ b/components/paint_preview/renderer/paint_preview_recorder_browsertest.cc
@@ -212,7 +212,7 @@ // match what is specified. LoadHTML( "<body style='min-height:1000px;'>" - " <a style='position: absolute; left: -15px; top: 0px; width: 20px; " + " <a style='position: absolute; left: -15px; top: 0px; width: 40px; " " height: 30px;' href='#fragment'>Foo</a>" " <h1 id='fragment'>I'm a fragment</h1>" "</body>"); @@ -246,7 +246,7 @@ EXPECT_EQ(out_response->links[0]->url, GURL("fragment")); EXPECT_EQ(out_response->links[0]->rect.x(), -15); EXPECT_EQ(out_response->links[0]->rect.y(), 0); - EXPECT_EQ(out_response->links[0]->rect.width(), 20); + EXPECT_EQ(out_response->links[0]->rect.width(), 40); EXPECT_EQ(out_response->links[0]->rect.height(), 30); }
diff --git a/components/password_manager/core/browser/credential_manager_impl_unittest.cc b/components/password_manager/core/browser/credential_manager_impl_unittest.cc index a8ca3ef2..a1598ed4 100644 --- a/components/password_manager/core/browser/credential_manager_impl_unittest.cc +++ b/components/password_manager/core/browser/credential_manager_impl_unittest.cc
@@ -18,6 +18,7 @@ #include "base/macros.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "build/build_config.h" #include "components/password_manager/core/browser/android_affiliation/mock_affiliated_match_helper.h" @@ -202,16 +203,26 @@ } // namespace -class CredentialManagerImplTest : public testing::Test { +// Test param controls whether to enable the account storage feature. +class CredentialManagerImplTest : public testing::Test, + public testing::WithParamInterface<bool> { public: - CredentialManagerImplTest() = default; + CredentialManagerImplTest() { + if (GetParam()) { + feature_list_.InitAndEnableFeature( + password_manager::features::kEnablePasswordsAccountStorage); + } else { + feature_list_.InitAndDisableFeature( + password_manager::features::kEnablePasswordsAccountStorage); + } + } void SetUp() override { store_ = new TestPasswordStore; store_->Init(/*prefs=*/nullptr); if (base::FeatureList::IsEnabled( features::kEnablePasswordsAccountStorage)) { - account_store_ = new TestPasswordStore; + account_store_ = new TestPasswordStore(/*is_account_store=*/true); ASSERT_TRUE(account_store_->Init(/*prefs=*/nullptr)); } client_ = std::make_unique<testing::NiceMock<MockPasswordManagerClient>>( @@ -368,6 +379,7 @@ void RunAllPendingTasks() { task_environment_.RunUntilIdle(); } protected: + base::test::ScopedFeatureList feature_list_; base::test::TaskEnvironment task_environment_; autofill::PasswordForm form_; autofill::PasswordForm affiliated_form1_; @@ -381,7 +393,7 @@ std::unique_ptr<CredentialManagerImpl> cm_service_impl_; }; -TEST_F(CredentialManagerImplTest, IsZeroClickAllowed) { +TEST_P(CredentialManagerImplTest, IsZeroClickAllowed) { // IsZeroClickAllowed is uneffected by the first-run status. client_->set_zero_click_enabled(true); client_->set_first_run_seen(true); @@ -400,7 +412,7 @@ EXPECT_FALSE(cm_service_impl()->IsZeroClickAllowed()); } -TEST_F(CredentialManagerImplTest, CredentialManagerOnStore) { +TEST_P(CredentialManagerImplTest, CredentialManagerOnStore) { CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_PASSWORD); EXPECT_CALL(*client_, PromptUserToSavePasswordPtr(_)) .Times(testing::Exactly(1)); @@ -428,7 +440,7 @@ EXPECT_EQ(autofill::PasswordForm::Scheme::kHtml, new_form.scheme); } -TEST_F(CredentialManagerImplTest, CredentialManagerOnStoreFederated) { +TEST_P(CredentialManagerImplTest, CredentialManagerOnStoreFederated) { EXPECT_CALL(*client_, PromptUserToSavePasswordPtr(_)) .Times(testing::Exactly(1)); EXPECT_CALL(*client_, NotifyStorePasswordCalled()); @@ -459,7 +471,7 @@ EXPECT_EQ(autofill::PasswordForm::Scheme::kHtml, new_form.scheme); } -TEST_F(CredentialManagerImplTest, StoreFederatedAfterPassword) { +TEST_P(CredentialManagerImplTest, StoreFederatedAfterPassword) { // Populate the PasswordStore with a form. store_->AddLogin(form_); @@ -495,7 +507,7 @@ ElementsAre(MatchesFormExceptStore(federated))); } -TEST_F(CredentialManagerImplTest, CredentialManagerStoreOverwrite) { +TEST_P(CredentialManagerImplTest, CredentialManagerStoreOverwrite) { // Add an unrelated form to complicate the task. store_->AddLogin(origin_path_form_); // Populate the PasswordStore with a form. @@ -534,7 +546,7 @@ passwords[form_.signon_realm][1].icon_url); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerStorePSLMatchDoesNotTriggerBubble) { autofill::PasswordForm psl_form = subdomain_form_; psl_form.username_value = form_.username_value; @@ -560,7 +572,7 @@ EXPECT_EQ(1U, passwords[psl_form.signon_realm].size()); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerStorePSLMatchWithDifferentUsernameTriggersBubble) { base::string16 delta = base::ASCIIToUTF16("_totally_different"); autofill::PasswordForm psl_form = subdomain_form_; @@ -592,7 +604,7 @@ EXPECT_EQ(info.password, pending_cred.password_value); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerStorePSLMatchWithDifferentPasswordTriggersBubble) { base::string16 delta = base::ASCIIToUTF16("_totally_different"); autofill::PasswordForm psl_form = subdomain_form_; @@ -624,7 +636,7 @@ EXPECT_EQ(info.password, pending_cred.password_value); } -TEST_F(CredentialManagerImplTest, CredentialManagerStoreOverwriteZeroClick) { +TEST_P(CredentialManagerImplTest, CredentialManagerStoreOverwriteZeroClick) { form_.skip_zero_click = true; store_->AddLogin(form_); RunAllPendingTasks(); @@ -645,7 +657,7 @@ EXPECT_FALSE(passwords[form_.signon_realm][0].skip_zero_click); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerFederatedStoreOverwriteZeroClick) { form_.federation_origin = url::Origin::Create(GURL("https://example.com/")); form_.password_value = base::string16(); @@ -670,7 +682,7 @@ EXPECT_FALSE(passwords[form_.signon_realm][0].skip_zero_click); } -TEST_F(CredentialManagerImplTest, CredentialManagerGetOverwriteZeroClick) { +TEST_P(CredentialManagerImplTest, CredentialManagerGetOverwriteZeroClick) { // Set the global zero click flag on, and populate the PasswordStore with a // form that's set to skip zero click and has a primary key that won't match // credentials initially created via `store()`. @@ -703,7 +715,7 @@ EXPECT_FALSE(passwords[form_.signon_realm][0].skip_zero_click); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerSignInWithSavingDisabledForCurrentPage) { CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_PASSWORD); EXPECT_CALL(*client_, IsSavingAndFillingEnabled(form_.url)) @@ -721,7 +733,7 @@ EXPECT_FALSE(client_->pending_manager()); } -TEST_F(CredentialManagerImplTest, CredentialManagerOnPreventSilentAccess) { +TEST_P(CredentialManagerImplTest, CredentialManagerOnPreventSilentAccess) { store_->AddLogin(form_); store_->AddLogin(subdomain_form_); store_->AddLogin(cross_origin_form_); @@ -753,7 +765,7 @@ EXPECT_FALSE(passwords[cross_origin_form_.signon_realm][0].skip_zero_click); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnPreventSilentAccessIncognito) { EXPECT_CALL(*client_, IsSavingAndFillingEnabled(_)) .WillRepeatedly(testing::Return(false)); @@ -777,7 +789,7 @@ EXPECT_FALSE(passwords[form_.signon_realm][0].skip_zero_click); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnPreventMediatedAccessIncognito) { EXPECT_CALL(*client_, IsIncognito()).WillRepeatedly(testing::Return(true)); EXPECT_CALL(*client_, PromptUserToChooseCredentialsPtr).Times(0); @@ -803,7 +815,7 @@ EXPECT_EQ(CredentialManagerError::SUCCESS, error); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnPreventSilentAccessWithAffiliation) { store_->AddLogin(form_); store_->AddLogin(cross_origin_form_); @@ -840,7 +852,7 @@ EXPECT_FALSE(passwords[affiliated_form2_.signon_realm][0].skip_zero_click); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithEmptyPasswordStore) { std::vector<GURL> federations; EXPECT_CALL(*client_, PromptUserToSavePasswordPtr(_)) @@ -853,7 +865,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithEmptyUsernames) { form_.username_value.clear(); store_->AddLogin(form_); @@ -866,7 +878,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithPSLCredential) { store_->AddLogin(subdomain_form_); subdomain_form_.is_public_suffix_match = true; @@ -881,7 +893,7 @@ CredentialType::CREDENTIAL_TYPE_PASSWORD); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithPSLAndNormalCredentials) { store_->AddLogin(form_); store_->AddLogin(origin_path_form_); @@ -899,7 +911,7 @@ CredentialType::CREDENTIAL_TYPE_PASSWORD); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithEmptyAndNonemptyUsernames) { store_->AddLogin(form_); autofill::PasswordForm empty = form_; @@ -915,7 +927,7 @@ CredentialType::CREDENTIAL_TYPE_PASSWORD); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithDuplicates) { // Add 6 credentials. Two buckets of duplicates, one empty username and one // federated one. There should be just 3 in the account chooser. @@ -959,7 +971,7 @@ RunAllPendingTasks(); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithCrossOriginPasswordStore) { store_->AddLogin(cross_origin_form_); @@ -974,7 +986,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithFullPasswordStore) { client_->set_zero_click_enabled(false); store_->AddLogin(form_); @@ -996,7 +1008,7 @@ EXPECT_EQ(CredentialManagerError::SUCCESS, error); } -TEST_F( +TEST_P( CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithZeroClickOnlyEmptyPasswordStore) { std::vector<GURL> federations; @@ -1008,7 +1020,7 @@ federations); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithZeroClickOnlyFullPasswordStore) { store_->AddLogin(form_); client_->set_first_run_seen(true); @@ -1022,7 +1034,7 @@ CredentialType::CREDENTIAL_TYPE_PASSWORD); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithoutPasswords) { store_->AddLogin(form_); client_->set_first_run_seen(true); @@ -1034,7 +1046,7 @@ federations); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialFederatedMatch) { form_.federation_origin = url::Origin::Create(GURL("https://example.com/")); form_.password_value = base::string16(); @@ -1051,7 +1063,7 @@ CredentialType::CREDENTIAL_TYPE_FEDERATED); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialFederatedNoMatch) { form_.federation_origin = url::Origin::Create(GURL("https://example.com/")); form_.password_value = base::string16(); @@ -1067,7 +1079,7 @@ federations); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialAffiliatedPasswordMatch) { store_->AddLogin(affiliated_form1_); client_->set_first_run_seen(true); @@ -1088,7 +1100,7 @@ CredentialType::CREDENTIAL_TYPE_PASSWORD); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialAffiliatedPasswordNoMatch) { store_->AddLogin(affiliated_form1_); client_->set_first_run_seen(true); @@ -1108,7 +1120,7 @@ federations); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialAffiliatedFederatedMatch) { affiliated_form1_.federation_origin = url::Origin::Create(GURL("https://example.com/")); @@ -1132,7 +1144,7 @@ CredentialType::CREDENTIAL_TYPE_FEDERATED); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialAffiliatedFederatedNoMatch) { affiliated_form1_.federation_origin = url::Origin::Create(GURL("https://example.com/")); @@ -1155,7 +1167,7 @@ federations); } -TEST_F(CredentialManagerImplTest, RequestCredentialWithoutFirstRun) { +TEST_P(CredentialManagerImplTest, RequestCredentialWithoutFirstRun) { client_->set_first_run_seen(false); store_->AddLogin(form_); @@ -1169,7 +1181,7 @@ federations); } -TEST_F(CredentialManagerImplTest, RequestCredentialWithFirstRunAndSkip) { +TEST_P(CredentialManagerImplTest, RequestCredentialWithFirstRunAndSkip) { client_->set_first_run_seen(true); form_.skip_zero_click = true; @@ -1184,7 +1196,7 @@ federations); } -TEST_F(CredentialManagerImplTest, RequestCredentialWithTLSErrors) { +TEST_P(CredentialManagerImplTest, RequestCredentialWithTLSErrors) { // If we encounter TLS errors, we won't return credentials. EXPECT_CALL(*client_, IsFillingEnabled(_)) .WillRepeatedly(testing::Return(false)); @@ -1197,7 +1209,7 @@ federations); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWithZeroClickOnlyTwoPasswordStore) { store_->AddLogin(form_); store_->AddLogin(origin_path_form_); @@ -1212,7 +1224,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, OnRequestCredentialWithZeroClickOnlyAndSkipZeroClickPasswordStore) { form_.skip_zero_click = true; store_->AddLogin(form_); @@ -1229,7 +1241,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, OnRequestCredentialWithZeroClickOnlyCrossOriginPasswordStore) { store_->AddLogin(cross_origin_form_); @@ -1247,7 +1259,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, CredentialManagerOnRequestCredentialWhileRequestPending) { client_->set_zero_click_enabled(false); store_->AddLogin(form_); @@ -1290,7 +1302,7 @@ EXPECT_NE(CredentialType::CREDENTIAL_TYPE_EMPTY, credential_1->type); } -TEST_F(CredentialManagerImplTest, ResetSkipZeroClickAfterPrompt) { +TEST_P(CredentialManagerImplTest, ResetSkipZeroClickAfterPrompt) { // Turn on the global zero-click flag, and add two credentials in separate // origins, both set to skip zero-click. client_->set_zero_click_enabled(true); @@ -1339,7 +1351,7 @@ EXPECT_TRUE(passwords[cross_origin_form_.signon_realm][0].skip_zero_click); } -TEST_F(CredentialManagerImplTest, IncognitoZeroClickRequestCredential) { +TEST_P(CredentialManagerImplTest, IncognitoZeroClickRequestCredential) { EXPECT_CALL(*client_, IsIncognito()).WillRepeatedly(testing::Return(true)); store_->AddLogin(form_); @@ -1352,7 +1364,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, AutofillAssistantZeroClickRequestCredential) { +TEST_P(CredentialManagerImplTest, AutofillAssistantZeroClickRequestCredential) { store_->AddLogin(form_); std::vector<GURL> federations; @@ -1367,7 +1379,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, ZeroClickWithAffiliatedFormInPasswordStore) { +TEST_P(CredentialManagerImplTest, ZeroClickWithAffiliatedFormInPasswordStore) { // Insert the affiliated form into the store, and mock out the association // with the current origin. As it's the only form matching the origin, it // ought to be returned automagically. @@ -1388,7 +1400,7 @@ CredentialType::CREDENTIAL_TYPE_PASSWORD); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, ZeroClickWithTwoAffiliatedFormsInPasswordStore) { // Insert two affiliated forms into the store, and mock out the association // with the current origin. Multiple forms === no zero-click sign in. @@ -1410,7 +1422,7 @@ federations); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, ZeroClickWithUnaffiliatedFormsInPasswordStore) { // Insert the affiliated form into the store, but don't mock out the // association with the current origin. No association === no zero-click sign @@ -1438,7 +1450,7 @@ federations); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, ZeroClickWithFormAndUnaffiliatedFormsInPasswordStore) { // Insert the affiliated form into the store, along with a real form for the // origin, and don't mock out the association with the current origin. No @@ -1460,7 +1472,7 @@ CredentialType::CREDENTIAL_TYPE_PASSWORD); } -TEST_F(CredentialManagerImplTest, ZeroClickWithPSLCredential) { +TEST_P(CredentialManagerImplTest, ZeroClickWithPSLCredential) { subdomain_form_.skip_zero_click = false; store_->AddLogin(subdomain_form_); @@ -1468,7 +1480,7 @@ std::vector<GURL>()); } -TEST_F(CredentialManagerImplTest, ZeroClickWithPSLAndNormalCredentials) { +TEST_P(CredentialManagerImplTest, ZeroClickWithPSLAndNormalCredentials) { form_.password_value.clear(); form_.federation_origin = url::Origin::Create(GURL("https://google.com/")); form_.signon_realm = "federation://" + form_.url.host() + "/google.com"; @@ -1482,7 +1494,7 @@ CredentialType::CREDENTIAL_TYPE_FEDERATED); } -TEST_F(CredentialManagerImplTest, ZeroClickAfterMigratingHttpCredential) { +TEST_P(CredentialManagerImplTest, ZeroClickAfterMigratingHttpCredential) { // There is an http credential saved. It should be migrated and used for auto // sign-in. form_.url = HttpURLFromHttps(form_.url); @@ -1497,7 +1509,7 @@ CredentialType::CREDENTIAL_TYPE_PASSWORD); } -TEST_F(CredentialManagerImplTest, ZeroClickOnLocalhost) { +TEST_P(CredentialManagerImplTest, ZeroClickOnLocalhost) { // HTTP scheme is valid for localhost. Nothing should crash. client_->set_last_committed_url(GURL("http://127.0.0.1:8000/")); @@ -1506,7 +1518,7 @@ federations); } -TEST_F(CredentialManagerImplTest, MediationRequiredPreventsAutoSignIn) { +TEST_P(CredentialManagerImplTest, MediationRequiredPreventsAutoSignIn) { form_.skip_zero_click = false; store_->AddLogin(form_); @@ -1528,7 +1540,7 @@ EXPECT_EQ(CredentialType::CREDENTIAL_TYPE_PASSWORD, credential->type); } -TEST_F(CredentialManagerImplTest, GetSynthesizedFormForOrigin) { +TEST_P(CredentialManagerImplTest, GetSynthesizedFormForOrigin) { PasswordStore::FormDigest synthesized = cm_service_impl_->GetSynthesizedFormForOrigin(); EXPECT_EQ(kTestWebOrigin, synthesized.url.spec()); @@ -1536,7 +1548,7 @@ EXPECT_EQ(autofill::PasswordForm::Scheme::kHtml, synthesized.scheme); } -TEST_F(CredentialManagerImplTest, GetBlockedPasswordCredential) { +TEST_P(CredentialManagerImplTest, GetBlockedPasswordCredential) { autofill::PasswordForm blocked_form; blocked_form.blocked_by_user = true; blocked_form.url = form_.url; @@ -1554,7 +1566,7 @@ federations, CredentialType::CREDENTIAL_TYPE_EMPTY); } -TEST_F(CredentialManagerImplTest, BlockedPasswordCredential) { +TEST_P(CredentialManagerImplTest, BlockedPasswordCredential) { EXPECT_CALL(*client_, PromptUserToSavePasswordPtr(_)); CredentialInfo info(form_, CredentialType::CREDENTIAL_TYPE_PASSWORD); @@ -1579,7 +1591,7 @@ ElementsAre(MatchesFormExceptStore(blocked_form))); } -TEST_F(CredentialManagerImplTest, BlockedFederatedCredential) { +TEST_P(CredentialManagerImplTest, BlockedFederatedCredential) { form_.federation_origin = url::Origin::Create(GURL("https://example.com/")); form_.password_value = base::string16(); form_.signon_realm = "federation://example.com/example.com"; @@ -1609,7 +1621,7 @@ ElementsAre(MatchesFormExceptStore(blocked_form))); } -TEST_F(CredentialManagerImplTest, RespecBlockedPasswordCredential) { +TEST_P(CredentialManagerImplTest, RespecBlockedPasswordCredential) { autofill::PasswordForm blocked_form; blocked_form.blocked_by_user = true; blocked_form.url = form_.url; @@ -1627,7 +1639,7 @@ EXPECT_TRUE(client_->pending_manager()->IsBlacklisted()); } -TEST_F(CredentialManagerImplTest, RespectBlockedFederatedCredential) { +TEST_P(CredentialManagerImplTest, RespectBlockedFederatedCredential) { autofill::PasswordForm blocked_form; blocked_form.blocked_by_user = true; blocked_form.url = form_.url; @@ -1648,7 +1660,7 @@ EXPECT_TRUE(client_->pending_manager()->IsBlacklisted()); } -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, ManagePasswordsUICredentialsUpdatedUnconditionallyInSilentMediation) { autofill::PasswordForm federated = origin_path_form_; federated.federation_origin = @@ -1680,7 +1692,7 @@ // Check that following a call to store() a federated credential is not checked // for leaks. -TEST_F(CredentialManagerImplTest, +TEST_P(CredentialManagerImplTest, StoreFederatedCredentialDoesNotStartLeakDetection) { auto mock_factory = std::make_unique<testing::StrictMock<MockLeakDetectionCheckFactory>>(); @@ -1698,7 +1710,7 @@ // Check that following a call to store() a password credential is checked for // leaks. -TEST_F(CredentialManagerImplTest, StorePasswordCredentialStartsLeakDetection) { +TEST_P(CredentialManagerImplTest, StorePasswordCredentialStartsLeakDetection) { auto mock_factory = std::make_unique<testing::StrictMock<MockLeakDetectionCheckFactory>>(); auto* weak_factory = mock_factory.get(); @@ -1715,4 +1727,6 @@ RunAllPendingTasks(); } +INSTANTIATE_TEST_SUITE_P(All, CredentialManagerImplTest, testing::Bool()); + } // namespace password_manager
diff --git a/components/password_manager/core/browser/credential_manager_pending_request_task.cc b/components/password_manager/core/browser/credential_manager_pending_request_task.cc index bc7edea..5b6b2ac 100644 --- a/components/password_manager/core/browser/credential_manager_pending_request_task.cc +++ b/components/password_manager/core/browser/credential_manager_pending_request_task.cc
@@ -114,8 +114,21 @@ void CredentialManagerPendingRequestTask::OnGetPasswordStoreResults( std::vector<std::unique_ptr<autofill::PasswordForm>> results) { + // This class overrides OnGetPasswordStoreResultsFrom() (the version of this + // method that also receives the originating store), so the store-less version + // never gets called. + NOTREACHED(); +} + +void CredentialManagerPendingRequestTask::OnGetPasswordStoreResultsFrom( + scoped_refptr<PasswordStore> store, + std::vector<std::unique_ptr<autofill::PasswordForm>> results) { // localhost is a secure origin but not https. - if (results.empty() && origin_.scheme() == url::kHttpsScheme) { + if (store.get() == delegate_->client()->GetProfilePasswordStore() && + results.empty() && origin_.scheme() == url::kHttpsScheme) { + // TODO(crbug.com/1093286): Consider also supporting HTTP->HTTPS migration + // for the account store. + // Try to migrate the HTTP passwords and process them later. http_migrator_ = std::make_unique<HttpPasswordStoreMigrator>( origin_, delegate_->client(), this);
diff --git a/components/password_manager/core/browser/credential_manager_pending_request_task.h b/components/password_manager/core/browser/credential_manager_pending_request_task.h index 768e8e6..8ccb9b3 100644 --- a/components/password_manager/core/browser/credential_manager_pending_request_task.h +++ b/components/password_manager/core/browser/credential_manager_pending_request_task.h
@@ -75,6 +75,9 @@ // PasswordStoreConsumer: void OnGetPasswordStoreResults( std::vector<std::unique_ptr<autofill::PasswordForm>> results) override; + void OnGetPasswordStoreResultsFrom( + scoped_refptr<PasswordStore> store, + std::vector<std::unique_ptr<autofill::PasswordForm>> results) override; private: // HttpPasswordStoreMigrator::Consumer:
diff --git a/components/password_manager/core/browser/credential_manager_pending_request_task_unittest.cc b/components/password_manager/core/browser/credential_manager_pending_request_task_unittest.cc index 0faeadf9..6dc7cc03 100644 --- a/components/password_manager/core/browser/credential_manager_pending_request_task_unittest.cc +++ b/components/password_manager/core/browser/credential_manager_pending_request_task_unittest.cc
@@ -4,7 +4,9 @@ #include "components/password_manager/core/browser/credential_manager_pending_request_task.h" +#include "base/test/task_environment.h" #include "components/password_manager/core/browser/stub_password_manager_client.h" +#include "components/password_manager/core/browser/test_password_store.h" #include "components/password_manager/core/common/credential_manager_types.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -12,6 +14,24 @@ namespace password_manager { namespace { + +class TestPasswordManagerClient : public StubPasswordManagerClient { + public: + TestPasswordManagerClient(PasswordStore* profile_store, + PasswordStore* account_store) + : profile_store_(profile_store), account_store_(account_store) {} + PasswordStore* GetProfilePasswordStore() const override { + return profile_store_; + } + PasswordStore* GetAccountPasswordStore() const override { + return account_store_; + } + + private: + PasswordStore* profile_store_; + PasswordStore* account_store_; +}; + class CredentialManagerPendingRequestTaskDelegateMock : public CredentialManagerPendingRequestTaskDelegate { public: @@ -37,16 +57,36 @@ class CredentialManagerPendingRequestTaskTest : public ::testing::Test { public: CredentialManagerPendingRequestTaskTest() { - ON_CALL(delegate_mock_, client).WillByDefault(testing::Return(&client_)); + profile_store_ = new TestPasswordStore(/*is_account_store=*/false); + profile_store_->Init(/*prefs=*/nullptr); + + account_store_ = new TestPasswordStore(/*is_account_store=*/true); + account_store_->Init(/*prefs=*/nullptr); + + client_ = std::make_unique<TestPasswordManagerClient>(profile_store_.get(), + account_store_.get()); + + ON_CALL(delegate_mock_, client) + .WillByDefault(testing::Return(client_.get())); } ~CredentialManagerPendingRequestTaskTest() override = default; + void TearDown() override { + account_store_->ShutdownOnUIThread(); + profile_store_->ShutdownOnUIThread(); + // It's needed to cleanup the password store asynchronously. + task_environment_.RunUntilIdle(); + } + protected: testing::NiceMock<CredentialManagerPendingRequestTaskDelegateMock> delegate_mock_; + scoped_refptr<TestPasswordStore> profile_store_; + scoped_refptr<TestPasswordStore> account_store_; private: - StubPasswordManagerClient client_; + base::test::TaskEnvironment task_environment_; + std::unique_ptr<TestPasswordManagerClient> client_; }; TEST_F(CredentialManagerPendingRequestTaskTest, QueryProfileStore) { @@ -58,7 +98,7 @@ // We are expecting results from only one store, delegate should be called // upon getting a response from the store. EXPECT_CALL(delegate_mock_, SendCredential); - task.OnGetPasswordStoreResults({}); + task.OnGetPasswordStoreResultsFrom(profile_store_, {}); } TEST_F(CredentialManagerPendingRequestTaskTest, QueryProfileAndAccountStores) { @@ -70,12 +110,12 @@ // We are expecting results from 2 stores, the delegate shouldn't be called // until both stores respond. EXPECT_CALL(delegate_mock_, SendCredential).Times(0); - task.OnGetPasswordStoreResults({}); + task.OnGetPasswordStoreResultsFrom(profile_store_, {}); testing::Mock::VerifyAndClearExpectations(&delegate_mock_); EXPECT_CALL(delegate_mock_, SendCredential); - task.OnGetPasswordStoreResults({}); + task.OnGetPasswordStoreResultsFrom(account_store_, {}); } } // namespace password_manager
diff --git a/components/payments/content/android/java/src/org/chromium/components/payments/PaymentFeatureList.java b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentFeatureList.java index 28bf46d..47070c97 100644 --- a/components/payments/content/android/java/src/org/chromium/components/payments/PaymentFeatureList.java +++ b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentFeatureList.java
@@ -17,6 +17,7 @@ public class PaymentFeatureList { /** Alphabetical: */ public static final String ANDROID_APP_PAYMENT_UPDATE_EVENTS = "AndroidAppPaymentUpdateEvents"; + public static final String ENFORCE_FULL_DELEGATION = "EnforceFullDelegation"; public static final String PAYMENT_REQUEST_SKIP_TO_GPAY = "PaymentRequestSkipToGPay"; public static final String PAYMENT_REQUEST_SKIP_TO_GPAY_IF_NO_CARD = "PaymentRequestSkipToGPayIfNoCard";
diff --git a/components/payments/content/android/payment_feature_list.cc b/components/payments/content/android/payment_feature_list.cc index c21c16b..03fe29b 100644 --- a/components/payments/content/android/payment_feature_list.cc +++ b/components/payments/content/android/payment_feature_list.cc
@@ -25,6 +25,7 @@ &::features::kWebPaymentsMinimalUI, &features::kAlwaysAllowJustInTimePaymentApp, &features::kAppStoreBillingDebug, + &features::kEnforceFullDelegation, &features::kPaymentRequestSkipToGPay, &features::kPaymentRequestSkipToGPayIfNoCard, &features::kReturnGooglePayInBasicCard,
diff --git a/components/payments/content/payment_request_spec.h b/components/payments/content/payment_request_spec.h index 87af537..7d9d8035 100644 --- a/components/payments/content/payment_request_spec.h +++ b/components/payments/content/payment_request_spec.h
@@ -119,6 +119,8 @@ bool request_payer_email() const override; PaymentShippingType shipping_type() const override; + const mojom::PaymentOptionsPtr& payment_options() const { return options_; } + // Returns the query to be used for the quota on hasEnrolledInstrument() // calls. Generally this returns the payment method identifiers and their // corresponding data. However, in the case of basic-card with
diff --git a/components/payments/content/service_worker_payment_app_factory.cc b/components/payments/content/service_worker_payment_app_factory.cc index 0426e8e..e563d46 100644 --- a/components/payments/content/service_worker_payment_app_factory.cc +++ b/components/payments/content/service_worker_payment_app_factory.cc
@@ -13,6 +13,10 @@ #include "components/payments/content/payment_manifest_web_data_service.h" #include "components/payments/content/service_worker_payment_app.h" #include "components/payments/content/service_worker_payment_app_finder.h" +#include "components/payments/core/features.h" +#include "components/payments/core/method_strings.h" +#include "content/public/browser/stored_payment_app.h" +#include "content/public/browser/supported_delegations.h" #include "content/public/browser/web_contents.h" namespace payments { @@ -50,15 +54,22 @@ if (!error_message.empty()) delegate_->OnPaymentAppCreationError(error_message); - number_of_pending_sw_payment_apps_ = apps.size() + installable_apps.size(); - if (number_of_pending_sw_payment_apps_ == 0U) { - FinishAndCleanup(); - return; - } base::RepeatingClosure show_processing_spinner = base::BindRepeating( &PaymentAppFactory::Delegate::ShowProcessingSpinner, delegate_); for (auto& installed_app : apps) { + std::vector<std::string> enabled_methods = + installed_app.second->enabled_methods; + bool has_app_store_billing_method = + enabled_methods.end() != std::find(enabled_methods.begin(), + enabled_methods.end(), + methods::kGooglePlayBilling); + if (ShouldSkipAppForPartialDelegation( + installed_app.second->supported_delegations, delegate_, + has_app_store_billing_method)) { + // TODO(crbug.com/1100656): give the developer an error message. + continue; + } auto app = std::make_unique<ServiceWorkerPaymentApp>( delegate_->GetWebContents(), delegate_->GetTopOrigin(), delegate_->GetFrameOrigin(), delegate_->GetSpec(), @@ -69,9 +80,18 @@ weak_ptr_factory_.GetWeakPtr())); PaymentApp* raw_payment_app_pointer = app.get(); available_apps_[raw_payment_app_pointer] = std::move(app); + number_of_pending_sw_payment_apps_++; } for (auto& installable_app : installable_apps) { + bool is_app_store_billing_method = + installable_app.first.spec() == methods::kGooglePlayBilling; + if (ShouldSkipAppForPartialDelegation( + installable_app.second->supported_delegations, delegate_, + is_app_store_billing_method)) { + // TODO(crbug.com/1100656): give the developer an error message. + continue; + } auto app = std::make_unique<ServiceWorkerPaymentApp>( delegate_->GetWebContents(), delegate_->GetTopOrigin(), delegate_->GetFrameOrigin(), delegate_->GetSpec(), @@ -82,7 +102,21 @@ weak_ptr_factory_.GetWeakPtr())); PaymentApp* raw_payment_app_pointer = app.get(); available_apps_[raw_payment_app_pointer] = std::move(app); + number_of_pending_sw_payment_apps_++; } + + if (number_of_pending_sw_payment_apps_ == 0U) + FinishAndCleanup(); + } + + bool ShouldSkipAppForPartialDelegation( + const content::SupportedDelegations& supported_delegations, + const base::WeakPtr<PaymentAppFactory::Delegate>& delegate, + bool has_app_store_billing_method) const { + return (base::FeatureList::IsEnabled(features::kEnforceFullDelegation) || + has_app_store_billing_method) && + !supported_delegations.ProvidesAll( + delegate->GetSpec()->payment_options()); } base::WeakPtr<ServiceWorkerPaymentAppCreator> GetWeakPtr() {
diff --git a/components/payments/core/error_strings.cc b/components/payments/core/error_strings.cc index 9927345..1c2bc09 100644 --- a/components/payments/core/error_strings.cc +++ b/components/payments/core/error_strings.cc
@@ -32,6 +32,7 @@ const char kShippingAddressInvalid[] = "Payment app returned invalid shipping address in response."; const char kShippingOptionEmpty[] = "Payment app returned invalid response. Missing field \"shipping option\"."; const char kShippingOptionIdRequired[] = "Shipping option identifier required."; +const char kSkipAppForPartialDelegation[] = "Skipping \"$1\" because it does not provide all of the requested PaymentOptions."; const char kStrictBasicCardShowReject[] = "User does not have valid information on file."; const char kTotalRequired[] = "Total required."; const char kUserCancelled[] = "User closed the Payment Request UI.";
diff --git a/components/payments/core/error_strings.h b/components/payments/core/error_strings.h index bfd208d0..213cee2 100644 --- a/components/payments/core/error_strings.h +++ b/components/payments/core/error_strings.h
@@ -83,6 +83,10 @@ // Used when non-empty "shippingOptionId": "" is required, but not provided. extern const char kShippingOptionIdRequired[]; +// Used when an app is skipped for supporting only part of the requested payment +// options. +extern const char kSkipAppForPartialDelegation[]; + // Used when rejecting show() with NotSupportedError, because the user did not // have all valid autofill data. extern const char kStrictBasicCardShowReject[];
diff --git a/components/payments/core/features.cc b/components/payments/core/features.cc index 7b47a8b..f1c12c2 100644 --- a/components/payments/core/features.cc +++ b/components/payments/core/features.cc
@@ -69,5 +69,7 @@ const base::Feature kPaymentHandlerLockIcon{"PaymentHandlerLockIcon", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kEnforceFullDelegation{"EnforceFullDelegation", + base::FEATURE_DISABLED_BY_DEFAULT}; } // namespace features } // namespace payments
diff --git a/components/payments/core/features.h b/components/payments/core/features.h index ece0789..d8a49c8c 100644 --- a/components/payments/core/features.h +++ b/components/payments/core/features.h
@@ -80,6 +80,9 @@ // allowed inside the payment handler. extern const base::Feature kPaymentHandlerLockIcon; +// Used to reject the apps with partial delegation. +extern const base::Feature kEnforceFullDelegation; + } // namespace features } // namespace payments
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 075c531..cc40ce3e 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -21989,7 +21989,9 @@ This is an additive feature, but the new headers may break some websites that restrict the characters that requests may contain. - If this policy is enabled or not set the <ph name="PRODUCT_NAME">User-Agent Client Hints</ph> feature is enabled. If the policy is disabled the feature is unavailable.''', + If this policy is enabled or not set the <ph name="PRODUCT_NAME">User-Agent Client Hints</ph> feature is enabled. If the policy is disabled the feature is unavailable. + + This enterprise policy is for short-term adaptation and will be removed in Chrome 88.''', }, { 'name': 'SuggestedContentEnabled',
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index 4538361..21ab4fce 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -204,6 +204,11 @@ <translation id="1376119291123231789">Habilita el modo avanzado de carga de la batería</translation> <translation id="1384459581748403878">Referencia: <ph name="REFERENCE_URL" /></translation> <translation id="138847842893090358">Envía el estado de las actualizaciones del sistema operativo</translation> +<translation id="1390901586107713894">Permite especificar las extensiones que los usuarios no pueden instalar. Si se bloquea una extensión ya instalada, se inhabilitará y el usuario no podrá habilitarla. Si una extensión que se había inhabilitado porque estaba en la lista de bloqueados se quita de esa lista, volverá a habilitarse automáticamente. + + Si el valor de una lista de bloqueados es un asterisco (*), se bloquearán todas las extensiones excepto las que estén incluidas explícitamente en la lista de permitidos. + + Si no se asigna ningún valor a esta política, el usuario podrá instalar cualquier extensión en <ph name="PRODUCT_NAME" />.</translation> <translation id="1393485621820363363">Impresoras de dispositivos de empresa habilitadas</translation> <translation id="1397855852561539316">URL de sugerencia del proveedor de búsquedas predeterminadas</translation> <translation id="1404043648050567997">El servicio Navegación Segura muestra una página de advertencia cuando los usuarios acceden a sitios web marcados como potencialmente maliciosos. Habilitar esta opción evita que los usuarios sigan navegando de todos modos desde la página de advertencia hasta el sitio web malicioso. @@ -1045,6 +1050,13 @@ <translation id="253135976343875019">Tiempo de espera de inactividad cuando el dispositivo está conectado a la red</translation> <translation id="2536525645274582300">El usuario decide si quiere habilitar los servicios de ubicación de Google</translation> <translation id="254653220329944566">Activa los informes en la nube de <ph name="PRODUCT_NAME" /></translation> +<translation id="2547854230073316008">Si se asigna un valor a esta política, se establecerá la resolución y el factor de escala de cada pantalla. La configuración de las pantallas externas se aplicará a las pantallas conectadas. Si una pantalla no es compatible con la resolución o la escala especificadas, la política no tendrá efecto. + + Si se asigna el valor "True" a <ph name="EXTERNAL_USE_NATIVE" />, la política establecerá que las pantallas externas utilicen su resolución nativa e ignorará los valores de <ph name="EXTERNAL_WIDTH" /> y <ph name="EXTERNAL_HEIGHT" />. Si se asigna el valor "False" a <ph name="EXTERNAL_USE_NATIVE" /> o no se asigna ningún valor a esta opción ni a <ph name="EXTERNAL_WIDTH" /> o a <ph name="EXTERNAL_HEIGHT" />, esta política no afectará a las pantallas externas. + + Si se asigna el valor "True" al indicador recomendado, los usuarios podrán cambiar la resolución y el factor de escala de cualquier pantalla desde la página de configuración, pero, en el siguiente reinicio, se volverán a establecer los valores definidos en la política. Si se asigna el valor "False" al indicador recomendado o no se le asigna ningún valor, los usuarios no podrán cambiar la configuración de las pantallas. + + Nota: Los valores de <ph name="EXTERNAL_WIDTH" /> y de <ph name="EXTERNAL_HEIGHT" /> deben indicarse en píxeles y los de <ph name="EXTERNAL_SCALE_PERCENTAGE" /> y <ph name="INTERNAL_SCALE_PERCENTAGE" />, en porcentajes.</translation> <translation id="2548397295248733155">Ten en cuenta que esta política está obsoleta y se eliminará de la versión 85 de <ph name="PRODUCT_OS_NAME" />. Utiliza <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> en su lugar. Permite especificar el tiempo que debe transcurrir sin que el usuario realice ninguna acción antes de que la pantalla se apague (con batería). @@ -1529,6 +1541,9 @@ <translation id="3251500716404598358">Configura las políticas para cambiar de navegador. Los sitios web configurados se abrirán automáticamente en un navegador diferente a <ph name="PRODUCT_NAME" />.</translation> +<translation id="3255762580838224124">Si se asigna un valor a esta política, cada pantalla rotará después de cada reinicio según la orientación especificada y también rotará la primera vez que se conecte después de que cambies el valor de la política. Los usuarios podrán cambiar la rotación de la pantalla a través de la página de configuración después de iniciar sesión, pero, en el siguiente reinicio, se volverá a establecer el valor definido en la política. Esta política se aplica a las pantallas principales y secundarias. + + Si no se le asigna ningún valor, el valor predeterminado será 0 grados y los usuarios podrán cambiarlo. En este caso, no se volverá a aplicar el valor predeterminado tras reiniciar.</translation> <translation id="3264793472749429012">Codificaciones del proveedor de búsquedas predeterminadas</translation> <translation id="3273221114520206906">Configuración de JavaScript predeterminada</translation> <translation id="3284094172359247914">Controlar el uso de la API WebUSB</translation> @@ -1881,6 +1896,17 @@ <translation id="382476126209906314">Configurar el prefijo TalkGadget para hosts de acceso remoto</translation> <translation id="3824972131618513497">Controla los ajustes relacionados con el reinicio y la gestión de la batería.</translation> <translation id="3826475866868158882">Se han habilitado los servicios de ubicación de Google</translation> +<translation id="383002993919016993">Esta política evita que el usuario cargue las páginas web de las URL bloqueadas. La lista de bloqueados incluye patrones de URL que especifican qué URLs se bloquearán. + + Los patrones de URL deben tener el formato que se indica en la página https://www.chromium.org/administrators/url-blacklist-filter-format. + + Las excepciones se pueden definir en la política de lista de URL permitidas. Estas políticas están limitadas a 1000 entradas. A partir de ese número, se ignorarán las siguientes entradas. + + Recomendamos no bloquear las URL internas chrome://* porque podrían producirse errores inesperados. + + Puedes bloquear las URL javascript://*, pero esto solo afectará al código JavaScript que se introduzca en la barra de direcciones o, por ejemplo, en los bookmarklets. Ten en cuenta que las URL JavaScript in-page, si cargan datos dinámicamente, no están sujetas a esta política. Por ejemplo, si bloqueas example.com/abc, la página example.com podrá cargar example.com/abc a través de XMLHTTPRequest. + + Si no se establece esta política, no se bloqueará ninguna URL en el navegador.</translation> <translation id="3831376478177535007">Si se habilita esta opción, <ph name="PRODUCT_NAME" /> permitirá que se confíe en los certificados emitidos por operaciones de la infraestructura de clave pública antigua de Symantec Corporation si se validan correctamente y se vinculan con un certificado de CA reconocido. Ten en cuenta que esta política depende de que el sistema operativo siga reconociendo los certificados de la infraestructura antigua de Symantec. Si una actualización del sistema operativo cambia la forma en que este gestiona los certificados, esta política dejará de aplicarse. Además, el objetivo de esta política es ofrecer a las empresas una solución temporal que les proporcione más tiempo para dejar de usar los certificados antiguos de Symantec. Esta política se retirará sobre el 1 de enero del 2019. @@ -1895,7 +1921,7 @@ De forma predeterminada, todos los hosts de mensajes nativos se incluyen en la lista blanca, pero si todos los hosts de mensajes nativos se incluyen en la lista negra por una política, se puede utilizar la lista blanca para anular esa política.</translation> <translation id="3835692988507803626">Forzar la inhabilitación del corrector ortográfico de idiomas</translation> <translation id="3837424079837455272">Esta política controla si se pueden añadir nuevos usuarios a <ph name="PRODUCT_OS_NAME" />. No impide que los usuarios inicien sesión en cuentas de Google adicionales en Android. Si quieres impedir que esto ocurra, configura la política <ph name="ACCOUNT_TYPES_WITH_MANAGEMENT_DISABLED_CLOUDDPC_POLICY_NAME" /> específica de Android como parte de <ph name="ARC_POLICY_POLICY_NAME" />.</translation> -<translation id="3838094946886335701">Si se establece esta política (solo según lo recomendado), podrás registrar una lista de controladores de protocolo, la cual se combinará con las listas que registre el usuario (se unirán ambos conjuntos). Establece la propiedad protocol según el esquema (por ejemplo, mailto) y la propiedad URL según el patrón de URL de la aplicación que controla el esquema especificado en el campo protocol. El patrón puede incluir un marcador de posición %s, que se sustituye por la URL controlada. +<translation id="3838094946886335701">Si se establece esta política (solo según lo recomendado), podrás registrar una lista de controladores de protocolo, la cual se combinará con las listas que registre el usuario (se usarán ambos conjuntos). Establece la propiedad protocol según el esquema (por ejemplo, mailto) y la propiedad URL según el patrón de URL de la aplicación que controla el esquema especificado en el campo protocol. El patrón puede incluir un marcador de posición %s, que se sustituye por la URL controlada. Los usuarios no pueden quitar un controlador de protocolo registrado por la política. Sin embargo, si instalan un controlador predeterminado nuevo, podrán cambiar los controladores de protocolo instalados por la política.</translation> <translation id="3851039766298741586">Proporciona información sobre la sesión del kiosco activa, como el @@ -2554,6 +2580,7 @@ Si le asignas un valor a esta política, los usuarios no podrán cambiarlo. Si no se le asigna ninguno, los usuarios decidirán si la estantería se oculta automáticamente.</translation> <translation id="4816674326202173458">Permitir que el usuario de empresa sea principal y secundario (comportamiento predeterminado para usuarios no administrados)</translation> <translation id="4826326557828204741">Acción a emprender si se alcanza el retraso de inactividad mientras el dispositivo está usando la batería</translation> +<translation id="482803100714220060">Mostrar URL completas</translation> <translation id="4830531683854509779">Envía estadísticas de hardware sobre componentes SoC. Si se asigna el valor "false" a esta política o no se le asigna ninguno, no se enviará ninguna estadística. @@ -2582,6 +2609,11 @@ </translation> <translation id="489803897780524242">Parámetro que controla el emplazamiento de los términos de búsqueda para el proveedor de búsquedas predeterminado</translation> <translation id="4899708173828500852">Habilitar Navegación Segura</translation> +<translation id="4902163780937592202">Habilita la combinación de las siguientes políticas de lista de instalación de extensiones: <ph name="EXTENSION_INSTALL_BLOCKLIST_POLICY_NAME" />, <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" /> y <ph name="EXTENSION_INSTALL_FORCELIST_POLICY_NAME" />. + + Si habilitas esta opción, los valores de la política de plataforma del equipo, de la política de nube del equipo y de la política de plataforma del usuario se combinarán en una única lista que se usará en conjunto, en lugar de utilizar únicamente los valores de la fuente que tenga mayor prioridad. + + Si inhabilitas esta opción o no le asignas ningún valor, solo se usarán las entradas de lista de la fuente que tenga mayor prioridad. Las demás fuentes se mostrarán como conflictos, pero se ignorarán.</translation> <translation id="4906194810004762807">Frecuencia de actualización de Device Policy</translation> <translation id="4917385247580444890">Buena</translation> <translation id="4919122295221518724">Permite un tratamiento más estricto para el contenido mixto</translation> @@ -2691,6 +2723,19 @@ Si no se asigna ningún valor a esta política, se aplica una longitud mínima del PIN de 6 dígitos. Esta es la longitud mínima recomendada.</translation> +<translation id="5077993112092904096">Esta política está obsoleta. Usa la política <ph name="URL_BLOCKLIST_POLICY_NAME" /> en su lugar. + + Esta política evita que el usuario cargue las páginas web de las URL bloqueadas. La lista de bloqueados incluye patrones de URL que especifican qué URLs se bloquearán. + + Los patrones de URL deben tener el formato que se indica en la página https://www.chromium.org/administrators/url-blacklist-filter-format. + + Las excepciones se pueden definir en la política de lista de URL permitidas. Estas políticas están limitadas a 1000 entradas. A partir de ese número, se ignorarán las siguientes entradas. + + Recomendamos no bloquear las URL internas chrome://* porque podrían producirse errores inesperados. + + Puedes bloquear las URL javascript://* en Chrome 73. Sin embargo, esto solo afecta al código JavaScript que se introduce en la barra de direcciones o, por ejemplo, en los bookmarklets. Ten en cuenta que las URL JavaScript in-page, si cargan datos dinámicamente, no están sujetas a esta política. Por ejemplo, si bloqueas example.com/abc, la página example.com podrá cargar example.com/abc a través de XMLHTTPRequest. + + Si no se establece esta política, no se bloqueará ninguna URL en el navegador.</translation> <translation id="5085647276663819155">Inhabilitar vista previa de impresión</translation> <translation id="5090209345759901501">Extiende la configuración del contenido Flash a todo el contenido</translation> <translation id="5090791951240382356">Permite combinar políticas de diccionario de fuentes distintas</translation> @@ -3480,7 +3525,7 @@ Esta política se puede usar para crear excepciones de las listas de bloqueados restrictivas. Por ejemplo, el asterisco se puede usar para bloquear todas las solicitudes, y esta política se puede usar para permitir el acceso a una lista limitada de URLs. También se puede utilizar para crear excepciones de determinados esquemas, subdominios de otros dominios, puertos o rutas específicas. - El filtro más específico determinará si una URL está bloqueada o autorizada. La lista de permitidos tiene prioridad con respecto a la lista de bloqueados. + El filtro más específico determinará si una URL está bloqueada o permitida. La lista de permitidos tiene prioridad con respecto a la lista de bloqueados. Esta política está limitada a 1000 entradas. A partir de ese número, se ignorarán las siguientes entradas. @@ -3624,6 +3669,7 @@ <translation id="6394350458541421998">Esta política no está disponible desde la versión 29 de <ph name="PRODUCT_OS_NAME" />. Utiliza la política PresentationScreenDimDelayScale en su lugar.</translation> <translation id="6401669939808766804">Cerrar la sesión del usuario</translation> <translation id="640244877779556713">Habilitar sugerencias de emojis</translation> +<translation id="6407093060083181305">Configurar lista de bloqueados de instalación de extensiones</translation> <translation id="6417265370957905582">Asistente de Google</translation> <translation id="6422575351619065453">En modo kiosco, permite controlar si se muestra el menú de accesibilidad flotante. @@ -3802,6 +3848,11 @@ <translation id="6658245400435704251">Especifica el número de segundos hasta los que un dispositivo puede retrasar aleatoriamente la descarga de una actualización desde el momento en el que esta se envío al servidor por primera vez. El dispositivo puede dedicar una parte de este tiempo al propio proceso de actualización y el resto a realizar las comprobaciones necesarias. En cualquier caso, el límite superior de la dispersión es un periodo de tiempo constante, para que el dispositivo no se quede bloqueado mientras descarga una actualización.</translation> <translation id="6665670272107384733">Definir la frecuencia con la que el usuario debe introducir la contraseña para utilizar el desbloqueo rápido</translation> <translation id="6667586534922258705">Muestra el botón para mostrar la contraseña en las pantallas de inicio de sesión y bloqueo</translation> +<translation id="6669700740683748046">Esta función permite mostrar la URL completa en la barra de direcciones. + Si se asigna el valor "True" a esta política, se mostrará la URL completa en la barra de direcciones, incluidos los esquemas y subdominios. + Si se le asigna el valor "False", se mostrará la URL predeterminada. + Si no se le asigna ningún valor, se mostrará la URL de forma predeterminada y el usuario podrá alternar entre esta opción y la de mostrar la URL completa usando un menú contextual. + </translation> <translation id="6672070613706645316">Permite a los usuarios personalizar la imagen de fondo de la página Nueva pestaña</translation> <translation id="6672630473862787247">Habilita la autenticación pasiva en sesiones normales, de incógnito y de invitado.</translation> <translation id="6685903773201985073">Habilita la autenticación pasiva en sesiones normales y de invitado.</translation> @@ -5254,7 +5305,7 @@ Esta política se puede usar para crear excepciones de las listas de bloqueados restrictivas. Por ejemplo, el asterisco se puede usar para bloquear todas las solicitudes, y esta política se puede usar para permitir el acceso a una lista limitada de URLs. También se puede utilizar para crear excepciones de determinados esquemas, subdominios de otros dominios, puertos o rutas específicas. - El filtro más específico determinará si una URL está bloqueada o autorizada. La lista de permitidos tiene prioridad con respecto a la lista de bloqueados. + El filtro más específico determinará si una URL está bloqueada o permitida. La lista de permitidos tiene prioridad con respecto a la lista de bloqueados. Esta política está limitada a 1000 entradas. A partir de ese número, se ignorarán las siguientes entradas.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 6e871da..c2482c86 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -307,7 +307,7 @@ Menetapkan kebijakan akses mana yang digunakan untuk konfigurasi printer massal. Jika <ph name="PRINTERS_ALLOW_ALL" /> dipilih, semua printer akan ditampilkan. Jika <ph name="PRINTERS_BLOCKLIST" /> dipilih, <ph name="DEVICE_PRINTERS_BLOCKLIST" /> akan digunakan untuk membatasi akses ke printer tertentu. Jika <ph name="PRINTERS_ALLOWLIST" /> dipilih, <ph name="DEVICE_PRINTERS_ALLOWLIST" /> hanya akan menetapkan printer yang dapat dipilih. - Jika kebijakan ini tidak disetel, <ph name="PRINTERS_ALLOW_ALL" /> akan diasumsikan. + Jika kebijakan ini tidak disetel, <ph name="PRINTERS_ALLOW_ALL" /> akan diberlakukan. </translation> <translation id="1553532014072799546">Daftar yang Diizinkan terkait Batas Waktu per Aplikasi</translation> <translation id="1553956579506604198">Memblokir ekstensi eksternal sehingga tidak dapat diinstal</translation> @@ -1902,7 +1902,7 @@ <translation id="3837424079837455272">Kebijakan ini mengontrol apakah pengguna baru dapat ditambahkan ke <ph name="PRODUCT_OS_NAME" /> atau tidak. Kebijakan ini tidak mencegah pengguna login ke akun Google lain dalam Android. Jika Anda ingin mencegah tindakan ini, konfigurasikan kebijakan <ph name="ACCOUNT_TYPES_WITH_MANAGEMENT_DISABLED_CLOUDDPC_POLICY_NAME" /> khusus Android sebagai bagian dari <ph name="ARC_POLICY_POLICY_NAME" />.</translation> <translation id="3838094946886335701">Jika menyetel kebijakan (sebagai direkomendasikan saja), Anda akan dapat mendaftarkan daftar pengendali protokol, yang digabungkan dengan yang didaftarkan pengguna, sehingga keduanya dapat digunakan. Setel properti "protokol" ke skema, seperti "mailto", dan setel properti "URL" ke pola URL aplikasi yang menangani skema yang ditentukan dalam kolom "protokol". Pola dapat mencakup placeholder "%s", yang diganti dengan URL yang ditangani. - Pengguna tidak dapat menghapus pengendali protokol yang didaftarkan dengan kebijakan. Namun, dengan menginstal pengendali default baru, pengguna dapat mengubah pengendali protokol yang diinstal dengan kebijakan.</translation> + Pengguna tidak dapat menghapus pengendali protokol yang didaftarkan oleh kebijakan. Namun, dengan menginstal pengendali default baru, pengguna dapat mengubah pengendali protokol yang diinstal oleh kebijakan.</translation> <translation id="3851039766298741586">Laporkan informasi tentang sesi kios aktif, misalnya ID dan versi aplikasi. @@ -2402,7 +2402,7 @@ Menetapkan kebijakan akses mana yang digunakan untuk konfigurasi printer massal. Jika <ph name="PRINTERS_ALLOW_ALL" /> dipilih, semua printer akan ditampilkan. Jika <ph name="PRINTERS_BLACKLIST" /> dipilih, <ph name="DEVICE_NATIVE_PRINTERS_BLACKLIST" /> akan digunakan untuk membatasi akses ke printer tertentu. Jika <ph name="PRINTERS_WHITELIST" /> dipilih, <ph name="DEVICE_NATIVE_PRINTERS_WHITELIST" /> hanya akan menetapkan printer yang dapat dipilih. - Jika kebijakan ini tidak disetel, <ph name="PRINTERS_ALLOW_ALL" /> akan diasumsikan. + Jika kebijakan ini tidak disetel, <ph name="PRINTERS_ALLOW_ALL" /> akan diberlakukan. Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan <ph name="DEVICE_PRINTERS_ACCESS_MODE" />. </translation> @@ -2420,13 +2420,13 @@ Jika setelan ini dinonaktifkan atau tidak ditetapkan, host akses jarak jauh dapat dikaitkan dengan pengguna lokal mana pun.</translation> <translation id="4591366717022345234">Sediakan Quick Fix Build untuk pengguna</translation> -<translation id="4592246263545654202">Menentukan apakah pengguna dapat membuka halaman dalam Mode samaran di <ph name="PRODUCT_NAME" /> atau tidak. +<translation id="4592246263545654202">Menentukan apakah pengguna dapat membuka halaman dalam mode Samaran di <ph name="PRODUCT_NAME" /> atau tidak. - Jika 'Enabled' dipilih atau kebijakan tidak ditetapkan, halaman dapat dibuka dalam Mode samaran. + Jika 'Enabled' dipilih atau kebijakan tidak ditetapkan, halaman dapat dibuka dalam mode Samaran. - Jika 'Disabled' dipilih, halaman tidak dapat dibuka dalam Mode samaran. + Jika 'Disabled' dipilih, halaman tidak dapat dibuka dalam mode Samaran. - Jika 'Forced' dipilih, halaman dapat dibuka HANYA dalam Mode samaran. Perhatikan bahwa 'Paksa' tidak berfungsi pada Android di Chrome</translation> + Jika 'Forced' dipilih, halaman dapat dibuka HANYA dalam mode Samaran. Perhatikan bahwa 'Paksa' tidak berfungsi pada Android di Chrome</translation> <translation id="4600786265870346112">Aktifkan kursor besar</translation> <translation id="4604931264910482931">Konfigurasikan daftar hitam perpesanan asli</translation> <translation id="4614701085541180174">Memungkinkan Anda menetapkan daftar pola URL yang menentukan situs tempat sertifikat klien dipilih secara otomatis di layar login dalam frame yang menghosting alur SAML, jika situs tersebut meminta sertifikat. Contoh penggunaan adalah ketika mengonfigurasikan sertifikat di seluruh perangkat untuk ditampilkan ke SAML IdP. @@ -2850,11 +2850,11 @@ Jika kebijakan ini disetel, <ph name="PRODUCT_OS_NAME" /> akan mendownload file untuk konfigurasi printer dan menyediakan printer sesuai dengan <ph name="DEVICE_PRINTERS_ACCESS_MODE" />, <ph name="DEVICE_PRINTERS_ALLOWLIST" />, dan <ph name="DEVICE_PRINTERS_BLOCKLIST" />. - Kebijakan ini tidak memengaruhi kemampuan pengguna untuk mengonfigurasi printer di tiap perangkat. Kebijakan ini ditujukan sebagai tambahan untuk konfigurasi printer yang diberikan oleh tiap pengguna. + Kebijakan ini tidak memengaruhi kemampuan pengguna untuk mengonfigurasi printer di tiap perangkat. Kebijakan ini ditujukan sebagai tambahan untuk konfigurasi printer yang ditentukan oleh tiap pengguna. Kebijakan ini bersifat tambahan untuk <ph name="BULK_PRINTERS_POLICY" />. - Jika kebijakan ini tidak disetel, tidak akan ada perangkat printer dan kebijakan <ph name="DEVICE_PRINTERS_POLICY_PATTERN" /> akan diabaikan. + Jika kebijakan ini tidak disetel, tidak akan ada printer perangkat, dan kebijakan <ph name="DEVICE_PRINTERS_POLICY_PATTERN" /> yang lain akan diabaikan. </translation> <translation id="5273744932022326215">Mengaktifkan fitur aksesibilitas sorotan kursor di layar login. @@ -3483,11 +3483,11 @@ Lihat deskripsi kebijakan '<ph name="URL_BLOCKLIST_POLICY_NAME" />' untuk format entri daftar ini. - Kebijakan ini dapat digunakan untuk membuka pengecualian daftar yang tidak diizinkan yang ketat. Misalnya, '*' dapat digunakan untuk memblokir semua permintaan, dan kebijakan ini dapat digunakan untuk mengizinkan akses ke daftar URL terbatas. Kebijakan ini juga dapat digunakan untuk membuka pengecualian pada skema tertentu, subdomain dari domain lain, port, atau jalur khusus. + Kebijakan ini dapat digunakan untuk membuka pengecualian daftar yang tidak diizinkan yang ketat. Misalnya, '*' dapat digunakan untuk memblokir semua permintaan, dan kebijakan ini dapat digunakan untuk mengizinkan akses ke URL yang ada dalam daftar terbatas. Kebijakan ini juga dapat digunakan untuk membuka pengecualian pada skema tertentu, subdomain dari domain lain, port, atau jalur khusus. Filter yang paling spesifik akan menentukan apakah URL diblokir atau diizinkan. Daftar yang diizinkan akan lebih diutamakan daripada daftar yang tidak diizinkan. - Kebijakan ini terbatas pada 1.000 entri; entri berikutnya akan diabaikan. + Kebijakan ini terbatas untuk 1.000 entri; entri berikutnya akan diabaikan. Kebijakan ini juga memungkinkan pengaktifan panggilan otomatis oleh browser aplikasi eksternal yang terdaftar sebagai pengendali protokol untuk protokol yang tercantum, seperti "tel:" atau "ssh:". Fungsi ini hanya tersedia pada instance Windows yang dihubungkan ke domain <ph name="MS_AD_NAME" />, atau instance Windows 10 Pro atau Enterprise yang terdaftar untuk pengelolaan perangkat, dan untuk instance macOS yang dikelola melalui MDM atau dihubungkan ke domain melalui MCX. @@ -3511,7 +3511,7 @@ Hanya jika allowCorporateKeyUsage disetel ke True untuk suatu ekstensi, ekstensi tersebut dapat menggunakan kunci platform apa pun yang ditujukan untuk pemakaian dalam perusahaan, guna menandai data acak. Izin ini hanya boleh diberikan jika ekstensi dipercaya untuk mengamankan akses ke kunci dari para penyerang.</translation> <translation id="6205094657236844092">Menyetel kebijakan akan menentukan daftar aplikasi web yang diinstal otomatis, tanpa interaksi pengguna, dan yang tidak dapat di-uninstal atau dinonaktifkan pengguna. - Setiap item daftar kebijakan adalah objek yang berisi anggota wajib: <ph name="URL_LABEL" /> (URL aplikasi web yang akan diinstal) dan 2 anggota opsional: <ph name="DEFAULT_LAUNCH_CONTAINER_LABEL" /> (untuk cara aplikasi web terbuka—tab baru adalah default) dan <ph name="CREATE_DESKTOP_SHORTCUT_LABEL" /> (Benar (True), jika Anda ingin membuat pintasan desktop <ph name="LINUX_OS_NAME" /> dan Windows®). + Setiap item daftar kebijakan adalah objek yang berisi satu elemen wajib: <ph name="URL_LABEL" /> (URL aplikasi web yang akan diinstal) dan 2 elemen opsional: <ph name="DEFAULT_LAUNCH_CONTAINER_LABEL" /> (untuk cara aplikasi web terbuka—tab baru adalah default) dan <ph name="CREATE_DESKTOP_SHORTCUT_LABEL" /> (Berlaku jika Anda ingin membuat pintasan desktop <ph name="LINUX_OS_NAME" /> dan Windows®). Lihat <ph name="PINNED_LAUNCHER_APPS_POLICY_NAME" /> untuk memasang pin aplikasi ke rak <ph name="PRODUCT_OS_NAME" />.</translation> <translation id="6208896993204286313">Melaporkan Informasi Kebijakan <ph name="PRODUCT_NAME" /></translation> @@ -3593,7 +3593,7 @@ Menonaktifkan skema protokol yang tercantum di <ph name="PRODUCT_NAME" />. - URL yang menggunakan skema dari daftar ini tidak akan memuat dan tidak dapat dibuka. + URL yang menggunakan skema dari daftar ini tidak akan dimuat dan tidak dapat dibuka. Jika kebijakan ini tidak disetel atau daftar kosong, semua skema akan dapat diakses di <ph name="PRODUCT_NAME" />.</translation> <translation id="6342187235303612558">Memblokir pengguna agar tidak mengupload atau mendownload file yang saat ini tidak didukung untuk DLP atau pemindaian malware.</translation> @@ -3650,7 +3650,7 @@ <translation id="645425387487868471">Aktifkan login paksa untuk <ph name="PRODUCT_NAME" /></translation> <translation id="646376229090051440">Memungkinkan Anda menyetel daftar protokol, dan daftar terkait pola asal yang diizinkan untuk setiap protokol, yang dapat meluncurkan aplikasi eksternal tanpa meminta izin pengguna. Pemisah di akhir tidak boleh disertakan saat mencantumkan protokol, jadi cantumkan "skype" bukan "skype:" atau "skype://". - Jika kebijakan ini disetel, protokol hanya akan diizinkan oleh kebijakan untuk meluncurkan aplikasi eksternal tanpa meminta izin jika protokol tersebut tercantum, dan asal situs yang mencoba meluncurkan protokol tersebut cocok dengan pola asal dalam daftar allowed_origins protokol. Jika salah satu kondisinya disetel ke salah (false), permintaan izin peluncuran protokol eksternal tidak akan dihilangkan oleh kebijakan. + Jika kebijakan ini disetel, protokol hanya akan diizinkan oleh kebijakan untuk meluncurkan aplikasi eksternal tanpa meminta izin jika protokol tersebut tercantum, dan asal situs yang mencoba meluncurkan protokol tersebut cocok dengan pola asal dalam daftar allowed_origins protokol. Jika salah satu kondisinya tidak terpenuhi, permintaan izin peluncuran protokol eksternal tidak akan dihilangkan oleh kebijakan. Jika kebijakan ini tidak disetel, secara default tidak ada protokol yang dapat diluncurkan tanpa meminta izin. Pengguna dapat memilih tidak dimintai izin per protokol/per situs kecuali kebijakan <ph name="EXTERNAL_PROTOCOL_DIALOG_SHOW_ALWAYS_OPEN_CHECKBOX_POLICY_NAME" /> disetel ke Nonaktif. Kebijakan ini tidak memengaruhi pengecualian permintaan izin per protokol/per situs yang disetel pengguna. @@ -3674,7 +3674,7 @@ Jika kebijakan dinonaktifkan atau tidak disetel, lokal tersebut akan berupa lokal valid pertama yang dipilih dari: 1) Lokal yang ditentukan pengguna (jika dikonfigurasi). 2) Lokal sistem. - 3) Lokal penggantian (en-US).</translation> + 3) Lokal pengganti (en-US).</translation> <translation id="6495337487202227251">Perhatikan bahwa kebijakan ini sudah tidak digunakan lagi dan akan dihapus di <ph name="PRODUCT_OS_NAME" /> versi 85. Sebagai gantinya, gunakan <ph name="SCREEN_LOCK_DELAYS_POLICY_NAME" />. Menentukan durasi waktu tanpa masukan pengguna setelah layar dikunci saat menggunakan daya baterai. @@ -5236,11 +5236,11 @@ Lihat deskripsi kebijakan '<ph name="URL_BLOCKLIST_POLICY_NAME" />' untuk format entri daftar ini. - Kebijakan ini dapat digunakan untuk membuka pengecualian daftar yang tidak diizinkan yang ketat. Misalnya, '*' dapat digunakan untuk memblokir semua permintaan, dan kebijakan ini dapat digunakan untuk mengizinkan akses ke daftar URL terbatas. Kebijakan ini juga dapat digunakan untuk membuka pengecualian pada skema tertentu, subdomain dari domain lain, port, atau jalur khusus. + Kebijakan ini dapat digunakan untuk membuka pengecualian daftar yang tidak diizinkan yang ketat. Misalnya, '*' dapat digunakan untuk memblokir semua permintaan, dan kebijakan ini dapat digunakan untuk mengizinkan akses ke URL yang ada dalam daftar terbatas. Kebijakan ini juga dapat digunakan untuk membuka pengecualian pada skema tertentu, subdomain dari domain lain, port, atau jalur khusus. Filter yang paling spesifik akan menentukan apakah URL diblokir atau diizinkan. Daftar yang diizinkan akan lebih diutamakan daripada daftar yang tidak diizinkan. - Kebijakan ini terbatas pada 1.000 entri; entri berikutnya akan diabaikan. + Kebijakan ini terbatas untuk 1.000 entri; entri berikutnya akan diabaikan. Kebijakan ini juga memungkinkan pengaktifan panggilan otomatis oleh browser aplikasi eksternal yang terdaftar sebagai pengendali protokol untuk protokol yang tercantum, seperti "tel:" atau "ssh:". Fungsi ini hanya tersedia pada instance Windows yang dihubungkan ke domain <ph name="MS_AD_NAME" />, atau instance Windows 10 Pro atau Enterprise yang terdaftar untuk pengelolaan perangkat, dan untuk instance macOS yang dikelola melalui MDM atau dihubungkan ke domain melalui MCX.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index b128869f..5b792eba 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -190,9 +190,9 @@ <translation id="1376119291123231789">Attiva modalità di ricarica avanzata della batteria</translation> <translation id="1384459581748403878">Riferimento: <ph name="REFERENCE_URL" /></translation> <translation id="138847842893090358">Indica lo stato di aggiornamento del sistema operativo</translation> -<translation id="1390901586107713894">Consente di specificare le estensioni che gli utenti NON possono installare. Le estensioni già installate vengono disattivate, se bloccate, e l'utente non può attivarle. Se un'estensione è disattivata a causa della lista bloccata da cui viene rimossa, viene automaticamente riattivata. +<translation id="1390901586107713894">Consente di specificare le estensioni che gli utenti NON possono installare. Le estensioni già installate vengono disattivate, se bloccate, e l'utente non può attivarle. Un'estensione disattivata da una lista bloccata viene automaticamente riattivata nel caso venga rimossa dalla lista. - Il valore di una lista bloccata "*" significa che tutte le estensioni sono bloccate, a meno che vengano elencate esplicitamente nella lista consentita. + Il valore "*" di una lista bloccata significa che tutte le estensioni sono bloccate, a meno che vengano elencate esplicitamente nella lista consentita. Se questo criterio non viene configurato, l'utente può installare qualsiasi estensione in <ph name="PRODUCT_NAME" />.</translation> <translation id="1393485621820363363">Stampanti aziendali associate ai dispositivi attive</translation> @@ -1010,9 +1010,9 @@ <translation id="254653220329944566">Consente di attivare il reporting su cloud di <ph name="PRODUCT_NAME" /></translation> <translation id="2547854230073316008">La configurazione del criterio consente di impostare la risoluzione e il fattore di scalabilità per ogni display. Le impostazioni del display esterno si applicano ai display collegati. Il criterio non viene applicato se un display non supporta la risoluzione o la scalabilità specificate. - Se <ph name="EXTERNAL_USE_NATIVE" /> viene impostato su True, il criterio ignora <ph name="EXTERNAL_WIDTH" /> e <ph name="EXTERNAL_HEIGHT" /> e imposta i display esterni sulla propria risoluzione nativa. Se <ph name="EXTERNAL_USE_NATIVE" /> viene impostato su False o se non viene configurato insieme a <ph name="EXTERNAL_WIDTH" /> o <ph name="EXTERNAL_HEIGHT" />, il criterio non interessa i display esterni. + Se <ph name="EXTERNAL_USE_NATIVE" /> viene impostato su True, il criterio ignora <ph name="EXTERNAL_WIDTH" /> e <ph name="EXTERNAL_HEIGHT" /> e imposta i display esterni sulla loro risoluzione nativa. Se <ph name="EXTERNAL_USE_NATIVE" /> viene impostato su False o se non viene configurato insieme a <ph name="EXTERNAL_WIDTH" /> o <ph name="EXTERNAL_HEIGHT" />, il criterio non viene applicato ai display esterni. - Se il flag consigliato viene impostato su True consente agli utenti di modificare la risoluzione e il fattore di scalabilità per qualsiasi display tramite la pagina delle impostazioni, ma le impostazioni torneranno allo stato precedente al riavvio successivo. Se il flag consigliato viene impostato su False o se non viene configurato, gli utenti non possono modificare la impostazioni del display. + L'impostazione del flag consigliato su True consente agli utenti di modificare la risoluzione e il fattore di scalabilità per qualsiasi display tramite la pagina delle impostazioni, ma le impostazioni del display torneranno allo stato precedente al riavvio successivo. Se il flag consigliato viene impostato su False o se non viene configurato, gli utenti non possono modificare la impostazioni del display. Nota: imposta <ph name="EXTERNAL_WIDTH" /> e <ph name="EXTERNAL_HEIGHT" /> in pixel e <ph name="EXTERNAL_SCALE_PERCENTAGE" /> e <ph name="INTERNAL_SCALE_PERCENTAGE" /> in percentuali.</translation> <translation id="2548397295248733155">Tieni presente che questo criterio è obsoleto e verrà rimosso nella versione 85 di <ph name="PRODUCT_OS_NAME" />. Usa il criterio <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />. @@ -1492,7 +1492,7 @@ <translation id="3251500716404598358">Configura le norme per passare da un browser all'altro. I siti web configurati verranno aperti automaticamente in un browser diverso da <ph name="PRODUCT_NAME" />.</translation> -<translation id="3255762580838224124">La configurazione del criterio comporta la rotazione di ogni display nell'orientamento specificato a ogni riavvio e la prima volta che viene eseguita la connessione dopo la modifica del valore del criterio. Gli utenti possono modificare la rotazione del display tramite la pagina delle impostazioni dopo aver effettuato l'accesso, ma tornerà allo stato precedente al riavvio successivo. Questo criterio si applica ai display primari e secondari. +<translation id="3255762580838224124">La configurazione del criterio comporta la rotazione di ogni display nell'orientamento specificato a ogni riavvio e la prima volta che viene eseguita la connessione del display dopo la modifica del valore del criterio. Gli utenti possono modificare la rotazione del display tramite la pagina delle impostazioni dopo aver effettuato l'accesso, ma la rotazione tornerà allo stato precedente al riavvio successivo. Questo criterio si applica ai display primari e secondari. Se non viene configurato, il valore predefinito è 0 e gli utenti sono liberi di modificarlo. In questo caso, il valore predefinito non viene applicato nuovamente al riavvio.</translation> <translation id="3264793472749429012">Codifiche del provider di ricerca predefinito</translation> @@ -1850,7 +1850,7 @@ Un pattern URL deve essere nel formato indicato all'indirizzo https://www.chromium.org/administrators/url-blacklist-filter-format. - È possibile definire eccezioni nel criterio relativo alla lista consentita di URL. Per questi criteri è possibile definire massimo 1000 voci; le voci in più vengono ignorate. + È possibile definire eccezioni nel criterio relativo alla lista consentita di URL. Per questi criteri è possibile definire massimo 1000 voci; le voci successive verranno ignorate. È sconsigliato bloccare gli URL "chrome://*" interni perché ciò potrebbe generare errori imprevisti. @@ -2548,9 +2548,9 @@ <translation id="4899708173828500852">Consenti Navigazione sicura</translation> <translation id="4902163780937592202">Consente di unire i criteri relativi all'elenco di installazione delle estensioni <ph name="EXTENSION_INSTALL_BLOCKLIST_POLICY_NAME" />, <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" /> e <ph name="EXTENSION_INSTALL_FORCELIST_POLICY_NAME" />. - Se questa impostazione viene attivata, i valori dei criteri relativi alla piattaforma della macchina, al cloud della macchina e alla piattaforma dell'utente vengono uniti in un unico elenco e usati in toto invece di usare soltanto i valori di una singola origine con la massima priorità. + Se questa impostazione viene attivata, i valori dei criteri relativi alla piattaforma della macchina, al cloud della macchina e alla piattaforma dell'utente vengono uniti in un unico elenco e usati in toto invece di usare soltanto i valori della singola origine con la massima priorità. - Se questa impostazione viene disattivata o se non viene configurata, vengono recuperate soltanto le voci dell'elenco dell'origine con la massima priorità e tutte le altre origini risultano in conflitto, ma vengono ignorate.</translation> + Se questa impostazione viene disattivata o se non viene configurata, vengono recuperate soltanto le voci dell'elenco dell'origine con la massima priorità e tutte le altre origini vengono mostrate come in conflitto, ma ignorate.</translation> <translation id="4906194810004762807">Frequenza di aggiornamento per norma dispositivo</translation> <translation id="4917385247580444890">Forte</translation> <translation id="4919122295221518724">Attiva trattamento più restrittivo per i contenuti misti</translation> @@ -2659,11 +2659,11 @@ Un pattern URL deve essere nel formato indicato all'indirizzo https://www.chromium.org/administrators/url-blacklist-filter-format. - È possibile definire eccezioni nel criterio relativo alla lista consentita di URL. Per questi criteri è possibile definire massimo 1000 voci; le voci in più vengono ignorate. + È possibile definire eccezioni nel criterio relativo alla lista consentita di URL. Per questi criteri è possibile definire massimo 1000 voci; le voci successive verranno ignorate. È sconsigliato bloccare gli URL "chrome://*" interni perché ciò potrebbe generare errori imprevisti. - Da Chrome 73, puoi bloccare URL "javascript://*". Tuttavia, questa operazione interessa solo il codice JavaScript digitato nella barra degli indirizzi o, ad esempio, nei bookmarklet. Tieni presente che gli URL JavaScript in-page, in presenza di un caricamento dinamico dei dati, non sono soggetti a questo criterio. Ad esempio, se blocchi "example.com/abc", la pagina "example.com" continua a caricare "example.com/abc" tramite XMLHTTPRequest. + A partire da Chrome 73 puoi bloccare gli URL "javascript://*". Tuttavia, questa operazione interessa solo il codice JavaScript digitato nella barra degli indirizzi o, ad esempio, nei bookmarklet. Tieni presente che gli URL JavaScript in-page, in presenza di un caricamento dinamico dei dati, non sono soggetti a questo criterio. Ad esempio, se blocchi "example.com/abc", la pagina "example.com" continua a caricare "example.com/abc" tramite XMLHTTPRequest. Se questo criterio non viene configurato, non viene bloccato alcun URL nel browser.</translation> <translation id="5085647276663819155">Disattiva anteprima di stampa</translation> @@ -2898,11 +2898,11 @@ Se il criterio viene impostato su False, il port forwarding nei container Crostini viene disattivato.</translation> <translation id="538108065117008131">Consenti a <ph name="PRODUCT_FRAME_NAME" /> di gestire i seguenti tipi di contenuto.</translation> -<translation id="538768040137709073">Consente di attivare la funzione Appunti condivisi che permette agli utenti di inviare messaggi tra computer desktop Chrome e un dispositivo Android quando la sincronizzazione è attivata e l'utente ha effettuato l'accesso. +<translation id="538768040137709073">Consente di attivare la funzione Appunti condivisi che permette agli utenti di inviare testi tra computer desktop Chrome e un dispositivo Android quando la sincronizzazione è attivata e l'utente ha effettuato l'accesso. - Se il criterio è impostato su true, la funzionalità di invio messaggi, cross-device, è attivata per gli utenti Chrome. + Se il criterio è impostato su true, la funzionalità di invio testi tra dispositivi è attivata per gli utenti Chrome. - Se il criterio è impostato su false, la funzionalità di invio messaggi, cross-device, è disattivata per gli utenti Chrome. + Se il criterio è impostato su false, la funzionalità di invio testi tra dispositivi è disattivata per gli utenti Chrome. Se imposti questo criterio, gli utenti non potranno modificarlo o ignorarlo. @@ -3764,7 +3764,7 @@ <translation id="6669700740683748046">Questa funzionalità consente la visualizzazione dell'URL completo nella barra degli indirizzi. Se questo criterio viene impostato su True, l'URL completo viene visualizzato nella barra degli indirizzi, inclusi gli schemi e i sottodomini. Se questo criterio viene impostato su False, viene applicata la visualizzazione dell'URL predefinita. - Se questo criterio non viene configurato, viene applicata la visualizzazione dell'URL predefinita e l'utente può passare dalla visualizzazione predefinita all'URL completo e viceversa tramite l'opzione di un menu contestuale. + Se questo criterio non viene configurato, viene applicata la visualizzazione dell'URL predefinita e l'utente può passare dalla visualizzazione predefinita all'URL completo e viceversa tramite un menu contestuale. </translation> <translation id="6672070613706645316">Consenti agli utenti di personalizzare lo sfondo della pagina Nuova scheda</translation> <translation id="6672630473862787247">Attiva l'autenticazione ambientale nelle sessioni standard, Ospite e in modalità in incognito.</translation>
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index f64fb7f9a..13f8992 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -308,6 +308,12 @@ <translation id="1523774894176285446">設定したウェブサイトに対して起動する代替ブラウザ。</translation> <translation id="152657506688053119">デフォルトの検索プロバイダが使用する代替 URL のリスト</translation> <translation id="1530812829012954197">ホスト ブラウザに次の URL パターンを常に表示する</translation> +<translation id="1550222358325456797">ユーザーが <ph name="DEVICE_PRINTERS_POLICY" /> のどのプリンタを使用できるかを制御します。 + + このポリシーは、プリンタの一括設定で使用するアクセス ポリシーを指定するものです。<ph name="PRINTERS_ALLOW_ALL" /> を選択した場合、すべてのプリンタが表示されます。<ph name="PRINTERS_BLOCKLIST" /> を選択した場合、<ph name="DEVICE_PRINTERS_BLOCKLIST" /> で指定されたプリンタへのアクセスが制限されます。<ph name="PRINTERS_ALLOWLIST" /> を選択した場合、<ph name="DEVICE_PRINTERS_ALLOWLIST" /> で指定されたプリンタのみが選択可能になります。 + + このポリシーを設定しない場合、<ph name="PRINTERS_ALLOW_ALL" /> を選択した場合と同じ動作になります。 + </translation> <translation id="1553532014072799546">アプリごとの時間制限のホワイトリスト</translation> <translation id="1553956579506604198">外部拡張機能のインストールをブロックする</translation> <translation id="1555248923316727072">SAML ユーザー ID 管理の設定</translation> @@ -352,6 +358,12 @@ 一致するものが見つからない場合、アクセスは自動的に拒否されます。 ワイルドカードのパターンは許可されません。</translation> <translation id="1634989431648355062">これらのサイトで <ph name="FLASH_PLUGIN_NAME" /> プラグインを許可する</translation> +<translation id="1635112116013359810">ダウンロードしたコンテンツに対して、ローカルのストレージに保存する前に機密データ保護ルールの違反をチェックする必要がある URL パターンのリストです。このポリシーは、<ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" /> が有効に設定されている場合にのみ使用されます。 + + このポリシーを設定しないか、URL パターンのリストを空白にした場合、ダウンロードしたコンテンツに対して機密データ保護ルールの違反はチェックされません。 + + URL パターンは、https://www.chromium.org/administrators/url-blacklist-filter-format で説明されている <ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーと同じ形式で指定します。 + </translation> <translation id="1645793986494086629">スキーマ:</translation> <translation id="1648816843164517573">HSTS ポリシー チェックをバイパスする名前の一覧</translation> <translation id="1654087023995670109">ブラウザのゲストモードを強制的に適用する</translation> @@ -430,6 +442,12 @@ ポリシーは、<ph name="PRODUCT_OS_NAME" /> による利用規約のダウンロードが可能な URL に設定する必要があります。利用規約はテキスト形式で、MIME タイプのプレーン テキストとして配信してください。マークアップ形式は使用できません。</translation> <translation id="1750315445671978749">すべてのダウンロードをブロックする</translation> +<translation id="1752589537990399158">ユーザーに使用を許可しないプリンタを指定します。 + + このポリシーは、<ph name="DEVICE_PRINTERS_ACCESS_MODE" /> の値に <ph name="PRINTERS_BLOCKLIST" /> が選択されている場合にのみ使用されます。 + + このポリシーが使用される場合、ユーザーはこのポリシーで指定されている ID 以外のすべてのプリンタを使用できます。この ID は、<ph name="DEVICE_PRINTERS_POLICY" /> で指定されたファイル内の「id」または「guid」フィールドに対応している必要があります。 + </translation> <translation id="1767673020408652620">検索ボックスが「ゼロ状態」のときにアプリのおすすめを有効にする</translation> <translation id="1781356041596378058">このポリシーでは、Android 開発者向けオプションへのアクセスも管理できます。このポリシーを true に設定した場合、ユーザーは開発者向けオプションにアクセスできません。このポリシーを false に設定するか未設定のままにした場合、ユーザーは Android 設定アプリのビルド番号を 7 回タップすれば開発者向けオプションにアクセスできます。</translation> <translation id="1793346220873697538">デフォルトで PIN の印刷を無効にします</translation> @@ -989,6 +1007,7 @@ <translation id="2517466659416174529">バックグラウンド タブの凍結を許可する</translation> <translation id="2518231489509538392">音声の再生を許可する</translation> <translation id="2521581787935130926">ブックマーク バーでアプリのショートカットを表示する</translation> +<translation id="2522304491589804974">拡張機能インストールの許可リストを設定する</translation> <translation id="2528659559494311776">このポリシーでは、ダウングレード攻撃から接続を保護する TLS 1.3 のセキュリティ機能を管理します。このポリシーには下位互換性があり、TLS 1.2 準拠のサーバーまたはプロキシへの接続には影響しません。一部の古い TLS インターセプト プロキシには実装上の問題があり、互換性がない場合があります。 このポリシーを True に設定した場合や未設定の場合、<ph name="PRODUCT_NAME" /> はすべての接続で TLS 1.3 のセキュリティ保護を有効にします。 @@ -1078,6 +1097,7 @@ 有効な <ph name="URL_LABEL" /> パターンについて詳しくは、https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns をご覧ください。</translation> <translation id="2633084400146331575">音声フィードバックを有効にする</translation> +<translation id="264093234299818170">拒否リストに登録されている以外のすべてのプリンタを表示する。</translation> <translation id="2647069081229792812">ブックマークの編集を有効または無効にする</translation> <translation id="2649896281375932517">ユーザーの指定による</translation> <translation id="2650049181907741121">ユーザーがデバイスの蓋を閉じた際に行われる操作</translation> @@ -1206,6 +1226,12 @@ このポリシーが未設定の場合、最大桁数は適用されません。</translation> <translation id="2838830882081735096">データ移行と ARC を許可しない</translation> <translation id="2839294585867804686">ネットワーク ファイル共有の設定</translation> +<translation id="2841087187790109994">ダウンロードしたコンテンツに対して、不正なソフトウェアをチェックする必要がない URL パターンのリストです。このポリシーは、<ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" /> で、ダウンロードしたコンテンツに対する不正なソフトウェアのチェックを許可または実行するよう設定している場合にのみ使用されます。 + + このポリシーを設定しないか、URL パターンのリストを空白にした場合、ダウンロードしたすべてのコンテンツに対して不正なソフトウェアがチェックされます。 + + URL パターンは、https://www.chromium.org/administrators/url-blacklist-filter-format で説明されている <ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーと同じ形式で指定します。 + </translation> <translation id="284288632677954003">ブラウザの切り替えを行わない URL のリストを含む XML ファイルの URL です。</translation> <translation id="2854607717796010700">デバイスのメモリに関する情報を報告します。 @@ -1784,6 +1810,14 @@ この設定が無効になっている場合、ユーザーは Smart Lock Signin を使用できません。 このポリシーが未設定の場合、デフォルトの設定は、企業の管理対象ユーザーに対しては「許可しない」、管理対象外のユーザーに対しては「許可する」となります。</translation> +<translation id="380006997233063633">ユーザーに使用を許可しないプリンタを指定します。 + + このポリシーは、<ph name="DEVICE_NATIVE_PRINTERS_ACCESS_MODE" /> の値に <ph name="PRINTERS_BLACKLIST" /> が選択されている場合にのみ使用されます。 + + このポリシーが使用される場合、ユーザーはこのポリシーで指定されている ID 以外のすべてのプリンタを使用できます。この ID は、<ph name="DEVICE_PRINTERS_POLICY" /> で指定されたファイル内の「id」または「guid」フィールドに対応している必要があります。 + + このポリシーはサポートが終了しています。代わりに <ph name="DEVICE_PRINTERS_BLOCKLIST" /> を使用してください。 + </translation> <translation id="3800626789999016379">ファイルをダウンロードするときに <ph name="PRODUCT_NAME" /> が使用するディレクトリを設定します。 このポリシーを設定した場合は、ユーザーがディレクトリを指定していたり毎回ダウンロード先の場所を確認するよう指定していたりしても、ここで指定したディレクトリが <ph name="PRODUCT_NAME" /> で使用されます。 @@ -1824,6 +1858,9 @@ デフォルトで、すべてのネイティブ メッセージング ホストはホワイトリストに登録されています。ポリシーによってすべてのネイティブ メッセージング ホストがブラックリストに登録されている場合、ホワイトリストを使用して、このポリシーをオーバーライドできます。</translation> <translation id="3835692988507803626">言語のスペルチェックを自動的に無効にする</translation> <translation id="3837424079837455272">このポリシーでは、<ph name="PRODUCT_OS_NAME" /> への新しいユーザーの追加を許可するかどうかを管理します。このポリシーを使用して、ユーザーが Android で他の Google アカウントにログインすることを防ぐことはできません。ログインを防ぐには、<ph name="ARC_POLICY_POLICY_NAME" /> の一部として Android 用の <ph name="ACCOUNT_TYPES_WITH_MANAGEMENT_DISABLED_CLOUDDPC_POLICY_NAME" /> ポリシーを設定してください。</translation> +<translation id="3838094946886335701">このポリシーを設定した場合(推奨)、プロトコル ハンドラのリストを登録できます。プロトコル ハンドラはユーザーが登録するプロトコル ハンドラと統合され、両方のセットが使用されます。protocol プロパティには「mailto」などのスキームを設定します。URL プロパティには、「protocol」フィールドで指定したスキームを処理するアプリケーションの URL パターンを設定します。このパターンに「%s」プレースホルダを含めて、処理された URL で置き換えることもできます。 + + ユーザーはポリシーで登録されたプロトコル ハンドラを削除することはできません。ただし、新しいデフォルトのハンドラをインストールすることにより、ポリシーでインストールされたプロトコル ハンドラを変更できます。</translation> <translation id="3851039766298741586">アクティブなキオスク セッションに関する情報(アプリケーション ID、 バージョンなど)を報告します。 @@ -2318,6 +2355,14 @@ このポリシーが未設定の場合、デフォルトの設定は、企業の管理対象ユーザーに対しては「無効」、管理対象外のユーザーに対しては「有効」となります。</translation> <translation id="4555850956567117258">ユーザーのリモート認証を有効にする</translation> <translation id="4557134566541205630">デフォルトの検索プロバイダの新しいタブ ページ URL</translation> +<translation id="4558314937689062156">ユーザーが <ph name="DEVICE_PRINTERS_POLICY" /> のどのプリンタを使用できるかを制御します。 + + このポリシーは、プリンタの一括設定で使用するアクセス ポリシーを指定するものです。<ph name="PRINTERS_ALLOW_ALL" /> を選択した場合、すべてのプリンタが表示されます。<ph name="PRINTERS_BLACKLIST" /> を選択した場合、<ph name="DEVICE_NATIVE_PRINTERS_BLACKLIST" /> で指定されたプリンタへのアクセスが制限されます。<ph name="PRINTERS_WHITELIST" /> を選択した場合、<ph name="DEVICE_NATIVE_PRINTERS_WHITELIST" /> で指定されたプリンタのみが選択可能になります。 + + このポリシーを設定しない場合、<ph name="PRINTERS_ALLOW_ALL" /> を選択した場合と同じ動作になります。 + + このポリシーはサポートが終了しています。代わりに <ph name="DEVICE_PRINTERS_ACCESS_MODE" /> を使用してください。 + </translation> <translation id="4562165737444703281">Crostini ポート転送の [有効化 / 設定] をユーザーに許可する</translation> <translation id="4567137030726189378">デベロッパー ツールの使用を許可する</translation> <translation id="4567818663772614440">このポリシーでは、<ph name="PRODUCT_NAME" /> のクラウド レポートを管理します。クラウド レポートでは、ブラウザの操作に関する情報が Google 管理コンソールにアップロードされます。 @@ -2520,6 +2565,12 @@ このポリシーが false に設定されている場合は、<ph name="PRODUCT_NAME" /> のユーザー管理画面で新しいプロフィールを作成することはできません。</translation> <translation id="4970855112942626932">ブラウザのログインを無効にする</translation> <translation id="4978405676361550165">「OffHours」ポリシーが設定されている場合、指定されたデバイス ポリシーは、定義された時間間隔の間は無視されます(ポリシーのデフォルト設定が使用されます)。「OffHours」の開始または終了のイベントが発生するたびに、Chrome によってデバイス ポリシーが再適用されます。「OffHours」の時間が終了し、デバイス ポリシーの設定が変更されたとき(許可されたアカウント以外でユーザーがログインしたときなど)には、ユーザーは通知を受けたうえで強制的にログアウトされます。</translation> +<translation id="4979425999189127236">アップロードしたコンテンツに対して、不正なソフトウェアをチェックする必要がある URL パターンのリストです。このポリシーは、<ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" /> で、アップロードしたコンテンツに対する不正なソフトウェアのチェックを許可または実行するよう設定している場合にのみ使用されます。 + + このポリシーを設定しないか、URL パターンのリストを空白にした場合、アップロードしたコンテンツに対して不正なソフトウェアはチェックされません。 + + URL パターンは、https://www.chromium.org/administrators/url-blacklist-filter-format で説明されている <ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーと同じ形式で指定します。 + </translation> <translation id="4980635395568992380">データ タイプ:</translation> <translation id="4983201894483989687">古いプラグインの実行を許可する</translation> <translation id="4986560318567565414">代替ブラウザから Chrome への切り替えに使用するパスです。</translation> @@ -2715,6 +2766,22 @@ <translation id="5272684451155669299">このポリシーを true に設定した場合、ユーザーは Chrome デバイスのハードウェアから <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> の <ph name="CHALLENGE_USER_KEY_FUNCTION" /> を使用して、プライバシー CA に自身をリモート認証できます。 このポリシーを false に設定するか未設定のままにした場合、API 呼び出しは失敗し、エラーコードが返されます。</translation> +<translation id="5273333167497341402">デバイスに接続された企業プリンタの設定を指定します。 + + このポリシーを使用すると、<ph name="PRODUCT_OS_NAME" /> デバイスのプリンタ設定を指定できます。フォーマットは NativePrinters ディクショナリと同じですが、ホワイトリストまたはブラックリストに登録するプリンタごとに「id」または「guid」フィールドを追加で指定する必要があります。 + + このファイルのサイズは 5 MB 以下で、JSON でエンコードされている必要があります。5 MB は、約 2,1000 台のプリンタを指定してエンコードしたファイルに相当します。ファイルが完全にダウンロードされたかどうかの確認には、暗号化ハッシュが使用されます。 + + ファイルはダウンロードされた後、キャッシュされます。URL またはハッシュに変更があった場合は再度ダウンロードされます。 + + このポリシーを設定した場合、<ph name="PRODUCT_OS_NAME" /> によってプリンタ設定ファイルがダウンロードされ、<ph name="DEVICE_PRINTERS_ACCESS_MODE" />、<ph name="DEVICE_PRINTERS_ALLOWLIST" />、<ph name="DEVICE_PRINTERS_BLOCKLIST" /> に沿ってプリンタが利用可能になります。 + + このポリシーでは、ユーザーが各自のデバイスでプリンタを設定できるかどうかは制御されません。このポリシーは、個々のユーザーのプリンタ設定をサポートすることを目的としたものです。 + + これは <ph name="BULK_PRINTERS_POLICY" /> の追加ポリシーです。 + + このポリシーを設定しない場合、デバイス プリンタは存在しないことになり、他の <ph name="DEVICE_PRINTERS_POLICY_PATTERN" /> ポリシーは無視されます。 + </translation> <translation id="5273744932022326215">ログイン画面で「カーソルによるハイライト表示」ユーザー補助機能を有効にします。 このポリシーを true に設定した場合、カーソルによるハイライト表示はログイン画面で常に有効になります。 @@ -2807,6 +2874,7 @@ true に設定した場合は、ステータス情報が報告されます。 このポリシーは、Android アプリが有効になっている場合にのみ適用されます。</translation> +<translation id="5393009997533871906">許可リストに登録されているプリンタのみをユーザーに表示する</translation> <translation id="5395271912574071439">接続中にリモート アクセス ホストのカーテンを有効にします。 この設定を有効にすると、リモート接続の間、ホストの物理的な入出力デバイスが無効になります。 @@ -3326,6 +3394,21 @@ 詳しい例については、<ph name="PROXY_HELP_URL" /> をご覧ください。</translation> <translation id="6178075938488052838">このポリシーでは、<ph name="PRODUCT_OS_NAME" /> セッションを開始できるユーザーを管理します。このポリシーを設定しても、ユーザーが Android で他の Google アカウントにログインすることを防ぐことはできません。ログインを防ぐには、<ph name="ARC_POLICY_POLICY_NAME" /> の一部として Android 用の <ph name="ACCOUNT_TYPES_WITH_MANAGEMENT_DISABLED_CLOUDDPC_POLICY_NAME" /> ポリシーを設定してください。</translation> +<translation id="6179255742934310885">このポリシーはサポートが終了しています。代わりに <ph name="URL_ALLOWLIST_POLICY_NAME" /> ポリシーを使用してください。 + + URL 拒否リストの例外として、リスト内の URL へのアクセスを許可します。 + + このリストのエントリの形式については、<ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーの説明をご覧ください。 + + このポリシーは、アクセスを制限する拒否リストに対して例外を設定するために使用されます。たとえば、拒否リストで「*」を指定するとすべてのリクエストがブロックされますが、このポリシーを使用すれば、URL の限られたリストに対してアクセスを許可できます。特定のスキーム、他のドメインのサブドメイン、ポート、具体的なパスについて例外を設定することができます。 + + ある URL がブロックされるか許可されるかは、最も具体的なフィルタによって決定されます。許可リストは拒否リストよりも優先されます。 + + このポリシーに登録できるエントリは 1000 件までです。それ以降のエントリは無視されます。 + + また、このポリシーでは、リストで指定したプロトコル(「tel:」、「ssh:」など)のプロトコル ハンドラとして登録されている外部アプリケーションのブラウザによる自動呼び出しを有効化できるようにします。この機能は、<ph name="MS_AD_NAME" /> ドメインに追加された Windows インスタンス、デバイスの管理対象として登録された Windows 10 Pro または Enterprise インスタンス、MDM を介して管理されるか MCX を介してドメインに追加された macOS インスタンスでのみ使用できます。 + + このポリシーを設定しない場合、<ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーの拒否リストに対して例外は適用されません。</translation> <translation id="6183327369896253878">このポリシーを設定した場合、<ph name="PRODUCT_OS_NAME" /> でランチャーバーに表示されるアプリケーション ID が固定され、ユーザーが変更できなくなります。Chrome アプリの場合は ID(「pjkljhegncpnkpknbcohdijeoejaedia」など)、Android アプリの場合はパッケージ名(「com.google.android.gm」など)、ウェブアプリの場合は <ph name="WEB_APP_INSTALL_FORCE_LIST_POLICY_NAME" /> で使用する URL(「https://google.com/maps」など)を指定します。このポリシーが未設定の場合、ユーザーはランチャーの固定アプリのリストを変更できます。</translation> <translation id="6190022522129724693">デフォルトのポップアップ設定</translation> <translation id="6190367314942602985">ユーザー識別情報に関するレポートを作成</translation> @@ -3339,6 +3422,11 @@ デフォルトでは、拡張機能で企業用のキーを使用することはできません。この動作は、拡張機能に対して allowCorporateKeyUsage を false に設定した場合の結果と同じです。 拡張機能に対して allowCorporateKeyUsage が true に設定されている場合のみ、その拡張機能では企業用のプラットフォーム キーを任意のデータの署名に使用できます。このような許可を与えるのは、拡張機能からキーへのアクセスが攻撃から守られると信頼できる場合のみとしてください。</translation> +<translation id="6205094657236844092">このポリシーでは、ユーザーに操作を求めずにサイレント インストールするウェブアプリのリストを指定します。ユーザーはこれらのウェブアプリをアンインストールすることもオフにすることもできません。 + + このポリシーで指定するリストの個々の項目は、必須の <ph name="URL_LABEL" />(インストールするウェブアプリの URL)と 2 つの省略可能な <ph name="DEFAULT_LAUNCH_CONTAINER_LABEL" />(ウェブアプリを開く方法、デフォルトは新しいタブ)、<ph name="CREATE_DESKTOP_SHORTCUT_LABEL" />(<ph name="LINUX_OS_NAME" /> と Windows® のデスクトップ ショートカットを作成する場合は True)で構成されるオブジェクトとなります。 + + <ph name="PRODUCT_OS_NAME" /> シェルフへのアプリの固定については、<ph name="PINNED_LAUNCHER_APPS_POLICY_NAME" /> ポリシーをご覧ください。</translation> <translation id="6208896993204286313"><ph name="PRODUCT_NAME" /> のポリシー情報に関するレポートを作成</translation> <translation id="6210259502936598222">OS と <ph name="PRODUCT_NAME" /> のバージョン情報に関するレポートを作成</translation> <translation id="6210610748361191729">ポリシーを「false」に設定した場合、書き出しと読み込みの UI はユーザーに表示されません。ただし、仮想マシンで直接「lxc」コマンドを使って、コンテナの画像を書き出したり読み込んだりすることはできます。</translation> @@ -3413,6 +3501,13 @@ このポリシーの値はミリ秒単位とし、アイドル待ちの時間と同じかそれより短い時間を指定できます。 警告メッセージは、アイドル時の操作がログアウトかシャットダウンの場合にのみ表示されます。</translation> +<translation id="6337782882143073193">このポリシーはサポートが終了しています。代わりに <ph name="URL_BLOCKLIST_POLICY_NAME" /> を使用してください。 + + リストで指定したプロトコル スキームは <ph name="PRODUCT_NAME" /> で無効になります。 + + このリストにあるスキームを使用している URL は読み込まれず、その URL に移動することもできません。 + + このポリシーを設定しないか、リストを空白にした場合、すべてのスキームが <ph name="PRODUCT_NAME" /> でアクセス可能になります。</translation> <translation id="6342187235303612558">現在 DLP または不正なソフトウェアのスキャンでサポートされていないファイルをユーザーがアップロードまたはダウンロードできないようにします。</translation> <translation id="6352543686437322588">一定時間経過後に自動ログインするデバイスのローカル アカウントです。 @@ -3462,6 +3557,15 @@ <translation id="6449476513004303784">証明書の管理をユーザーに許可しない</translation> <translation id="6453641799812499182">新しい <ph name="CORS" /> の実装で <ph name="CORS" /> チェックの緩和措置を有効にする</translation> <translation id="645425387487868471"><ph name="PRODUCT_NAME" /> への強制ログインを有効にする</translation> +<translation id="646376229090051440">ユーザーに許可を求めずに外部アプリケーションを実行できるプロトコルのリストと、各プロトコルに対して許可する提供元のパターンのリストを定義します。プロトコルのリストは、末尾の区切り記号を含めずに指定してください。たとえば「skype:」や「skype://」ではなく「skype」と指定します。 + + このポリシーを設定した場合、プロトコルがリストで指定されていて、プロトコルを実行するサイトの提供元がそのプロトコルの allowed_origins リストのパターンと一致する場合にのみ、ユーザーに許可を求めずに外部アプリケーションを実行できます。いずれかの条件を満たさない場合、ポリシーによって外部プロトコルの実行プロンプトを省略することはできません。 + + このポリシーを設定しない場合、プロンプトを表示せずにプロトコルを実行することはデフォルトで許可されません。<ph name="EXTERNAL_PROTOCOL_DIALOG_SHOW_ALWAYS_OPEN_CHECKBOX_POLICY_NAME" /> ポリシーが無効に設定されていない場合、ユーザーはプロトコルやサイト単位でプロンプト表示を無効にできます。このポリシーは、ユーザーがプロトコルやサイト単位で設定したプロンプト表示の無効化に影響しません。 + + 提供元の一致パターンは、<ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーと同様の形式で指定します。詳しくは、http://www.chromium.org/administrators/url-blacklist-filter-format をご覧ください。 + + ただし、このポリシーの提供元の一致パターンに「/path」要素や「@query」要素を含めることはできません。「/path」要素や「@query」要素が含まれているパターンは無視されます。</translation> <translation id="6464074037294098618">住所の自動入力を有効にします</translation> <translation id="6467613372414922590">ユーザーレベルのネイティブ メッセージング ホスト(管理者権限なしでインストールされたホスト)を許可する</translation> <translation id="6468980648680553776">このポリシーはサポートを終了しました。代わりに RemoteAccessHostClientDomainList を使用してください。</translation> @@ -3474,6 +3578,12 @@ この設定が有効な場合、YouTube では「中」以上の制限付きモードが常に適用されます。 この設定が無効または未設定の場合、<ph name="PRODUCT_NAME" /> によって YouTube の制限付きモードは適用されません。ただし、YouTube ポリシーなどの外部ポリシーによって適用される可能性があります。</translation> +<translation id="6492737559291967859">このポリシーでは、<ph name="PRODUCT_NAME" /> で使用する言語 / 地域を指定します。 + + このポリシーをオフに設定するか未設定のままにした場合は、以下のうち、最初の有効な言語 / 地域が使用されます。 + 1)ユーザー指定の言語 / 地域(設定されている場合) + 2)システムの言語 / 地域 + 3)代替の言語 / 地域(en-US)</translation> <translation id="6495337487202227251">このポリシーはサポートが終了しており、<ph name="PRODUCT_OS_NAME" /> バージョン 85 で削除されます。代わりに <ph name="SCREEN_LOCK_DELAYS_POLICY_NAME" /> を使用してください。 バッテリーでの使用中、ユーザー入力が行われなくなってから画面をロックするまでの時間を指定します。 @@ -3560,6 +3670,14 @@ True に設定すると、デバイスによる Powerwash の実行が許可されます。 未設定のままにすると、デフォルトで True に設定され、デバイスによる Powerwash の実行が許可されます。 </translation> +<translation id="6613434166485278315">ユーザーに使用を許可するプリンタを指定します。 + + このポリシーは、<ph name="DEVICE_NATIVE_PRINTERS_ACCESS_MODE" /> の値に <ph name="PRINTERS_WHITELIST" /> が選択されている場合にのみ使用されます。 + + このポリシーが使用される場合、ユーザーはこのポリシーで指定されている値に ID が一致するプリンタのみを使用できます。この ID は、<ph name="DEVICE_PRINTERS_POLICY" /> で指定されたファイル内の「id」または「guid」フィールドに対応している必要があります。 + + このポリシーはサポートが終了しています。代わりに <ph name="DEVICE_PRINTERS_ALLOWLIST" /> を使用してください。 + </translation> <translation id="66265932317331474">CPU 情報を報告する</translation> <translation id="6628043374475466084">アップロードしたコンテンツに対して、機密データ保護ルールの違反をチェックしない URL パターン</translation> <translation id="6628120204569232711">ストレージの状態を報告する</translation> @@ -4132,6 +4250,12 @@ ユーザーのデバイスが管理対象の場合、この機能を使用できるかどうかは、対応するデバイス ポリシーの設定にもよります。 ユーザーのデバイスが管理対象でない場合、この機能を使用できるかどうかは、ユーザーがデバイスの所有者かどうかにもよります。</translation> +<translation id="7567748950909116096">ユーザーに使用を許可するプリンタを指定します。 + + このポリシーは、<ph name="DEVICE_PRINTERS_ACCESS_MODE" /> の値に <ph name="PRINTERS_ALLOWLIST" /> が選択されている場合にのみ使用されます。 + + このポリシーが使用される場合、ユーザーはこのポリシーで指定されている値に ID が一致するプリンタのみを使用できます。この ID は、<ph name="DEVICE_PRINTERS_POLICY" /> で指定されたファイル内の「id」または「guid」フィールドに対応している必要があります。 + </translation> <translation id="7570291542739287032">クラウドのみ</translation> <translation id="757395965347379751">この設定が有効になっていると、SHA-1 署名証明書が検証され、ローカルにインストールされた CA 証明書に関連付けされている限り、<ph name="PRODUCT_NAME" /> は SHA-1 署名証明書を許可します。 @@ -4247,6 +4371,17 @@ このポリシーを未設定または空白のままにした場合は、デフォルトの新しいタブページが使用されます。 このポリシーは、<ph name="MS_AD_NAME" /> ドメインに追加された Windows インスタンス、デバイスの管理対象として登録された Windows 10 Pro または Enterprise インスタンス、MDM を介して管理されるか MCX を介してドメインに追加された macOS インスタンスでのみ使用できます。</translation> +<translation id="7720830724269154872">このポリシーはサポートが終了しています。代わりに <ph name="SAFE_BROWSING_ALLOWLIST_DOMAINS_POLICY_NAME" /> を使用してください。 + + セーフ ブラウジングで信頼するドメインのリストを設定します。動作は次のようになります。 + URL が指定ドメインと一致する場合、セーフ ブラウジングでは、危険なリソース(フィッシング、不正なソフトウェア、迷惑ソフトウェアなど)の確認は行われません。 + ダウンロードのホストが指定ドメインの場合、セーフ ブラウジングのダウンロード保護サービスによる確認は行われません。 + ページの URL が指定ドメインと一致する場合、セーフ ブラウジングのパスワード保護サービスによるパスワードの再利用の確認は行われません。 + + この設定が有効になっている場合、セーフ ブラウジングでは指定ドメインが信頼されます。 + この設定が無効になっているか未設定の場合は、すべてのリソースにデフォルトのセーフ ブラウジング保護が適用されます。 + + このポリシーは、<ph name="MS_AD_NAME" /> ドメインに追加された Windows インスタンス、デバイスの管理対象として登録された Windows 10 Pro または Enterprise インスタンス、MDM を介して管理されるか MCX を介してドメインに追加された macOS インスタンスでのみ使用できます。</translation> <translation id="7721944091689270995"><ph name="PLUGIN_VM_NAME" /> ユーザー ID</translation> <translation id="7724161903134898864">このポリシーを 1 に設定した場合、ウェブサイトによるポップアップの表示が許可されます。このポリシーを 2 に設定した場合、ポップアップは拒否されます。 @@ -4531,6 +4666,11 @@ <translation id="8176035528522326671">企業ユーザーがメインのマルチプロフィール ユーザーとしてのみ操作できるようにする(企業の管理対象ユーザーに対するデフォルトの動作)</translation> <translation id="8183108371184777472">ブラウザ ウィンドウの起動を抑制する</translation> <translation id="8186911565834244165">ユーザーからのフィードバックを許可する</translation> +<translation id="8196558469954193908">クライアント証明書が使用されているときに HTTP/2 接続の統合を許可するよう指定します。接続を統合するには、新しい接続候補のホスト名と既存の接続のホスト名が、このポリシーに記述されているパターンの 1 つ以上に一致する必要があります。このポリシーでは、<ph name="URL_BLOCKLIST_POLICY_NAME" /> フィルタの形式を使ってホストのリストを指定します。たとえば、「example.com」と指定すると「example.com」とすべてのサブドメイン(「sub.example.com」など)が一致することになりますが、「.example.net」と指定すると「example.net」のみが一致することになります。 + + クライアント証明書を使用する接続を介して異なるホストへのリクエストを統合すると、セキュリティやプライバシーの問題が発生する場合があります。これは、すべてのリクエストに対して、ユーザーが明示的に権限を与えていない場合でも間接的な権限が与えられてしまうためです。このポリシーは一時的なもので、将来のリリースで削除される予定です。https://crbug.com/855690 をご覧ください。 + + このポリシーが未設定の場合、クライアント証明書を使用する接続で HTTP/2 接続の統合は許可されません。これはデフォルトの動作です。</translation> <translation id="8213770777756919897">このポリシーはサポートが終了しており、<ph name="PRODUCT_OS_NAME" /> バージョン 85 で削除されます。代わりに <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> を使用してください。 このポリシーを設定した場合は、アイドル状態になってから一定の時間(アイドル待ちとして指定された時間)が経過すると、<ph name="PRODUCT_OS_NAME" /> で指定の操作が行われます。アイドル待ちの時間は別途設定できます。 @@ -4547,6 +4687,7 @@ このポリシーを False に設定するか未設定のままにした場合、他のソースからの <ph name="FLASH_PLUGIN_NAME" /> コンテンツや小さなコンテンツはブロックされる可能性があります。 注: <ph name="FLASH_PLUGIN_NAME" /> を実行できるウェブサイトを管理するには、<ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME" />、<ph name="PLUGINS_ALLOWED_FOR_URLS_POLICY_NAME" />、<ph name="PLUGINS_BLOCKED_FOR_URLS_POLICY_NAME" /> のポリシーをご覧ください。</translation> +<translation id="82530263956734297">拒否リストから除外する拡張機能 ID</translation> <translation id="8256688113167012935">対応するデバイスのローカル アカウントに対し、ログイン画面でアカウント名 <ph name="PRODUCT_OS_NAME" /> を表示するかどうかを指定します。 このポリシーが設定されている場合、対応するデバイスのローカル アカウントに対し、ログイン画面では画像ベースのログイン選択ツール内で指定の文字列が使用されます。 @@ -4985,6 +5126,19 @@ <translation id="8860342862142842017">リストで指定された subjectPublicKeyInfo ハッシュに対して Certificate Transparency(証明書の透明性)の適用を無効にする</translation> <translation id="8864975621965365890">サイトが <ph name="PRODUCT_FRAME_NAME" /> によってレンダリングされるときに表示されるサポート終了メッセージを抑制します。</translation> <translation id="886645881209114007">ユーザーが <ph name="PRODUCT_OS_NAME" /> で <ph name="PLUGIN_VM_NAME" /> を使用できるようにする</translation> +<translation id="8867533754744915440">URL 拒否リストの例外として、リスト内の URL へのアクセスを許可します。 + + このリストのエントリの形式については、<ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーの説明をご覧ください。 + + このポリシーは、アクセスを制限する拒否リストに対して例外を設定するために使用されます。たとえば、拒否リストで「*」を指定するとすべてのリクエストがブロックされますが、このポリシーを使用すれば、URL の限られたリストに対してアクセスを許可できます。特定のスキーム、他のドメインのサブドメイン、ポート、具体的なパスについて例外を設定することができます。 + + ある URL がブロックされるか許可されるかは、最も具体的なフィルタによって決定されます。許可リストは拒否リストよりも優先されます。 + + このポリシーに登録できるエントリは 1000 件までです。それ以降のエントリは無視されます。 + + また、このポリシーでは、リストで指定したプロトコル(「tel:」、「ssh:」など)のプロトコル ハンドラとして登録されている外部アプリケーションのブラウザによる自動呼び出しを有効化できるようにします。この機能は、<ph name="MS_AD_NAME" /> ドメインに追加された Windows インスタンス、デバイスの管理対象として登録された Windows 10 Pro または Enterprise インスタンス、MDM を介して管理されるか MCX を介してドメインに追加された macOS インスタンスでのみ使用できます。 + + このポリシーを設定しない場合、<ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーの拒否リストに対して例外は適用されません。</translation> <translation id="8871974300055371298">コンテンツの設定</translation> <translation id="8872402969096027761">ログイン画面で「自動クリック」ユーザー補助機能を有効にします。 @@ -5018,6 +5172,12 @@ ディスプレイとグラフィックのステータスが報告されます。</translation> <translation id="891435090623616439">JSON 文字列としてのエンコードについて詳しくは、<ph name="COMPLEX_POLICIES_URL" /> をご覧ください</translation> <translation id="8917070657147922192">インストール済み CA 証明書の管理をユーザーに許可する。</translation> +<translation id="8927015246639044346">アップロードしたファイル、クリップボードから貼り付けたデータ、ドラッグ&ドロップしたデータに対して、機密データ保護ルールの違反をチェックする必要がない URL パターンのリストです。このポリシーは、<ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" /> が有効に設定されている場合にのみ使用されます。 + + このポリシーを設定しないか、URL パターンのリストを空白にした場合、すべてのコンテンツに対して機密データ保護ルールの違反がチェックされます。 + + URL パターンは、https://www.chromium.org/administrators/url-blacklist-filter-format で説明されている <ph name="URL_BLOCKLIST_POLICY_NAME" /> ポリシーと同じ形式で指定します。 + </translation> <translation id="8937282917198525844"> M81 以降、標準のフォーム コントロール要素(<select>、<button>、<input type=date> など)のデザインが一新され、ユーザー補助機能とプラットフォームの統一性が改善されました。このポリシーは古い「従来」のフォーム コントロール要素を復元します(M84 まで対応)。 このポリシーを True に設定した場合、すべてのサイトで「従来」のフォーム コントロール要素が使用されます。
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb index ce47ff3f..4d38193 100644 --- a/components/policy/resources/policy_templates_nl.xtb +++ b/components/policy/resources/policy_templates_nl.xtb
@@ -1889,7 +1889,7 @@ Standaard staan alle hosts voor systeemeigen berichten op de witte lijst, maar als alle hosts voor systeemeigen berichten op basis van beleid op de zwarte lijst zijn gezet, kan de witte lijst worden gebruikt om dat beleid te overschrijven.</translation> <translation id="3835692988507803626">Uitschakeling van spellingcontrole voor talen afdwingen</translation> <translation id="3837424079837455272">Met dit beleid wordt bepaald of er nieuwe gebruikers aan <ph name="PRODUCT_OS_NAME" /> kunnen worden toegevoegd. Hiermee wordt niet voorkomen dat gebruikers binnen Android inloggen op extra Google-accounts. Als je dit wilt voorkomen, kun je het Android-specifieke beleid <ph name="ACCOUNT_TYPES_WITH_MANAGEMENT_DISABLED_CLOUDDPC_POLICY_NAME" /> configureren als onderdeel van <ph name="ARC_POLICY_POLICY_NAME" />.</translation> -<translation id="3838094946886335701">Als je het beleid instelt (alleen zoals aanbevolen), kun je een lijst met protocolhandlers registreren. Deze worden samengevoegd met de protocolhandlers die de gebruiker registreert, waarna beide sets gebruikt worden. Stel de eigenschap 'protocol' in op het schema, zoals 'mailto', en stel de eigenschap 'URL' in op het URL-patroon van de app die het schema verwerkt dat in het veld 'protocol' wordt gespecificeerd. Het patroon mag de tijdelijke aanduiding '%s' bevatten die wordt vervangen door verwerkte URL. +<translation id="3838094946886335701">Als je het beleid instelt (alleen zoals aanbevolen), kun je een lijst met protocolhandlers registreren. Deze worden samengevoegd met de protocolhandlers die de gebruiker registreert, waarna beide sets gebruikt worden. Stel de eigenschap 'protocol' in op het schema, zoals 'mailto', en stel de eigenschap 'URL' in op het URL-patroon van de app die het schema verwerkt dat in het veld 'protocol' wordt gespecificeerd. Het patroon mag de tijdelijke aanduiding '%s' bevatten die wordt vervangen door de verwerkte URL. Gebruikers kunnen een protocolhandler niet verwijderen als deze is geregistreerd door een beleid. Als ze een nieuwe standaard handler installeren, kunnen ze de protocolhandlers wijzigen die door het beleid zijn geïnstalleerd.</translation> <translation id="3851039766298741586">Informatie rapporteren over de actieve kiosksessie, zoals @@ -4792,9 +4792,9 @@ <translation id="8176035528522326671">Toestaan dat Enterprise-gebruiker alleen primair gebruiker van meerdere profielen is (standaardgedrag voor beheerde Enterprise-gebruikers)</translation> <translation id="8183108371184777472">Lancering van browservenster onderdrukken</translation> <translation id="8186911565834244165">Gebruikersfeedback toestaan</translation> -<translation id="8196558469954193908">Dit beleid staat toe dat HTTP/2-verbindingen kunnen worden samengevoegd als clientcertificaten worden gebruikt. De verbindingen kunnen alleen worden samengevoegd als zowel de hostnaam van de potentiële nieuwe verbinding als de hostnaam van een bestaande verbinding overeenkomen met een of meer patronen die in dit beleid worden beschreven. Dit beleid bestaat uit een lijst van hosts die de filterindeling '<ph name="URL_BLOCKLIST_POLICY_NAME" />' gebruiken: 'example.com' komt overeen met 'example.com' en alle subdomeinen (zoals 'sub.example.com'), terwijl '.example.net' exact overeenkomt met 'example.net'. +<translation id="8196558469954193908">Dit beleid staat toe dat HTTP/2-verbindingen kunnen worden samengevoegd als clientcertificaten worden gebruikt. De verbindingen kunnen alleen worden samengevoegd als zowel de hostnaam van de potentiële nieuwe verbinding als de hostnaam van een bestaande verbinding overeenkomt met een of meer patronen die in dit beleid worden beschreven. Dit beleid bestaat uit een lijst van hosts die de filterindeling '<ph name="URL_BLOCKLIST_POLICY_NAME" />' gebruiken: 'example.com' komt overeen met 'example.com' en alle subdomeinen (zoals 'sub.example.com'), terwijl '.example.net' exact overeenkomt met 'example.net'. - Er kunnen beveiligings- of privacyproblemen ontstaan bij samenvoegingsverzoeken voor verschillende hosts via verbindingen die clientcertificaten gebruiken. De ambient authority wordt namelijk toegepast op alle verzoeken, zelfs als de gebruiker hiervoor niet rechtstreeks een machtiging voor heeft gegeven. Dit beleid is tijdelijk en wordt verwijderd in een toekomstige release. Zie https://crbug.com/855690. + Er kunnen beveiligings- of privacyproblemen ontstaan bij samenvoegingsverzoeken voor verschillende hosts via verbindingen die clientcertificaten gebruiken. De ambient authority wordt namelijk toegepast op alle verzoeken, zelfs als de gebruiker hiervoor niet rechtstreeks een machtiging heeft gegeven. Dit beleid is tijdelijk en wordt verwijderd in een toekomstige release. Zie https://crbug.com/855690. Als dit beleid niet is ingesteld, wordt het standaardgedrag toegepast. Dit houdt in dat HTTP/2-verbindingen niet kunnen worden samengevoegd voor verbindingen die client certificates gebruiken.</translation> <translation id="8213770777756919897">Dit beleid is beëindigd en wordt verwijderd in <ph name="PRODUCT_OS_NAME" />-versie 85. Gebruik in plaats daarvan <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index 11b8c25..b5ba256b 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -4313,7 +4313,7 @@ Se o dispositivo do usuário não for gerenciado, a disponibilidade da funcionalidade será dependente também da possibilidade de o usuário não ser proprietário do dispositivo.</translation> <translation id="7567748950909116096">Especifica as impressoras que um usuário pode usar. - Esta política só será usada se <ph name="PRINTERS_ALLOWLIST" /> for escolhida para <ph name="DEVICE_PRINTERS_ACCESS_MODE" /> + Esta política só será usada se <ph name="PRINTERS_ALLOWLIST" /> for escolhida para <ph name="DEVICE_PRINTERS_ACCESS_MODE" />. Se esta política for usada, somente as impressoras com IDs que correspondem aos valores da política estarão disponíveis para o usuário. Os IDs precisam corresponder aos campos "id" ou "guid" no arquivo especificado na <ph name="DEVICE_PRINTERS_POLICY" />. </translation>
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb index f8492de..b2c04d2 100644 --- a/components/policy/resources/policy_templates_tr.xtb +++ b/components/policy/resources/policy_templates_tr.xtb
@@ -3482,7 +3482,7 @@ Bu listedeki girişlerin biçimi için '<ph name="URL_BLOCKLIST_POLICY_NAME" />' politikasının açıklamasına bakın. - Bu politika, kısıtlayıcı engellenenler listeleri için tanımlanan istisnaları açmak için kullanılabilir. Örneğin '*' kullanılarak tüm talepler engellenebilir ve bu politika, sınırlı bir URL listesine erişim izni vermek için kullanılabilir. Aynı zamanda bazı belirli başka alan adlarının alt alan adları, bağlantı noktaları ve belirli yolları için tanımlanan istisnaları açmak için kullanılabilir. + Bu politika, kısıtlayıcı engellenenler listeleri için tanımlanan istisnaları açmak için kullanılabilir. Örneğin '*' kullanılarak tüm istekler engellenebilir ve bu politika, sınırlı bir URL listesine erişim izni vermek için kullanılabilir. Aynı zamanda bazı belirli başka alan adlarının alt alan adları, bağlantı noktaları ve belirli yolları için tanımlanan istisnaları açmak için kullanılabilir. En belirgin filtre, bir URL'nin engellenip engellenmediğini belirler. İzin verilenler listesi, engellenenler listesine göre önceliklidir. @@ -5258,7 +5258,7 @@ Bu listedeki girişlerin biçimi için '<ph name="URL_BLOCKLIST_POLICY_NAME" />' politikasının açıklamasına bakın. - Bu politika, kısıtlayıcı engellenenler listeleri için tanımlanan istisnaları açmak için kullanılabilir. Örneğin '*' kullanılarak tüm talepler engellenebilir ve bu politika, sınırlı bir URL listesine erişim izni vermek için kullanılabilir. Aynı zamanda bazı belirli başka alan adlarının alt alan adları, bağlantı noktaları ve belirli yolları için tanımlanan istisnaları açmak için kullanılabilir. + Bu politika, kısıtlayıcı engellenenler listeleri için tanımlanan istisnaları açmak için kullanılabilir. Örneğin '*' kullanılarak tüm istekler engellenebilir ve bu politika, sınırlı bir URL listesine erişim izni vermek için kullanılabilir. Aynı zamanda bazı belirli başka alan adlarının alt alan adları, bağlantı noktaları ve belirli yolları için tanımlanan istisnaları açmak için kullanılabilir. En belirgin filtre, bir URL'nin engellenip engellenmediğini belirler. İzin verilenler listesi, engellenenler listesine göre önceliklidir.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index cf22027..5f7ee33 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -205,6 +205,11 @@ <translation id="1376119291123231789">Bật chế độ sạc pin nâng cao</translation> <translation id="1384459581748403878">Tham khảo: <ph name="REFERENCE_URL" /></translation> <translation id="138847842893090358">Báo cáo trạng thái cập nhật hệ điều hành</translation> +<translation id="1390901586107713894">Cho phép bạn chỉ định những tiện ích mà người dùng KHÔNG THỂ cài đặt. Những tiện ích đã cài đặt sẽ tắt nếu bị chặn. Người dùng không có cách nào để bật những tiện ích đó. Sau khi bạn xóa một tiện ích (bị tắt do thuộc danh sách chặn) khỏi danh sách chặn, thì tiện ích này sẽ tự động được bật lại. + + Giá trị danh sách chặn là "*" có nghĩa là tất cả tiện ích đều bị chặn trừ khi những tiện ích đó được liệt kê rõ ràng trong danh sách cho phép. + + Nếu bạn không đặt chính sách này, thì người dùng có thể cài đặt bất kỳ tiện ích nào trong <ph name="PRODUCT_NAME" />.</translation> <translation id="1393485621820363363">Đã bật máy in kết nối với thiết bị dành cho doanh nghiệp</translation> <translation id="1397855852561539316">URL đề xuất của nhà cung cấp dịch vụ tìm kiếm mặc định</translation> <translation id="1404043648050567997">Dịch vụ Duyệt web an toàn hiển thị một trang cảnh báo khi người dùng truy cập các trang web bị gắn cờ là có thể độc hại. Khi bạn bật mục cài đặt này, người dùng sẽ không thể tiếp tục truy cập vào trang web độc hại từ trang cảnh báo đó. @@ -1040,6 +1045,13 @@ <translation id="253135976343875019">Thời gian chờ cảnh báo trạng thái không sử dụng khi chạy trên nguồn AC</translation> <translation id="2536525645274582300">Người dùng quyết định có bật dịch vụ vị trí của Google hay không</translation> <translation id="254653220329944566">Bật tính năng báo cáo đám mây của <ph name="PRODUCT_NAME" /></translation> +<translation id="2547854230073316008">Việc đặt chính sách này sẽ đặt độ phân giải và hệ số tỷ lệ cho mỗi màn hình. Tùy chọn cài đặt màn hình bên ngoài áp dụng cho các màn hình đã kết nối. (Chính sách này không áp dụng nếu màn hình không hỗ trợ tỷ lệ hoặc độ phân giải đã chỉ định.) + + Khi đặt <ph name="EXTERNAL_USE_NATIVE" /> thành True, chính sách này sẽ bỏ qua <ph name="EXTERNAL_WIDTH" /> và <ph name="EXTERNAL_HEIGHT" /> rồi đặt các màn hình bên ngoài về độ phân giải gốc. Khi đặt <ph name="EXTERNAL_USE_NATIVE" /> thành False hoặc không đặt chính sách này và <ph name="EXTERNAL_WIDTH" /> hay <ph name="EXTERNAL_HEIGHT" />, chính sách này sẽ không ảnh hưởng đến các màn hình bên ngoài. + + Khi đặt cờ đề xuất thành True, người dùng có thể thay đổi độ phân giải và hệ số tỷ lệ của màn hình bất kỳ trên trang cài đặt. Tuy nhiên, tùy chọn cài đặt sẽ chuyển về như cũ vào lần khởi động lại tiếp theo. Khi bạn đặt cờ đề xuất thành False hoặc không đặt cờ này, người dùng không thể thay đổi các tùy chọn cài đặt màn hình. + + Lưu ý: Đặt <ph name="EXTERNAL_WIDTH" /> và <ph name="EXTERNAL_HEIGHT" /> bằng pixel và <ph name="EXTERNAL_SCALE_PERCENTAGE" /> và <ph name="INTERNAL_SCALE_PERCENTAGE" /> ở dạng tỷ lệ phần trăm.</translation> <translation id="2548397295248733155">Lưu ý rằng chúng tôi không dùng chính sách này nữa và sẽ xóa khỏi <ph name="PRODUCT_OS_NAME" /> phiên bản 85. Thay vào đó, vui lòng sử dụng <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />. Chỉ định khoảng thời gian kể từ lần cuối cùng người dùng nhập cho đến thời điểm màn hình bị tắt khi chạy bằng pin. @@ -1520,6 +1532,9 @@ <translation id="3251500716404598358">Định cấu hình chính sách để chuyển đổi giữa các trình duyệt. Các trang web được định cấu hình sẽ tự động mở trong trình duyệt khác không phải là <ph name="PRODUCT_NAME" />.</translation> +<translation id="3255762580838224124">Nếu đặt chính sách này, thì mỗi màn hình sẽ xoay theo một hướng chỉ định mỗi khi khởi động lại và vào lần đầu tiên màn hình được kết nối sau khi giá trị chính sách thay đổi. Người dùng có thể thay đổi chế độ xoay màn hình thông qua trang cài đặt sau khi đăng nhập. Tuy nhiên, chế độ này sẽ chuyển về như cũ vào lần khởi động lại tiếp theo. Chính sách này áp dụng cho màn hình chính và phụ. + + Nếu bạn chưa đặt chính sách này, thì giá trị mặc định là 0 độ và người dùng có thể thay đổi giá trị này. Trong trường hợp này, giá trị mặc định không được áp dụng thêm lần nữa khi khởi động lại.</translation> <translation id="3264793472749429012">Mã hóa của nhà cung cấp dịch vụ tìm kiếm mặc định</translation> <translation id="3273221114520206906">Cài đặt JavaScript mặc định</translation> <translation id="3284094172359247914">Kiểm soát việc sử dụng API WebUSB</translation> @@ -1873,6 +1888,17 @@ <translation id="382476126209906314">Định cấu hình tiền tố TalkGadget cho máy chủ truy cập từ xa</translation> <translation id="3824972131618513497">Kiểm soát các tùy chọn cài đặt liên quan đến quản lý nguồn và khởi động lại.</translation> <translation id="3826475866868158882">Đã bật Dịch vụ vị trí của Google</translation> +<translation id="383002993919016993">Chính sách này ngăn người dùng tải trang web từ các URL bị chặn. Danh sách chặn cung cấp danh sách các mẫu URL chỉ định những URL sẽ bị chặn. + + Bạn phải định dạng mẫu URL theo định dạng trên trang web https://www.chromium.org/administrators/url-blacklist-filter-format. + + Bạn có thể xác định các trường hợp ngoại lệ trong chính sách về danh sách URL được cho phép. Những chính sách này chỉ giới hạn trong 1000 mục; các mục sau đó sẽ bị bỏ qua. + + Lưu ý rằng bạn không nên chặn các URL "chrome://*" nội bộ vì điều này có thể dẫn đến lỗi không mong muốn. + + Bạn có thể chặn các URL "javascript://*". Tuy nhiên, chính sách này chỉ ảnh hưởng đến JavaScript đã nhập trong thanh địa chỉ (hoặc các bookmarklet). Lưu ý rằng nếu dữ liệu được tải động thì các URL JavaScript trong trang không phải tuân theo chính sách này. Ví dụ: nếu bạn chặn "example.com/abc", thì trang "example.com" sẽ vẫn có thể tải "example.com/abc" qua XMLHTTPRequest. + + Nếu bạn không đặt chính sách này, thì không có URL nào sẽ bị chặn trên trình duyệt.</translation> <translation id="3831376478177535007">Khi bạn bật cài đặt này, <ph name="PRODUCT_NAME" /> sẽ cho phép tin cậy các chứng chỉ do hoạt động của Cơ sở hạ tầng khóa công khai (PKI) cũ của Symantec Corporation phát hành nếu các chứng chỉ xác thực thành công và liên kết với một chứng chỉ CA được công nhận. Lưu ý rằng chính sách này phụ thuộc vào việc hệ điều hành vẫn công nhận các chứng chỉ từ hạ tầng cũ của Symantec. Nếu bản cập nhật hệ điều hành thay đổi cách xử lý các chứng chỉ đó của hệ điều hành, thì chính sách này sẽ không còn hiệu lực nữa. Ngoài ra, chính sách này có vai trò là giải pháp tạm thời để cho các doanh nghiệp có thêm thời gian di chuyển đổi chứng chỉ Symantec cũ. Chính sách này sẽ bị loại bỏ vào đúng hoặc khoảng ngày 01 tháng 01 năm 2019. @@ -2544,6 +2570,7 @@ Nếu bạn đặt chính sách này, thì người dùng sẽ không thể thay đổi được. Nếu bạn không đặt chính sách này, thì người dùng sẽ quyết định xem kệ có tự động ẩn hay không.</translation> <translation id="4816674326202173458">Cho phép người dùng doanh nghiệp trở thành người dùng vừa chính vừa phụ (Hành vi mặc định cho người dùng không được quản lý)</translation> <translation id="4826326557828204741">Tác vụ sẽ thực hiện khi đạt độ trễ không hoạt động trong khi chạy bằng nguồn pin</translation> +<translation id="482803100714220060">Hiển thị URL đầy đủ</translation> <translation id="4830531683854509779">Báo cáo thống kê phần cứng cho các thành phần SoC. Nếu bạn không đặt chính sách này hoặc đặt thành false, thì số liệu thống kê sẽ không được báo cáo. @@ -2574,6 +2601,11 @@ </translation> <translation id="489803897780524242">Tham số kiểm soát vị trí cụm từ tìm kiếm cho nhà cung cấp dịch vụ tìm kiếm mặc định</translation> <translation id="4899708173828500852">Bật Duyệt web an toàn</translation> +<translation id="4902163780937592202">Bật các chính sách hợp nhất danh sách cài đặt tiện ích <ph name="EXTENSION_INSTALL_BLOCKLIST_POLICY_NAME" />, <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" /> và <ph name="EXTENSION_INSTALL_FORCELIST_POLICY_NAME" />. + + Nếu bạn bật tùy chọn cài đặt này, thì các giá trị trong chính sách nền tảng của máy, chính sách đám mây của máy và chính sách nền tảng của người dùng sẽ được hợp nhất thành một danh sách và được sử dụng toàn bộ thay vì chỉ sử dụng các giá trị từ một nguồn có mức ưu tiên cao nhất. + + Nếu bạn tắt hoặc không đặt tùy chọn cài đặt này, thì chỉ các mục danh sách từ nguồn có mức ưu tiên cao nhất mới được sử dụng, còn tất cả các nguồn khác sẽ hiển thị dưới dạng nguồn xung đột nhưng bị bỏ qua.</translation> <translation id="4906194810004762807">Chính sách tốc độ làm mới cho thiết bị</translation> <translation id="4917385247580444890">Mạnh</translation> <translation id="4919122295221518724">Cho phép thắt chặt việc xử lý nội dung hỗn hợp</translation> @@ -2683,6 +2715,19 @@ Nếu bạn không đặt chính sách này, độ dài tối thiểu của mã PIN là 6 chữ số sẽ được thực thi. Đây là giá trị tối thiểu được đề xuất.</translation> +<translation id="5077993112092904096">Chính sách này không còn dùng nữa, vui lòng sử dụng chính sách "<ph name="URL_BLOCKLIST_POLICY_NAME" />". + + Chính sách này ngăn người dùng tải trang web từ các URL bị chặn. Danh sách chặn cung cấp danh sách các mẫu URL chỉ định những URL sẽ bị chặn. + + Bạn phải định dạng mẫu URL theo định dạng trên trang web https://www.chromium.org/administrators/url-blacklist-filter-format. + + Bạn có thể xác định các trường hợp ngoại lệ trong chính sách về danh sách URL được cho phép. Những chính sách này chỉ giới hạn trong 1000 mục; các mục sau đó sẽ bị bỏ qua. + + Lưu ý rằng bạn không nên chặn các URL "chrome://*" nội bộ vì điều này có thể dẫn đến lỗi không mong muốn. + + Từ Chrome 73, bạn có thể chặn các URL "javascript://*". Tuy nhiên, chính sách này chỉ ảnh hưởng đến JavaScript đã nhập trong thanh địa chỉ (hoặc các bookmarklet). Lưu ý rằng nếu dữ liệu được tải động thì các URL JavaScript trong trang không phải tuân theo chính sách này. Ví dụ: nếu bạn chặn "example.com/abc", thì trang "example.com" sẽ vẫn có thể tải "example.com/abc" qua XMLHTTPRequest. + + Nếu bạn không đặt chính sách này, thì không có URL nào sẽ bị chặn trên trình duyệt.</translation> <translation id="5085647276663819155">Vô hiệu hóa xem trước bản in</translation> <translation id="5090209345759901501">Mở rộng cài đặt nội dung Flash cho tất cả nội dung</translation> <translation id="5090791951240382356">Cho phép hợp nhất các chính sách từ điển thuộc các nguồn khác nhau</translation> @@ -3620,6 +3665,7 @@ <translation id="6394350458541421998">Chính sách này đã chấm dứt kể từ phiên bản <ph name="PRODUCT_OS_NAME" /> 29. Vui lòng sử dụng chính sách PresentationScreenDimDelayScale thay vào đó.</translation> <translation id="6401669939808766804">Đăng xuất người dùng</translation> <translation id="640244877779556713">Bật tùy chọn đề xuất biểu tượng cảm xúc</translation> +<translation id="6407093060083181305">Định cấu hình danh sách chặn cài đặt tiện ích</translation> <translation id="6417265370957905582">Trợ lý Google</translation> <translation id="6422575351619065453">Trong chế độ kiosk, hãy kiểm soát xem trình đơn hỗ trợ tiếp cận nổi có đang hiển thị hay không. @@ -3798,6 +3844,11 @@ <translation id="6658245400435704251">Chỉ định số giây tối đa mà thiết bị có thể ngẫu nhiên trì hoãn việc tải xuống bản cập nhật từ thời điểm bản cập nhật được đưa lên máy chủ lần đầu tiên. Thiết bị có thể đợi một phần số thời gian này là thời gian thực và phần thời gian còn lại là thời gian kiểm tra bản cập nhật. Trong bất kỳ trường hợp nào, việc phân tán bị chặn trên ở lượng thời gian cố định để thiết bị không bao giờ phải chờ mãi để tải xuống bản cập nhật.</translation> <translation id="6665670272107384733">Đặt tần suất người dùng phải nhập mật khẩu để sử dụng tính năng mở khóa nhanh</translation> <translation id="6667586534922258705">Hiện nút hiển thị mật khẩu trên màn hình đăng nhập và màn hình khóa</translation> +<translation id="6669700740683748046">Tính năng này cho phép hiển thị URL đầy đủ trên thanh địa chỉ. + Nếu bạn đặt chính sách này thành True, thì URL đầy đủ sẽ hiển thị trên thanh địa chỉ, bao gồm cả giao thức và miền con. + Nếu bạn đặt chính sách này thành False, thì thanh địa chỉ sẽ hiển thị URL mặc định. + Bạn bạn không đặt chính sách này, thì thanh địa chỉ sẽ hiển thị URL mặc định. Đồng thời, người dùng sẽ có thể chuyển đổi giữa chế độ hiển thị URL mặc định và đầy đủ bằng tùy chọn trình đơn ngữ cảnh. + </translation> <translation id="6672070613706645316">Cho phép người dùng tùy chỉnh nền trên trang Tab mới</translation> <translation id="6672630473862787247">Bật quy trình xác thực môi trường xung quanh trong các phiên khách, phiên thông thường và phiên ẩn danh.</translation> <translation id="6685903773201985073">Bật quy trình xác thực môi trường xung quanh trong các phiên khách và phiên thông thường.</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 9c06e9d..bf49e367 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -191,6 +191,11 @@ <translation id="1376119291123231789">启用高级电池充电模式</translation> <translation id="1384459581748403878">参考页面:<ph name="REFERENCE_URL" /></translation> <translation id="138847842893090358">报告操作系统更新状态</translation> +<translation id="1390901586107713894">让您能够指定禁止用户安装的扩展程序。系统会停用被屏蔽的已安装扩展程序,并且不会提供任何方式供用户用来启用它们。如果某个因被列入屏蔽名单而遭停用的扩展程序被从屏蔽名单中移除了,系统会自动重新启用该扩展程序。 + + 屏蔽名单值“*”表示所有扩展程序都已被屏蔽,除非是许可名单中明确列出的扩展程序。 + + 如果此政策未设置,用户便能在 <ph name="PRODUCT_NAME" /> 中安装任一款扩展程序。</translation> <translation id="1393485621820363363">已启用企业设备打印机</translation> <translation id="1397855852561539316">默认搜索服务提供商建议网址</translation> <translation id="1404043648050567997">当用户转到被标记为可能存在恶意内容的网站时,安全浏览服务会显示警告页面。如果您启用了此设置,用户在看到警告页面后将无法再继续访问相应的恶意网站。 @@ -994,6 +999,13 @@ <translation id="253135976343875019">使用交流电源供电时的闲置警告延迟时间</translation> <translation id="2536525645274582300">用户可决定是否要启用 Google 位置信息服务</translation> <translation id="254653220329944566">启用 <ph name="PRODUCT_NAME" /> 云端报告</translation> +<translation id="2547854230073316008">通过设置此政策,您可指定每个显示屏的分辨率和缩放比例。外接显示屏设置会应用于已连接的显示屏。(如果显示屏不支持指定的分辨率或缩放比例,此政策便不适用) + + 如果 <ph name="EXTERNAL_USE_NATIVE" /> 设为 True,此政策会忽略 <ph name="EXTERNAL_WIDTH" /> 和 <ph name="EXTERNAL_HEIGHT" />,并会将外接显示屏的分辨率设为各自的原始分辨率。如果 <ph name="EXTERNAL_USE_NATIVE" /> 设为 False 或未设置,并且 <ph name="EXTERNAL_WIDTH" /> 或 <ph name="EXTERNAL_HEIGHT" /> 未设置,此政策不会影响外接显示屏。 + + 如果“recommended”标记设为 True,用户便可通过“设置”页面更改任一显示屏的分辨率和缩放比例,但他们的设置将会在相应显示屏下次重新启动时变回原来的设置。如果“recommended”标记设为 False 或未设置,用户将无法更改显示屏设置。 + + 请注意:应以像素为单位设置 <ph name="EXTERNAL_WIDTH" /> 和 <ph name="EXTERNAL_HEIGHT" />,以百分比形式设置 <ph name="EXTERNAL_SCALE_PERCENTAGE" /> 和 <ph name="INTERNAL_SCALE_PERCENTAGE" />。</translation> <translation id="2548397295248733155">请注意,此政策已被弃用,并将在 <ph name="PRODUCT_OS_NAME" />版本 85 中移除。请改用 <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />。 指定当使用电池供电时系统应在设备闲置多久后关闭屏幕。 @@ -1470,6 +1482,9 @@ <translation id="3251500716404598358">配置政策以在浏览器之间切换。 配置的网站将自动在其他浏览器(而非 <ph name="PRODUCT_NAME" />)中打开。</translation> +<translation id="3255762580838224124">如果您设置了此政策,那么每当重新启动时或在此政策的值更改后首次连接时,每个显示屏都会旋转到指定方向。用户可在登录后通过“设置”页面更改显示屏旋转角度,但下次重新启动时显示屏仍会遵从更改前的设置。此政策适用于主要显示屏和次要显示屏。 + + 如果此政策未设置,默认值便是 0 度,但用户可以随意更改此值。如果用户更改了默认值,显示屏在重启时将不会重新应用此值。</translation> <translation id="3264793472749429012">默认搜索服务提供商的编码</translation> <translation id="3273221114520206906">默认 JavaScript 设置</translation> <translation id="3284094172359247914">控制对 WebUSB API 的使用</translation> @@ -1814,6 +1829,17 @@ <translation id="382476126209906314">为远程访问主机配置 TalkGadget 前缀</translation> <translation id="3824972131618513497">控制与电源管理和重新启动相关的设置。</translation> <translation id="3826475866868158882">已启用 Google 位置信息服务</translation> +<translation id="383002993919016993">此政策旨在阻止用户从被屏蔽的网址加载网页。屏蔽名单提供了一系列网址格式,从而指定了哪些网址会被屏蔽。 + + 必须根据 https://www.chromium.org/administrators/url-blacklist-filter-format 来设置网址格式。 + + 您可在网址许可名单政策中指定例外情况。此类政策最多只能包含 1000 个条目;在达到这一上限后添加的条目将被忽略。 + + 请注意:最好不要屏蔽内部“chrome://*”网址,否则可能会导致意外的错误。 + + 您可以屏蔽“javascript://*”网址。不过,这仅会影响在地址栏(或小书签等)中输入的 JavaScript 网址。请注意,凡是能动态加载数据的页内 JavaScript 网址都不会受此政策影响。例如,即使您屏蔽了“example.com/abc”,网页“example.com”将仍能通过 XMLHTTPRequest 加载“example.com/abc”。 + + 如果此政策未设置,浏览器中的任何网址都不会被屏蔽。</translation> <translation id="3831376478177535007">启用此设置后,只要赛门铁克公司 (Symantec Corporation) 的旧版公钥基础设施 (PKI) 操作签发的证书已以其他方式成功通过验证并关联至一个公认的 CA 证书,<ph name="PRODUCT_NAME" /> 就会允许信任这些证书。 请注意,此政策有赖于相应操作系统是否仍能识别赛门铁克的旧版基础架构颁发的证书。如果该操作系统的某项更新更改了它对此类证书的处理方式,此政策便不再具有效力。另请注意,此政策只是一种临时解决方法,旨在让企业拥有更多时间来弃用旧版赛门铁克证书。我们将于 2019 年 1 月 1 日当天或前后撤消此政策。 @@ -2471,6 +2497,7 @@ 如果您设置了此政策,用户便无法更改它。如果您不设置此政策,用户可以决定是否让工具栏自动隐藏。</translation> <translation id="4816674326202173458">允许企业用户以主用户或次要用户的身份登录多个人资料会话(非托管用户的默认行为)</translation> <translation id="4826326557828204741">当闲置延迟时间已过且使用电池供电时应执行的操作</translation> +<translation id="482803100714220060">显示完整网址</translation> <translation id="4830531683854509779">报告 SoC 组件的硬件统计信息。 如果此政策设为 false 或未设置,系统将不会报告这些统计信息。 @@ -2499,6 +2526,11 @@ </translation> <translation id="489803897780524242">此参数可控制是否为默认搜索服务提供商替换搜索字词</translation> <translation id="4899708173828500852">启用安全浏览</translation> +<translation id="4902163780937592202">允许合并扩展程序安装列表政策 <ph name="EXTENSION_INSTALL_BLOCKLIST_POLICY_NAME" />、<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" /> 和 <ph name="EXTENSION_INSTALL_FORCELIST_POLICY_NAME" />。 + + 如果您启用了此设置,系统会将机器平台政策、机器云政策和用户平台政策的值合并到同一个列表内,并会将其作为一个整体使用(而不是仅使用优先级最高的那个来源中的值)。 + + 如果您停用了或未指定此设置,系统仅会从优先级最高的那个来源中获取列表条目;所有其他来源都会显示为与该来源冲突,但会被忽略。</translation> <translation id="4906194810004762807">设备策略的更新频率</translation> <translation id="4917385247580444890">强</translation> <translation id="4919122295221518724">为混合内容启用更严格的处理方式</translation> @@ -2598,6 +2630,19 @@ <translation id="5075834892754086022">如果设置了此政策,则强制实施配置的 PIN 码长度下限。(PIN 码的绝对长度下限是 1;所有小于 1 的值均会被视为 1。) 如果未设置此政策,则强制要求 PIN 码的长度下限为 6 位数。这是建议的长度下限。</translation> +<translation id="5077993112092904096">此政策已被弃用,请改用“<ph name="URL_BLOCKLIST_POLICY_NAME" />”政策。 + + 此政策旨在阻止用户从被屏蔽的网址加载网页。屏蔽名单提供了一系列网址格式,从而指定了哪些网址会被屏蔽。 + + 必须根据 https://www.chromium.org/administrators/url-blacklist-filter-format 来设置网址格式。 + + 您可在网址许可名单政策中指定例外情况。此类政策最多只能包含 1000 个条目;在达到这一上限后添加的条目将被忽略。 + + 请注意:最好不要屏蔽内部“chrome://*”网址,否则可能会导致意外的错误。 + + 从 Chrome 73 开始,您可以屏蔽“javascript://*”网址。不过,这仅会影响在地址栏(或小书签等)中输入的 JavaScript 网址。请注意,凡是能动态加载数据的页内 JavaScript 网址都不会受此政策影响。例如,即使您屏蔽了“example.com/abc”,网页“example.com”将仍能通过 XMLHTTPRequest 加载“example.com/abc”。 + + 如果此政策未设置,浏览器中的任何网址都不会被屏蔽。</translation> <translation id="5085647276663819155">停用打印预览</translation> <translation id="5090209345759901501">将 Flash 内容设置的涵盖面扩展至所有内容</translation> <translation id="5090791951240382356">允许合并来自多个不同来源的字典政策</translation> @@ -3506,6 +3551,7 @@ <translation id="6394350458541421998">此政策从 <ph name="PRODUCT_OS_NAME" />版本 29 起开始弃用。请改用 PresentationScreenDimDelayScale 政策。</translation> <translation id="6401669939808766804">使用户退出</translation> <translation id="640244877779556713">启用表情符号建议</translation> +<translation id="6407093060083181305">配置扩展程序安装屏蔽名单</translation> <translation id="6417265370957905582">Google 助理</translation> <translation id="6422575351619065453">在自助服务终端模式中,用于控制是否显示悬浮无障碍功能菜单。 @@ -3684,6 +3730,11 @@ <translation id="6658245400435704251">指定一个时间(以秒为单位),即从更新首次推送到服务器起设备随机延迟更新下载的最大时间。设备的这一等待时间一部分会按照实际时间计算,而剩下的部分则取决于更新检查的次数。在任何情况下,分配的时间上限都是固定的,因此设备绝不会一直等待下载某个更新。</translation> <translation id="6665670272107384733">指定用户必须按什么样的频率输入密码才能使用快速解锁功能</translation> <translation id="6667586534922258705">在登录屏幕和锁定屏幕上启用显示密码按钮</translation> +<translation id="6669700740683748046">此功能可让系统在地址栏中显示完整网址。 + 如果此政策设为 True,系统将会在地址栏中显示包含协议和子网域的完整网址。 + 如果此政策设为 False,系统将会应用默认网址显示方式。 + 如果此政策未设置,系统将会应用默认网址显示方式,而且用户将能使用一个上下文菜单选项在默认网址显示方式和完整网址显示方式之间切换。 + </translation> <translation id="6672070613706645316">允许用户在“新标签页”页面上自定义背景</translation> <translation id="6672630473862787247">为常规会话、无痕会话和访客会话启用静默身份验证。</translation> <translation id="6685903773201985073">为访客会话和常规会话启用静默身份验证。</translation>
diff --git a/components/strings/components_chromium_strings_pt-PT.xtb b/components/strings/components_chromium_strings_pt-PT.xtb index 28fefb6b..0c1af66 100644 --- a/components/strings/components_chromium_strings_pt-PT.xtb +++ b/components/strings/components_chromium_strings_pt-PT.xtb
@@ -36,6 +36,6 @@ e desmarque "<ph name="NO_PREFETCH_DESCRIPTION" />". Se isso não resolver o problema, recomendamos que selecione esta opção novamente para um desempenho melhorado.</translation> -<translation id="8187289872471304532">Aceda a Aplicações > Preferências do Sistema > Rede > Avançadas > Proxies e desmarque todos os proxies selecionados.</translation> +<translation id="8187289872471304532">Aceda a Apps > Preferências do Sistema > Rede > Avançadas > Proxies e desmarque todos os proxies selecionados.</translation> <translation id="8684913864886094367">O Chromium não foi corretamente encerrado.</translation> </translationbundle> \ No newline at end of file
diff --git a/components/strings/components_google_chrome_strings_pt-PT.xtb b/components/strings/components_google_chrome_strings_pt-PT.xtb index 6cd07ff..6a277bd7 100644 --- a/components/strings/components_google_chrome_strings_pt-PT.xtb +++ b/components/strings/components_google_chrome_strings_pt-PT.xtb
@@ -37,5 +37,5 @@ > Definições de LAN e desmarque "Utilizar um servidor proxy para a rede local".</translation> -<translation id="8187289872471304532">Aceda a Aplicações > Preferências do Sistema > Rede > Avançadas > Proxies e desmarque todos os proxies selecionados.</translation> +<translation id="8187289872471304532">Aceda a Apps > Preferências do Sistema > Rede > Avançadas > Proxies e desmarque todos os proxies selecionados.</translation> </translationbundle> \ No newline at end of file
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index ecc4de3..e1fbfdb 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -45,6 +45,7 @@ <translation id="115926840831309955">আপোনাৰ CVC পৰীক্ষা কৰি পুনৰ চেষ্টা কৰক অথবা ম্যাদ উকলাৰ তাৰিখটো আপডে’ট কৰক</translation> <translation id="1161325031994447685">ৱাই-ফাইলৈ পুনৰ সংযোগ কৰি থকা হৈছে</translation> <translation id="1165039591588034296">আসোঁৱাহ</translation> +<translation id="1165174597379888365">পৃষ্ঠাখনলৈ গ’লে</translation> <translation id="1175364870820465910">&প্ৰিণ্ট কৰক...</translation> <translation id="1175875016430184367">সোঁফালে তিনিবাৰ ষ্টে'পল কৰক</translation> <translation id="1178581264944972037">পজ কৰক</translation> @@ -265,6 +266,7 @@ <translation id="2001146170449793414">{COUNT,plural, =1{আৰু ১টা}one{আৰু #টা অধিক}other{আৰু #টা অধিক}}</translation> <translation id="2003709556000175978">এতিয়াই আপোনাৰ পাছৱৰ্ড ৰিছেট কৰক</translation> <translation id="2003775180883135320">ওপৰৰ অংশত চতুর্ভূজ আকাৰত পাঞ্চ কৰক</translation> +<translation id="202072848677994234">এই ফৰ্মখন এটা অসুৰক্ষিত সংযোগ ব্যৱহাৰ কৰি দাখিল কৰা হৈছে। স্বয়ংক্ৰিয়ভাৱে পূৰ হোৱাৰ সুবিধাটো অক্ষম কৰা হৈছে।</translation> <translation id="2025115093177348061">পৰিৱৰ্ধিত বাস্তৱিকতা</translation> <translation id="2025186561304664664">প্ৰক্সী স্বয়ংক্ৰিয়ভাৱে কনফিগাৰ কৰা হিচাপে ছেট কৰা আছে।</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />প্ৰক্সি আৰু ফায়াৰৱাল পৰীক্ষা কৰি থকা হৈছে<ph name="END_LINK" /></translation> @@ -332,6 +334,7 @@ <translation id="2289385804009217824">ট্ৰিম কৰক</translation> <translation id="2292556288342944218">আপোনাৰ ইণ্টাৰনেটৰ এক্সেছ অৱৰোধ কৰা হ’ল</translation> <translation id="2293443924986248631">অন কৰা থাকিলে ছাইটসমূহে সমগ্ৰ ৱেবত আপোনাক ট্ৰেক কৰা কুকিসমূহ ব্যৱহাৰ কৰিব নোৱাৰে। কিছুমান ছাইটত সুবিধাসমূহ ব্যাহত হ’ব পাৰে।</translation> +<translation id="2295290966866883927">আপুনি চোৱা পৃষ্ঠাৰ URLসমূহ বিশ্লেষণৰ বাবে Google Cloud অথবা তৃতীয় পক্ষলৈ পঠিওৱা হয়। উদাহৰণস্বৰূপে, অসুৰক্ষিত ৱেবছাইটসমূহ চিনাক্ত কৰিবলৈ সেইসমূহ স্কেন কৰা হ’ব পাৰে।</translation> <translation id="2297722699537546652">B5 (লেফাফা)</translation> <translation id="2300306941146563769">আপল'ড কৰা হোৱা নাই</translation> <translation id="2310021320168182093">Chou2 (লেফাফা)</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index a464bd0..5e293e0 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -446,6 +446,7 @@ <translation id="2824775600643448204">Лента за адреси и за търсене</translation> <translation id="2826760142808435982">Връзката е шифрована и удостоверена посредством <ph name="CIPHER" /> и използва <ph name="KX" /> като механизъм за обмен на ключове.</translation> <translation id="2835170189407361413">Изчистване на формуляра</translation> +<translation id="2839501879576190149">Внимание: фалшив сайт</translation> <translation id="2847118875340931228">Отваряне на прозорец в режим „инкогнито“</translation> <translation id="2850739647070081192">Invite (плик)</translation> <translation id="2856444702002559011">Възможно е извършители на атака да опитват да откраднат информацията ви от <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (например пароли, съобщения или номера на кредитни карти). <ph name="BEGIN_LEARN_MORE_LINK" />Научете повече<ph name="END_LEARN_MORE_LINK" /></translation> @@ -806,6 +807,7 @@ <translation id="42981349822642051">Разгъване</translation> <translation id="4300675098767811073">Няколко перфорации отдясно</translation> <translation id="4302965934281694568">Chou3 (плик)</translation> +<translation id="4305666528087210886">Няма достъп до файла</translation> <translation id="4305817255990598646">Превключване</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Блокиране (по подразбиране)</translation> @@ -824,6 +826,7 @@ <translation id="4358461427845829800">Управление на начините на плащане...</translation> <translation id="4359160567981085931">Току-що въведохте паролата си в измамнически сайт. Chrome може да помогне. За да промените паролата си и да уведомите Google за това, че профилът ви може да е изложен на риск, кликнете върху „Защита на профила“.</translation> <translation id="4367563149485757821">Number-12 (плик)</translation> +<translation id="4367839622597707614">{1,plural, =0{Запазената ви парола за <ph name="ORIGIN" /> е била разкрита при нарушение на сигурността на данните на сайт или приложение. Chrome препоръчва да промените паролата си за <ph name="ORIGIN" /> сега.}=1{Запазената ви парола за <ph name="ORIGIN" /> и още един сайт е била разкрита при нарушение на сигурността на данните на сайт или приложение. Chrome препоръчва да проверите запазените си пароли сега.}other{Запазената ви парола за <ph name="ORIGIN" /> и още <ph name="SITES_COUNT" /> сайта е била разкрита при нарушение на сигурността на данните на сайт или приложение. Chrome препоръчва да проверите запазените си пароли сега.}}</translation> <translation id="437058704415269440">Салдо по сметката</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Очаквана е стойност от тип <ph name="VALUE_TYPE" />.</translation> @@ -1294,6 +1297,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Възможно е таксуване.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{още 1 предложение}other{още # предложения}}</translation> +<translation id="6387645831795005740">Понякога атакуващите имитират сайтове, като правят незначителни, труднозабележими промени в URL адреса</translation> <translation id="6389470377220713856">Име върху картата</translation> <translation id="6390200185239044127">Двойно Z-образно сгъване</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1507,6 +1511,7 @@ <translation id="7372973238305370288">резултат от търсенето</translation> <translation id="7374733840632556089">Причината за този проблем е сертификат, инсталиран на устройството ви от вас или от друг потребител. Сертификатът е известен с това, че се използва за наблюдение и прехващане на мрежи и Chrome му няма доверие. Въпреки че съществуват някои легитимни случаи за наблюдение, като например училищна или фирмена мрежа, Chrome иска да се увери, че знаете, че това се случва, дори ако не можете да го спрете. Наблюдението може да става във всеки браузър или приложение, които осъществяват достъп до мрежата.</translation> <translation id="7375818412732305729">Прикачване на файл</translation> +<translation id="7376551888419889433">При откриване на събития, свързани със сигурността, от Chrome Enterprise Connectors данните за тях се изпращат до администратора ви. Те могат да включват URL адресите на посещаваните от вас страници в Chrome, имената на файловете или метаданните, както и потребителското име, с което влизате в профила си на устройството си и в браузъра.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Контроли за мултимедия</translation> <translation id="7378627244592794276">Не</translation> @@ -1903,6 +1908,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Опитахте да отворите <ph name="DOMAIN" />, но сървърът предостави невалиден сертификат.</translation> <translation id="9050666287014529139">Парола</translation> +<translation id="9062620674789239642">Възможно е да е преместен, редактиран или изтрит.</translation> <translation id="9065203028668620118">Редактиране</translation> <translation id="9065745800631924235">Търсене на „<ph name="TEXT" />“ от историята</translation> <translation id="9069693763241529744">Блокирано от разширение</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb index f38bb76..54f0315 100644 --- a/components/strings/components_strings_bn.xtb +++ b/components/strings/components_strings_bn.xtb
@@ -45,6 +45,7 @@ <translation id="115926840831309955">কার্ডের সিভিসি নম্বরটি ঠিক লিখেছেন কিনা দেখে নিয়ে আবার চেষ্টা করুন অথবা মেয়াদ শেষ হওয়ার তারিখটি আপডেট করুন</translation> <translation id="1161325031994447685">ওয়াই-ফাই এ আবার সংযুক্ত করে দেখুন</translation> <translation id="1165039591588034296">ত্রুটি</translation> +<translation id="1165174597379888365">যেসব পৃষ্ঠা ভিজিট করা হয়েছে</translation> <translation id="1175364870820465910">&প্রিন্ট...</translation> <translation id="1175875016430184367">ডানদিকে ট্রিপল স্টেপল</translation> <translation id="1178581264944972037">বিরতি</translation> @@ -266,6 +267,7 @@ <translation id="2001146170449793414">{COUNT,plural, =1{এবং আরও ১টি}one{এবং আরও #টি}other{এবং আরও #টি}}</translation> <translation id="2003709556000175978">আপনার পাসওয়ার্ড রিসেট করুন</translation> <translation id="2003775180883135320">উপরে কোয়াড পাঞ্চ</translation> +<translation id="202072848677994234">এই ফর্মটি একটি অসুরক্ষিত কানেকশনের মাধ্যমে সাবমিট করা হয়েছে। ফর্মের ফিল্ড অটোমেটিক পূরণ করার ফিচার বন্ধ করা আছে।</translation> <translation id="2025115093177348061">অগমেন্টেড রিয়েলিটি</translation> <translation id="2025186561304664664">অটো কনফিগার করতে প্রক্সি সেট করা হয়৷</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />প্রক্সি এবং ফায়ারওয়াল পরীক্ষা করে দেখুন<ph name="END_LINK" /></translation> @@ -333,6 +335,7 @@ <translation id="2289385804009217824">ট্রিম করুন</translation> <translation id="2292556288342944218">আপনার ইন্টারনেট অ্যাক্সেস অবরুদ্ধ করা হয়েছে</translation> <translation id="2293443924986248631">এটি চালু করা থাকলে যেসব কুকি ওয়েব জুড়ে আপনার অ্যাক্টিভিটি ট্র্যাক করে, সাইট সেগুলি ব্যবহার করতে পারবে না। কিছু কিছু সাইটের ফিচারগুলি কাজ নাও করতে পারে।</translation> +<translation id="2295290966866883927">আপনি যেসব পৃষ্ঠাতে ভিজিট করেন, সেগুলির ইউআরএল বিশ্লেষণ করার জন্য Google Cloud-এ বা অন্য থার্ড-পার্টির কাছে পাঠানো হয়। যেমন, সেগুলিতে কোনও ক্ষতিকর ওয়েবসাইট আছে কিনা তা জানার জন্য স্ক্যান করা হতে পারে।</translation> <translation id="2297722699537546652">B5 (Envelope)</translation> <translation id="2300306941146563769">আপলোড করা হয়নি</translation> <translation id="2310021320168182093">Chou2 (Envelope)</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb index 16245dab..0a520eb 100644 --- a/components/strings/components_strings_bs.xtb +++ b/components/strings/components_strings_bs.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Traka za adresu i pretraživanje</translation> <translation id="2826760142808435982">Veza je šifrirana i autentificirana koristeći <ph name="CIPHER" /> i koristi <ph name="KX" /> kao glavni mehanizam za razmjenu.</translation> <translation id="2835170189407361413">Obriši polja obrasca</translation> +<translation id="2839501879576190149">Web lokacija koja slijedi je lažna</translation> <translation id="2847118875340931228">Otvori anonimni prozor</translation> <translation id="2850739647070081192">Invite (koverta)</translation> <translation id="2856444702002559011">Moguće je da napadači pokušavaju ukrasti vaše podatke s web lokacije <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (naprimjer, lozinke, poruke ili kreditne kartice). <ph name="BEGIN_LEARN_MORE_LINK" />Saznajte više<ph name="END_LEARN_MORE_LINK" /></translation> @@ -810,6 +811,7 @@ <translation id="42981349822642051">Proširi</translation> <translation id="4300675098767811073">Višestruko bušenje na desnoj strani</translation> <translation id="4302965934281694568">Chou3 (koverta)</translation> +<translation id="4305666528087210886">Pristupanje vašem fajlu nije uspjelo</translation> <translation id="4305817255990598646">Prebaci</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokiraj (zadano)</translation> @@ -828,6 +830,7 @@ <translation id="4358461427845829800">Upravljajte načinima plaćanja…</translation> <translation id="4359160567981085931">Upravo ste unijeli lozinku na obmanjujućoj web lokaciji. Chrome vam može pomoći. Da promijenite lozinku i obavijestite Google da vam je račun možda ugrožen, kliknite Zaštiti račun.</translation> <translation id="4367563149485757821">Broj 12 (koverta)</translation> +<translation id="4367839622597707614">{1,plural, =0{Došlo je do narušavanja podataka na web lokaciji ili u aplikaciji čime je izložena vaša sačuvana lozinka za <ph name="ORIGIN" />. Chrome preporučuje da odmah promijenite lozinku na web lokaciji <ph name="ORIGIN" />.}=1{Došlo je do narušavanja podataka na web lokaciji ili u aplikaciji čime je izložena vaša sačuvana lozinka za <ph name="ORIGIN" /> i za još jednu web lokaciju. Chrome vam preporučuje da odmah provjerite sačuvane lozinke.}one{Došlo je do narušavanja podataka na web lokaciji ili u aplikaciji čime je izložena vaša sačuvana lozinka za <ph name="ORIGIN" /> i za još <ph name="SITES_COUNT" /> web lokaciju. Chrome vam preporučuje da odmah provjerite sačuvane lozinke.}few{Došlo je do narušavanja podataka na web lokaciji ili u aplikaciji čime je izložena vaša sačuvana lozinka za <ph name="ORIGIN" /> i za još <ph name="SITES_COUNT" /> web lokacije. Chrome vam preporučuje da odmah provjerite sačuvane lozinke.}other{Došlo je do narušavanja podataka na web lokaciji ili u aplikaciji čime je izložena vaša sačuvana lozinka za <ph name="ORIGIN" /> i za još <ph name="SITES_COUNT" /> web lokacija. Chrome vam preporučuje da odmah provjerite sačuvane lozinke.}}</translation> <translation id="437058704415269440">Sredstva na računu</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Očekivana vrijednost vrste <ph name="VALUE_TYPE" />.</translation> @@ -1298,6 +1301,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Postoje mogući troškovi.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{Još jedan prijedlog}one{Još # prijedlog}few{Još # prijedloga}other{Još # prijedloga}}</translation> +<translation id="6387645831795005740">Napadači ponekad oponašaju web lokacije tako što naprave male, teško primjetne izmjene URL-a.</translation> <translation id="6389470377220713856">Ime i prezime na kartici</translation> <translation id="6390200185239044127">Z-presavijanje napola</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1511,6 +1515,7 @@ <translation id="7372973238305370288">rezultat pretraživanja</translation> <translation id="7374733840632556089">Ovaj problem nastaje zbog potvrde koju ste vi ili neko drugi instalirali na uređaj. Poznato je da se ta potvrda koristi za nadzor i presretanje mreža te je Chrome ne smatra pouzdanom. Iako postoje opravdani slučajevi za nadzor, naprimjer na mrežama u školama ili preduzećima, Chrome želi potvrditi da ste toga svjesni čak i ako taj proces ne možete zaustaviti. Nadzor se može vršiti u bilo kojem pregledniku ili bilo kojoj aplikaciji koja pristupa webu.</translation> <translation id="7375818412732305729">Fajl je priložen</translation> +<translation id="7376551888419889433">Kada Konektori Chromea za preduzeća označe sigurnosne događaje, relevantni podaci o događajima se šalju vašem administratoru. To može obuhvatati URL-ove stranica koje posjetite na Chromeu, nazive fajlova ili metapodatke te korisničko ime koje koristite za prijavu na uređaj i Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" />, <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Upravljanje medijima</translation> <translation id="7378627244592794276">Ne</translation> @@ -1907,6 +1912,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Pokušali ste pristupiti domeni <ph name="DOMAIN" />, ali je server prikazao nevažeću potvrdu.</translation> <translation id="9050666287014529139">Zaporka</translation> +<translation id="9062620674789239642">Moguće je da je premješten, uređen ili izbrisan.</translation> <translation id="9065203028668620118">Uredi</translation> <translation id="9065745800631924235">Pretraživanje <ph name="TEXT" /> iz historije</translation> <translation id="9069693763241529744">Blokirala ekstenzija</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb index 6bcaea35..16ee2d9 100644 --- a/components/strings/components_strings_cs.xtb +++ b/components/strings/components_strings_cs.xtb
@@ -444,6 +444,7 @@ <translation id="2824775600643448204">Adresní a vyhledávací řádek</translation> <translation id="2826760142808435982">Připojení je šifrováno a ověřeno pomocí šifry <ph name="CIPHER" /> a jako mechanismus výměny klíčů používá <ph name="KX" />.</translation> <translation id="2835170189407361413">Vymazat formulář</translation> +<translation id="2839501879576190149">Chystáte se navštívit falešný web</translation> <translation id="2847118875340931228">Otevřít anonymní okno</translation> <translation id="2850739647070081192">Invite (obálka)</translation> <translation id="2856444702002559011">Útočníci se mohou pokusit odcizit vaše údaje na webu <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (například hesla, zprávy nebo informace o platebních kartách). <ph name="BEGIN_LEARN_MORE_LINK" />Další informace<ph name="END_LEARN_MORE_LINK" /></translation> @@ -795,6 +796,7 @@ <translation id="42981349822642051">Rozbalit</translation> <translation id="4300675098767811073">Několik děr vpravo</translation> <translation id="4302965934281694568">Chou3 (obálka)</translation> +<translation id="4305666528087210886">K souboru nelze získat přístup</translation> <translation id="4305817255990598646">Přepínač</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokovat (výchozí)</translation> @@ -813,6 +815,7 @@ <translation id="4358461427845829800">Spravovat platební metody...</translation> <translation id="4359160567981085931">Právě jste své heslo zadali na klamavém webu. Chrome vám může pomoci. Chcete-li změnit heslo a oznámit Googlu, že váš účet může být ohrožen, klikněte na Ochránit účet.</translation> <translation id="4367563149485757821">Number-12 (obálka)</translation> +<translation id="4367839622597707614">{1,plural, =0{Při porušení zabezpečení webu nebo aplikace bylo vyzrazeno vaše uložené heslo pro web <ph name="ORIGIN" />. Chrome vám doporučuje okamžitě heslo na webu <ph name="ORIGIN" /> změnit.}=1{Při porušení zabezpečení webu nebo aplikace bylo vyzrazeno vaše uložené heslo pro web <ph name="ORIGIN" /> a jeden další web. Chrome vám doporučuje okamžitě zkontrolovat uložená hesla.}few{Při porušení zabezpečení webu nebo aplikace bylo vyzrazeno vaše uložené heslo pro web <ph name="ORIGIN" /> a <ph name="SITES_COUNT" /> dalších webů. Chrome vám doporučuje okamžitě zkontrolovat uložená hesla.}many{Při porušení zabezpečení webu nebo aplikace bylo vyzrazeno vaše uložené heslo pro web <ph name="ORIGIN" /> a <ph name="SITES_COUNT" /> dalšího webu. Chrome vám doporučuje okamžitě zkontrolovat uložená hesla.}other{Při porušení zabezpečení webu nebo aplikace bylo vyzrazeno vaše uložené heslo pro web <ph name="ORIGIN" /> a <ph name="SITES_COUNT" /> dalších webů. Chrome vám doporučuje okamžitě zkontrolovat uložená hesla.}}</translation> <translation id="437058704415269440">Zůstatek na účtu</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Očekávána hodnota <ph name="VALUE_TYPE" />.</translation> @@ -1282,6 +1285,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Pozor na možné poplatky na webu, který se chystáte navštívit</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 další návrh}few{# další návrhy}many{# dalšího návrhu}other{# dalších návrhů}}</translation> +<translation id="6387645831795005740">Útočníci někdy weby napodobují tak, že v adrese URL provádějí drobné, obtížně odhalitelné změny.</translation> <translation id="6389470377220713856">Jméno na kartě</translation> <translation id="6390200185239044127">Přeložení napůl do Z</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1494,6 +1498,7 @@ <translation id="7372973238305370288">výsledek vyhledávání</translation> <translation id="7374733840632556089">K tomuto problému dochází kvůli certifikátu, který jste vy nebo někdo jiný nainstalovali do zařízení. O certifikátu je známo, že se používá ke sledování a zachytávání provozu v sítích, a Chrome mu nedůvěřuje. Ačkoliv sledování v některých případech (například ve školní nebo firemní síti) může být legitimní a nemůžete mu zabránit, Chrome se chce ujistit, že o něm víte. Ke sledování může docházet v kterémkoliv prohlížeči nebo aplikaci, které přistupují k webu.</translation> <translation id="7375818412732305729">Připojení souboru</translation> +<translation id="7376551888419889433">Když konektory Chrome Enterprise Connectors nahlásí události týkající se zabezpečení, administrátorovi se odešlou relevantní data o událostech. Mohou být zahrnuty adresy URL stránek, které navštěvujete v Chromu, názvy souborů nebo metadata a uživatelské jméno, pomocí něhož se přihlašujete do svého zařízení a do Chromu.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Ovládání médií</translation> <translation id="7378627244592794276">Ne</translation> @@ -1891,6 +1896,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Pokusili jste se přejít do domény <ph name="DOMAIN" />, ale server předložil certifikát, jehož platnost vypršela.</translation> <translation id="9050666287014529139">Heslová fráze</translation> +<translation id="9062620674789239642">Soubor mohl být přesunut, upraven nebo smazán.</translation> <translation id="9065203028668620118">Upravit</translation> <translation id="9065745800631924235">vyhledávání <ph name="TEXT" /> z historie</translation> <translation id="9069693763241529744">Blokováno rozšířením</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index c27acc5..27dd5d4 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Adresse og søgelinje</translation> <translation id="2826760142808435982">Forbindelsen er krypteret og godkendt ved hjælp af <ph name="CIPHER" />, og den anvender <ph name="KX" /> som primær udvekslingsmekanisme.</translation> <translation id="2835170189407361413">Ryd formular</translation> +<translation id="2839501879576190149">Falsk website forude</translation> <translation id="2847118875340931228">Åbn inkognitovindue</translation> <translation id="2850739647070081192">Invite (Envelope)</translation> <translation id="2856444702002559011">Brugere med ondsindede hensigter kan forsøge at stjæle dine oplysninger fra <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (f.eks. adgangskoder, beskeder eller kreditkort). <ph name="BEGIN_LEARN_MORE_LINK" />Få flere oplysninger<ph name="END_LEARN_MORE_LINK" /></translation> @@ -810,6 +811,7 @@ <translation id="42981349822642051">Udvid</translation> <translation id="4300675098767811073">Flere huller i højre side</translation> <translation id="4302965934281694568">Chou3 (Envelope)</translation> +<translation id="4305666528087210886">Din fil kunne ikke tilgås</translation> <translation id="4305817255990598646">Skift</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloker (standardindstilling)</translation> @@ -828,6 +830,7 @@ <translation id="4358461427845829800">Administrer betalingsmetoder...</translation> <translation id="4359160567981085931">Du har lige angivet din adgangskode på et vildledende website. Chrome kan hjælpe. Klik på Beskyt konto for at ændre din adgangskode og underrette Google om, at din konto muligvis er kompromitteret.</translation> <translation id="4367563149485757821">Number-12 (Envelope)</translation> +<translation id="4367839622597707614">{1,plural, =0{Din gemte adgangskode til <ph name="ORIGIN" /> er blevet afsløret som følge af et brud på datasikkerheden på et website eller i en app. Chrome anbefaler, at du ændrer din adgangskode på <ph name="ORIGIN" /> med det samme.}=1{Din gemte adgangskode til <ph name="ORIGIN" /> og ét andet website er blevet afsløret som følge af et brud på datasikkerheden på et website eller i en app. Chrome anbefaler, at du tjekker dine gemte adgangskoder med det samme.}one{Din gemte adgangskode til <ph name="ORIGIN" /> og <ph name="SITES_COUNT" /> andet website er blevet afsløret som følge af et brud på datasikkerheden på et website eller i en app. Chrome anbefaler, at du tjekker dine gemte adgangskoder med det samme.}other{Din gemte adgangskode til <ph name="ORIGIN" /> og <ph name="SITES_COUNT" /> andre websites er blevet afsløret som følge af et brud på datasikkerheden på et website eller i en app. Chrome anbefaler, at du tjekker dine gemte adgangskoder med det samme.}}</translation> <translation id="437058704415269440">Kontosaldo</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Forventet <ph name="VALUE_TYPE" />-værdi.</translation> @@ -1298,6 +1301,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Potentielle debiteringer forude</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 andet forslag}one{# andet forslag}other{# andre forslag}}</translation> +<translation id="6387645831795005740">Hackere efterligner nogle gange websites ved at lave små ændringer af webadressen, som er svære at se.</translation> <translation id="6389470377220713856">Navn på kort</translation> <translation id="6390200185239044127">Z-fals halvt</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1511,6 +1515,7 @@ <translation id="7372973238305370288">søgeresultat</translation> <translation id="7374733840632556089">Dette problem opstår på grund af et certifikat, som du eller en anden har installeret på din enhed. Certifikatet anvendes ofte til at overvåge og opfange netværk, og Chrome har ikke tillid til det. Der findes legitime årsager til at overvåge, f.eks. på skole- og virksomhedsnetværk, men Chrome vil sikre, at du er bevidst om det, når det sker, også selvom du ikke kan stoppe det. Overvågning kan finde sted i enhver browser eller app, der har adgang til nettet.</translation> <translation id="7375818412732305729">En fil vedhæftes</translation> +<translation id="7376551888419889433">Når sikkerhedshændelser rapporteres af Chrome Enterprise Connectors, sendes der relevante data om hændelserne til din administrator. Disse data kan omfatte webadresserne til de sider, du besøger i Chrome, filnavne eller metadata samt det brugernavn, du brugte til at logge ind på din enhed og i Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Mediestyring</translation> <translation id="7378627244592794276">Nej</translation> @@ -1908,6 +1913,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Du har forsøgt at nå <ph name="DOMAIN" />, men serveren præsenterede et ugyldigt certifikat.</translation> <translation id="9050666287014529139">Adgangssætning</translation> +<translation id="9062620674789239642">Den kan være blevet flyttet, redigeret eller slettet.</translation> <translation id="9065203028668620118">Rediger</translation> <translation id="9065745800631924235">Søgningen <ph name="TEXT" /> i historikken</translation> <translation id="9069693763241529744">Blokeret af en udvidelse</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb index bad04c5..9da819e 100644 --- a/components/strings/components_strings_el.xtb +++ b/components/strings/components_strings_el.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Γραμμή διευθύνσεων και αναζήτησης</translation> <translation id="2826760142808435982">Η κρυπτογράφηση και ο έλεγχος ταυτότητας της σύνδεσης γίνονται με <ph name="CIPHER" /> και χρησιμοποιεί το <ph name="KX" /> ως μηχανισμό ανταλλαγής κλειδιών.</translation> <translation id="2835170189407361413">Διαγραφή φόρμας</translation> +<translation id="2839501879576190149">Ακολουθεί ψεύτικος ιστότοπος</translation> <translation id="2847118875340931228">Άνοιγμα παραθύρου για ανώνυμη περιήγηση</translation> <translation id="2850739647070081192">Invite (Φάκελος)</translation> <translation id="2856444702002559011">Οι εισβολείς ενδέχεται να προσπαθήσουν να υποκλέψουν τα στοιχεία σας από τον ιστότοπο <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (για παράδειγμα, κωδικούς πρόσβασης, μηνύματα ή πιστωτικές κάρτες). <ph name="BEGIN_LEARN_MORE_LINK" />Μάθετε περισσότερα<ph name="END_LEARN_MORE_LINK" /></translation> @@ -811,6 +812,7 @@ <translation id="42981349822642051">Επέκταση</translation> <translation id="4300675098767811073">Πολλαπλό τρύπημα στα δεξιά</translation> <translation id="4302965934281694568">Chou3 (Φάκελος)</translation> +<translation id="4305666528087210886">Δεν ήταν δυνατή η πρόσβαση στο αρχείο σας</translation> <translation id="4305817255990598646">Εναλλαγή</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Αποκλεισμός (προεπιλογή)</translation> @@ -829,6 +831,7 @@ <translation id="4358461427845829800">Διαχείριση τρόπων πληρωμής…</translation> <translation id="4359160567981085931">Μόλις καταχωρίσατε τον κωδικό πρόσβασής σας σε έναν παραπλανητικό ιστότοπο. Το Chrome μπορεί να βοηθήσει. Για να αλλάξετε τον κωδικό πρόσβασής σας και να ενημερώσετε την Google ότι ο λογαριασμός σας μπορεί να κινδυνεύει, κάντε κλικ στην επιλογή Προστασία λογαριασμού.</translation> <translation id="4367563149485757821">Number-12 (Φάκελος)</translation> +<translation id="4367839622597707614">{1,plural, =0{Μια παραβίαση δεδομένων σε έναν ιστότοπο ή μια εφαρμογή αποκάλυψε τον αποθηκευμένο κωδικό πρόσβασής σας για τον ιστότοπο <ph name="ORIGIN" />. Το Chrome συνιστά να αλλάξετε άμεσα τον κωδικό πρόσβασης στο <ph name="ORIGIN" />.}=1{Μια παραβίαση δεδομένων σε έναν ιστότοπο ή μια εφαρμογή αποκάλυψε τον αποθηκευμένο κωδικό πρόσβασής σας για τον ιστότοπο <ph name="ORIGIN" /> και έναν ακόμη ιστότοπο. To Chrome συνιστά να ελέγξετε άμεσα τους αποθηκευμένους κωδικούς πρόσβασής σας.}other{Μια παραβίαση δεδομένων σε έναν ιστότοπο ή μια εφαρμογή αποκάλυψε τον αποθηκευμένο κωδικό πρόσβασής σας για τον ιστότοπο <ph name="ORIGIN" /> και <ph name="SITES_COUNT" /> ακόμη ιστοτόπους. To Chrome συνιστά να ελέγξετε άμεσα τους αποθηκευμένους κωδικούς πρόσβασής σας.}}</translation> <translation id="437058704415269440">Υπόλοιπο λογαριασμού</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Αναμενόμενη τιμή <ph name="VALUE_TYPE" />.</translation> @@ -1299,6 +1302,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Ακολουθούν πιθανές χρεώσεις.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 πρόταση ακόμα}other{# προτάσεις ακόμα}}</translation> +<translation id="6387645831795005740">Οι εισβολείς απομιμούνται μερικές φορές ιστοτόπους κάνοντας μικρές, δυσδιάκριτες αλλαγές στο URL.</translation> <translation id="6389470377220713856">Όνομα σε κάρτα</translation> <translation id="6390200185239044127">Δίπλωμα Z στη μέση</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1512,6 +1516,7 @@ <translation id="7372973238305370288">αποτέλεσμα αναζήτησης</translation> <translation id="7374733840632556089">Αυτό το πρόβλημα οφείλεται σε ένα πιστοποιητικό που εσείς ή κάποιος άλλος εγκατέστησε στη συσκευή σας. Το πιστοποιητικό είναι γνωστό ότι χρησιμοποιείται για την παρακολούθηση και την υποκλοπή δικτύων και δεν θεωρείται αξιόπιστο από το Chrome. Αν και υπάρχουν ορισμένες νόμιμες περιπτώσεις παρακολούθησης, όπως σε ένα σχολικό ή εταιρικό δίκτυο, το Chrome θέλει να σιγουρευτεί πως γνωρίζετε ότι συμβαίνει, ακόμη και αν δεν μπορείτε να τη σταματήσετε. Η παρακολούθηση μπορεί να γίνει σε οποιοδήποτε πρόγραμμα περιήγησης ή εφαρμογή που έχει πρόσβαση στον ιστό.</translation> <translation id="7375818412732305729">Έχει επισυναφθεί αρχείο</translation> +<translation id="7376551888419889433">Όταν επισημαίνονται συμβάντα ασφαλείας από το Chrome Enterprise Connectors, σχετικά δεδομένα για τα συμβάντα αποστέλλονται στον διαχειριστή σας. Σε αυτά ενδέχεται να περιλαμβάνονται τα URL των σελίδων που επισκέπτεστε στο Chrome, ονόματα αρχείων ή μεταδεδομένα και το όνομα χρήστη που χρησιμοποιείτε για τη σύνδεση στη συσκευή σας και το Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Στοιχεία ελέγχου μέσων</translation> <translation id="7378627244592794276">Όχι</translation> @@ -1909,6 +1914,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Επιχειρήσατε να μεταβείτε στον <ph name="DOMAIN" /> , αλλά ο διακομιστής παρουσίασε ένα μη έγκυρο πιστοποιητικό.</translation> <translation id="9050666287014529139">Φράση πρόσβασής σας</translation> +<translation id="9062620674789239642">Ενδέχεται να έχει μετακινηθεί, να έχει υποβληθεί σε επεξεργασία ή να έχει διαγραφεί.</translation> <translation id="9065203028668620118">Επεξεργασία</translation> <translation id="9065745800631924235">Αναζήτηση <ph name="TEXT" /> από το ιστορικό</translation> <translation id="9069693763241529744">Αποκλείστηκε από μια επέκταση</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index ca187ef..b442fa4 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -449,6 +449,7 @@ <translation id="2824775600643448204">Address and search bar</translation> <translation id="2826760142808435982">The connection is encrypted and authenticated using <ph name="CIPHER" /> and uses <ph name="KX" /> as the key exchange mechanism.</translation> <translation id="2835170189407361413">Clear form</translation> +<translation id="2839501879576190149">Fake site ahead</translation> <translation id="2847118875340931228">Open incognito window</translation> <translation id="2850739647070081192">Invite (Envelope)</translation> <translation id="2856444702002559011">Attackers might be trying to steal your information from <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (for example, passwords, messages or credit cards). <ph name="BEGIN_LEARN_MORE_LINK" />Learn more<ph name="END_LEARN_MORE_LINK" /></translation> @@ -809,6 +810,7 @@ <translation id="42981349822642051">Expand</translation> <translation id="4300675098767811073">Multiple punch right</translation> <translation id="4302965934281694568">Chou3 (Envelope)</translation> +<translation id="4305666528087210886">Your file couldn’t be accessed</translation> <translation id="4305817255990598646">Switch</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Block (default)</translation> @@ -827,6 +829,7 @@ <translation id="4358461427845829800">Manage payment methods...</translation> <translation id="4359160567981085931">You just entered your password on a deceptive site. Chrome can help. To change your password and notify Google that your account may be at risk, click 'Protect account'.</translation> <translation id="4367563149485757821">Number-12 (Envelope)</translation> +<translation id="4367839622597707614">{1,plural, =0{A data breach on a site or app exposed your saved password for <ph name="ORIGIN" />. Chrome recommends changing your password on <ph name="ORIGIN" /> now.}=1{A data breach on a site or app exposed your saved password for <ph name="ORIGIN" /> and one other site. Chrome recommends checking your saved passwords now.}other{A data breach on a site or app exposed your saved password for <ph name="ORIGIN" /> and <ph name="SITES_COUNT" /> other sites. Chrome recommends checking your saved passwords now.}}</translation> <translation id="437058704415269440">Account balance</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Expected <ph name="VALUE_TYPE" /> value.</translation> @@ -1297,6 +1300,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Potential charges ahead.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 other suggestion}other{# other suggestions}}</translation> +<translation id="6387645831795005740">Attackers sometimes mimic sites by making small, hard-to-see changes to the URL.</translation> <translation id="6389470377220713856">Name on Card</translation> <translation id="6390200185239044127">Z-fold half</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1510,6 +1514,7 @@ <translation id="7372973238305370288">search result</translation> <translation id="7374733840632556089">This problem happens because of a certificate that you or someone else installed on your device. The certificate is known to be used to monitor and intercept networks, and is not trusted by Chrome. While some legitimate cases for monitoring do exist, like on a school or company network, Chrome wants to make sure that you're aware it's happening, even if you can't stop it. Monitoring may happen in any browser or application that accesses the web.</translation> <translation id="7375818412732305729">File is attached</translation> +<translation id="7376551888419889433">When security events are flagged by Chrome Enterprise Connectors, relevant data about the events is sent to your administrator. This can include the URLs of pages that you visit in Chrome, file names or metadata, and the username that you use to sign in to your device and Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Media controls</translation> <translation id="7378627244592794276">Nope</translation> @@ -1906,6 +1911,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">You attempted to reach <ph name="DOMAIN" />, but the server presented an invalid certificate.</translation> <translation id="9050666287014529139">Passphrase</translation> +<translation id="9062620674789239642">It may have been moved, edited or deleted.</translation> <translation id="9065203028668620118">Edit</translation> <translation id="9065745800631924235"><ph name="TEXT" /> search from history</translation> <translation id="9069693763241529744">Blocked by an extension</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index 30742d1..c553153 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -45,6 +45,7 @@ <translation id="115926840831309955">Comprueba el código CVC y vuelve a intentarlo o actualiza la fecha de vencimiento</translation> <translation id="1161325031994447685">Volver a conectarte a una red Wi-Fi</translation> <translation id="1165039591588034296">Error</translation> +<translation id="1165174597379888365">Se visita una página</translation> <translation id="1175364870820465910">Im&primir...</translation> <translation id="1175875016430184367">Grapado triple en la parte derecha</translation> <translation id="1178581264944972037">Pausar</translation> @@ -265,6 +266,7 @@ <translation id="2001146170449793414">{COUNT,plural, =1{y una más}other{y # más}}</translation> <translation id="2003709556000175978">Cambia tu contraseña ahora</translation> <translation id="2003775180883135320">Perforado cuádruple en la parte superior</translation> +<translation id="202072848677994234">Este formulario se envía a través de una conexión no segura. Se ha inhabilitado la opción de autocompletar.</translation> <translation id="2025115093177348061">Realidad aumentada</translation> <translation id="2025186561304664664">Se ha establecido que el proxy se configure automáticamente.</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Comprobar el proxy y el cortafuegos<ph name="END_LINK" /></translation> @@ -332,6 +334,7 @@ <translation id="2289385804009217824">Recortar</translation> <translation id="2292556288342944218">Tu acceso a Internet está bloqueado</translation> <translation id="2293443924986248631">Si activas esta opción, los sitios web no podrán usar cookies para hacer un seguimiento de tu actividad en la Web. Es posible que las funciones de algunos sitios web no funcionen correctamente.</translation> +<translation id="2295290966866883927">Las URL de las páginas que visites se enviarán a Google Cloud o a terceros para que se analicen. Por ejemplo, puede que se analicen para detectar sitios web no seguros.</translation> <translation id="2297722699537546652">B5 (sobre)</translation> <translation id="2300306941146563769">No subido</translation> <translation id="2310021320168182093">Chou2 (sobre)</translation> @@ -679,7 +682,7 @@ <translation id="3799805948399000906">Fuente solicitada</translation> <translation id="3807366285948165054">Desplazamiento de la imagen en el eje X</translation> <translation id="3807873520724684969">Contenido dañino bloqueado.</translation> -<translation id="3808375843007691220">Advertencia: Se han detectado funciones experimentales.</translation> +<translation id="3808375843007691220">Advertencia: Estas funciones son experimentales</translation> <translation id="3810973564298564668">Gestionar</translation> <translation id="382518646247711829">Si utilizas un servidor proxy...</translation> <translation id="3827112369919217609">Absoluto</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 321e89b8..ceca9adc 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -45,6 +45,7 @@ <translation id="115926840831309955">તમારું CVC ચેક કરો અને ફરીથી પ્રયાસ કરો અથવા સમાપ્તિ તારીખ અપડેટ કરો</translation> <translation id="1161325031994447685">વાઇ-ફાઇ સાથે ફરીથી કનેક્ટ કરીને</translation> <translation id="1165039591588034296">ભૂલ</translation> +<translation id="1165174597379888365">પેજની મુલાકાત લેવામાં આવી છે</translation> <translation id="1175364870820465910">&છાપો...</translation> <translation id="1175875016430184367">નીચે જમણી બાજુએ સ્ટેપલ લગાવો</translation> <translation id="1178581264944972037">થોભો</translation> @@ -265,6 +266,7 @@ <translation id="2001146170449793414">{COUNT,plural, =1{અને 1 વધુ}one{અને # વધુ}other{અને # વધુ}}</translation> <translation id="2003709556000175978">તમારો પાસવર્ડ હમણાં જ રીસેટ કરો</translation> <translation id="2003775180883135320">ઉપરની બાજુએ ચતુષ્કોણ કાણું પાડો</translation> +<translation id="202072848677994234">આ ફોર્મને કોઈ અસુરક્ષિત ડેટા કનેક્શન મારફતે સબમિટ કરવામાં આવી રહ્યું છે. ઑટોમૅટિક રીતે ફાઇલ કરવું બંધ કરવામાં આવ્યું છે.</translation> <translation id="2025115093177348061">ઑગ્મેન્ટેડ રિયાલિટી</translation> <translation id="2025186561304664664">પ્રૉક્સીને ઑટો ગોઠવણી મોડ પર સેટ કરાઈ છે.</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />પ્રૉક્સી અને ફાયરવૉલ ચેક કરવાનો પ્રયાસ કરો<ph name="END_LINK" /></translation> @@ -332,6 +334,7 @@ <translation id="2289385804009217824">ટ્રિમ કરો</translation> <translation id="2292556288342944218">તમારી ઇન્ટરનેટ ઍક્સેસ અવરોધિત છે</translation> <translation id="2293443924986248631">જ્યારે આ વિકલ્પ ચાલુ હોય, ત્યારે સાઇટ તમને વેબ પર બધે ટ્રૅક કરતી કુકીનો ઉપયોગ કરી શકશે નહીં. અમુક સાઇટ પરની સુવિધાઓમાં કદાચ ખલેલ પડી શકે છે.</translation> +<translation id="2295290966866883927">તમે મુલાકાત લેતા હો તે પેજના URLs, વિશ્લેષણ માટે Google ક્લાઉડ અથવા ત્રીજા પક્ષને મોકલવામાં આવે છે. ઉદાહરણ તરીકે, અસુરક્ષિત વેબસાઇટની ભાળ મેળવવા માટે કદાચ તેને સ્કૅન કરવામાં આવી શકે છે.</translation> <translation id="2297722699537546652">B5 (એન્વલપ)</translation> <translation id="2300306941146563769">અપલોડ કર્યો નથી</translation> <translation id="2310021320168182093">Chou2 (એન્વલપ)</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index 84e16e0..3f192b7d 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Adresna traka i traka za pretraživanje</translation> <translation id="2826760142808435982">Veza je kriptirana i autentificirana šifrom <ph name="CIPHER" />, a <ph name="KX" /> služi za mehanizam razmjene ključeva.</translation> <translation id="2835170189407361413">Obriši obrazac</translation> +<translation id="2839501879576190149">Pokušavate pristupiti lažnoj web-lokaciji</translation> <translation id="2847118875340931228">Otvori anonimni prozor</translation> <translation id="2850739647070081192">Invite (omotnica)</translation> <translation id="2856444702002559011">Napadači možda pokušavaju ukrasti vaše podatke s web-lokacije <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (na primjer zaporke, poruke ili brojeve kreditnih kartica). <ph name="BEGIN_LEARN_MORE_LINK" />Saznajte više<ph name="END_LEARN_MORE_LINK" /></translation> @@ -810,6 +811,7 @@ <translation id="42981349822642051">Proširi</translation> <translation id="4300675098767811073">Višestruko bušenje s desne strane</translation> <translation id="4302965934281694568">Chou3 (omotnica)</translation> +<translation id="4305666528087210886">Pristup datoteci nije uspio</translation> <translation id="4305817255990598646">Prebaci</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokiraj (zadano)</translation> @@ -828,6 +830,7 @@ <translation id="4358461427845829800">Upravljajte načinima plaćanja...</translation> <translation id="4359160567981085931">Upravo ste unijeli zaporku na obmanjujućoj web-lokaciji. Chrome može pomoći. Da biste promijenili zaporku i obavijestili Google da je vaš račun možda ugrožen, kliknite Zaštitite račun.</translation> <translation id="4367563149485757821">Number-12 (omotnica)</translation> +<translation id="4367839622597707614">{1,plural, =0{Spremljena zaporka za <ph name="ORIGIN" /> ugrožena je zbog povrede podataka na web-lokaciji ili u aplikaciji. Chrome preporučuje da odmah promijenite zaporku za <ph name="ORIGIN" />.}=1{Spremljena zaporka za <ph name="ORIGIN" /> i još jednu web-lokaciju ugrožena je zbog povrede podataka na web-lokaciji ili u aplikaciji. Chrome preporučuje da odmah provjerite spremljene zaporke.}one{Spremljena zaporka za <ph name="ORIGIN" /> i još <ph name="SITES_COUNT" /> web-lokaciju ugrožena je zbog povrede podataka na web-lokaciji ili u aplikaciji. Chrome preporučuje da odmah provjerite spremljene zaporke.}few{Spremljena zaporka za <ph name="ORIGIN" /> i još <ph name="SITES_COUNT" /> web-lokacije ugrožena je zbog povrede podataka na web-lokaciji ili u aplikaciji. Chrome preporučuje da odmah provjerite spremljene zaporke.}other{Spremljena zaporka za <ph name="ORIGIN" /> i još <ph name="SITES_COUNT" /> web-lokacija ugrožena je zbog povrede podataka na web-lokaciji ili u aplikaciji. Chrome preporučuje da odmah provjerite spremljene zaporke.}}</translation> <translation id="437058704415269440">Stanje računa</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Očekivana vrijednost vrste <ph name="VALUE_TYPE" />.</translation> @@ -1298,6 +1301,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Ako nastavite, moguća je naplata.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 drugi prijedlog}one{# drugi prijedlog}few{# druga prijedloga}other{# drugih prijedloga}}</translation> +<translation id="6387645831795005740">Napadači ponekad oponašaju web-lokacije unošenjem malih, teško uočljivih promjena u URL.</translation> <translation id="6389470377220713856">Ime na kartici</translation> <translation id="6390200185239044127">Cik-cak presavijanje napola</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1511,6 +1515,7 @@ <translation id="7372973238305370288">rezultat pretraživanja</translation> <translation id="7374733840632556089">Do ovog problema dolazi zbog certifikata koji ste vi ili neka druga osoba instalirali na ovaj uređaj. Certifikat se upotrebljava za nadzor i presretanje mreža i Chrome ga ne smatra pouzdanim. Iako postoje opravdani razlozi za nadziranje, kao na primjer na školskoj mreži ili mreži tvrtke, Chrome želi da budete svjesni da se to događa, čak i ako to ne možete spriječiti. Nadziranje je moguće u bilo kojem pregledniku ili aplikaciji koja pristupa webu.</translation> <translation id="7375818412732305729">Datoteka je priložena</translation> +<translation id="7376551888419889433">Kad poveznici za Chrome za poduzeća označe sigurnosne događaje, vašem administratoru šalju se relevantni podaci o tim događajima. To može uključivati URL-ove stranica koje posjetite u Chromeu, nazive datoteka ili metapodatke, kao i korisničko ime koje upotrebljavate za prijavu na svoj uređaj i Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Medijske kontrole</translation> <translation id="7378627244592794276">Ne</translation> @@ -1908,6 +1913,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Pokušali ste pristupiti domeni <ph name="DOMAIN" />, ali poslužitelj je prikazao nevažeći certifikat.</translation> <translation id="9050666287014529139">Zaporka</translation> +<translation id="9062620674789239642">Možda je premještena, uređena ili izbrisana.</translation> <translation id="9065203028668620118">Uredi</translation> <translation id="9065745800631924235">Pretraživanje <ph name="TEXT" /> iz povijesti</translation> <translation id="9069693763241529744">Blokiralo proširenje</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index 20ca0fd..6b7340ad 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -639,7 +639,7 @@ <translation id="3676592649209844519">ID Perangkat:</translation> <translation id="3677008721441257057">Maksud Anda <a href="#" id="dont-proceed-link"><ph name="DOMAIN" /></a>?</translation> <translation id="3678029195006412963">Permintaan tidak dapat ditandatangani</translation> -<translation id="3678529606614285348">Buka halaman dalam Jendela samaran baru (Ctrl-Shift-N)</translation> +<translation id="3678529606614285348">Buka halaman dalam jendela Samaran baru (Ctrl-Shift-N)</translation> <translation id="3681007416295224113">Informasi sertifikat</translation> <translation id="3701427423622901115">Setel ulang dikonfirmasi.</translation> <translation id="3704162925118123524">Jaringan yang digunakan mungkin mewajibkan Anda mengunjungi halaman masuk jaringan.</translation> @@ -771,8 +771,8 @@ <li>Buka situs yang diawali dengan <code>http://</code>, seperti <a href="http://example.com" target="_blank">http://example.com</a>.</li> <li>Di halaman login yang terbuka, silakan login untuk menggunakan internet.</li> </ol> - <h4>Langkah 2: Buka halaman dalam Mode samaran (khusus komputer)</h4> - <p>Buka halaman yang Anda akses sebelumnya dalam Jendela samaran.</p> + <h4>Langkah 2: Buka halaman dalam mode Samaran (khusus komputer)</h4> + <p>Buka halaman yang Anda akses sebelumnya dalam jendela Samaran.</p> <p>Jika halaman tersebut terbuka, ekstensi Chrome tidak berfungsi dengan baik. Untuk memperbaiki error, nonaktifkan ekstensi.</p> <h4>Langkah 3: Update sistem operasi</h4> <p>Pastikan perangkat sudah diupdate.</p> @@ -992,7 +992,7 @@ <translation id="5148809049217731050">Menghadap ke atas</translation> <translation id="515292512908731282">C4 (Envelope)</translation> <translation id="5158275234811857234">Sampul</translation> -<translation id="5159010409087891077">Buka halaman dalam Jendela samaran baru (⇧⌘N)</translation> +<translation id="5159010409087891077">Buka halaman dalam jendela Samaran baru (⇧⌘N)</translation> <translation id="5161506081086828129">Tempat kertas 9</translation> <translation id="5164798890604758545">Teks dimasukkan</translation> <translation id="516920405563544094">Masukkan CVC untuk <ph name="CREDIT_CARD" />. Setelah mengonfirmasi, detail kartu dari Akun Google Anda akan dibagikan dengan situs ini.</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb index 844a6f4..51d06c4a 100644 --- a/components/strings/components_strings_is.xtb +++ b/components/strings/components_strings_is.xtb
@@ -451,6 +451,7 @@ <translation id="2824775600643448204">Veffanga- og leitarstika</translation> <translation id="2826760142808435982">Tengingin er dulkóðuð og sannvottuð með <ph name="CIPHER" /> og <ph name="KX" /> er notað sem aðferð til að skiptast á lyklum.</translation> <translation id="2835170189407361413">Hreinsa eyðublað</translation> +<translation id="2839501879576190149">Fölsk síða</translation> <translation id="2847118875340931228">Opna huliðsglugga</translation> <translation id="2850739647070081192">Invite (umslag)</translation> <translation id="2856444702002559011">Tölvuþrjótar gætu verið að reyna að stela upplýsingum þínum frá <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (til dæmis aðgangsorðum, skilaboðum eða kreditkortum). <ph name="BEGIN_LEARN_MORE_LINK" />Frekari upplýsingar<ph name="END_LEARN_MORE_LINK" /></translation> @@ -811,6 +812,7 @@ <translation id="42981349822642051">Stækka</translation> <translation id="4300675098767811073">Mörg göt hægra megin</translation> <translation id="4302965934281694568">Chou3 (umslag)</translation> +<translation id="4305666528087210886">Ekki var hægt að opna skrána þína</translation> <translation id="4305817255990598646">Skipta</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Útiloka (sjálfgefið)</translation> @@ -829,6 +831,7 @@ <translation id="4358461427845829800">Stjórna greiðslumátum...</translation> <translation id="4359160567981085931">Þú varst að slá aðgangsorðið þitt inn á villandi vefsvæði. Chrome getur aðstoðað. Smelltu á „Vernda reikning“ til að breyta lykilorðinu þínu og láta Google vita að reikningurinn þinn sé hugsanlega í hættu.</translation> <translation id="4367563149485757821">Number-12 (umslag)</translation> +<translation id="4367839622597707614">{1,plural, =0{Öryggisbrot á vefsvæði eða í forriti afhjúpaði vistað aðgangsorð þitt fyrir <ph name="ORIGIN" />. Chrome mælir með því að þú breytir aðgangsorðinu þínu fyrir <ph name="ORIGIN" /> núna.}=1{Öryggisbrot á vefsvæði eða í forriti afhjúpaði vistað aðgangsorð þitt fyrir <ph name="ORIGIN" /> og eina síðu til vibótar. Chrome mælir með því að þú athugir vistuðu aðgangsorðin þín núna.}one{Öryggisbrot á vefsvæði eða í forriti afhjúpaði vistað aðgangsorð þitt fyrir <ph name="ORIGIN" /> og <ph name="SITES_COUNT" /> síðu til viðbótar. Chrome mælir með því að þú athugir vistuðu aðgangsorðin þín núna.}other{Öryggisbrot á vefsvæði eða í forriti afhjúpaði vistað aðgangsorð þitt fyrir <ph name="ORIGIN" /> og <ph name="SITES_COUNT" /> síður til viðbótar. Chrome mælir með því að þú athugir vistuðu aðgangsorðin þín núna.}}</translation> <translation id="437058704415269440">Reikningsstaða</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Búist var við <ph name="VALUE_TYPE" /> gildi.</translation> @@ -1299,6 +1302,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Hugsanleg gjöld framundan.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{ein tillaga í viðbót}one{# tillaga í viðbót}other{# tillögur í viðbót}}</translation> +<translation id="6387645831795005740">Stundum herma tölvuþrjótar eftir vefsvæðum með því að gera litlar og illgreinanlegar breytingar á vefslóðinni.</translation> <translation id="6389470377220713856">Nafn á korti</translation> <translation id="6390200185239044127">Z-brot í miðju</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1512,6 +1516,7 @@ <translation id="7372973238305370288">leitarniðurstaða</translation> <translation id="7374733840632556089">Þetta vandamál tengist vottorði sem þú eða einhver annar setti upp í tækinu þínu. Vitað er að þetta vottorð er notað til að fylgjast með og grípa inn í netkerfi og Chrome treystir því ekki. Þrátt fyrir að notkun þess geti í einhverjum tilvikum átt rétt á sér, svo sem á skóla- eða fyrirtækjaneti, vill Chrome tryggja að þú vitir af því, þó að þú getir ekki komið í veg fyrir notkun þess. Eftirlit getur átt sér stað í öllum vöfrum eða forritum sem nota vefinn.</translation> <translation id="7375818412732305729">Skrá er hengd við</translation> +<translation id="7376551888419889433">Þegar Chrome Enterprise Connectors flagga öryggisatvik eru viðeigandi gögn um atvikin send til kerfisstjórans. Þetta getur innihaldið vefslóðir síðna sem þú opnar, skráarheiti eða lýsigögn og notandanafnið sem þú notar til að skrá þig inn á tækið og í Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Spilunarstýringar</translation> <translation id="7378627244592794276">Neibb</translation> @@ -1908,6 +1913,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Þú reyndir að tengjast <ph name="DOMAIN" /> en netþjónninn framvísaði ógildu vottorði.</translation> <translation id="9050666287014529139">Aðgangsorð</translation> +<translation id="9062620674789239642">Hugsanlega var hún færð, henni breytt eða eytt.</translation> <translation id="9065203028668620118">Breyta</translation> <translation id="9065745800631924235"><ph name="TEXT" /> í leitarferli</translation> <translation id="9069693763241529744">Útilokað af viðbót</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index ec245a95..bd8269b 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -334,7 +334,7 @@ <translation id="2289385804009217824">Taglio</translation> <translation id="2292556288342944218">L'accesso a Internet è bloccato</translation> <translation id="2293443924986248631">Se questa opzione è attiva, i siti non possono utilizzare i cookie per monitorare la tua attività sul Web. Le funzionalità su alcuni siti potrebbero non essere disponibili.</translation> -<translation id="2295290966866883927">Gli URL delle pagine che visiti vengono inviati a Google Cloud o a terze parti per l'analisi. Ad esempio, potrebbero essere sottoposti a scansione per rilevare siti web non sicuri.</translation> +<translation id="2295290966866883927">Gli URL delle pagine che visiti vengono inviati a Google Cloud o a terze parti a scopo di analisi. Ad esempio, potrebbero essere sottoposti a scansione per rilevare siti web non sicuri.</translation> <translation id="2297722699537546652">B5 (Envelope)</translation> <translation id="2300306941146563769">Non caricato</translation> <translation id="2310021320168182093">Chou2 (Envelope)</translation> @@ -394,7 +394,7 @@ <translation id="2552295903035773204">Usa il blocco schermo per verificare le carte da questo momento in poi</translation> <translation id="2553853292994445426">Controlla le impostazioni del sistema DNS sicuro. Potresti avere configurato un server DNS sicuro con il quale non è possibile stabilire connessioni.</translation> <translation id="2556876185419854533">&Annulla modifica</translation> -<translation id="257674075312929031">Gruppo</translation> +<translation id="257674075312929031">Raggruppa</translation> <translation id="2586657967955657006">Appunti</translation> <translation id="2587730715158995865">Da <ph name="ARTICLE_PUBLISHER" />. Leggi questo e altri <ph name="OTHER_ARTICLE_COUNT" /> articoli.</translation> <translation id="2587841377698384444">ID API Directory:</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index eefc7786..bb4f61e 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ja"> <translation id="1008557486741366299">後で</translation> +<translation id="100957008357583611">位置情報を使用しますか?</translation> <translation id="1010200102790553230">後でページを読み込む</translation> <translation id="1015730422737071372">詳細を報告する</translation> <translation id="1019413721762100891">オフ</translation> @@ -1164,6 +1165,7 @@ <translation id="5869405914158311789">このサイトにアクセスできません</translation> <translation id="5869522115854928033">保存したパスワード</translation> <translation id="5887400589839399685">カードが保存されました</translation> +<translation id="589006512797629854"><ph name="ENROLLMENT_DOMAIN" /> が、データをバックアップして、このデバイスを返却するよう求めています。</translation> <translation id="5895138241574237353">再起動</translation> <translation id="5895187275912066135">発行日</translation> <translation id="5901630391730855834">黄</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb index 7e20ca9b..4a4e4b68 100644 --- a/components/strings/components_strings_ky.xtb +++ b/components/strings/components_strings_ky.xtb
@@ -2,7 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ky"> <translation id="1008557486741366299">Азыр эмес</translation> -<translation id="100957008357583611">Кайда жүргөнүңүз көрүнсүнбү?</translation> +<translation id="100957008357583611">Жайгашкан жериңиз көрүнсүнбү?</translation> <translation id="1010200102790553230">Барак кийинчерээк жүктөлсүн</translation> <translation id="1015730422737071372">Кошумча маалымат берүү</translation> <translation id="1019413721762100891">Өчүк</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb index 9724b46..e51f673 100644 --- a/components/strings/components_strings_lt.xtb +++ b/components/strings/components_strings_lt.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Adreso ir paieškos juosta</translation> <translation id="2826760142808435982">Ryšys užšifruotas ir tapatybė nustatyta naudojant <ph name="CIPHER" />. <ph name="KX" /> naudojamas kaip pagrindinis mainų mechanizmas.</translation> <translation id="2835170189407361413">Valyti formą</translation> +<translation id="2839501879576190149">Ketinate apsilankyti netikroje svetainėje</translation> <translation id="2847118875340931228">Atidaryti inkognito langą</translation> <translation id="2850739647070081192">„Invite“ (vokas)</translation> <translation id="2856444702002559011">Užpuolikai gali bandyti pavogti jūsų informaciją iš <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (pvz., slaptažodžius, pranešimus ar kredito kortelių duomenis). <ph name="BEGIN_LEARN_MORE_LINK" />Sužinokite daugiau<ph name="END_LEARN_MORE_LINK" /></translation> @@ -811,6 +812,7 @@ <translation id="42981349822642051">Išskleisti</translation> <translation id="4300675098767811073">Kelios skylės dešinėje</translation> <translation id="4302965934281694568">„Chou3“ (vokas)</translation> +<translation id="4305666528087210886">Nepavyko pasiekti failo</translation> <translation id="4305817255990598646">Perjungti</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Užblokuoti (numatytoji parinktis)</translation> @@ -829,6 +831,7 @@ <translation id="4358461427845829800">Tvarkyti mokėjimo metodus...</translation> <translation id="4359160567981085931">Ką tik savo slaptažodį įvedėte apgaulingoje svetainėje. „Chrome“ gali padėti. Norėdami pakeisti slaptažodį ir pranešti „Google“, kad jūsų paskyrai gali grėsti pavojus, spustelėkite „Apsaugoti paskyrą“.</translation> <translation id="4367563149485757821">„Number-12“ (vokas)</translation> +<translation id="4367839622597707614">{1,plural, =0{Dėl duomenų saugos pažeidimo svetainėje ar programoje buvo atskleistas jūsų <ph name="ORIGIN" /> slaptažodis. „Chrome“ rekomenduoja dabar pakeisti <ph name="ORIGIN" /> slaptažodį.}=1{Dėl duomenų saugos pažeidimo svetainėje ar programoje buvo atskleisti jūsų <ph name="ORIGIN" /> ir dar vienos svetainės slaptažodžiai. „Chrome“ rekomenduoja dabar patikrinti išsaugotus slaptažodžius.}one{Dėl duomenų saugos pažeidimo svetainėje ar programoje buvo atskleisti jūsų <ph name="ORIGIN" /> ir dar <ph name="SITES_COUNT" /> svetainės slaptažodžiai. „Chrome“ rekomenduoja dabar patikrinti išsaugotus slaptažodžius.}few{Dėl duomenų saugos pažeidimo svetainėje ar programoje buvo atskleisti jūsų <ph name="ORIGIN" /> ir dar <ph name="SITES_COUNT" /> svetainių slaptažodžiai. „Chrome“ rekomenduoja dabar patikrinti išsaugotus slaptažodžius.}many{Dėl duomenų saugos pažeidimo svetainėje ar programoje buvo atskleisti jūsų <ph name="ORIGIN" /> ir dar <ph name="SITES_COUNT" /> svetainės slaptažodžiai. „Chrome“ rekomenduoja dabar patikrinti išsaugotus slaptažodžius.}other{Dėl duomenų saugos pažeidimo svetainėje ar programoje buvo atskleisti jūsų <ph name="ORIGIN" /> ir dar <ph name="SITES_COUNT" /> svetainių slaptažodžiai. „Chrome“ rekomenduoja dabar patikrinti išsaugotus slaptažodžius.}}</translation> <translation id="437058704415269440">Sąskaitos balansas</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Numatyta „<ph name="VALUE_TYPE" />“ vertė.</translation> @@ -1299,6 +1302,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Galimi apmokestinimai.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{Dar 1 pasiūlymas}one{Dar # pasiūlymas}few{Dar # pasiūlymai}many{Dar # pasiūlymo}other{Dar # pasiūlymų}}</translation> +<translation id="6387645831795005740">Atakos vykdytojai kartais sukuria svetainių kopijas ir atlieka nedidelių, sunkiai pastebimų URL pakeitimų.</translation> <translation id="6389470377220713856">Vardas kortel.</translation> <translation id="6390200185239044127">Z formos perlenkimas pusiau</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1512,6 +1516,7 @@ <translation id="7372973238305370288">paieškos rezultatas</translation> <translation id="7374733840632556089">Ši problema kyla dėl sertifikato, kurį jūs ar kitas asmuo įdiegėte įrenginyje. Žinoma, kad sertifikatas naudojamas tinklams stebėti ir nuskaityti ir nėra patikimas sistemoje „Chrome“. Kai kurie stebėjimo atvejai yra teisėti, pvz., mokyklos ar įmonės tinkle, bet „Chrome“ nori būti tikra, kad apie stebėjimą būsite informuoti, net jei jo nutraukti negalite. Stebėjimas galimas bet kurioje naršyklėje ar programoje, iš kurių pasiekiamas žiniatinklis.</translation> <translation id="7375818412732305729">Pridėtas failas</translation> +<translation id="7376551888419889433">Kai saugos įvykius pažymi „Chrome Enterprise Connectors“, atitinkami įvykių duomenys išsiunčiami administratoriui. Tai gali būti naršyklėje „Chrome“ lankomų puslapių URL, failų pavadinimai ar metaduomenys ir naudotojo vardas, kurį naudodami prisijungiate prie įrenginio ir „Chrome“.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Medijos valdikliai</translation> <translation id="7378627244592794276">Ne</translation> @@ -1909,6 +1914,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Bandėte pasiekti <ph name="DOMAIN" />, bet serveris pateikė neteisingą sertifikatą.</translation> <translation id="9050666287014529139">Slaptafrazė</translation> +<translation id="9062620674789239642">Galbūt jis buvo perkeltas, redaguotas ar ištrintas.</translation> <translation id="9065203028668620118">Redaguoti</translation> <translation id="9065745800631924235">„<ph name="TEXT" />“ paieška istorijoje</translation> <translation id="9069693763241529744">Užblokuota pagal plėtinį</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index 70ce8f3..a257ff2 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -45,6 +45,7 @@ <translation id="115926840831309955">तुमचे CVC तपासा आणि पुन्हा प्रयत्न करा किंवा एक्स्पायरीची तारीख अपडेट करा</translation> <translation id="1161325031994447685">वाय-फाय शी पुन्हा कनेक्ट करत आहे</translation> <translation id="1165039591588034296">एरर</translation> +<translation id="1165174597379888365">पेजला भेट दिली</translation> <translation id="1175364870820465910">&मुद्रण...</translation> <translation id="1175875016430184367">ट्रिपल स्टेपल राइट</translation> <translation id="1178581264944972037">विराम द्या</translation> @@ -265,6 +266,7 @@ <translation id="2001146170449793414">{COUNT,plural, =1{आणि 1 अधिक}other{आणि # अधिक}}</translation> <translation id="2003709556000175978">आता तुमचा पासवर्ड रीसेट करा</translation> <translation id="2003775180883135320">क्वाड पंच टॉप</translation> +<translation id="202072848677994234">हा फॉर्म असुरक्षित कनेक्शनद्वारे पाठवला आहे. आपोआप भरणे बंद केले आहे.</translation> <translation id="2025115093177348061">ऑगमेंटेड रीअॅलिटी</translation> <translation id="2025186561304664664">प्रॉक्सी स्वयंचलित कॉन्फिगरेशनवर सेट करण्यात आली.</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />प्रॉक्सी आणि फायरवॉल तपासणे<ph name="END_LINK" /></translation> @@ -332,6 +334,7 @@ <translation id="2289385804009217824">ट्रिम करा</translation> <translation id="2292556288342944218">तुमचा इंटरनेट ॲक्सेस ब्लॉक केला आहे</translation> <translation id="2293443924986248631">सुरू असताना, साइट संपूर्ण वेबवर तुमचा माग ठेवणाऱ्या कुकी वापरू शकत नाहीत. काही साइटवरील वैशिष्ट्यांमध्ये खंड पडू शकतो.</translation> +<translation id="2295290966866883927">तुम्ही भेट देता त्या पेजच्या URL विश्लेषणासाठी Google Cloud किंवा तृतीय पक्षांना पाठवल्या जातात. उदाहरणार्थ, असुरक्षित वेबसाइट डिटेक्ट करण्यासाठी त्या कदाचित तपासल्या जाऊ शकतात.</translation> <translation id="2297722699537546652">B5 (Envelope)</translation> <translation id="2300306941146563769">अपलोड केला नाही</translation> <translation id="2310021320168182093">Chou2 (Envelope)</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index 0eddb32..0792ae1 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Adresse- og søkefelt</translation> <translation id="2826760142808435982">Tilkoblingen er kryptert ved hjelp av <ph name="CIPHER" />, og bruker <ph name="KX" /> som mekanisme for nøkkelutveksling.</translation> <translation id="2835170189407361413">Slett skjemaet</translation> +<translation id="2839501879576190149">Falskt nettsted i sikte</translation> <translation id="2847118875340931228">Åpne et inkognitovindu</translation> <translation id="2850739647070081192">Invite (konvolutt)</translation> <translation id="2856444702002559011">Det kan hende at angripere prøver å stjele informasjonen din fra <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (for eksempel passord, meldinger og kredittkortinformasjon). <ph name="BEGIN_LEARN_MORE_LINK" />Finn ut mer<ph name="END_LEARN_MORE_LINK" /></translation> @@ -810,6 +811,7 @@ <translation id="42981349822642051">Vis</translation> <translation id="4300675098767811073">Flere hull høyre</translation> <translation id="4302965934281694568">Chou3 (konvolutt)</translation> +<translation id="4305666528087210886">Kunne ikke åpne filen</translation> <translation id="4305817255990598646">Bytt</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokkér (standard)</translation> @@ -828,6 +830,7 @@ <translation id="4358461427845829800">Administrer betalingsmåter…</translation> <translation id="4359160567981085931">Du har nettopp skrevet inn passordet ditt på et villedende nettsted. Chrome kan hjelpe deg. For å bytte passord og varsle Google om at kontoen din kanskje er i fare, klikk på Beskytt konto.</translation> <translation id="4367563149485757821">Number-12 (konvolutt)</translation> +<translation id="4367839622597707614">{1,plural, =0{Et databrudd på et nettsted eller i en app har avdekket det lagrede passordet ditt for <ph name="ORIGIN" />. Chrome anbefaler at du endrer passordet ditt på <ph name="ORIGIN" /> nå.}=1{Et databrudd på et nettsted eller i en app har avdekket det lagrede passordet ditt for <ph name="ORIGIN" /> og ett nettsted til. Chrome anbefaler at du sjekker de lagrede passordene dine nå.}other{Et databrudd på et nettsted eller i en app har avdekket det lagrede passordet ditt for <ph name="ORIGIN" /> og <ph name="SITES_COUNT" /> nettsteder til. Chrome anbefaler at du sjekker de lagrede passordene dine nå.}}</translation> <translation id="437058704415269440">Kontosaldo</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Forventet <ph name="VALUE_TYPE" />-verdi.</translation> @@ -1298,6 +1301,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Potensielle gebyrer i sikte.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 annet forslag}other{# andre forslag}}</translation> +<translation id="6387645831795005740">Noen ganger etterligner angripere nettsteder ved å gjøre små endringer som er vanskelige å se, i nettadressen.</translation> <translation id="6389470377220713856">Navn som er oppført på kortet</translation> <translation id="6390200185239044127">Halv Z-fals</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1510,6 +1514,7 @@ <translation id="7372973238305370288">søkeresultat</translation> <translation id="7374733840632556089">Dette problemet oppstår på grunn av et sertifikat du eller noen andre har installert på enheten. Det er kjent at sertifikatet brukes til nettverksavlytting og -overvåking, og Chrome stoler ikke på det. Selv om det finnes legitime bruksområder for overvåking, f.eks. på skole- eller bedriftsnettverk, vil Chrome sørge for at du er klar over at det foregår, selv om du ikke kan stoppe det. Overvåking kan skje i alle nettlesere og applikasjoner som bruker nettet.</translation> <translation id="7375818412732305729">Filer legges ved</translation> +<translation id="7376551888419889433">Når Chrome Enterprise Connectors merker sikkerhetshendelser, blir relevante data om hendelsene sendt til administratoren din. Dette kan omfatte nettadressene til sider du besøker i Chrome, filnavn, metadata og brukernavnet du bruker når du logger på enheten din og Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Mediekontroller</translation> <translation id="7378627244592794276">Nei takk</translation> @@ -1906,6 +1911,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Du forsøkte å nå <ph name="DOMAIN" />, men tjeneren oppga et ugyldig sertifikat.</translation> <translation id="9050666287014529139">Passordfrase</translation> +<translation id="9062620674789239642">Den kan ha blitt flyttet, redigert eller slettet.</translation> <translation id="9065203028668620118">Endre</translation> <translation id="9065745800631924235"><ph name="TEXT" />-søk fra loggen</translation> <translation id="9069693763241529744">Blokkert av en utvidelse</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb index c52c83e..d613e8d 100644 --- a/components/strings/components_strings_pl.xtb +++ b/components/strings/components_strings_pl.xtb
@@ -446,6 +446,7 @@ <translation id="2824775600643448204">Pasek adresu i wyszukiwania</translation> <translation id="2826760142808435982">Połączenie jest szyfrowane i uwierzytelniane algorytmem <ph name="CIPHER" />, a mechanizm wymiany kluczy to <ph name="KX" />.</translation> <translation id="2835170189407361413">Wyczyść formularz</translation> +<translation id="2839501879576190149">Wchodzisz na fałszywą stronę</translation> <translation id="2847118875340931228">Otwórz okno incognito</translation> <translation id="2850739647070081192">Invite (koperta)</translation> <translation id="2856444702002559011">Osoby atakujące mogą próbować wykraść Twoje informacje ze strony <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (na przykład hasła, wiadomości lub dane kart kredytowych). <ph name="BEGIN_LEARN_MORE_LINK" />Więcej informacji<ph name="END_LEARN_MORE_LINK" /></translation> @@ -801,6 +802,7 @@ <translation id="42981349822642051">Rozwiń</translation> <translation id="4300675098767811073">Wiele otworów z prawej strony</translation> <translation id="4302965934281694568">Chou3 (koperta)</translation> +<translation id="4305666528087210886">Nie udało się uzyskać dostępu do pliku</translation> <translation id="4305817255990598646">Przełącz</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokuj (domyślnie)</translation> @@ -819,6 +821,7 @@ <translation id="4358461427845829800">Zarządzaj formami płatności…</translation> <translation id="4359160567981085931">Przed chwilą wpisano hasło na stronie wprowadzającej w błąd. Chrome może pomóc. Aby zmienić hasło i powiadomić Google, że Twoje konto może być zagrożone, kliknij Chroń konto.</translation> <translation id="4367563149485757821">Number-12 (koperta)</translation> +<translation id="4367839622597707614">{1,plural, =0{Naruszenie bezpieczeństwa danych w jednej z witryn lub aplikacji spowodowało ujawnienie hasła, którego używasz na stronie <ph name="ORIGIN" />. Chrome zaleca, by natychmiast je zmienić.<ph name="ORIGIN" />}=1{Naruszenie bezpieczeństwa danych w jednej z witryn lub aplikacji spowodowało ujawnienie hasła, którego używasz na <ph name="ORIGIN" /> i 1 innej stronie. Chrome zaleca niezwłoczne sprawdzenie zapisanych haseł.}few{Naruszenie bezpieczeństwa danych w jednej z witryn lub aplikacji spowodowało ujawnienie hasła, którego używasz na <ph name="ORIGIN" /> i <ph name="SITES_COUNT" /> innych stronach. Chrome zaleca niezwłoczne sprawdzenie zapisanych haseł.}many{Naruszenie bezpieczeństwa danych w jednej z witryn lub aplikacji spowodowało ujawnienie hasła, którego używasz na <ph name="ORIGIN" /> i <ph name="SITES_COUNT" /> innych stronach. Chrome zaleca niezwłoczne sprawdzenie zapisanych haseł.}other{Naruszenie bezpieczeństwa danych w jednej z witryn lub aplikacji spowodowało ujawnienie hasła, którego używasz na <ph name="ORIGIN" /> i <ph name="SITES_COUNT" /> innej strony. Chrome zaleca niezwłoczne sprawdzenie zapisanych haseł.}}</translation> <translation id="437058704415269440">Saldo konta</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Oczekiwano wartości typu <ph name="VALUE_TYPE" />.</translation> @@ -1289,6 +1292,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Uważaj na możliwe opłaty.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 inna podpowiedź}few{# inne podpowiedzi}many{# innych podpowiedzi}other{# innej podpowiedzi}}</translation> +<translation id="6387645831795005740">Złośliwe strony czasami podszywają się pod inne, wprowadzając małe i trudne do zauważenia zmiany w adresie URL.</translation> <translation id="6389470377220713856">Imię i nazwisko na karcie</translation> <translation id="6390200185239044127">Składanie w połowie, a następnie składanie typu Z</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1502,6 +1506,7 @@ <translation id="7372973238305370288">wynik wyszukiwania</translation> <translation id="7374733840632556089">Ten problem pojawia się z powodu certyfikatu zainstalowanego na tym urządzeniu przez Ciebie lub inną osobę. Ten certyfikat jest używany do monitorowania i przechwytywania ruchu sieciowego. Chrome mu nie ufa. Choć w pewnych przypadkach (np. w sieci szkolnej lub firmowej) monitorowanie jest uzasadnione i legalne, Chrome będzie Cię o tym powiadamiać, nawet jeśli nie możesz nic na to poradzić. Monitorowanie może odbywać się w każdej przeglądarce lub aplikacji, która ma dostęp do sieci.</translation> <translation id="7375818412732305729">Dołączono plik</translation> +<translation id="7376551888419889433">Gdy oprogramowanie sprzęgające Chrome Enterprise oznacza zdarzenia związane z bezpieczeństwem, odpowiednie dane o zdarzeniach są wysyłane do administratora. Mogą one obejmować adresy URL stron odwiedzanych w Chrome, nazwy plików lub metadane oraz nazwę użytkownika, pod którą logujesz się na swoim urządzeniu i w Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Sterowanie multimediami</translation> <translation id="7378627244592794276">Nie</translation> @@ -1898,6 +1903,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Podjęto próbę nawiązania połączenia z witryną <ph name="DOMAIN" />, jednak serwer przedstawił nieprawidłowy certyfikat.</translation> <translation id="9050666287014529139">Hasło</translation> +<translation id="9062620674789239642">Mógł zostać przeniesiony, edytowany lub usunięty.</translation> <translation id="9065203028668620118">Edytuj</translation> <translation id="9065745800631924235">Wyszukiwanie ciągu <ph name="TEXT" /> w historii</translation> <translation id="9069693763241529744">Zablokowane przez rozszerzenie</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index 879d5eb..96d4c3d 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Barra de pesquisa e endereço</translation> <translation id="2826760142808435982">A ligação é encriptada e autenticada com <ph name="CIPHER" /> e utiliza <ph name="KX" /> como mecanismo de troca de chaves.</translation> <translation id="2835170189407361413">Limpar formulário</translation> +<translation id="2839501879576190149">O site seguinte é falso</translation> <translation id="2847118875340931228">Abrir janela de navegação anónima</translation> <translation id="2850739647070081192">Invite (Envelope)</translation> <translation id="2856444702002559011">Os atacantes poderão estar a tentar roubar as suas informações de <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (por exemplo, palavras-passe, mensagens ou cartões de crédito). <ph name="BEGIN_LEARN_MORE_LINK" />Saiba mais<ph name="END_LEARN_MORE_LINK" /></translation> @@ -810,6 +811,7 @@ <translation id="42981349822642051">Expandir</translation> <translation id="4300675098767811073">Perfuração múltipla à direita</translation> <translation id="4302965934281694568">Chou3 (Envelope)</translation> +<translation id="4305666528087210886">Não foi possível aceder ao seu ficheiro</translation> <translation id="4305817255990598646">Mudar</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloquear (predefinição)</translation> @@ -828,6 +830,7 @@ <translation id="4358461427845829800">Gerir métodos de pagamento…</translation> <translation id="4359160567981085931">Acabou de introduzir a sua palavra-passe num site fraudulento. O Chrome pode ajudar. Para alterar a sua palavra-passe e notificar a Google de que a sua conta pode estar em risco, clique em Proteger conta.</translation> <translation id="4367563149485757821">Number-12 (Envelope)</translation> +<translation id="4367839622597707614">{1,plural, =0{Uma violação de dados num site ou numa app expôs a sua palavra-passe guardada para <ph name="ORIGIN" />. O Chrome recomenda que altere a sua palavra-passe em <ph name="ORIGIN" /> agora.}=1{Uma violação de dados num site ou app expôs a sua palavra-passe guardada para <ph name="ORIGIN" /> e mais um site. O Chrome recomenda que verifique agora as palavras-passe guardadas.}other{Uma violação de dados num site ou app expôs a sua palavra-passe guardada para <ph name="ORIGIN" /> e mais <ph name="SITES_COUNT" /> sites. O Chrome recomenda que verifique agora as palavras-passe guardadas.}}</translation> <translation id="437058704415269440">Saldo da conta</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Valor <ph name="VALUE_TYPE" /> esperado.</translation> @@ -914,7 +917,7 @@ <translation id="4780366598804516005">Caixa de correio 1</translation> <translation id="4780900888022378816">O seu dispositivo é gerido por <ph name="ENROLLMENT_DOMAIN" /> e a sua conta é gerida por <ph name="ACCOUNT_DOMAIN" />.</translation> <translation id="4785689107224900852">Mudar para este separador</translation> -<translation id="4791134497475588553">Aplicações do Linux instaladas e quando foram utilizadas pela última vez.</translation> +<translation id="4791134497475588553">Apps do Linux instaladas e quando foram utilizadas pela última vez.</translation> <translation id="4796594887379589189">ID da conta da tarefa</translation> <translation id="4798078619018708837">Introduza a data de validade e o Código de Segurança/CVC de <ph name="CREDIT_CARD" /> para atualizar os detalhes do cartão. Depois de confirmar, os detalhes do cartão da sua Conta Google são partilhados com este site.</translation> <translation id="4800132727771399293">Verifique a data de validade e o Código de Segurança/CVC e tente novamente</translation> @@ -1298,6 +1301,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Possíveis cobranças se prosseguir.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 outra sugestão}other{# outras sugestões}}</translation> +<translation id="6387645831795005740">Por vezes, os atacantes imitam sites ao efetuarem alterações pequenas e difíceis de detetar no URL.</translation> <translation id="6389470377220713856">Nome no cartão</translation> <translation id="6390200185239044127">Dobrar metade em Z</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1511,6 +1515,7 @@ <translation id="7372973238305370288">resultado da pesquisa</translation> <translation id="7374733840632556089">Este problema ocorre devido a um certificado que o utilizador ou outra pessoa instalou no dispositivo. Sabe-se que o certificado é utilizado para monitorizar e intercetar redes e não é considerado fidedigno pelo Chrome. Embora existam alguns casos legítimos para a monitorização, como numa rede escolar ou da empresa, o Chrome pretende certificar-se de que o utilizador tem conhecimento da situação, mesmo que não seja possível interrompê-la. A monitorização pode ocorrer em qualquer navegador ou aplicação que aceda à Web.</translation> <translation id="7375818412732305729">É anexado um ficheiro</translation> +<translation id="7376551888419889433">Quando os Chrome Enterprise Connectors sinalizam eventos de segurança, são enviados dados relevantes acerca dos eventos para o seu administrador. Estes podem incluir os URLs das páginas que visita no Chrome, os metadados ou os nomes de ficheiros e o nome de utilizador que utiliza para iniciar sessão no dispositivo e no Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Controlos de multimédia</translation> <translation id="7378627244592794276">Não</translation> @@ -1907,6 +1912,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Tentou aceder a <ph name="DOMAIN" />, mas o servidor apresentou um certificado inválido.</translation> <translation id="9050666287014529139">Frase de acesso</translation> +<translation id="9062620674789239642">Pode ter sido movido, editado ou eliminado.</translation> <translation id="9065203028668620118">Editar</translation> <translation id="9065745800631924235">Pesquisa de <ph name="TEXT" /> no histórico</translation> <translation id="9069693763241529744">Bloqueada por uma extensão</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb index 193f7bd..1ccdf15 100644 --- a/components/strings/components_strings_ro.xtb +++ b/components/strings/components_strings_ro.xtb
@@ -448,6 +448,7 @@ <translation id="2824775600643448204">Bara de adrese și de căutare</translation> <translation id="2826760142808435982">Conexiunea este criptată și autentificată utilizând <ph name="CIPHER" /> și folosește <ph name="KX" /> ca mecanism de schimb al cheii.</translation> <translation id="2835170189407361413">Golește formularul</translation> +<translation id="2839501879576190149">Urmează un site fals</translation> <translation id="2847118875340931228">Deschide o fereastră incognito</translation> <translation id="2850739647070081192">Invite (Plic)</translation> <translation id="2856444702002559011">Atacatorii pot încerca să îți fure informațiile de pe <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (de exemplu, parole, mesaje sau date despre cardurile de credit). <ph name="BEGIN_LEARN_MORE_LINK" />Află mai multe<ph name="END_LEARN_MORE_LINK" /></translation> @@ -808,6 +809,7 @@ <translation id="42981349822642051">Extinde</translation> <translation id="4300675098767811073">Perforare multiplă în dreapta</translation> <translation id="4302965934281694568">Chou3 (Plic)</translation> +<translation id="4305666528087210886">Fișierul nu a putut fi accesat</translation> <translation id="4305817255990598646">Comută</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blochează (în mod prestabilit)</translation> @@ -826,6 +828,7 @@ <translation id="4358461427845829800">Gestionează metodele de plată...</translation> <translation id="4359160567981085931">Ai introdus parola pe un site înșelător. Chrome te poate ajuta. Ca să schimbi parola și să anunți Google că respectivul cont poate fi în pericol, dă clic pe Protejează contul.</translation> <translation id="4367563149485757821">Number-12 (Plic)</translation> +<translation id="4367839622597707614">{1,plural, =0{O încălcare a securității datelor de pe un site sau dintr-o aplicație ți-a expus parola salvată pentru <ph name="ORIGIN" />. Chrome recomandă să-ți schimbi acum parola de pe <ph name="ORIGIN" />.}=1{O încălcare a securității datelor de pe un site sau dintr-o aplicație ți-a expus parola salvată pentru <ph name="ORIGIN" /> și încă un site. Chrome recomandă să verifici acum parolele salvate.}few{O încălcare a securității datelor de pe un site sau dintr-o aplicație ți-a expus parola salvată pentru <ph name="ORIGIN" /> și încă <ph name="SITES_COUNT" /> site-uri. Chrome recomandă să verifici acum parolele salvate.}other{O încălcare a securității datelor de pe un site sau dintr-o aplicație ți-a expus parola salvată pentru <ph name="ORIGIN" /> și încă <ph name="SITES_COUNT" /> de site-uri. Chrome recomandă să verifici acum parolele salvate.}}</translation> <translation id="437058704415269440">Soldul contului</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Se aștepta valoarea <ph name="VALUE_TYPE" />.</translation> @@ -1296,6 +1299,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Urmează costuri potențiale.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{o altă sugestie}few{alte # sugestii}other{alte # de sugestii}}</translation> +<translation id="6387645831795005740">Uneori, atacatorii imită site-uri aducând modificări mici, greu de observat, adresei URL.</translation> <translation id="6389470377220713856">Nume de pe card</translation> <translation id="6390200185239044127">Îndoire în Z la jumătate</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1509,6 +1513,7 @@ <translation id="7372973238305370288">rezultat al căutării</translation> <translation id="7374733840632556089">Această problemă apare din cauza unui certificat pe care tu sau altcineva l-ați instalat pe dispozitiv. Certificatul este folosit pentru a monitoriza și a intercepta rețelele, nefiind autorizat de Chrome. Deși există cazuri legitime pentru monitorizare, de exemplu, într-o rețea de la școală sau de la serviciu, Chrome vrea să se asigure că știi ce se întâmplă, chiar dacă nu poți opri acest lucru. Monitorizarea se poate face în orice browser sau aplicație care intră pe web.</translation> <translation id="7375818412732305729">Fișierul este atașat</translation> +<translation id="7376551888419889433">Când Chrome Enterprise Connectors semnalează evenimente de securitate, datele relevante despre acele evenimente sunt trimise administratorului tău. Aici pot fi incluse adresele URL ale paginilor pe care le accesezi în Chrome, nume de fișiere sau metadate și numele de utilizator cu care te conectezi pe dispozitiv și la Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Comenzi media</translation> <translation id="7378627244592794276">Nu</translation> @@ -1906,6 +1911,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Ai încercat să accesezi <ph name="DOMAIN" />, dar serverul a prezentat un certificat nevalid.</translation> <translation id="9050666287014529139">Expresie de acces</translation> +<translation id="9062620674789239642">Este posibil să fi fost mutat, editat sau șters.</translation> <translation id="9065203028668620118">Editează</translation> <translation id="9065745800631924235">Căutare <ph name="TEXT" /> în istoric</translation> <translation id="9069693763241529744">Blocată de o extensie</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb index c2ec261b..8d0ebaa 100644 --- a/components/strings/components_strings_si.xtb +++ b/components/strings/components_strings_si.xtb
@@ -448,6 +448,7 @@ <translation id="2824775600643448204">ලිපිනය සහ සෙවීම් බාර් එක</translation> <translation id="2826760142808435982">සම්බන්ධතාවය සංකේතනය කර <ph name="CIPHER" /> භාවිතයෙන් සත්යාපනය කර ඇති අතර කේත හුවමාරු ක්රමවේදය ලෙස <ph name="KX" /> භාවිතා කරයි.</translation> <translation id="2835170189407361413">පෝර්මය හිස් කරන්න</translation> +<translation id="2839501879576190149">ව්යාජ අඩවියක් ඉදිරියෙනි</translation> <translation id="2847118875340931228">අප්රසිද්ධ කවුළුව විවෘත කරන්න</translation> <translation id="2850739647070081192">Invite (ලියුම් කවරය)</translation> <translation id="2856444702002559011">ප්රහාරකයන් <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> වෙතින් ඔබේ තොරතුරු සොරකම් කිරීමට උත්සාහ කරනවා විය හැක (උදාහරණ ලෙස, මුරපද, පණිවිඩ, හෝ ණයපත්). <ph name="BEGIN_LEARN_MORE_LINK" />තව දැන ගන්න<ph name="END_LEARN_MORE_LINK" /></translation> @@ -805,6 +806,7 @@ <translation id="42981349822642051">දිගහරින්න</translation> <translation id="4300675098767811073">දකුණට බොහෝ වරක් අනින්න</translation> <translation id="4302965934281694568">Chou3 (ලියුම් කවරය)</translation> +<translation id="4305666528087210886">ඔබගේ ගොනුවට පිවිසීමට නොහැකි විය.</translation> <translation id="4305817255990598646">ස්විචය</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">අවහිර කරන්න (පෙරනිමි)</translation> @@ -823,6 +825,7 @@ <translation id="4358461427845829800">ගෙවීම් ක්රම කළමනාකරණය කරන්න...</translation> <translation id="4359160567981085931">ඔබ මේ දැන් වංචනික වෙබ් අඩවියක් මත ඔබේ මුරපදය ඇතුළත් කළා. Chrome උදවු කළ හැක. ඔබේ මුරපදය වෙනස් කිරීමටත් ඔබේ ගිණුම අවදානමේ තිබිය හැකි බව Google වෙත දැනුම් දිමටත්, ගිණුම ආරක්ෂා කරන්න ක්ලික් කරන්න.</translation> <translation id="4367563149485757821">Number-12 (ලියුම් කවරය)</translation> +<translation id="4367839622597707614">{1,plural, =0{අඩවියක හෝ යෙදුමක සිදු වූ දත්ත කඩ කිරීමක් ඔබේ සුරැකි මුරපදය <ph name="ORIGIN" /> සඳහා නිරාවරණය කර ඇත. Chrome දැන් <ph name="ORIGIN" /> මත ඔබේ මුරපදය වෙනස් කිරීම නිර්දේශ කරයි.}=1{අඩවියක හෝ යෙදුමක සිදු වූ දත්ත කඩ කිරීමක් ඔබේ සුරැකි මුරපදය <ph name="ORIGIN" /> සහ තවත් එක් අඩවියක් සඳහා නිරාවරණය කර ඇත. Chrome දැන් ඔබේ සුරැකි මුරපද පරීක්ෂා කිරීම නිර්දේශ කරයි.}one{අඩවියක හෝ යෙදුමක සිදු වූ දත්ත කඩ කිරීමක් ඔබේ සුරැකි මුරපදය <ph name="ORIGIN" /> සහ තවත් අඩවි <ph name="SITES_COUNT" />ක් සඳහා නිරාවරණය කර ඇත. Chrome දැන් ඔබේ සුරැකි මුරපද පරීක්ෂා කිරීම නිර්දේශ කරයි.}other{අඩවියක හෝ යෙදුමක සිදු වූ දත්ත කඩ කිරීමක් ඔබේ සුරැකි මුරපදය <ph name="ORIGIN" /> සහ තවත් අඩවි <ph name="SITES_COUNT" />ක් සඳහා නිරාවරණය කර ඇත. Chrome දැන් ඔබේ සුරැකි මුරපද පරීක්ෂා කිරීම නිර්දේශ කරයි.}}</translation> <translation id="437058704415269440">ගිණුම් ශේෂය</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">අපේක්ෂිත <ph name="VALUE_TYPE" /> අගය.</translation> @@ -1293,6 +1296,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">ඉදිරියට තිබිය හැකි ගාස්තු.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{වෙනත් යෝජනා 1}one{වෙනත් යෝජනා #}other{වෙනත් යෝජනාවන් #}}</translation> +<translation id="6387645831795005740">ප්රහාරකයින් සමහර විට URL වෙත කුඩා, බැලීමට අපහසු වෙනස්කම් කිරීමෙන් වෙබ් අඩවි අනුකරණය කරයි.</translation> <translation id="6389470377220713856">කාඩ්පතෙහි ඇති නම</translation> <translation id="6390200185239044127">භාගයට Z-නැමීම</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1506,6 +1510,7 @@ <translation id="7372973238305370288">සෙවුම් ප්රථිපල</translation> <translation id="7374733840632556089">මෙම ගැටලුව සිදු වන්නේ ඔබ හෝ වෙනත් කෙනෙක් ඔබේ උපාංගය මත ස්ථාපන කර ඇති සහතිකයක් හේතුවෙනි. එම සහතිකය ජාල නිරීක්ෂණ කිරීමටත් අතුරු ඇරීමටත් භාවිත වන බවට දන්නා අතර, Chrome විසින් විශ්වාස නොකෙරේ. පාසල් හෝ සමාගම් ජාලයක් මත වැනි නිරීක්ෂණ කිරීම සඳහා යම් නීත්යානුකූල සංදර්භ පවතින අතරතුර, ඔබට එය නැවැත්විය නොහැකි නමුත් ඔබ එය සිදු වන බවට දැන සිටීම ගැන Chrome කැමති වෙයි. වෙබයට ප්රවේශ වන ඕනෑම බ්රවුසරයක් හෝ යෙදුමක් තුළ නිරීක්ෂණය සිදු විය හැක.</translation> <translation id="7375818412732305729">ගොනුව අමුණා ඇත</translation> +<translation id="7376551888419889433">Chrome Enterprise Connectors මගින් ආරක්ෂක සිදුවීම් සලකුණු කර ඇති විට, සිදුවීම් පිළිබඳ අදාළ දත්ත ඔබේ පරිපාලකට යවනු ඇත. මෙයට ඔබ Chrome වලින් පිවිසෙන පිටුවල URL, ගොනු නම් හෝ පාරදත්ත සහ ඔබ ඔබේ උපාංගයට සහ Chrome වෙත පිරීමට භාවිත කරන පරිශීලක නාමය අඩංගු විය හැකිය.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">මාධ්ය පාලක</translation> <translation id="7378627244592794276">නැහැ</translation> @@ -1902,6 +1907,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">ඔබ <ph name="DOMAIN" /> වෙත පිවිසීමට උත්සාහ කර තිබේ, නමුත් සර්වරය ඉදිරිපත් කළේ වැරදි සහතිකයකි.</translation> <translation id="9050666287014529139">රහස්වැකිය</translation> +<translation id="9062620674789239642">එය ගෙන ගොස්, සංස්කරණය කර හෝ මකා තිබීමට හැකිය.</translation> <translation id="9065203028668620118">සංස්කරණය කරන්න</translation> <translation id="9065745800631924235"><ph name="TEXT" /> ඉතිහාසයෙන් සෙවීම</translation> <translation id="9069693763241529744">දිගුවකින් අවහිර කෙරේ</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index 175a7e1..f529a14 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Naslovna in iskalna vrstica</translation> <translation id="2826760142808435982">Za šifriranje in preverjanje pristnosti povezave se uporablja <ph name="CIPHER" />, kot mehanizem za izmenjavo ključev pa <ph name="KX" />.</translation> <translation id="2835170189407361413">Počisti obrazec</translation> +<translation id="2839501879576190149">Lažno spletno mesto</translation> <translation id="2847118875340931228">Odpri novo okno brez beleženja zgodovine</translation> <translation id="2850739647070081192">Invite (Envelope)</translation> <translation id="2856444702002559011">Morda poskušajo napadalci ukrasti vaše podatke s spletnega mesta <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (na primer gesla, sporočila ali podatke kreditnih kartic). <ph name="BEGIN_LEARN_MORE_LINK" />Več o tem<ph name="END_LEARN_MORE_LINK" /></translation> @@ -810,6 +811,7 @@ <translation id="42981349822642051">Razširi</translation> <translation id="4300675098767811073">Večkratno luknjanje na desni</translation> <translation id="4302965934281694568">Chou3 (Envelope)</translation> +<translation id="4305666528087210886">Ni bilo mogoče dostopati do datoteke</translation> <translation id="4305817255990598646">Preklopi</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokira (privzeto)</translation> @@ -828,6 +830,7 @@ <translation id="4358461427845829800">Upravljanje plačilnih sredstev ...</translation> <translation id="4359160567981085931">Pravkar ste vnesli geslo na zavajajočem spletnem mestu. Chrome lahko pomaga. Če želite spremeniti geslo in obvestiti Google, da je vaš račun morda ogrožen, kliknite »Zaščita računa«.</translation> <translation id="4367563149485757821">Number-12 (Envelope)</translation> +<translation id="4367839622597707614">{1,plural, =0{Zaradi podatkovne kršitve na spletnem mestu ali v aplikaciji je bilo razkrito shranjeno geslo za spletno mesto <ph name="ORIGIN" />. Chrome priporoča, da takoj spremenite geslo za spletno mesto <ph name="ORIGIN" />.}=1{Zaradi podatkovne kršitve na spletnem mestu ali v aplikaciji je bilo razkrito shranjeno geslo za spletno mesto <ph name="ORIGIN" /> in še eno drugo spletno mesto. Chrome priporoča, da takoj preverite shranjena gesla.}one{Zaradi podatkovne kršitve na spletnem mestu ali v aplikaciji je bilo razkrito shranjeno geslo za spletno mesto <ph name="ORIGIN" /> in še <ph name="SITES_COUNT" /> drugo spletno mesto. Chrome priporoča, da takoj preverite shranjena gesla.}two{Zaradi podatkovne kršitve na spletnem mestu ali v aplikaciji je bilo razkrito shranjeno geslo za spletno mesto <ph name="ORIGIN" /> in še <ph name="SITES_COUNT" /> drugi spletni mesti. Chrome priporoča, da takoj preverite shranjena gesla.}few{Zaradi podatkovne kršitve na spletnem mestu ali v aplikaciji je bilo razkrito shranjeno geslo za spletno mesto <ph name="ORIGIN" /> in še <ph name="SITES_COUNT" /> druga spletna mesta. Chrome priporoča, da takoj preverite shranjena gesla.}other{Zaradi podatkovne kršitve na spletnem mestu ali v aplikaciji je bilo razkrito shranjeno geslo za spletno mesto <ph name="ORIGIN" /> in še <ph name="SITES_COUNT" /> drugih spletnih mest. Chrome priporoča, da takoj preverite shranjena gesla.}}</translation> <translation id="437058704415269440">Stanje na računu</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Pričakovana vrednost je vrste <ph name="VALUE_TYPE" />.</translation> @@ -1298,6 +1301,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Morda bo prišlo do bremenitev.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{in še 1 predlog}one{in še # predlog}two{in še # predloga}few{in še # predlogi}other{in še # predlogov}}</translation> +<translation id="6387645831795005740">Napadalci včasih poskušajo kopirati spletna mesta, tako da skoraj neopazno spremenijo URL.</translation> <translation id="6389470377220713856">Name on Card</translation> <translation id="6390200185239044127">Cikcakasto prepogibanje napol</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1511,6 +1515,7 @@ <translation id="7372973238305370288">rezultat iskanja</translation> <translation id="7374733840632556089">Do te težave pride zaradi potrdila, ki ste ga vi ali nekdo drug namestili v napravo. To potrdilo se je v preteklosti uporabljalo za prestrezanje in nadzor v omrežjih, zato ga Chrome ne obravnava kot zaupanja vrednega. Čeprav obstajajo nekateri legitimni primeri nadzora, denimo v šolah ali omrežjih v podjetjih, se želi Chrome prepričati, da se nadzora zavedate, tudi če ga ne morete preprečiti. Do nadzora lahko pride v katerem koli brskalniku ali aplikaciji, ki dostopa do spleta.</translation> <translation id="7375818412732305729">Datoteka je priložena</translation> +<translation id="7376551888419889433">Ko priključki Chrome Enterprise Connectors opozorijo na varnostne dogodke, se ustrezni podatki glede dogodkov pošljejo skrbniku. To lahko vključuje URL-je strani, ki jih obiščete v Chromu, imena ali metapodatke datotek in uporabniško ime, s katerim se prijavite v napravo in Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Kontrolniki predstavnosti</translation> <translation id="7378627244592794276">Ne</translation> @@ -1907,6 +1912,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Skušali ste dostopati do domene <ph name="DOMAIN" />, vendar je strežnik predložil neveljavno potrdilo.</translation> <translation id="9050666287014529139">Geslo</translation> +<translation id="9062620674789239642">Morda je premaknjena, urejena ali izbrisana.</translation> <translation id="9065203028668620118">Uredi</translation> <translation id="9065745800631924235">Iskanje poizvedbe <ph name="TEXT" /> iz zgodovine</translation> <translation id="9069693763241529744">Blokirala razširitev</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb index bc73158..1a382b52 100644 --- a/components/strings/components_strings_sr-Latn.xtb +++ b/components/strings/components_strings_sr-Latn.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Traka za adresu i pretragu</translation> <translation id="2826760142808435982">Veza je šifrovana i njena autentičnost je potvrđena pomoću <ph name="CIPHER" /> i koristi <ph name="KX" /> kao mehanizam za razmenu šifara.</translation> <translation id="2835170189407361413">Obriši obrazac</translation> +<translation id="2839501879576190149">Sajt na koji želite da odete je lažan</translation> <translation id="2847118875340931228">Otvori prozor bez arhiviranja</translation> <translation id="2850739647070081192">Invite (koverat)</translation> <translation id="2856444702002559011">Napadači možda pokušavaju da ukradu informacije sa <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (na primer, lozinke, poruke ili kreditne kartice). <ph name="BEGIN_LEARN_MORE_LINK" />Saznajte više<ph name="END_LEARN_MORE_LINK" /></translation> @@ -810,6 +811,7 @@ <translation id="42981349822642051">Proširite</translation> <translation id="4300675098767811073">Višestruko bušenje na desnoj strani</translation> <translation id="4302965934281694568">Chou3 (koverat)</translation> +<translation id="4305666528087210886">Pristup datoteci nije uspeo</translation> <translation id="4305817255990598646">Pređi</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokiraj (podrazumevano)</translation> @@ -828,6 +830,7 @@ <translation id="4358461427845829800">Upravljajte načinima plaćanja...</translation> <translation id="4359160567981085931">Upravo ste uneli lozinku na obmanjujućem sajtu. Chrome može da vam pomogne. Da biste promenili lozinku i obavestili Google da je nalog možda ugrožen, kliknite na Zaštiti nalog.</translation> <translation id="4367563149485757821">Broj-12 (koverat)</translation> +<translation id="4367839622597707614">{1,plural, =0{Sačuvana lozinka za <ph name="ORIGIN" /> otkrivena je pri upadu u podatke na sajtu ili u aplikaciji. Chrome preporučuje da odmah promenite lozinku na <ph name="ORIGIN" />.}=1{Sačuvane lozinke za <ph name="ORIGIN" /> i još jedan sajt otkrivene su pri upadu u podatke na sajtu ili u aplikaciji. Chrome preporučuje da odmah proverite sačuvane lozinke.}one{Sačuvane lozinke za <ph name="ORIGIN" /> i još <ph name="SITES_COUNT" /> sajt otkrivene su pri upadu u podatke na sajtu ili u aplikaciji. Chrome preporučuje da odmah proverite sačuvane lozinke.}few{Sačuvane lozinke za <ph name="ORIGIN" /> i još <ph name="SITES_COUNT" /> sajta otkrivene su pri upadu u podatke na sajtu ili u aplikaciji. Chrome preporučuje da odmah proverite sačuvane lozinke.}other{Sačuvane lozinke za <ph name="ORIGIN" /> i još <ph name="SITES_COUNT" /> sajtova otkrivene su pri upadu u podatke na sajtu ili u aplikaciji. Chrome preporučuje da odmah proverite sačuvane lozinke.}}</translation> <translation id="437058704415269440">Stanje na računu</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Očekivana vrednost je <ph name="VALUE_TYPE" />.</translation> @@ -1179,7 +1182,7 @@ <translation id="5869405914158311789">Ovaj sajt nije dostupan</translation> <translation id="5869522115854928033">Sačuvane lozinke</translation> <translation id="5887400589839399685">Kartica je sačuvana</translation> -<translation id="589006512797629854"><ph name="ENROLLMENT_DOMAIN" /> zahteva da napravite rezervnu kopiju podataka i da vratite uređaj.</translation> +<translation id="589006512797629854"><ph name="ENROLLMENT_DOMAIN" /> zahteva da napravite rezervnu kopiju podataka i da vratite ovaj uređaj.</translation> <translation id="5895138241574237353">Pokreni ponovo</translation> <translation id="5895187275912066135">Izdato</translation> <translation id="5901630391730855834">Žuta</translation> @@ -1297,6 +1300,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Očekuju vas potencijalni troškovi.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{još 1 predlog}one{još # predlog}few{još # predloga}other{još # predloga}}</translation> +<translation id="6387645831795005740">Napadači ponekad imitiraju sajtove tako što neznatno i skoro neprimetno izmene URL.</translation> <translation id="6389470377220713856">Ime i prezime na kartici</translation> <translation id="6390200185239044127">Presavijanje polovine u obliku slova Z</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1510,6 +1514,7 @@ <translation id="7372973238305370288">rezultat pretrage</translation> <translation id="7374733840632556089">Ovaj problem se javlja zbog sertifikata koji ste vi ili neko drugi instalirali na uređaju. Sertifikat se koristi za nadgledanje i presretanje mreža i Chrome ga ne smatra pouzdanim. Iako postoje pojedini opravdani razlozi za nadgledanje, na primer na školskoj ili poslovnoj mreži, Chrome želi da budete svesni da se to događa, čak i ako to ne možete da sprečite. Nadgledanje je moguće u bilo kom pregledaču ili aplikaciji koja pristupa vebu.</translation> <translation id="7375818412732305729">Datoteka je priložena</translation> +<translation id="7376551888419889433">Kad Chrome Enterprise Connectors obeleži bezbednosne događaje, relevantni podaci o događajima se šalju administratoru. To može da obuhvata URL-ove stranica koje posećujete u Chrome-u, nazive datoteka ili metapodatke i korisničko ime pomoću kog se prijavljujete na uređaj i u Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Kontrole za medije</translation> <translation id="7378627244592794276">Ne</translation> @@ -1907,6 +1912,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Pokušali ste da dođete do domena <ph name="DOMAIN" />, ali server je poslao nevažeći sertifikat.</translation> <translation id="9050666287014529139">Pristupna fraza</translation> +<translation id="9062620674789239642">Možda je premešten, izmenjen ili izbrisan.</translation> <translation id="9065203028668620118">Izmeni</translation> <translation id="9065745800631924235">Pretraga <ph name="TEXT" /> iz istorije</translation> <translation id="9069693763241529744">Blokira dodatak</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index 67ec48b..61335bc 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Трака за адресу и претрагу</translation> <translation id="2826760142808435982">Веза је шифрована и њена аутентичност је потврђена помоћу <ph name="CIPHER" /> и користи <ph name="KX" /> као механизам за размену шифара.</translation> <translation id="2835170189407361413">Обриши образац</translation> +<translation id="2839501879576190149">Сајт на који желите да одете је лажан</translation> <translation id="2847118875340931228">Отвори прозор без архивирања</translation> <translation id="2850739647070081192">Invite (коверат)</translation> <translation id="2856444702002559011">Нападачи можда покушавају да украду информације са <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (на пример, лозинке, поруке или кредитне картице). <ph name="BEGIN_LEARN_MORE_LINK" />Сазнајте више<ph name="END_LEARN_MORE_LINK" /></translation> @@ -810,6 +811,7 @@ <translation id="42981349822642051">Проширите</translation> <translation id="4300675098767811073">Вишеструко бушење на десној страни</translation> <translation id="4302965934281694568">Chou3 (коверат)</translation> +<translation id="4305666528087210886">Приступ датотеци није успео</translation> <translation id="4305817255990598646">Пређи</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Блокирај (подразумевано)</translation> @@ -828,6 +830,7 @@ <translation id="4358461427845829800">Управљајте начинима плаћања...</translation> <translation id="4359160567981085931">Управо сте унели лозинку на обмањујућем сајту. Chrome може да вам помогне. Да бисте променили лозинку и обавестили Google да је налог можда угрожен, кликните на Заштити налог.</translation> <translation id="4367563149485757821">Број-12 (коверат)</translation> +<translation id="4367839622597707614">{1,plural, =0{Сачувана лозинка за <ph name="ORIGIN" /> откривена је при упаду у податке на сајту или у апликацији. Chrome препоручује да одмах промените лозинку на <ph name="ORIGIN" />.}=1{Сачуване лозинке за <ph name="ORIGIN" /> и још један сајт откривене су при упаду у податке на сајту или у апликацији. Chrome препоручује да одмах проверите сачуване лозинке.}one{Сачуване лозинке за <ph name="ORIGIN" /> и још <ph name="SITES_COUNT" /> сајт откривене су при упаду у податке на сајту или у апликацији. Chrome препоручује да одмах проверите сачуване лозинке.}few{Сачуване лозинке за <ph name="ORIGIN" /> и још <ph name="SITES_COUNT" /> сајта откривене су при упаду у податке на сајту или у апликацији. Chrome препоручује да одмах проверите сачуване лозинке.}other{Сачуване лозинке за <ph name="ORIGIN" /> и још <ph name="SITES_COUNT" /> сајтова откривене су при упаду у податке на сајту или у апликацији. Chrome препоручује да одмах проверите сачуване лозинке.}}</translation> <translation id="437058704415269440">Стање на рачуну</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Очекивана вредност je <ph name="VALUE_TYPE" />.</translation> @@ -1179,7 +1182,7 @@ <translation id="5869405914158311789">Овај сајт није доступан</translation> <translation id="5869522115854928033">Сачуване лозинке</translation> <translation id="5887400589839399685">Картица је сачувана</translation> -<translation id="589006512797629854"><ph name="ENROLLMENT_DOMAIN" /> захтева да направите резервну копију података и да вратите уређај.</translation> +<translation id="589006512797629854"><ph name="ENROLLMENT_DOMAIN" /> захтева да направите резервну копију података и да вратите овај уређај.</translation> <translation id="5895138241574237353">Покрени поново</translation> <translation id="5895187275912066135">Издато</translation> <translation id="5901630391730855834">Жута</translation> @@ -1297,6 +1300,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Очекују вас потенцијални трошкови.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{још 1 предлог}one{још # предлог}few{још # предлога}other{још # предлога}}</translation> +<translation id="6387645831795005740">Нападачи понекад имитирају сајтове тако што незнатно и скоро неприметно измене URL.</translation> <translation id="6389470377220713856">Име и презиме на картици</translation> <translation id="6390200185239044127">Пресавијање половине у облику слова Z</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1510,6 +1514,7 @@ <translation id="7372973238305370288">резултат претраге</translation> <translation id="7374733840632556089">Овај проблем се јавља због сертификата који сте ви или неко други инсталирали на уређају. Сертификат се користи за надгледање и пресретање мрежа и Chrome га не сматра поузданим. Иако постоје поједини оправдани разлози за надгледање, на пример на школској или пословној мрежи, Chrome жели да будете свесни да се то догађа, чак и ако то не можете да спречите. Надгледање је могуће у било ком прегледачу или апликацији која приступа вебу.</translation> <translation id="7375818412732305729">Датотека је приложена</translation> +<translation id="7376551888419889433">Кад Chrome Enterprise Connectors обележи безбедносне догађаје, релевантни подаци о догађајима се шаљу администратору. То може да обухвата URL-ове страница које посећујете у Chrome-у, називе датотека или метаподатке и корисничко име помоћу ког се пријављујете на уређај и у Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Контроле за медије</translation> <translation id="7378627244592794276">Не</translation> @@ -1907,6 +1912,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Покушали сте да дођете до домена <ph name="DOMAIN" />, али сервер је послао неважећи сертификат.</translation> <translation id="9050666287014529139">Приступна фраза</translation> +<translation id="9062620674789239642">Можда је премештен, измењен или избрисан.</translation> <translation id="9065203028668620118">Измени</translation> <translation id="9065745800631924235">Претрага <ph name="TEXT" /> из историје</translation> <translation id="9069693763241529744">Блокира додатак</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index b26572c..024d608 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -449,6 +449,7 @@ <translation id="2824775600643448204">Upau wa anwani na utafutaji</translation> <translation id="2826760142808435982">Muunganisho umesimbwa kwa njia fiche na kuthibitishwa kupitia <ph name="CIPHER" /> na unatumia <ph name="KX" /> kama utaratibu msingi wa ubadilishaji.</translation> <translation id="2835170189407361413">Futa fomu</translation> +<translation id="2839501879576190149">Huenda ni tovuti bandia</translation> <translation id="2847118875340931228">Fungua Dirisha Fiche</translation> <translation id="2850739647070081192">Invite (Bahasha)</translation> <translation id="2856444702002559011">Huenda wavamizi wanajaribu kuiba maelezo yako kutoka <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (kwa mfano, manenosiri, ujumbe au kadi za mikopo).<ph name="BEGIN_LEARN_MORE_LINK" />Pata maelezo zaidi<ph name="END_LEARN_MORE_LINK" /></translation> @@ -809,6 +810,7 @@ <translation id="42981349822642051">Panua</translation> <translation id="4300675098767811073">Toboa mara kadhaa kulia</translation> <translation id="4302965934281694568">Chou3 (Bahasha)</translation> +<translation id="4305666528087210886">Imeshindwa kufikia faili yako</translation> <translation id="4305817255990598646">Badilisha</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Zuia (chaguomsingi)</translation> @@ -827,6 +829,7 @@ <translation id="4358461427845829800">Dhibiti njia za kulipa...</translation> <translation id="4359160567981085931">Umeweka nenosiri lako kwenye tovuti inayotiliwa shaka. Chrome inaweza kukusaidia. Ili ubadilishe nenosiri lako na uarifu Google kwamba huenda akaunti yako imo hatarini, bofya Linda Akaunti.</translation> <translation id="4367563149485757821">Number-12 (Bahasha)</translation> +<translation id="4367839622597707614">{1,plural, =0{Tukio la ufichuzi haramu wa data kwenye programu au tovuti limefichua nenosiri ulilohifadhi la <ph name="ORIGIN" />. Chrome inapendekeza ubadilishe nenosiri lako kwenye <ph name="ORIGIN" /> sasa.}=1{Tukio la ufichuzi haramu wa data kwenye programu au tovuti limefichua nenosiri ulilohifadhi la <ph name="ORIGIN" /> na tovuti nyingine moja. Chrome inapendekeza ukague manenosiri uliyohifadhi sasa.}other{Tukio la ufichuzi haramu wa data kwenye programu au tovuti limefichua nenosiri ulilohifadhi la <ph name="ORIGIN" /> na tovuti zingine <ph name="SITES_COUNT" />. Chrome inapendekeza ukague manenosiri uliyohifadhi sasa.}}</translation> <translation id="437058704415269440">Salio la Akaunti</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Thamani <ph name="VALUE_TYPE" /> inayotarajiwa.</translation> @@ -1297,6 +1300,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Huenda ukatozwa gharama.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{Pendekezo jingine 1}other{Mapendekezo mengine #}}</translation> +<translation id="6387645831795005740">Wakati mwingine wadukuzi huiga tovuti kwa kufanya mabadiliko madogo ambayo hayaonekani kwa urahisi kwenye URL.</translation> <translation id="6389470377220713856">Jina lilio kwenye Kadi</translation> <translation id="6390200185239044127">Mkunjo wa Z nusu</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1508,6 +1512,7 @@ <translation id="7372973238305370288">matokeo ya utafutaji</translation> <translation id="7374733840632556089">Tatizo hili hutokea kwa sababu ya cheti ambacho wewe au mtu mwingine amesakinisha kwenye kifaa chako. Cheti kinajulikana kuwa huwa kinatumika kufuatilia na kuvamia mitandao na hakiaminiki na Chrome. Ingawa baadhi ya hali halali za ufuatiliaji zipo, kama vile kwenye mtandao wa shule au kampuni, Chrome ingependa kuhakikisha kuwa unafahamu kwamba jambo hili linafanyika, hata ikiwa huwezi kulisimamisha. Ufuatiliaji unaweza kutokea katika kivinjari chochote au programu inayoweza kufikia wavuti.</translation> <translation id="7375818412732305729">Faili inapoambatishwa</translation> +<translation id="7376551888419889433">Matukio ya usalama yanaporipotiwa na Viunganishi vya Chrome Enterprise, data inayohusiana na tukio hilo hutumwa kwa msimamizi wako. Data hii inaweza kujumuisha URL za kurasa ambazo umetembelea kwenye Chrome, metadata au majina ya faili na jina la mtumiaji unalotumia kuingia katika kifaa chako na Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Vidhibiti vya Maudhui</translation> <translation id="7378627244592794276">La</translation> @@ -1903,6 +1908,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Ulijaribu kufikia <ph name="DOMAIN" />, lakini seva iliwasilisha cheti batili.</translation> <translation id="9050666287014529139">Kaulisiri</translation> +<translation id="9062620674789239642">Huenda imehamishwa, imebadilishwa au imefutwa.</translation> <translation id="9065203028668620118">Badilisha</translation> <translation id="9065745800631924235"><ph name="TEXT" /> tafuta kwenye historia</translation> <translation id="9069693763241529744">Imezuiwa na kiendelezi</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index ac0f76a9..e242b38 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -2,7 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ur"> <translation id="1008557486741366299">ابھی نہیں</translation> -<translation id="100957008357583611">اپنا مقام استعمال کریں؟</translation> +<translation id="100957008357583611">آپ کا مقام استعمال کریں؟</translation> <translation id="1010200102790553230">صفحہ بعد میں لوڈ کریں</translation> <translation id="1015730422737071372">اضافی تفصیلات فراہم کریں</translation> <translation id="1019413721762100891">آف</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index 8021db8..863eb58 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -45,6 +45,7 @@ <translation id="115926840831309955">Hãy kiểm tra CVC của bạn rồi thử lại hoặc cập nhật ngày hết hạn</translation> <translation id="1161325031994447685">Kết nối lại với Wi-Fi</translation> <translation id="1165039591588034296">Lỗi</translation> +<translation id="1165174597379888365">Trang đã truy cập</translation> <translation id="1175364870820465910">&In...</translation> <translation id="1175875016430184367">Dập 3 ghim bên phải</translation> <translation id="1178581264944972037">Tạm dừng</translation> @@ -265,6 +266,7 @@ <translation id="2001146170449793414">{COUNT,plural, =1{và 1 ứng dụng khác}other{và # ứng dụng khác}}</translation> <translation id="2003709556000175978">Đặt lại mật khẩu của bạn ngay bây giờ</translation> <translation id="2003775180883135320">Đục 4 lỗ trên cùng</translation> +<translation id="202072848677994234">Biểu mẫu này được gửi qua một đường kết nối không an toàn. Tính năng tự động điền đang tắt.</translation> <translation id="2025115093177348061">Thực tế tăng cường</translation> <translation id="2025186561304664664">Proxy được đặt thành định cấu hình tự động.</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Kiểm tra proxy và tường lửa<ph name="END_LINK" /></translation> @@ -332,6 +334,7 @@ <translation id="2289385804009217824">Cắt bỏ</translation> <translation id="2292556288342944218">Quyền truy cập Internet của bạn bị chặn</translation> <translation id="2293443924986248631">Khi tùy chọn này bật, các trang web không thể dùng cookie theo dõi bạn trên web. Do đó, các tính năng trên một số trang web có thể hoạt động không đúng cách.</translation> +<translation id="2295290966866883927">Hệ thống sẽ gửi URL của những trang mà bạn truy cập cho Google Cloud hoặc bên thứ ba để phân tích. Ví dụ: họ có thể quét những trang này để phát hiện trang web không an toàn.</translation> <translation id="2297722699537546652">B5 (Phong bì)</translation> <translation id="2300306941146563769">Chưa tải lên</translation> <translation id="2310021320168182093">Chou2 (Phong bì)</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index 8a47e9d..0bc0705 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -45,6 +45,7 @@ <translation id="115926840831309955">请检查您的银行卡验证码 (CVC) 并重试,或者更新失效日期</translation> <translation id="1161325031994447685">重新连接到 Wi-Fi 网络</translation> <translation id="1165039591588034296">错误</translation> +<translation id="1165174597379888365">访问网页</translation> <translation id="1175364870820465910">打印(&P)...</translation> <translation id="1175875016430184367">三钉(右侧)</translation> <translation id="1178581264944972037">暂停</translation> @@ -261,6 +262,7 @@ <translation id="2001146170449793414">{COUNT,plural, =1{以及另外 1 个应用}other{以及另外 # 个应用}}</translation> <translation id="2003709556000175978">立即重置您的密码</translation> <translation id="2003775180883135320">四孔(顶部)</translation> +<translation id="202072848677994234">此表单将通过不安全的连接提交。因此,系统已停用自动填充功能。</translation> <translation id="2025115093177348061">增强现实</translation> <translation id="2025186561304664664">代理已设为自动配置。</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />检查代理服务器和防火墙<ph name="END_LINK" /></translation> @@ -328,6 +330,7 @@ <translation id="2289385804009217824">裁切</translation> <translation id="2292556288342944218">您被禁止访问互联网</translation> <translation id="2293443924986248631">开启此设置后,网站无法使用 Cookie 来跟踪您在网上的活动。某些网站上的功能可能会无法正常运作。</translation> +<translation id="2295290966866883927">系统会将您所访问网页的网址发送给 Google Cloud 或第三方以供分析。例如,这些网址可能会被扫描,以检测出不安全的网站。</translation> <translation id="2297722699537546652">B5 (Envelope)</translation> <translation id="2300306941146563769">未上传</translation> <translation id="2310021320168182093">Chou2 (Envelope)</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb index 9abed82..e7bf62a 100644 --- a/components/strings/components_strings_zu.xtb +++ b/components/strings/components_strings_zu.xtb
@@ -450,6 +450,7 @@ <translation id="2824775600643448204">Ikheli nebha yosesho</translation> <translation id="2826760142808435982">Ukuxhumeka kubetheliwe kwaphinde kwaqinisekiswa kusetshenziswa i-<ph name="CIPHER" /> futhi kusebenzisa i-<ph name="KX" /> njengendlela yokushintshanisa ukhiye.</translation> <translation id="2835170189407361413">Sula ifomu</translation> +<translation id="2839501879576190149">Isayithi mbumbulu ngaphambili</translation> <translation id="2847118875340931228">Vula iwindi le-Incognito</translation> <translation id="2850739647070081192">Mema (Envelope)</translation> <translation id="2856444702002559011">Abahlaseli bangazama ukutshontsha ulwazi lwakho kusuka ku-<ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (isibonelo, amaphasiwedi, imilayezo, noma amakhadi esikweletu). <ph name="BEGIN_LEARN_MORE_LINK" />Funda kabanzi<ph name="END_LEARN_MORE_LINK" /></translation> @@ -807,6 +808,7 @@ <translation id="42981349822642051">Nweba</translation> <translation id="4300675098767811073">Ukushaya okuningi kwesokudla</translation> <translation id="4302965934281694568">Chou3 (Envelope)</translation> +<translation id="4305666528087210886">Ifayela lakho alikwazanga ukufinyelelwa</translation> <translation id="4305817255990598646">Shintsha</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Vimba (ngokuzenzakalela)</translation> @@ -825,6 +827,7 @@ <translation id="4358461427845829800">Phatha izindlela zokukhokha...</translation> <translation id="4359160567981085931">Usanda kufaka iphasiwedi yakho kusayithi elikhohlisayo. I-Chrome ingasiza. Ukuze ushintshe iphasiwedi yakho futhi wazise i-Google ukuthi i-akhawunti yakho ingaba sengozini, chofoza i-akhawunti y-Protect.</translation> <translation id="4367563149485757821">Inombolo-12 (Envelope)</translation> +<translation id="4367839622597707614">{1,plural, =0{Ukuphula isivumelwano sedatha kusayithi noma kuhlelo lokusebenza kudalule iphasiwedi yakho elondoloziwe ye-<ph name="ORIGIN" />. I-Chrome incoma ukushintsha iphasiwedi yakho ku-<ph name="ORIGIN" /> manje.}=1{Ukuphula isivumelwano sedatha kusayithi noma kuhlelo lokusebenza kudalule iphasiwedi yakho elondoloziwe ye-<ph name="ORIGIN" /> nakwenye isayithi eyodwa. I-Chrome incoma ukuhlola amaphasiwedi akho alondoloziwe manje.}one{Ukuphula isivumelwano sedatha kusayithi noma kuhlelo lokusebenza kudalule iphasiwedi yakho elondoloziwe ye-<ph name="ORIGIN" /> nakwamanye amasayithi angu-<ph name="SITES_COUNT" />. I-Chrome incoma ukuhlola amaphasiwedi akho alondoloziwe manje.}other{Ukuphula isivumelwano sedatha kusayithi noma kuhlelo lokusebenza kudalule iphasiwedi yakho elondoloziwe ye-<ph name="ORIGIN" /> nakwamanye amasayithi angu-<ph name="SITES_COUNT" />. I-Chrome incoma ukuhlola amaphasiwedi akho alondoloziwe manje.}}</translation> <translation id="437058704415269440">Ibhalansi ye-akhawunti</translation> <translation id="4372516964750095882">Fanfold-Us</translation> <translation id="4372948949327679948">Inani elilindelwe elingu-<ph name="VALUE_TYPE" />.</translation> @@ -1295,6 +1298,7 @@ <translation id="6380497234672085559">A0</translation> <translation id="6383221683286411806">Izinkokhiso ezingaba khona ezingaphambili.</translation> <translation id="6386120369904791316">{COUNT,plural, =1{1 esinye isiphakamiso}one{# ezinye iziphakamiso}other{# ezinye iziphakamiso}}</translation> +<translation id="6387645831795005740">Ngezinye izikhathi abahlaseli balingisa amasayithi ngokwenza izinguquko ezincane, okunzima ukuzibona ku-URL.</translation> <translation id="6389470377220713856">Igama kukhadi</translation> <translation id="6390200185239044127">Z-fold uhafu</translation> <translation id="6390662030813198813">Engineering-E</translation> @@ -1508,6 +1512,7 @@ <translation id="7372973238305370288">umphumela wosesho</translation> <translation id="7374733840632556089">Le nkinga yenzeka ngenxa yesitifiketi noma othile ufake kudivayisi yakho. Isitifiketi saziwa ngokusetshenziswa ukwengamela amanethiwekhi e-intercept, futhi asithembekile ku-Chrome. Ngenkathi ezinye izimo zokufinyelela zokwengamela zikhona, njengasesikoleni noma inethiwekhi yenkampani, i-Chrome ifuna ukuqinisekisa ukuthi uyaqaphela ukuthi lokhu kuyenzeka, ngisho noma ungeke ukwazi ukukumisa. Ukwengamela kungenzeka kunoma isiphi isiphequluli noma uhlelo lokusebenza olufinyelela iwebhu.</translation> <translation id="7375818412732305729">Ifayela linamathiselwe</translation> +<translation id="7376551888419889433">Uma imicimbi yokuphepha imakwe Izixhumanisi ze-Chrome Enterprise, idatha efanele yaleyo micimbi ithunyelwa kumlawuli wakho. Lokhu kungafaka amakhasi wama-URL owavakashelayo ku-Chrome, amagama amafayela noma emethadatha, kanye negama lomsebenzisi olisebenzisela ukungena ngemvume kudivayisi yakho naku-Chrome.</translation> <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation> <translation id="7378594059915113390">Izilawuli zemidiya</translation> <translation id="7378627244592794276">Cha</translation> @@ -1904,6 +1909,7 @@ <translation id="9045525010788763347"><ph name="RESULT_MODIFIED_DATE" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation> <translation id="9049981332609050619">Uzame ukufika ku-<ph name="DOMAIN" />, kodwa iseva iphrezente isitifiketi esingavumelekile.</translation> <translation id="9050666287014529139">Umushwana wokungena</translation> +<translation id="9062620674789239642">Kungenzeka lihanjisiwe, lihleliwe, lisusiwe.</translation> <translation id="9065203028668620118">Hlela</translation> <translation id="9065745800631924235"><ph name="TEXT" /> sesha kusuka kumlando</translation> <translation id="9069693763241529744">Kuvinjelwe yisandiso</translation>
diff --git a/components/sync/driver/profile_sync_service.cc b/components/sync/driver/profile_sync_service.cc index 2f43ebb..c7a1e83 100644 --- a/components/sync/driver/profile_sync_service.cc +++ b/components/sync/driver/profile_sync_service.cc
@@ -20,7 +20,6 @@ #include "base/rand_util.h" #include "base/task/post_task.h" #include "base/task/thread_pool.h" -#include "base/threading/thread.h" #include "base/time/time.h" #include "components/invalidation/public/invalidation_service.h" #include "components/signin/public/base/signin_metrics.h" @@ -235,6 +234,9 @@ base::Unretained(this)), &sync_prefs_, sync_client_->GetTrustedVaultClient()), + backend_task_runner_(base::ThreadPool::CreateSequencedTaskRunner( + {base::MayBlock(), base::TaskPriority::USER_VISIBLE, + base::TaskShutdownBehavior::BLOCK_SHUTDOWN})), network_time_update_callback_( std::move(init_params.network_time_update_callback)), url_loader_factory_(std::move(init_params.url_loader_factory)), @@ -506,37 +508,6 @@ startup_controller_->OnDataTypeRequestsSyncStartup(type); } -void ProfileSyncService::InitializeBackendTaskRunnerIfNeeded() { - if (backend_task_runner_) { - // Already started. - return; - } - - if (base::FeatureList::IsEnabled( - switches::kProfileSyncServiceUsesThreadPool)) { - backend_task_runner_ = base::ThreadPool::CreateSequencedTaskRunner( - {base::MayBlock(), base::TaskPriority::USER_VISIBLE, - base::TaskShutdownBehavior::BLOCK_SHUTDOWN}); - } else { - // The thread where all the sync operations happen. This thread is kept - // alive until browser shutdown and reused if sync is turned off and on - // again. It is joined during the shutdown process, but there is an abort - // mechanism in place to prevent slow HTTP requests from blocking browser - // shutdown. - auto sync_thread = std::make_unique<base::Thread>("Chrome_SyncThread"); - base::Thread::Options options; - options.timer_slack = base::TIMER_SLACK_MAXIMUM; - bool success = sync_thread->StartWithOptions(options); - DCHECK(success); - backend_task_runner_ = sync_thread->task_runner(); - - // Transfer ownership of the thread to the stopper closure that gets - // executed at shutdown. - sync_thread_stopper_ = - base::BindOnce(&base::Thread::Stop, std::move(sync_thread)); - } -} - void ProfileSyncService::StartUpSlowEngineComponents() { DCHECK(IsEngineAllowedToStart()); @@ -583,8 +554,6 @@ sync_prefs_.SetGaiaId(authenticated_account_info.gaia); } - InitializeBackendTaskRunnerIfNeeded(); - SyncEngine::InitParams params; params.sync_task_runner = backend_task_runner_; params.host = this; @@ -656,10 +625,6 @@ DCHECK(!observers_.might_have_observers()); auth_manager_.reset(); - - if (sync_thread_stopper_) { - std::move(sync_thread_stopper_).Run(); - } } void ProfileSyncService::ShutdownImpl(ShutdownReason reason) { @@ -667,16 +632,12 @@ // If the engine hasn't started or is already shut down when a DISABLE_SYNC // happens, the data directory needs to be cleaned up here. if (reason == ShutdownReason::DISABLE_SYNC) { - // Clearing the Directory via Directory::DeleteDirectoryFiles() requires - // the |backend_task_runner_| initialized. It also means there's IO - // involved which may we considerable overhead if triggered consistently - // upon browser startup (which is the case for certain codepaths such as - // the user being signed out). To avoid that, SyncPrefs is used to - // determine whether it's worth it. + // Clearing the Directory via Directory::DeleteDirectoryFiles() means + // there's IO involved which may we considerable overhead if triggered + // consistently upon browser startup (which is the case for certain + // codepaths such as the user being signed out). To avoid that, SyncPrefs + // is used to determine whether it's worth it. if (!sync_prefs_.GetCacheGuid().empty()) { - InitializeBackendTaskRunnerIfNeeded(); - } - if (backend_task_runner_) { backend_task_runner_->PostTask( FROM_HERE, base::BindOnce(&DeleteLegacyDirectoryFilesAndNigoriStorage,
diff --git a/components/sync/driver/profile_sync_service.h b/components/sync/driver/profile_sync_service.h index 8d13868..ef97ac2 100644 --- a/components/sync/driver/profile_sync_service.h +++ b/components/sync/driver/profile_sync_service.h
@@ -320,10 +320,6 @@ void ClearUnrecoverableError(); - // Initializes |backend_task_runner_| which is backed by |sync_thread_| or the - // ThreadPool depending on the ProfileSyncServiceUsesThreadPool experiment. - void InitializeBackendTaskRunnerIfNeeded(); - // Kicks off asynchronous initialization of the SyncEngine. void StartUpSlowEngineComponents(); @@ -386,11 +382,6 @@ // A utility object containing logic and state relating to encryption. SyncServiceCrypto crypto_; - // Owns the sync thread and takes care of its destruction. - // TODO(https://crbug.com/1014464): Remove once we have switched to - // Threadpool. - base::OnceClosure sync_thread_stopper_; - // TODO(crbug.com/923287): Move out of this class. Possibly to SyncEngineImpl. scoped_refptr<base::SequencedTaskRunner> backend_task_runner_;
diff --git a/components/sync/driver/sync_driver_switches.cc b/components/sync/driver/sync_driver_switches.cc index bd6ae636..fde60521 100644 --- a/components/sync/driver/sync_driver_switches.cc +++ b/components/sync/driver/sync_driver_switches.cc
@@ -60,10 +60,6 @@ const base::Feature kSyncDeviceInfoInTransportMode{ "SyncDeviceInfoInTransportMode", base::FEATURE_ENABLED_BY_DEFAULT}; -// Enables the running of backend ProfileSyncService tasks on the ThreadPool. -const base::Feature kProfileSyncServiceUsesThreadPool{ - "ProfileSyncServiceUsesThreadPool", base::FEATURE_ENABLED_BY_DEFAULT}; - // Stops honoring the Android master sync toggle. const base::Feature kDecoupleSyncFromAndroidMasterSync{ "DecoupleSyncFromAndroidMasterSync", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/components/sync/driver/sync_driver_switches.h b/components/sync/driver/sync_driver_switches.h index f2ae73ba..0a8b4761 100644 --- a/components/sync/driver/sync_driver_switches.h +++ b/components/sync/driver/sync_driver_switches.h
@@ -31,7 +31,6 @@ kSyncAllowWalletDataInTransportModeWithCustomPassphrase; extern const base::Feature kSyncWifiConfigurations; extern const base::Feature kSyncDeviceInfoInTransportMode; -extern const base::Feature kProfileSyncServiceUsesThreadPool; extern const base::Feature kDecoupleSyncFromAndroidMasterSync; } // namespace switches
diff --git a/components/test/data/payments/enforce_full_delegation.com/app.js b/components/test/data/payments/enforce_full_delegation.com/app.js new file mode 100644 index 0000000..401e9e2 --- /dev/null +++ b/components/test/data/payments/enforce_full_delegation.com/app.js
@@ -0,0 +1,20 @@ +/* + * Copyright 2020 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +let methodName; + +self.addEventListener('canmakepayment', (evt) => { + evt.respondWith(true); +}); + +self.addEventListener('paymentrequest', (evt) => { + methodName = evt.methodData[0].supportedMethods; + evt.respondWith(new Promise((responder) => { + const payerName = (evt.paymentOptions && + evt.paymentOptions.requestPayerName) ? 'John Smith' : ''; + responder({methodName, details: {status: 'success'}, payerName}); + })); +});
diff --git a/components/test/data/payments/enforce_full_delegation.com/app_manifest.json b/components/test/data/payments/enforce_full_delegation.com/app_manifest.json new file mode 100644 index 0000000..5e48934 --- /dev/null +++ b/components/test/data/payments/enforce_full_delegation.com/app_manifest.json
@@ -0,0 +1,8 @@ +{ + "name": "MaxPay", + "icons": [{ + "src": "../icon.png", + "sizes": "50x50", + "type": "image/jpg" + }] +}
diff --git a/components/test/data/payments/enforce_full_delegation.com/index.html b/components/test/data/payments/enforce_full_delegation.com/index.html new file mode 100644 index 0000000..f562db5 --- /dev/null +++ b/components/test/data/payments/enforce_full_delegation.com/index.html
@@ -0,0 +1,31 @@ +<!DOCTYPE html> +<!-- +Copyright 2020 The Chromium Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="manifest" href="app_manifest.json"> + <title>Enforce Full Delegation Tests</title> + </head> + <style> + pre { + white-space: initial; + } + </style> + <body> + <div><button onclick="install()">install</button> + <button onclick="uninstall()">uninstall</button></div> + <div><button onclick="enableDelegations(['payerName'])">enableDelegations(['payerName'])</button></div> + <div><button onclick="addSupportedMethod('https://play.google.com/billing')">addSupportedMethod('https://play.google.com/billing')</button> + <button onclick="addDefaultSupportedMethod()">addDefaultSupportedMethod()</button></div> + <div><button onclick="createPaymentRequestWithOptions({requestPayerName: true})">createPaymentRequestWithOptions({requestPayerName: true})</button></div> + <div><button onclick="show()">show</button></div> + <pre id="msg"></pre> + </body> + <script src="index.js"></script> + <script src="util.js"></script> +</html>
diff --git a/components/test/data/payments/enforce_full_delegation.com/index.js b/components/test/data/payments/enforce_full_delegation.com/index.js new file mode 100644 index 0000000..d527b47 --- /dev/null +++ b/components/test/data/payments/enforce_full_delegation.com/index.js
@@ -0,0 +1,145 @@ +/* + * Copyright 2020 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +const methodName = window.location.origin + '/method_manifest.json'; +const swSrcUrl = 'app.js'; +let request; +let supportedInstruments = []; + +/** + * Install a payment app. + * @return {string} - a message indicating whether the installation is + * successful. + */ +async function install() { // eslint-disable-line no-unused-vars + info('installing'); + + await navigator.serviceWorker.register(swSrcUrl); + const registration = await navigator.serviceWorker.ready; + if (!registration.paymentManager) { + return 'No payment handler capability in this browser. Is' + + 'chrome://flags/#service-worker-payment-apps enabled?'; + } + + if (!registration.paymentManager.instruments) { + return 'Payment handler is not fully implemented. ' + + 'Cannot set the instruments.'; + } + await registration.paymentManager.instruments.set('instrument-key', { + name: 'MaxPay', + method: methodName, + }); + return 'success'; +} + +/** + * Uninstall the payment handler. + * @return {string} - the message about the uninstallation result. + */ +async function uninstall() { // eslint-disable-line no-unused-vars + info('uninstall'); + let registration = await navigator.serviceWorker.getRegistration(swSrcUrl); + if (!registration) { + return 'The Payment handler has not been installed yet.'; + } + await registration.unregister(); + return 'success'; +} + +/** + * Delegates handling of the provided options to the payment handler. + * @param {Array<string>} delegations The list of payment options to delegate. + * @return {string} The 'success' or error message. + */ +async function enableDelegations(delegations) { // eslint-disable-line no-unused-vars, max-len + info('enableDelegations: ' + JSON.stringify(delegations)); + try { + await navigator.serviceWorker.ready; + let registration = + await navigator.serviceWorker.getRegistration(swSrcUrl); + if (!registration) { + return 'The payment handler is not installed.'; + } + if (!registration.paymentManager) { + return 'PaymentManager API not found.'; + } + if (!registration.paymentManager.enableDelegations) { + return 'PaymentManager does not support enableDelegations method'; + } + + await registration.paymentManager.enableDelegations(delegations); + return 'success'; + } catch (e) { + return e.toString(); + } +} + +/** + * Add a payment method to the payment request. + * @param {string} method - the payment method. + * @return {string} - a message indicating whether the operation is successful. + */ +function addSupportedMethod(method) { // eslint-disable-line no-unused-vars + info('addSupportedMethod: ' + method); + supportedInstruments.push({ + supportedMethods: [ + method, + ], + }); + return 'success'; +} + +/** + * Add the payment method of this test to the payment request. + * @return {string} - a message indicating whether the operation is successful. + */ +function addDefaultSupportedMethod() { // eslint-disable-line no-unused-vars + return addSupportedMethod(methodName); +} + +/** + * Create a PaymentRequest. + * @param {PaymentOptions} options - the payment options. + * @return {string} - a message indicating whether the operation is successful. + */ +function createPaymentRequestWithOptions(options) { // eslint-disable-line no-unused-vars, max-len + info('createPaymentRequestWithOptions: ' + + JSON.stringify(supportedInstruments) + ', ' + JSON.stringify(options)); + const details = { + total: { + label: 'Donation', + amount: { + currency: 'USD', + value: '55.00', + }, + }, + }; + request = new PaymentRequest(supportedInstruments, details, options); + return 'success'; +} + +/** + * Show the payment sheet. This method is not blocking. + * @return {string} - a message indicating whether the operation is successful. + */ +function show() { // eslint-disable-line no-unused-vars + info('show'); + request.show().then((response) => { + info('complete: status=' + response.details.status + ', payerName=' + + response.payerName); + response.complete(response.details.status).then(() => { + info('complete success'); + }).catch((e) => { + info('complete error: ' + e); + }).finally(() => { + info('show finished'); + }); + }).catch((e) => { + info('show error: ' + e); + }); + info('show on going'); + return 'success'; +}
diff --git a/components/test/data/payments/enforce_full_delegation.com/method_manifest.json b/components/test/data/payments/enforce_full_delegation.com/method_manifest.json new file mode 100644 index 0000000..0fbc895 --- /dev/null +++ b/components/test/data/payments/enforce_full_delegation.com/method_manifest.json
@@ -0,0 +1,4 @@ +{ + "default_applications": ['app.js'], + "supported_origins": [] +}
diff --git a/components/test/data/payments/enforce_full_delegation.com/util.js b/components/test/data/payments/enforce_full_delegation.com/util.js new file mode 100644 index 0000000..2d3b038 --- /dev/null +++ b/components/test/data/payments/enforce_full_delegation.com/util.js
@@ -0,0 +1,16 @@ +/* + * Copyright 2020 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/** + * Prints the given informational message. + * @param {string} msg - The information message to print. + */ +function info(msg) { // eslint-disable-line no-unused-vars + let element = document.createElement('pre'); + element.innerHTML = msg; + element.className = 'info'; + document.getElementById('msg').appendChild(element); +}
diff --git a/components/viz/common/quads/draw_quad_unittest.cc b/components/viz/common/quads/draw_quad_unittest.cc index 4ddc34d..c7fed3c 100644 --- a/components/viz/common/quads/draw_quad_unittest.cc +++ b/components/viz/common/quads/draw_quad_unittest.cc
@@ -191,7 +191,7 @@ TEST(DrawQuadTest, CopyRenderPassDrawQuad) { gfx::Rect visible_rect(40, 50, 30, 20); - RenderPassId render_pass_id = 61; + RenderPassId render_pass_id{61}; ResourceId mask_resource_id = 78; gfx::RectF mask_uv_rect(0, 0, 33.f, 19.f); gfx::Size mask_texture_size(128, 134); @@ -202,7 +202,7 @@ float backdrop_filter_quality = 1.0f; bool can_use_backdrop_filter_cache = true; - RenderPassId copied_render_pass_id = 235; + RenderPassId copied_render_pass_id{235}; CREATE_SHARED_STATE(); CREATE_QUAD_ALL_RP(RenderPassDrawQuad, visible_rect, render_pass_id, @@ -529,7 +529,7 @@ TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) { gfx::Rect visible_rect(40, 50, 30, 20); - int render_pass_id = 61; + RenderPassId render_pass_id{61}; ResourceId mask_resource_id = 78; gfx::RectF mask_uv_rect(0.f, 0.f, 33.f, 19.f); gfx::Size mask_texture_size(128, 134); @@ -538,7 +538,7 @@ gfx::RectF tex_coord_rect(1.f, 1.f, 33.f, 19.f); bool force_anti_aliasing_off = false; float backdrop_filter_quality = 1.0f; - int copied_render_pass_id = 235; + RenderPassId copied_render_pass_id{235}; CREATE_SHARED_STATE(); CREATE_QUAD_NEW_RP(RenderPassDrawQuad, visible_rect, render_pass_id,
diff --git a/components/viz/common/quads/render_pass.cc b/components/viz/common/quads/render_pass.cc index 854931e..3b7b6b7 100644 --- a/components/viz/common/quads/render_pass.cc +++ b/components/viz/common/quads/render_pass.cc
@@ -38,6 +38,22 @@ namespace viz { +RenderPassInternal::RenderPassInternal() + : RenderPassInternal(kDefaultNumSharedQuadStatesToReserve, + kDefaultNumQuadsToReserve) {} +// Each layer usually produces one shared quad state, so the number of layers +// is a good hint for what to reserve here. +RenderPassInternal::RenderPassInternal(size_t num_layers) + : RenderPassInternal(num_layers, kDefaultNumQuadsToReserve) {} +RenderPassInternal::RenderPassInternal(size_t shared_quad_state_list_size, + size_t quad_list_size) + : quad_list(quad_list_size), + shared_quad_state_list(alignof(SharedQuadState), + sizeof(SharedQuadState), + shared_quad_state_list_size) {} + +RenderPassInternal::~RenderPassInternal() = default; + std::unique_ptr<RenderPass> RenderPass::Create() { return base::WrapUnique(new RenderPass()); } @@ -53,39 +69,19 @@ new RenderPass(shared_quad_state_list_size, quad_list_size)); } -RenderPass::RenderPass() - : quad_list(kDefaultNumQuadsToReserve), - shared_quad_state_list(alignof(SharedQuadState), - sizeof(SharedQuadState), - kDefaultNumSharedQuadStatesToReserve) {} - -// Each layer usually produces one shared quad state, so the number of layers -// is a good hint for what to reserve here. -RenderPass::RenderPass(size_t num_layers) - : has_transparent_background(true), - cache_render_pass(false), - has_damage_from_contributing_content(false), - quad_list(kDefaultNumQuadsToReserve), - shared_quad_state_list(alignof(SharedQuadState), - sizeof(SharedQuadState), - num_layers) {} - +RenderPass::RenderPass() = default; +RenderPass::RenderPass(size_t num_layers) : RenderPassInternal(num_layers) {} RenderPass::RenderPass(size_t shared_quad_state_list_size, size_t quad_list_size) - : has_transparent_background(true), - cache_render_pass(false), - has_damage_from_contributing_content(false), - quad_list(quad_list_size), - shared_quad_state_list(alignof(SharedQuadState), - sizeof(SharedQuadState), - shared_quad_state_list_size) {} + : RenderPassInternal(shared_quad_state_list_size, quad_list_size) {} RenderPass::~RenderPass() { - TRACE_EVENT_OBJECT_DELETED_WITH_ID(TRACE_DISABLED_BY_DEFAULT("viz.quads"), - "RenderPass", reinterpret_cast<void*>(id)); + TRACE_EVENT_OBJECT_DELETED_WITH_ID( + TRACE_DISABLED_BY_DEFAULT("viz.quads"), "RenderPass", + reinterpret_cast<void*>(static_cast<uint64_t>(id))); } -std::unique_ptr<RenderPass> RenderPass::Copy(int new_id) const { +std::unique_ptr<RenderPass> RenderPass::Copy(RenderPassId new_id) const { std::unique_ptr<RenderPass> copy_pass( Create(shared_quad_state_list.size(), quad_list.size())); copy_pass->SetAll(new_id, output_rect, damage_rect, transform_to_root_target, @@ -146,7 +142,7 @@ out->push_back(source->DeepCopy()); } -void RenderPass::SetNew(uint64_t id, +void RenderPass::SetNew(RenderPassId id, const gfx::Rect& output_rect, const gfx::Rect& damage_rect, const gfx::Transform& transform_to_root_target) { @@ -165,7 +161,7 @@ } void RenderPass::SetAll( - uint64_t id, + RenderPassId id, const gfx::Rect& output_rect, const gfx::Rect& damage_rect, const gfx::Transform& transform_to_root_target, @@ -240,7 +236,7 @@ TracedValue::MakeDictIntoImplicitSnapshotWithCategory( TRACE_DISABLED_BY_DEFAULT("viz.quads"), value, "RenderPass", - reinterpret_cast<void*>(id)); + reinterpret_cast<void*>(static_cast<uint64_t>(id))); } SharedQuadState* RenderPass::CreateAndAppendSharedQuadState() {
diff --git a/components/viz/common/quads/render_pass.h b/components/viz/common/quads/render_pass.h index ad71fa4..e563ce0 100644 --- a/components/viz/common/quads/render_pass.h +++ b/components/viz/common/quads/render_pass.h
@@ -14,6 +14,7 @@ #include "base/callback.h" #include "base/hash/hash.h" #include "base/macros.h" +#include "base/util/type_safety/id_type.h" #include "cc/base/list_container.h" #include "cc/paint/filter_operations.h" #include "components/viz/common/quads/draw_quad.h" @@ -36,65 +37,13 @@ class DrawQuad; class RenderPassDrawQuad; class SharedQuadState; +class RenderPass; using SharedQuadStateList = cc::ListContainer<SharedQuadState>; -using RenderPassId = uint64_t; +using RenderPassId = util::IdTypeU64<RenderPass>; -class VIZ_COMMON_EXPORT RenderPass { +class VIZ_COMMON_EXPORT RenderPassInternal { public: - ~RenderPass(); - - static std::unique_ptr<RenderPass> Create(); - static std::unique_ptr<RenderPass> Create(size_t num_layers); - static std::unique_ptr<RenderPass> Create(size_t shared_quad_state_list_size, - size_t quad_list_size); - - // A shallow copy of the render pass, which does not include its quads or copy - // requests. - std::unique_ptr<RenderPass> Copy(int new_id) const; - - // A deep copy of the render pass that includes quads. - std::unique_ptr<RenderPass> DeepCopy() const; - - // A deep copy of the render passes in the list including the quads. - static void CopyAll(const std::vector<std::unique_ptr<RenderPass>>& in, - std::vector<std::unique_ptr<RenderPass>>* out); - - void SetNew(RenderPassId id, - const gfx::Rect& output_rect, - const gfx::Rect& damage_rect, - const gfx::Transform& transform_to_root_target); - - void SetAll(RenderPassId id, - const gfx::Rect& output_rect, - const gfx::Rect& damage_rect, - const gfx::Transform& transform_to_root_target, - const cc::FilterOperations& filters, - const cc::FilterOperations& backdrop_filters, - const base::Optional<gfx::RRectF>& backdrop_filter_bounds, - gfx::ContentColorUsage content_color_usage, - bool has_transparent_background, - bool cache_render_pass, - bool has_damage_from_contributing_content, - bool generate_mipmap); - - void AsValueInto(base::trace_event::TracedValue* dict) const; - - SharedQuadState* CreateAndAppendSharedQuadState(); - - template <typename DrawQuadType> - DrawQuadType* CreateAndAppendDrawQuad() { - return quad_list.AllocateAndConstruct<DrawQuadType>(); - } - - RenderPassDrawQuad* CopyFromAndAppendRenderPassDrawQuad( - const RenderPassDrawQuad* quad, - RenderPassId render_pass_id); - DrawQuad* CopyFromAndAppendDrawQuad(const DrawQuad* quad); - - // Uniquely identifies the render pass in the compositor's current frame. - RenderPassId id = 0; - // These are in the space of the render pass' physical pixels. gfx::Rect output_rect; gfx::Rect damage_rect; @@ -137,8 +86,77 @@ SharedQuadStateList shared_quad_state_list; protected: - explicit RenderPass(size_t num_layers); + RenderPassInternal(); + explicit RenderPassInternal(size_t num_layers); + RenderPassInternal(size_t shared_quad_state_list_size, size_t quad_list_size); + + ~RenderPassInternal(); + + private: + DISALLOW_COPY_AND_ASSIGN(RenderPassInternal); +}; + +class VIZ_COMMON_EXPORT RenderPass : public RenderPassInternal { + public: + ~RenderPass(); + + static std::unique_ptr<RenderPass> Create(); + static std::unique_ptr<RenderPass> Create(size_t num_layers); + static std::unique_ptr<RenderPass> Create(size_t shared_quad_state_list_size, + size_t quad_list_size); + + // A shallow copy of the render pass, which does not include its quads or copy + // requests. + std::unique_ptr<RenderPass> Copy(RenderPassId new_id) const; + + // A deep copy of the render pass that includes quads. + std::unique_ptr<RenderPass> DeepCopy() const; + + // A deep copy of the render passes in the list including the quads. + static void CopyAll(const std::vector<std::unique_ptr<RenderPass>>& in, + std::vector<std::unique_ptr<RenderPass>>* out); + + void SetNew(RenderPassId id, + const gfx::Rect& output_rect, + const gfx::Rect& damage_rect, + const gfx::Transform& transform_to_root_target); + + void SetAll(RenderPassId id, + const gfx::Rect& output_rect, + const gfx::Rect& damage_rect, + const gfx::Transform& transform_to_root_target, + const cc::FilterOperations& filters, + const cc::FilterOperations& backdrop_filters, + const base::Optional<gfx::RRectF>& backdrop_filter_bounds, + gfx::ContentColorUsage content_color_usage, + bool has_transparent_background, + bool cache_render_pass, + bool has_damage_from_contributing_content, + bool generate_mipmap); + + void AsValueInto(base::trace_event::TracedValue* dict) const; + + SharedQuadState* CreateAndAppendSharedQuadState(); + + template <typename DrawQuadType> + DrawQuadType* CreateAndAppendDrawQuad() { + return quad_list.AllocateAndConstruct<DrawQuadType>(); + } + + RenderPassDrawQuad* CopyFromAndAppendRenderPassDrawQuad( + const RenderPassDrawQuad* quad, + RenderPassId render_pass_id); + DrawQuad* CopyFromAndAppendDrawQuad(const DrawQuad* quad); + + // Uniquely identifies the render pass in the compositor's current frame. + RenderPassId id; + + protected: + // This is essentially "using RenderPassInternal::RenderPassInternal", but + // since that generates inline (complex) ctors, the chromium-style plug-in + // refuses to compile it. RenderPass(); + explicit RenderPass(size_t num_layers); RenderPass(size_t shared_quad_state_list_size, size_t quad_list_size); private:
diff --git a/components/viz/common/quads/render_pass_draw_quad.cc b/components/viz/common/quads/render_pass_draw_quad.cc index 68d217c..a6747d8 100644 --- a/components/viz/common/quads/render_pass_draw_quad.cc +++ b/components/viz/common/quads/render_pass_draw_quad.cc
@@ -80,8 +80,9 @@ void RenderPassDrawQuad::ExtendValue( base::trace_event::TracedValue* value) const { - TracedValue::SetIDRef(reinterpret_cast<void*>(render_pass_id), value, - "render_pass_id"); + TracedValue::SetIDRef( + reinterpret_cast<void*>(static_cast<uint64_t>(render_pass_id)), value, + "render_pass_id"); value->SetInteger("mask_resource_id", resources.ids[kMaskResourceIdIndex]); cc::MathUtil::AddToTracedValue("mask_texture_size", mask_texture_size, value); cc::MathUtil::AddToTracedValue("mask_uv_rect", mask_uv_rect, value);
diff --git a/components/viz/common/quads/render_pass_io.cc b/components/viz/common/quads/render_pass_io.cc index d82b7bb..c791b94d 100644 --- a/components/viz/common/quads/render_pass_io.cc +++ b/components/viz/common/quads/render_pass_io.cc
@@ -1043,8 +1043,9 @@ base::Value* dict) { DCHECK(draw_quad); DCHECK(dict); - dict->SetStringKey("render_pass_id", - base::NumberToString(draw_quad->render_pass_id)); + dict->SetStringKey( + "render_pass_id", + base::NumberToString(static_cast<uint64_t>(draw_quad->render_pass_id))); dict->SetKey("mask_uv_rect", RectFToDict(draw_quad->mask_uv_rect)); dict->SetKey("mask_texture_size", SizeToDict(draw_quad->mask_texture_size)); dict->SetKey("filters_scale", Vector2dFToDict(draw_quad->filters_scale)); @@ -1233,12 +1234,12 @@ !backdrop_filter_quality || !force_anti_aliasing_off) { return false; } - RenderPassId t_render_pass_id; + uint64_t render_pass_id_as_int; gfx::RectF t_mask_uv_rect, t_tex_coord_rect; gfx::Size t_mask_texture_size; gfx::Vector2dF t_filters_scale; gfx::PointF t_filters_origin; - if (!base::StringToUint64(*render_pass_id, &t_render_pass_id) || + if (!base::StringToUint64(*render_pass_id, &render_pass_id_as_int) || !RectFFromDict(*mask_uv_rect, &t_mask_uv_rect) || !SizeFromDict(*mask_texture_size, &t_mask_texture_size) || !Vector2dFFromDict(*filters_scale, &t_filters_scale) || @@ -1246,6 +1247,7 @@ !RectFFromDict(*tex_coord_rect, &t_tex_coord_rect)) { return false; } + RenderPassId t_render_pass_id{render_pass_id_as_int}; ResourceId mask_resource_id = 0u; if (common.resources.count == 1u) { @@ -1740,7 +1742,9 @@ base::Value GetRenderPassMetadata(const RenderPass& render_pass) { base::Value dict(base::Value::Type::DICTIONARY); - dict.SetStringKey("render_pass_id", base::NumberToString(render_pass.id)); + dict.SetStringKey( + "render_pass_id", + base::NumberToString(static_cast<uint64_t>(render_pass.id))); dict.SetIntKey("quad_count", static_cast<int>(render_pass.quad_list.size())); dict.SetIntKey("shared_quad_state_count", static_cast<int>(render_pass.shared_quad_state_list.size())); @@ -1759,7 +1763,8 @@ base::Value RenderPassToDict(const RenderPass& render_pass) { base::Value dict(base::Value::Type::DICTIONARY); if (ProcessRenderPassField(kRenderPassID)) - dict.SetStringKey("id", base::NumberToString(render_pass.id)); + dict.SetStringKey( + "id", base::NumberToString(static_cast<uint64_t>(render_pass.id))); if (ProcessRenderPassField(kRenderPassOutputRect)) dict.SetKey("output_rect", RectToDict(render_pass.output_rect)); if (ProcessRenderPassField(kRenderPassDamageRect)) @@ -1822,8 +1827,10 @@ const std::string* id = dict.FindStringKey("id"); if (!id) return nullptr; - if (!base::StringToUint64(*id, &(pass->id))) + uint64_t pass_id_as_int = 0; + if (!base::StringToUint64(*id, &pass_id_as_int)) return nullptr; + pass->id = RenderPassId{pass_id_as_int}; } if (ProcessRenderPassField(kRenderPassOutputRect)) {
diff --git a/components/viz/common/quads/render_pass_io_unittest.cc b/components/viz/common/quads/render_pass_io_unittest.cc index 16310a4..7544d3a6 100644 --- a/components/viz/common/quads/render_pass_io_unittest.cc +++ b/components/viz/common/quads/render_pass_io_unittest.cc
@@ -265,7 +265,7 @@ render_pass0->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); quad->SetAll(render_pass0->shared_quad_state_list.ElementAt(sqs_index), gfx::Rect(2, 3, 100, 50), gfx::Rect(2, 3, 100, 50), true, - 198u, 81u, gfx::RectF(0.1f, 0.2f, 0.5f, 0.6f), + RenderPassId{198u}, 81u, gfx::RectF(0.1f, 0.2f, 0.5f, 0.6f), gfx::Size(800, 600), gfx::Vector2dF(1.1f, 0.9f), gfx::PointF(0.01f, 0.02f), gfx::RectF(0.2f, 0.3f, 0.3f, 0.4f), true, 0.88f, true);
diff --git a/components/viz/common/quads/render_pass_unittest.cc b/components/viz/common/quads/render_pass_unittest.cc index 006b314..757b5ae 100644 --- a/components/viz/common/quads/render_pass_unittest.cc +++ b/components/viz/common/quads/render_pass_unittest.cc
@@ -74,7 +74,7 @@ } TEST(RenderPassTest, CopyShouldBeIdenticalExceptIdAndQuads) { - RenderPassId render_pass_id = 3u; + RenderPassId render_pass_id{3u}; gfx::Rect output_rect(45, 22, 120, 13); gfx::Transform transform_to_root = gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); @@ -109,7 +109,7 @@ color_quad->SetNew(pass->shared_quad_state_list.back(), gfx::Rect(), gfx::Rect(), SkColor(), false); - RenderPassId new_render_pass_id = 63u; + RenderPassId new_render_pass_id{63u}; std::unique_ptr<RenderPass> copy = pass->Copy(new_render_pass_id); EXPECT_EQ(new_render_pass_id, copy->id); @@ -138,7 +138,7 @@ TEST(RenderPassTest, CopyAllShouldBeIdentical) { RenderPassList pass_list; - int id = 3; + RenderPassId id{3}; gfx::Rect output_rect(45, 22, 120, 13); gfx::Transform transform_to_root = gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); @@ -194,7 +194,7 @@ false); // A second render pass with a quad. - int contrib_id = 4; + RenderPassId contrib_id{4}; gfx::Rect contrib_output_rect(10, 15, 12, 17); gfx::Transform contrib_transform_to_root = gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); @@ -251,7 +251,7 @@ TEST(RenderPassTest, CopyAllWithCulledQuads) { RenderPassList pass_list; - int id = 3; + RenderPassId id{3}; gfx::Rect output_rect(45, 22, 120, 13); gfx::Transform transform_to_root = gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
diff --git a/components/viz/demo/client/demo_client.cc b/components/viz/demo/client/demo_client.cc index ef4cf6b..7523f16 100644 --- a/components/viz/demo/client/demo_client.cc +++ b/components/viz/demo/client/demo_client.cc
@@ -77,7 +77,7 @@ local_surface_id_.allocation_time(); frame.metadata.frame_token = ++next_frame_token_; - const int kRenderPassId = 1; + const viz::RenderPassId kRenderPassId{1}; const gfx::Rect& output_rect = bounds_; const gfx::Rect& damage_rect = output_rect; std::unique_ptr<viz::RenderPass> render_pass = viz::RenderPass::Create();
diff --git a/components/viz/service/compositor_frame_fuzzer/compositor_frame_fuzzer_util.cc b/components/viz/service/compositor_frame_fuzzer/compositor_frame_fuzzer_util.cc index acffa4b..c9f586d0 100644 --- a/components/viz/service/compositor_frame_fuzzer/compositor_frame_fuzzer_util.cc +++ b/components/viz/service/compositor_frame_fuzzer/compositor_frame_fuzzer_util.cc
@@ -143,7 +143,7 @@ // specific bitmaps/textures. uint64_t reserved_bytes_ = 0; - RenderPassId next_pass_id_ = 1; + RenderPassId::Generator pass_id_generator_; // Frame and data being built. FuzzedData data_; @@ -188,8 +188,8 @@ ? GetTransformFromProtobuf( render_pass_spec.transform_to_root_target()) : gfx::Transform(); - pass->SetNew(next_pass_id_++, rp_output_rect, rp_damage_rect, - transform_to_root_target); + pass->SetNew(pass_id_generator_.GenerateNextId(), rp_output_rect, + rp_damage_rect, transform_to_root_target); for (const proto::DrawQuad& quad_spec : render_pass_spec.quad_list()) { if (quad_spec.quad_case() == proto::DrawQuad::QUAD_NOT_SET) {
diff --git a/components/viz/service/compositor_frame_fuzzer/fuzzer_browser_process.cc b/components/viz/service/compositor_frame_fuzzer/fuzzer_browser_process.cc index d41bc4d..b39333c 100644 --- a/components/viz/service/compositor_frame_fuzzer/fuzzer_browser_process.cc +++ b/components/viz/service/compositor_frame_fuzzer/fuzzer_browser_process.cc
@@ -125,8 +125,8 @@ SurfaceRange(base::nullopt, renderer_surface_id)); std::unique_ptr<RenderPass> pass = RenderPass::Create(); - pass->SetNew(/*id=*/1, gfx::Rect(kBrowserSize), gfx::Rect(kBrowserSize), - gfx::Transform()); + pass->SetNew(RenderPassId{1}, gfx::Rect(kBrowserSize), + gfx::Rect(kBrowserSize), gfx::Transform()); auto* renderer_sqs = pass->CreateAndAppendSharedQuadState(); renderer_sqs->SetAll(gfx::Transform(1.0, 0.0, 0.0, 1.0, 0, 80),
diff --git a/components/viz/service/display/copy_output_scaling_pixeltest.cc b/components/viz/service/display/copy_output_scaling_pixeltest.cc index b184c00..d27e6bfb 100644 --- a/components/viz/service/display/copy_output_scaling_pixeltest.cc +++ b/components/viz/service/display/copy_output_scaling_pixeltest.cc
@@ -96,8 +96,8 @@ // Create the render passes drawn on top of the root render pass. RenderPass* smaller_passes[4]; gfx::Rect smaller_pass_rects[4]; - int pass_id = 5; - for (int i = 0; i < 4; ++i, --pass_id) { + RenderPassId pass_id{5}; + for (int i = 0; i < 4; ++i, pass_id = RenderPassId{pass_id.value() - 1}) { smaller_pass_rects[i] = gfx::Rect( i % 2 == 0 ? x_block : (viewport_size.width() - 2 * x_block), i / 2 == 0 ? y_block : (viewport_size.height() - 2 * y_block),
diff --git a/components/viz/service/display/display_damage_tracker_unittest.cc b/components/viz/service/display/display_damage_tracker_unittest.cc index ae4bf8f..e678e04 100644 --- a/components/viz/service/display/display_damage_tracker_unittest.cc +++ b/components/viz/service/display/display_damage_tracker_unittest.cc
@@ -4,6 +4,8 @@ #include "components/viz/service/display/display_damage_tracker.h" +#include <utility> + #include "base/test/null_task_runner.h" #include "components/viz/common/quads/compositor_frame.h" #include "components/viz/common/quads/render_pass.h" @@ -83,7 +85,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); BeginFrameAck ack;
diff --git a/components/viz/service/display/display_unittest.cc b/components/viz/service/display/display_unittest.cc index 1207561..34d99466 100644 --- a/components/viz/service/display/display_unittest.cc +++ b/components/viz/service/display/display_unittest.cc
@@ -267,7 +267,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); ResetDamageForTest(); @@ -293,7 +293,7 @@ pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); ResetDamageForTest(); @@ -323,7 +323,7 @@ pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); ResetDamageForTest(); @@ -351,7 +351,7 @@ pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 0, 0); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); ResetDamageForTest(); @@ -399,7 +399,7 @@ pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 0, 0); - pass->id = 1u; + pass->id = RenderPassId{1u}; id_allocator_.GenerateId(); display_->SetLocalSurfaceId( @@ -434,7 +434,7 @@ CopyOutputRequest::ResultFormat::RGBA_BITMAP, base::BindOnce(&CopyCallback, ©_called, copy_run_loop.QuitClosure()))); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); ResetDamageForTest(); @@ -516,7 +516,7 @@ pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 99, 99); pass->damage_rect = gfx::Rect(0, 0, 99, 99); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); ResetDamageForTest(); @@ -633,7 +633,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); SubmitCompositorFrame(&pass_list, local_surface_id1); @@ -666,7 +666,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 200, 200); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); SubmitCompositorFrame(&pass_list, local_surface_id2); @@ -724,7 +724,7 @@ const gfx::Rect sub_surface_rect(5, 5, 25, 25); const gfx::Rect no_damage; - uint64_t next_render_pass_id = 1; + RenderPassId::Generator render_pass_id_generator; for (size_t frame_num = 1; frame_num <= 2; ++frame_num) { bool first_frame = frame_num == 1; ResetDamageForTest(); @@ -735,8 +735,8 @@ cc::FilterOperations backdrop_filters; backdrop_filters.Append(cc::FilterOperation::CreateBlurFilter(5.0)); bd_pass->SetAll( - next_render_pass_id++, sub_surface_rect, no_damage, gfx::Transform(), - cc::FilterOperations(), backdrop_filters, + render_pass_id_generator.GenerateNextId(), sub_surface_rect, + no_damage, gfx::Transform(), cc::FilterOperations(), backdrop_filters, gfx::RRectF(gfx::RectF(sub_surface_rect), 0), gfx::ContentColorUsage::kSRGB, false, false, false, false); pass_list.push_back(std::move(bd_pass)); @@ -754,7 +754,7 @@ auto other_pass = RenderPass::Create(); other_pass->output_rect = gfx::Rect(display_size); other_pass->damage_rect = damage_rect; - other_pass->id = next_render_pass_id++; + other_pass->id = render_pass_id_generator.GenerateNextId(); pass_list.push_back(std::move(other_pass)); CompositorFrame frame = CompositorFrameBuilder() @@ -769,7 +769,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(display_size); pass->damage_rect = damage_rect; - pass->id = next_render_pass_id++; + pass->id = render_pass_id_generator.GenerateNextId(); // Embed sub surface 1, with backdrop filter. auto* shared_quad_state1 = pass->CreateAndAppendSharedQuadState(); @@ -900,7 +900,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1; + pass->id = RenderPassId{1}; pass_list.push_back(std::move(pass)); SubmitCompositorFrame(&pass_list, local_surface_id); @@ -1000,9 +1000,10 @@ cc::FilterOperations backdrop_filters; backdrop_filters.Append(cc::FilterOperation::CreateBlurFilter(5.0)); bd_render_pass->SetAll( - 2, bd_filter_rect, gfx::Rect(), gfx::Transform(), cc::FilterOperations(), - backdrop_filters, gfx::RRectF(gfx::RectF(bd_filter_rect), 0), - gfx::ContentColorUsage::kSRGB, false, false, false, false); + RenderPassId{2}, bd_filter_rect, gfx::Rect(), gfx::Transform(), + cc::FilterOperations(), backdrop_filters, + gfx::RRectF(gfx::RectF(bd_filter_rect), 0), gfx::ContentColorUsage::kSRGB, + false, false, false, false); // Add quads to root render pass for (int i = 0; i < 3; i++) { @@ -2698,7 +2699,8 @@ gfx::Rect rect2(100, 0, 60, 60); std::unique_ptr<RenderPass> render_pass2 = RenderPass::Create(); - render_pass2->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); + render_pass2->SetNew(RenderPassId{1}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); frame.render_pass_list.push_back(std::move(render_pass2)); gfx::Rect rect3(10, 10, 120, 30); @@ -2770,13 +2772,14 @@ gfx::Rect rect1(0, 0, 100, 100); std::unique_ptr<RenderPass> render_pass2 = RenderPass::Create(); - render_pass2->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); + render_pass2->SetNew(RenderPassId{1}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); frame.render_pass_list.push_back(std::move(render_pass2)); bool is_clipped = false; bool opaque_content = true; float opacity = 1.f; - RenderPassId render_pass_id = 1; + RenderPassId render_pass_id{1}; ResourceId mask_resource_id = 2; SharedQuadState* shared_quad_state = @@ -3005,7 +3008,7 @@ bool is_clipped = false; bool opaque_content = true; - RenderPassId render_pass_id = 1; + RenderPassId render_pass_id{1}; ResourceId mask_resource_id = 2; float opacity = 1.f; SharedQuadState* shared_quad_state = @@ -3527,7 +3530,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(display_size); pass->damage_rect = gfx::Rect(display_size); - pass->id = 1; + pass->id = RenderPassId{1}; auto* shared_quad_state1 = pass->CreateAndAppendSharedQuadState(); gfx::Rect rect1(display_size); @@ -3612,7 +3615,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); SubmitCompositorFrame( @@ -3687,7 +3690,7 @@ auto pass = RenderPass::Create(); pass->output_rect = gfx::Rect(0, 0, 100, 100); pass->damage_rect = gfx::Rect(10, 10, 1, 1); - pass->id = 1u; + pass->id = RenderPassId{1u}; pass_list.push_back(std::move(pass)); SubmitCompositorFrame( @@ -4522,7 +4525,7 @@ CopyOutputRequest::ResultFormat::RGBA_BITMAP, base::BindOnce(&CopyCallback, ©_called, copy_run_loop.QuitClosure()))); - pass->id = 1u; + pass->id = RenderPassId{1u}; RenderPassList pass_list; pass_list.push_back(std::move(pass));
diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc index 1e539555..a87c1992 100644 --- a/components/viz/service/display/gl_renderer.cc +++ b/components/viz/service/display/gl_renderer.cc
@@ -4085,4 +4085,7 @@ return texture_it->second.size(); } +GLRenderer::OverlayTexture::OverlayTexture() = default; +GLRenderer::OverlayTexture::~OverlayTexture() = default; + } // namespace viz
diff --git a/components/viz/service/display/gl_renderer.h b/components/viz/service/display/gl_renderer.h index d2ce48e..1d51162 100644 --- a/components/viz/service/display/gl_renderer.h +++ b/components/viz/service/display/gl_renderer.h
@@ -164,6 +164,9 @@ // the execution of SwapBuffers, and such textures are more expensive to make // so we want to reuse them. struct OverlayTexture { + OverlayTexture(); + ~OverlayTexture(); + RenderPassId render_pass_id; ScopedGpuMemoryBufferTexture texture; int frames_waiting_for_reuse = 0;
diff --git a/components/viz/service/display/gl_renderer_unittest.cc b/components/viz/service/display/gl_renderer_unittest.cc index e20d11e..dd7550e22 100644 --- a/components/viz/service/display/gl_renderer_unittest.cc +++ b/components/viz/service/display/gl_renderer_unittest.cc
@@ -244,7 +244,7 @@ RenderPassList render_passes_in_draw_order; gfx::Size viewport_size(100, 100); - RenderPassId root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -713,7 +713,7 @@ output_surface_->set_has_external_stencil_test(true); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = false; @@ -730,7 +730,7 @@ const gfx::Size viewport_size(1, 1); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); const bool needs_blending = false; @@ -793,7 +793,7 @@ const gfx::Size viewport_size(1, 1); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); const bool needs_blending = false; @@ -1054,7 +1054,7 @@ gfx::Size viewport_size(1, 1); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = false; @@ -1100,7 +1100,7 @@ gfx::Size viewport_size(1, 1); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = true; @@ -1138,8 +1138,9 @@ renderer.SetVisible(true); gfx::Size viewport_size(1, 1); - cc::AddRenderPass(&render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), - gfx::Transform(), cc::FilterOperations()); + cc::AddRenderPass(&render_passes_in_draw_order_, RenderPassId{1}, + gfx::Rect(viewport_size), gfx::Transform(), + cc::FilterOperations()); EXPECT_CALL(*gl, DiscardFramebufferEXT(GL_FRAMEBUFFER, _, _)) .With(Args<2, 1>(ElementsAre(GL_COLOR_ATTACHMENT0))) @@ -1210,13 +1211,13 @@ // During initialization we are allowed to set any texture parameters. EXPECT_CALL(*gl, TexParameteri(_, _, _)).Times(AnyNumber()); - RenderPass* root_pass = - cc::AddRenderPass(&render_passes_in_draw_order_, 1, gfx::Rect(100, 100), - gfx::Transform(), cc::FilterOperations()); + RenderPass* root_pass = cc::AddRenderPass( + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(100, 100), + gfx::Transform(), cc::FilterOperations()); gpu::SyncToken mailbox_sync_token; cc::AddOneOfEveryQuadTypeInDisplayResourceProvider( root_pass, resource_provider.get(), child_resource_provider.get(), - child_context_provider.get(), 0, &mailbox_sync_token); + child_context_provider.get(), RenderPassId{0}, &mailbox_sync_token); EXPECT_EQ(12u, resource_provider->num_resources()); renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); @@ -1325,7 +1326,7 @@ renderer.SetVisible(true); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = false; @@ -1400,13 +1401,13 @@ gfx::Size viewport_size(10, 10); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; RenderPass* child_pass = cc::AddRenderPass( &render_passes_in_draw_order_, child_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); cc::AddQuad(child_pass, gfx::Rect(viewport_size), SK_ColorBLUE); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1489,20 +1490,20 @@ gfx::Size viewport_size(100, 100); gfx::Rect grand_child_rect(25, 25); - int grand_child_pass_id = 3; + RenderPassId grand_child_pass_id{3}; RenderPass* grand_child_pass = cc::AddRenderPass( &render_passes_in_draw_order_, grand_child_pass_id, grand_child_rect, gfx::Transform(), cc::FilterOperations()); cc::AddClippedQuad(grand_child_pass, grand_child_rect, SK_ColorYELLOW); gfx::Rect child_rect(50, 50); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; RenderPass* child_pass = cc::AddRenderPass(&render_passes_in_draw_order_, child_pass_id, child_rect, gfx::Transform(), cc::FilterOperations()); cc::AddQuad(child_pass, child_rect, SK_ColorBLUE); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1565,7 +1566,7 @@ { // Draw one black frame to make sure the output surface is reshaped before // testes. - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1578,7 +1579,7 @@ } { // Partial frame, should not discard. - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1592,7 +1593,7 @@ } { // Full frame, should discard. - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1607,7 +1608,7 @@ { // Full frame, external scissor is set, should not discard. output_surface->set_has_external_stencil_test(true); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1776,7 +1777,7 @@ gfx::Size viewport_size(100, 100); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1824,7 +1825,7 @@ void DrawBlackFrame(const gfx::Size& viewport_size) { EXPECT_CALL(*gl_, DrawElements(_, _, _, _)).Times(1); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1854,7 +1855,7 @@ DrawBlackFrame(viewport_size); EXPECT_CALL(*gl_, DrawElements(_, _, _, _)).Times(1); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1873,7 +1874,7 @@ // tests. DrawBlackFrame(viewport_size); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1898,7 +1899,7 @@ // tests. DrawBlackFrame(viewport_size); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; auto* root_pass = cc::AddRenderPass(&render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), @@ -1941,7 +1942,7 @@ gfx::Size viewport_size(100, 100); gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -1965,10 +1966,10 @@ gfx::Size viewport_size(60, 75); gfx::Rect child_rect(50, 50); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; RenderPass* child_pass; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass; auto transfer_resource = TransferableResource::MakeGL( @@ -2169,11 +2170,11 @@ // project incorrectly by the given transform, because of w<0 clipping. TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { gfx::Rect child_rect(50, 50); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; RenderPass* child_pass; gfx::Size viewport_size(100, 100); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass; gfx::Transform transform_preventing_aa; @@ -2210,7 +2211,7 @@ TEST_F(GLRendererShaderTest, DrawSolidColorShader) { gfx::Size viewport_size(30, 30); // Don't translate out of the viewport. gfx::Size quad_size(3, 3); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass; gfx::Transform pixel_aligned_transform_causing_aa; @@ -2325,7 +2326,7 @@ bool transparent) { gfx::BufferFormat format = transparent ? gfx::BufferFormat::RGBA_8888 : gfx::BufferFormat::RGBX_8888; - int render_pass_id = 1; + RenderPassId render_pass_id{1}; RenderPass* render_pass = cc::AddRenderPass( &render_passes_in_draw_order_, render_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -2548,7 +2549,7 @@ gfx::Size viewport_size(1, 1); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = false; root_pass->copy_requests.push_back(CopyOutputRequest::CreateStubForTesting()); @@ -2593,7 +2594,7 @@ #endif // Without a copy request Attempt() should be called once. - root_pass = cc::AddRenderPass(&render_passes_in_draw_order_, 1, + root_pass = cc::AddRenderPass(&render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = false; @@ -2731,7 +2732,7 @@ gfx::Size viewport_size(1, 1); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = false; @@ -2826,12 +2827,12 @@ // Create a root and a child passes to test that the output color matrix is // registered only for the root pass. gfx::Size viewport_size(100, 100); - RenderPassId child_pass_id = 2; + RenderPassId child_pass_id{2}; RenderPass* child_pass = cc::AddRenderPass(&render_passes_in_draw_order_, child_pass_id, gfx::Rect(viewport_size) + gfx::Vector2d(1, 2), gfx::Transform(), cc::FilterOperations()); - RenderPassId root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -2904,7 +2905,7 @@ renderer.SetVisible(true); gfx::Size viewport_size(100, 100); - RenderPassId child_pass_id = 2; + RenderPassId child_pass_id{2}; // Create a child pass with mipmap to verify that npot texture is enabled. RenderPass* child_pass = cc::AddRenderPass(&render_passes_in_draw_order_, child_pass_id, @@ -2912,7 +2913,7 @@ gfx::Transform(), cc::FilterOperations()); child_pass->generate_mipmap = true; - RenderPassId root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -2987,7 +2988,7 @@ EXPECT_CALL(*gl, Scissor(0, 0, 100, 100)).Times(1); } - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -3130,7 +3131,7 @@ gfx::Size viewport_size(100, 100); for (int i = 0; i < 65; i++) { - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -3319,7 +3320,7 @@ gfx::Size viewport_size(100, 100); { - int root_pass_id = 1; + RenderPassId root_pass_id{1}; cc::AddRenderPass(&render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -3420,7 +3421,7 @@ } void DrawBlackFrame(const gfx::Size& viewport_size) { - RenderPassId root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), @@ -3457,8 +3458,8 @@ // This frame has a root pass with a RenderPassDrawQuad pointing to a child // pass that is at 1,2 to make it identifiable. - RenderPassId child_pass_id = 2; - RenderPassId root_pass_id = 1; + RenderPassId child_pass_id{2}; + RenderPassId root_pass_id{1}; { RenderPass* child_pass = cc::AddRenderPass(&render_passes_in_draw_order_, child_pass_id, @@ -3539,11 +3540,11 @@ DrawBlackFrame(viewport_size); for (size_t subtest = 0; subtest < 3; ++subtest) { - RenderPass* child_pass = - cc::AddRenderPass(&render_passes_in_draw_order_, 1, gfx::Rect(250, 250), - gfx::Transform(), cc::FilterOperations()); + RenderPass* child_pass = cc::AddRenderPass( + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(250, 250), + gfx::Transform(), cc::FilterOperations()); - RenderPassId root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -3602,8 +3603,8 @@ // pass that is at 1,2 to make it identifiable. // The child's size is 250x251, but it will be rounded up to a multiple of 64 // in order to promote easier texture reuse. See https://crbug.com/146070. - RenderPassId child_pass_id = 2; - RenderPassId root_pass_id = 1; + RenderPassId child_pass_id{2}; + RenderPassId root_pass_id{1}; { RenderPass* child_pass = cc::AddRenderPass(&render_passes_in_draw_order_, child_pass_id, @@ -3757,8 +3758,8 @@ // pass that is at 1,2 to make it identifiable. // The child's size is 250x251, but it will be rounded up to a multiple of 64 // in order to promote easier texture reuse. See https://crbug.com/146070. - RenderPassId child_pass_id = 2; - RenderPassId root_pass_id = 1; + RenderPassId child_pass_id{2}; + RenderPassId root_pass_id{1}; { RenderPass* child_pass = cc::AddRenderPass(&render_passes_in_draw_order_, child_pass_id, @@ -3903,8 +3904,8 @@ // This frame has a root pass with a RenderPassDrawQuad pointing to a child // pass that is at 1,2 to make it identifiable. - RenderPassId child_pass_id = 2; - RenderPassId root_pass_id = 1; + RenderPassId child_pass_id{2}; + RenderPassId root_pass_id{1}; { RenderPass* child_pass = cc::AddRenderPass(&render_passes_in_draw_order_, child_pass_id, @@ -4038,7 +4039,7 @@ // Each frame has a root pass with a RenderPassDrawQuad pointing to a child // pass. We generate a bunch of frames and swap them, each with a different // child RenderPass id, without getting any of the resources back from the OS. - RenderPassId root_pass_id = 1; + RenderPassId root_pass_id{1}; // The number is at least 2 larger than the number of textures we expect to // reuse, so that we can leave one in the OS, and have 1 texture returned but @@ -4047,7 +4048,7 @@ uint32_t sent_texture_ids[kNumSendManyTextureIds]; for (int i = 0; i < kNumSendManyTextureIds; ++i) { RenderPass* child_pass = - cc::AddRenderPass(&render_passes_in_draw_order_, i + 2, + cc::AddRenderPass(&render_passes_in_draw_order_, RenderPassId{i + 2}, gfx::Rect(250, 251) + gfx::Vector2d(1, 2), gfx::Transform(), cc::FilterOperations()); RenderPass* root_pass = cc::AddRenderPass( @@ -4108,7 +4109,7 @@ // We use different RenderPass ids to ensure that the cache allows reuse // even if they don't match. RenderPass* child_pass = - cc::AddRenderPass(&render_passes_in_draw_order_, i + 100, + cc::AddRenderPass(&render_passes_in_draw_order_, RenderPassId{i + 100}, gfx::Rect(250, 251) + gfx::Vector2d(1, 2), gfx::Transform(), cc::FilterOperations()); RenderPass* root_pass = cc::AddRenderPass( @@ -4167,15 +4168,15 @@ // Each frame has a root pass with a RenderPassDrawQuad pointing to a child // pass. We generate a bunch of frames and swap them, each with a different // child RenderPass id, without getting any of the resources back from the OS. - RenderPassId child_pass_id = 2; - RenderPassId root_pass_id = 1; + RenderPassId child_pass_id{2}; + RenderPassId root_pass_id{1}; // We send a whole bunch of textures as overlays to the OS. const int kNumSendManyTextureIds = 7; uint32_t sent_texture_ids[kNumSendManyTextureIds]; for (int i = 0; i < kNumSendManyTextureIds; ++i) { RenderPass* child_pass = - cc::AddRenderPass(&render_passes_in_draw_order_, i + 2, + cc::AddRenderPass(&render_passes_in_draw_order_, RenderPassId{i + 2}, gfx::Rect(250, 251) + gfx::Vector2d(1, 2), gfx::Transform(), cc::FilterOperations()); RenderPass* root_pass = cc::AddRenderPass( @@ -4360,14 +4361,14 @@ // First frame, the child and root RenderPass each have damage. RenderPass* child_pass = - cc::AddRenderPass(&render_passes_in_draw_order_, 2, child_rect, - gfx::Transform(), cc::FilterOperations()); + cc::AddRenderPass(&render_passes_in_draw_order_, RenderPassId{2}, + child_rect, gfx::Transform(), cc::FilterOperations()); cc::AddQuad(child_pass, child_rect, SK_ColorGREEN); child_pass->damage_rect = child_rect; RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), - gfx::Transform(), cc::FilterOperations()); + &render_passes_in_draw_order_, RenderPassId{1}, + gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); cc::AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorRED); cc::AddRenderPassQuad(root_pass, child_pass, 0, gfx::Transform(), SkBlendMode::kSrcOver); @@ -4389,15 +4390,16 @@ renderer.ResetBindCalls(); // Second frame, the child RenderPass has no damage in it. - child_pass = cc::AddRenderPass(&render_passes_in_draw_order_, 2, child_rect, - gfx::Transform(), cc::FilterOperations()); + child_pass = + cc::AddRenderPass(&render_passes_in_draw_order_, RenderPassId{2}, + child_rect, gfx::Transform(), cc::FilterOperations()); cc::AddQuad(child_pass, child_rect, SK_ColorGREEN); child_pass->damage_rect = gfx::Rect(); // Root RenderPass has some damage that doesn't intersect the child. - root_pass = cc::AddRenderPass(&render_passes_in_draw_order_, 1, - gfx::Rect(viewport_size), gfx::Transform(), - cc::FilterOperations()); + root_pass = cc::AddRenderPass(&render_passes_in_draw_order_, + RenderPassId{1}, gfx::Rect(viewport_size), + gfx::Transform(), cc::FilterOperations()); cc::AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorRED); cc::AddRenderPassQuad(root_pass, child_pass, 0, gfx::Transform(), SkBlendMode::kSrcOver); @@ -4498,7 +4500,7 @@ TEST_F(GLRendererWithGpuFenceTest, GpuFenceIdIsUsedWithRootRenderPassOverlay) { gfx::Size viewport_size(100, 100); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = false; @@ -4513,7 +4515,7 @@ GpuFenceIdIsUsedOnlyForRootRenderPassOverlay) { gfx::Size viewport_size(100, 100); RenderPass* root_pass = cc::AddRenderPass( - &render_passes_in_draw_order_, 1, gfx::Rect(viewport_size), + &render_passes_in_draw_order_, RenderPassId{1}, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); root_pass->has_transparent_background = false;
diff --git a/components/viz/service/display/overlay_ca_unittest.cc b/components/viz/service/display/overlay_ca_unittest.cc index b9d2876..fadecbd 100644 --- a/components/viz/service/display/overlay_ca_unittest.cc +++ b/components/viz/service/display/overlay_ca_unittest.cc
@@ -105,7 +105,7 @@ }; std::unique_ptr<RenderPass> CreateRenderPass() { - int render_pass_id = 1; + RenderPassId render_pass_id{1}; std::unique_ptr<RenderPass> pass = RenderPass::Create(); pass->SetNew(render_pass_id, kRenderPassOutputRect, kRenderPassOutputRect, @@ -412,7 +412,7 @@ pass_list_.push_back(CreateRenderPass()); pass_ = pass_list_.back().get(); quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); - render_pass_id_ = 3; + render_pass_id_ = RenderPassId{3}; } void ProcessForOverlays() { @@ -424,7 +424,7 @@ RenderPassList pass_list_; RenderPass* pass_; RenderPassDrawQuad* quad_; - int render_pass_id_; + RenderPassId render_pass_id_; cc::FilterOperations filters_; cc::FilterOperations backdrop_filters_; OverlayProcessorInterface::FilterOperationsMap render_pass_filters_;
diff --git a/components/viz/service/display/overlay_dc_unittest.cc b/components/viz/service/display/overlay_dc_unittest.cc index 856f510..db8abab 100644 --- a/components/viz/service/display/overlay_dc_unittest.cc +++ b/components/viz/service/display/overlay_dc_unittest.cc
@@ -115,7 +115,7 @@ }; std::unique_ptr<RenderPass> CreateRenderPass() { - int render_pass_id = 1; + RenderPassId render_pass_id{1}; gfx::Rect output_rect(0, 0, 256, 256); std::unique_ptr<RenderPass> pass = RenderPass::Create();
diff --git a/components/viz/service/display/overlay_unittest.cc b/components/viz/service/display/overlay_unittest.cc index dee4f02..22d587fc 100644 --- a/components/viz/service/display/overlay_unittest.cc +++ b/components/viz/service/display/overlay_unittest.cc
@@ -230,7 +230,7 @@ }; std::unique_ptr<RenderPass> CreateRenderPass() { - int render_pass_id = 1; + RenderPassId render_pass_id{1}; gfx::Rect output_rect(0, 0, 256, 256); std::unique_ptr<RenderPass> pass = RenderPass::Create(); @@ -243,7 +243,7 @@ std::unique_ptr<RenderPass> CreateRenderPassWithTransform( const gfx::Transform& transform) { - int render_pass_id = 1; + RenderPassId render_pass_id{1}; gfx::Rect output_rect(0, 0, 256, 256); std::unique_ptr<RenderPass> pass = RenderPass::Create(); @@ -1305,7 +1305,7 @@ TEST_F(UnderlayTest, DisallowFilteredQuadOnTop) { std::unique_ptr<RenderPass> pass = CreateRenderPass(); - int render_pass_id = 3; + RenderPassId render_pass_id{3}; RenderPassDrawQuad* quad = pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); quad->SetNew(pass->shared_quad_state_list.back(), kOverlayRect, kOverlayRect,
diff --git a/components/viz/service/display/render_pass_id_remapper.cc b/components/viz/service/display/render_pass_id_remapper.cc index 456daf4..b87b3630 100644 --- a/components/viz/service/display/render_pass_id_remapper.cc +++ b/components/viz/service/display/render_pass_id_remapper.cc
@@ -32,7 +32,7 @@ } RenderPassId RenderPassIdRemapper::NextAvailableId() { - return next_render_pass_id_++; + return render_pass_id_generator_.GenerateNextId(); } void RenderPassIdRemapper::ClearUnusedMappings() { @@ -48,4 +48,13 @@ } } +RenderPassIdRemapper::RenderPassInfo::RenderPassInfo() = default; +RenderPassIdRemapper::RenderPassInfo::RenderPassInfo( + const RenderPassInfo& other) = default; +RenderPassIdRemapper::RenderPassInfo::~RenderPassInfo() = default; + +RenderPassIdRemapper::RenderPassInfo& +RenderPassIdRemapper::RenderPassInfo::operator=(const RenderPassInfo& other) = + default; + } // namespace viz
diff --git a/components/viz/service/display/render_pass_id_remapper.h b/components/viz/service/display/render_pass_id_remapper.h index 7611933..395898d 100644 --- a/components/viz/service/display/render_pass_id_remapper.h +++ b/components/viz/service/display/render_pass_id_remapper.h
@@ -31,15 +31,21 @@ private: struct RenderPassInfo { + RenderPassInfo(); + RenderPassInfo(const RenderPassInfo& other); + ~RenderPassInfo(); + + RenderPassInfo& operator=(const RenderPassInfo& other); + // This is the id the pass is mapped to. - int id; + RenderPassId id; // This is true if the pass was used in the last aggregated frame. bool in_use = true; }; base::flat_map<std::pair<SurfaceId, RenderPassId>, RenderPassInfo> render_pass_allocator_map_; - RenderPassId next_render_pass_id_ = 1; + RenderPassId::Generator render_pass_id_generator_; }; } // namespace viz
diff --git a/components/viz/service/display/renderer_perftest.cc b/components/viz/service/display/renderer_perftest.cc index 3964465e..37e6ded9 100644 --- a/components/viz/service/display/renderer_perftest.cc +++ b/components/viz/service/display/renderer_perftest.cc
@@ -128,7 +128,7 @@ }; std::unique_ptr<RenderPass> CreateTestRootRenderPass() { - const RenderPassId id = 1; + const RenderPassId id{1}; const gfx::Rect output_rect = kSurfaceRect; const gfx::Rect damage_rect = kSurfaceRect; const gfx::Transform transform_to_root_target;
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc index 0af57ae..7d5b17dcf 100644 --- a/components/viz/service/display/renderer_pixeltest.cc +++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -115,7 +115,7 @@ std::move(release_callback)); } -std::unique_ptr<RenderPass> CreateTestRootRenderPass(int id, +std::unique_ptr<RenderPass> CreateTestRootRenderPass(RenderPassId id, const gfx::Rect& rect) { std::unique_ptr<RenderPass> pass = RenderPass::Create(); const gfx::Rect output_rect = rect; @@ -126,7 +126,7 @@ } std::unique_ptr<RenderPass> CreateTestRenderPass( - int id, + RenderPassId id, const gfx::Rect& rect, const gfx::Transform& transform_to_root_target) { std::unique_ptr<RenderPass> pass = RenderPass::Create(); @@ -180,7 +180,7 @@ void CreateTestRenderPassDrawQuad(const SharedQuadState* shared_state, const gfx::Rect& rect, - int pass_id, + RenderPassId pass_id, RenderPass* render_pass) { auto* quad = render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); quad->SetNew(shared_state, rect, rect, pass_id, @@ -969,7 +969,7 @@ TYPED_TEST(RendererPixelTest, SimpleGreenRect) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -990,7 +990,7 @@ gfx::Rect rect(this->device_viewport_size_); gfx::Rect small_rect(100, 100); - int child_id = 2; + RenderPassId child_id{2}; std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass(child_id, small_rect, gfx::Transform()); @@ -1000,7 +1000,7 @@ auto* color_quad = child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); color_quad->SetNew(child_shared_state, rect, rect, SK_ColorGREEN, false); - int root_id = 1; + RenderPassId root_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRenderPass(root_id, rect, gfx::Transform()); @@ -1025,7 +1025,7 @@ TYPED_TEST(RendererPixelTest, PremultipliedTextureWithoutBackground) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -1054,7 +1054,7 @@ TYPED_TEST(RendererPixelTest, PremultipliedTextureWithBackground) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* texture_quad_state = CreateTestSharedQuadState( @@ -1086,7 +1086,7 @@ TYPED_TEST(RendererPixelTest, TextureDrawQuadVisibleRectInsetTopLeft) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* texture_quad_state = CreateTestSharedQuadState( @@ -1123,7 +1123,7 @@ TextureDrawQuadTranslatedAndVisibleRectInsetTopLeftAndCustomUV) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* texture_quad_state = CreateTestSharedQuadState( @@ -1164,7 +1164,7 @@ TYPED_TEST(RendererPixelTest, TextureDrawQuadVisibleRectInsetBottomRight) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* texture_quad_state = CreateTestSharedQuadState( @@ -1198,7 +1198,7 @@ TYPED_TEST(GPURendererPixelTest, SolidColorBlend) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); pass->has_transparent_background = false; @@ -1233,7 +1233,7 @@ TYPED_TEST(GLOnlyRendererPixelTest, SolidColorWithTemperature) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -1268,14 +1268,14 @@ root_rect.height()); // Child pass. - int child_pass_id = 2; + RenderPassId child_pass_id{2}; RenderPass* child_pass = cc::AddRenderPass( &render_passes_in_draw_order, child_pass_id, viewport_rect, gfx::Transform(), cc::FilterOperations()); cc::AddQuad(child_pass, child_rect, SK_ColorGREEN); // Root pass. - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = cc::AddRenderPass( &render_passes_in_draw_order, root_pass_id, viewport_rect, gfx::Transform(), cc::FilterOperations()); @@ -1304,7 +1304,7 @@ PremultipliedTextureWithBackgroundAndVertexOpacity) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* texture_quad_state = CreateTestSharedQuadState( @@ -1351,7 +1351,7 @@ quad_rect_ = gfx::Rect(0, 0, this->device_viewport_size_.width(), this->device_viewport_size_.height() / 2.0); - int id = 1; + RenderPassId id{1}; render_pass_ = CreateTestRootRenderPass(id, viewport_rect_); // Create the front quad rotated on the Z and Y axis. @@ -1588,8 +1588,8 @@ TYPED_TEST(IntersectingQuadPixelTest, RenderPassQuads) { this->SetupQuadStateAndRenderPass(); - int child_pass_id1 = 2; - int child_pass_id2 = 3; + RenderPassId child_pass_id1{2}; + RenderPassId child_pass_id2{3}; std::unique_ptr<RenderPass> child_pass1 = CreateTestRenderPass(child_pass_id1, this->quad_rect_, gfx::Transform()); SharedQuadState* child1_quad_state = CreateTestSharedQuadState( @@ -1687,7 +1687,7 @@ TYPED_TEST(GPURendererPixelTest, NonPremultipliedTextureWithoutBackground) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -1717,7 +1717,7 @@ TYPED_TEST(GPURendererPixelTest, NonPremultipliedTextureWithBackground) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* texture_quad_state = CreateTestSharedQuadState( @@ -1759,7 +1759,7 @@ RenderPassList* pass_list) { gfx::Rect rect(200, 200); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); // Scale the video up so that bilinear filtering kicks in to sample more @@ -1823,7 +1823,7 @@ void SimpleYUVRect() { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); // Set the output color space to match the input primaries and transfer. this->display_color_spaces_ = kRec601DisplayColorSpaces; @@ -1850,7 +1850,7 @@ gfx::Rect draw_rect(this->device_viewport_size_.width() * 1.5, this->device_viewport_size_.height() * 1.5); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, viewport); // Set the output color space to match the input primaries and transfer. this->display_color_spaces_ = kRec601DisplayColorSpaces; @@ -1894,7 +1894,7 @@ TYPED_TEST(VideoRendererPixelTest, OffsetYUVRect) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); // Set the output color space to match the input primaries and transfer. this->display_color_spaces_ = kRec601DisplayColorSpaces; @@ -1921,7 +1921,7 @@ TYPED_TEST(VideoRendererPixelTest, SimpleYUVRectBlack) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); // Set the output color space to match the input primaries and transfer. this->display_color_spaces_ = kRec601DisplayColorSpaces; @@ -1954,7 +1954,7 @@ TYPED_TEST(VideoRendererPixelTest, SimpleYUVJRect) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -1979,7 +1979,7 @@ TYPED_TEST(VideoRendererPixelTest, SimpleNV12JRect) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -2026,7 +2026,7 @@ TYPED_TEST(VideoRendererPixelTest, SimpleYUVJRectGrey) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -2051,7 +2051,7 @@ TYPED_TEST(VideoRendererPixelTest, SimpleYUVARect) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); // Set the output color space to match the input primaries and transfer. this->display_color_spaces_ = kRec601DisplayColorSpaces; @@ -2080,7 +2080,7 @@ TYPED_TEST(VideoRendererPixelTest, FullyTransparentYUVARect) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); // Set the output color space to match the input primaries and transfer. this->display_color_spaces_ = kRec601DisplayColorSpaces; @@ -2109,7 +2109,7 @@ TYPED_TEST(VideoRendererPixelTest, TwoColorY16Rect) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -2135,11 +2135,11 @@ TYPED_TEST(RendererPixelTest, DISABLED_FastPassColorFilterAlpha) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; float matrix[20]; @@ -2214,11 +2214,11 @@ TYPED_TEST(RendererPixelTest, DISABLED_FastPassSaturateFilter) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; cc::FilterOperations filters; @@ -2274,11 +2274,11 @@ TYPED_TEST(RendererPixelTest, FastPassFilterChain) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; cc::FilterOperations filters; @@ -2337,11 +2337,11 @@ TYPED_TEST(RendererPixelTest, DISABLED_FastPassColorFilterAlphaTranslation) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; float matrix[20]; @@ -2420,11 +2420,11 @@ TYPED_TEST(RendererPixelTest, EnlargedRenderPassTexture) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = @@ -2463,11 +2463,11 @@ TYPED_TEST(RendererPixelTest, EnlargedRenderPassTextureWithAntiAliasing) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = @@ -2519,13 +2519,13 @@ TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( gfx::Transform(), viewport_rect, root_pass.get(), gfx::RRectF()); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root); @@ -2616,13 +2616,13 @@ TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad2) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( gfx::Transform(), viewport_rect, root_pass.get(), gfx::RRectF()); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root); @@ -2713,13 +2713,13 @@ constexpr int kInset = 20; constexpr int kCornerRadius = 20; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( gfx::Transform(), viewport_rect, root_pass.get(), gfx::RRectF()); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root); @@ -2807,13 +2807,13 @@ SkVector::Make(35.0, 35.0), }; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); SharedQuadState* root_pass_shared_state = CreateTestSharedQuadState( gfx::Transform(), viewport_rect, root_pass.get(), gfx::RRectF()); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass(child_pass_id, viewport_rect, transform_to_root); @@ -2905,14 +2905,14 @@ void SetUpRenderPassList() { gfx::Rect device_viewport_rect(this->device_viewport_size_); - int root_id = 1; + RenderPassId root_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_id, device_viewport_rect); root_pass->has_transparent_background = false; gfx::Transform identity_quad_to_target_transform; - int filter_pass_id = 2; + RenderPassId filter_pass_id{2}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> filter_pass = CreateTestRenderPass( filter_pass_id, filter_pass_layer_rect_, transform_to_root); @@ -3117,14 +3117,14 @@ pass_list_.clear(); gfx::Rect device_viewport_rect(this->device_viewport_size_); - int root_id = 1; + RenderPassId root_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_id, device_viewport_rect); root_pass->has_transparent_background = false; gfx::Transform identity_quad_to_target_transform; - int filter_pass_id = 2; + RenderPassId filter_pass_id{2}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> filter_pass = CreateTestRenderPass( filter_pass_id, filter_pass_layer_rect_, transform_to_root); @@ -3314,7 +3314,7 @@ // Draw a blue quad that covers the entire device viewport. It should be // clipped to the bottom left and top right corners by the external stencil. gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* blue_shared_state = CreateTestSharedQuadState( gfx::Transform(), rect, pass.get(), gfx::RRectF()); @@ -3336,7 +3336,7 @@ // Draw a green quad that covers the entire device viewport. The stencil // buffer should be ignored. gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* green_shared_state = CreateTestSharedQuadState( gfx::Transform(), rect, pass.get(), gfx::RRectF()); @@ -3358,12 +3358,12 @@ gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); root_pass->has_transparent_background = false; - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = @@ -3396,7 +3396,7 @@ TYPED_TEST(GPURendererPixelTest, AntiAliasing) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); gfx::Transform red_quad_to_target_transform; @@ -3436,7 +3436,8 @@ TYPED_TEST(GPURendererPixelTest, AntiAliasingPerspective) { gfx::Rect rect(this->device_viewport_size_); - std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(1, rect); + std::unique_ptr<RenderPass> pass = + CreateTestRootRenderPass(RenderPassId{1}, rect); gfx::Rect red_rect(0, 0, 180, 500); gfx::Transform red_quad_to_target_transform( @@ -3474,7 +3475,7 @@ TYPED_TEST(GPURendererPixelTest, AxisAligned) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, rect, transform_to_root); @@ -3503,7 +3504,7 @@ TYPED_TEST(GPURendererPixelTest, SolidColorDrawQuadForceAntiAliasingOff) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, rect, transform_to_root); @@ -3541,12 +3542,12 @@ TYPED_TEST(GPURendererPixelTest, RenderPassDrawQuadForceAntiAliasingOff) { gfx::Rect rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> root_pass = CreateTestRenderPass(root_pass_id, rect, transform_to_root); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Transform child_pass_transform; std::unique_ptr<RenderPass> child_pass = CreateTestRenderPass(child_pass_id, rect, child_pass_transform); @@ -3624,7 +3625,7 @@ this->child_context_provider_.get()); ResourceId mapped_resource = resource_map[resource]; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, rect, transform_to_root); @@ -3669,7 +3670,7 @@ TYPED_TEST(GPURendererPixelTest, BlendingWithoutAntiAliasing) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, rect, transform_to_root); @@ -3698,12 +3699,12 @@ TYPED_TEST(GPURendererPixelTest, TrilinearFiltering) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); root_pass->has_transparent_background = false; - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Transform transform_to_root; gfx::Rect child_pass_rect( ScaleToCeiledSize(this->device_viewport_size_, 4.0f)); @@ -3756,7 +3757,7 @@ ResourceFormat texture_format = RGBA_8888; bool nearest_neighbor = false; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -3833,7 +3834,7 @@ ResourceFormat texture_format = RGBA_8888; bool nearest_neighbor = false; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -3893,7 +3894,7 @@ ResourceFormat texture_format = RGBA_8888; bool nearest_neighbor = false; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -3962,7 +3963,7 @@ bool needs_blending = true; bool nearest_neighbor = false; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -4014,7 +4015,7 @@ bool needs_blending = true; bool nearest_neighbor = true; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -4094,7 +4095,7 @@ this->child_context_provider_.get()); ResourceId mapped_resource = resource_map[resource]; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -4145,7 +4146,7 @@ this->child_context_provider_.get()); ResourceId mapped_resource = resource_map[resource]; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -4199,7 +4200,7 @@ this->child_context_provider_.get()); ResourceId mapped_resource = resource_map[resource]; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -4233,7 +4234,7 @@ bool needs_blending = true; bool nearest_neighbor = false; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -4386,11 +4387,11 @@ // This draws a blue rect above a yellow rect with an inverted output surface. gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = @@ -4431,11 +4432,11 @@ // This draws a blue rect above a yellow rect with an inverted output surface. gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = @@ -4474,11 +4475,11 @@ TYPED_TEST(GPURendererPixelTest, CheckReadbackSubset) { gfx::Rect viewport_rect(this->device_viewport_size_); - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); gfx::Transform transform_to_root; std::unique_ptr<RenderPass> child_pass = @@ -4528,7 +4529,7 @@ gfx::Rect rect(this->device_viewport_size_); bool needs_blending = false; - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); SharedQuadState* shared_state = CreateTestSharedQuadState( @@ -4646,7 +4647,7 @@ this->child_context_provider_.get()); ResourceId mapped_resource = resource_map[resource]; - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, viewport, transform_to_root); @@ -4682,7 +4683,7 @@ constexpr int kInset = 20; constexpr int kCornerRadius = 20; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); @@ -4731,7 +4732,7 @@ constexpr int kInset = 20; constexpr int kCornerRadius = 20; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); @@ -4803,11 +4804,11 @@ constexpr int kCornerRadius = 20; constexpr int kBlueCornerRadius = 10; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); - int child_pass_id = 2; + RenderPassId child_pass_id{2}; gfx::Rect pass_rect(this->device_viewport_size_); pass_rect.Inset(kInset, kInset); gfx::Rect child_pass_local_rect = gfx::Rect(pass_rect.size()); @@ -4864,7 +4865,7 @@ constexpr gfx::RoundedCornersF kCornerRadii(5, 15, 25, 35); constexpr int kInset = 20; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); @@ -4923,7 +4924,7 @@ constexpr gfx::RoundedCornersF kCornerRadiiLL(0, 0, 0, 35); constexpr int kInset = 20; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; std::unique_ptr<RenderPass> root_pass = CreateTestRootRenderPass(root_pass_id, viewport_rect); @@ -5020,7 +5021,7 @@ TYPED_TEST(RendererPixelTestWithOverdrawFeedback, TranslucentRectangles) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, rect, transform_to_root); @@ -5069,7 +5070,7 @@ TYPED_TEST(SkiaRendererPixelTestWithOverdrawFeedback, TranslucentRectangles) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; gfx::Transform transform_to_root; std::unique_ptr<RenderPass> pass = CreateTestRenderPass(id, rect, transform_to_root); @@ -5179,7 +5180,7 @@ static_cast<size_t>(255.f * color.z() + 0.5f)); } - int id = 1; + RenderPassId id{1}; std::unique_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); // Append a quad to execute the transform.
diff --git a/components/viz/service/display/skia_readback_pixeltest.cc b/components/viz/service/display/skia_readback_pixeltest.cc index 27aa9bd..c0cd5b4a 100644 --- a/components/viz/service/display/skia_readback_pixeltest.cc +++ b/components/viz/service/display/skia_readback_pixeltest.cc
@@ -139,8 +139,7 @@ const gfx::Rect output_rect(kSourceSize); std::unique_ptr<RenderPass> pass = RenderPass::Create(); - pass->SetNew(/*render_pass_id=*/1, output_rect, output_rect, - gfx::Transform()); + pass->SetNew(RenderPassId{1}, output_rect, output_rect, gfx::Transform()); SharedQuadState* sqs = CreateSharedQuadState(pass.get(), output_rect);
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc index a2452e8..33c7fcf 100644 --- a/components/viz/service/display/skia_renderer.cc +++ b/components/viz/service/display/skia_renderer.cc
@@ -2509,7 +2509,7 @@ switch (draw_mode_) { case DrawMode::DDL: { // Root framebuffer uses id 0 in SkiaOutputSurface. - RenderPassId render_pass_id = 0; + RenderPassId render_pass_id; const auto* const render_pass = current_frame()->current_render_pass; if (render_pass != current_frame()->root_render_pass) { render_pass_id = render_pass->id;
diff --git a/components/viz/service/display/software_renderer_unittest.cc b/components/viz/service/display/software_renderer_unittest.cc index e5a75b9..dd460707 100644 --- a/components/viz/service/display/software_renderer_unittest.cc +++ b/components/viz/service/display/software_renderer_unittest.cc
@@ -5,6 +5,9 @@ #include "components/viz/service/display/software_renderer.h" #include <stdint.h> +#include <memory> +#include <unordered_map> +#include <utility> #include "base/bind.h" #include "base/bind_helpers.h" @@ -142,7 +145,7 @@ InitializeRenderer(std::make_unique<SoftwareOutputDevice>()); - int root_render_pass_id = 1; + RenderPassId root_render_pass_id{1}; std::unique_ptr<RenderPass> root_render_pass = RenderPass::Create(); root_render_pass->SetNew(root_render_pass_id, outer_rect, outer_rect, gfx::Transform()); @@ -210,7 +213,7 @@ gfx::Rect root_rect = outer_rect; - int root_render_pass_id = 1; + RenderPassId root_render_pass_id{1}; std::unique_ptr<RenderPass> root_render_pass = RenderPass::Create(); root_render_pass->SetNew(root_render_pass_id, root_rect, root_rect, gfx::Transform()); @@ -271,7 +274,7 @@ ResourceId mapped_resource_cyan = resource_map[resource_cyan]; gfx::Rect root_rect(tile_size); - int root_render_pass_id = 1; + RenderPassId root_render_pass_id{1}; std::unique_ptr<RenderPass> root_render_pass = RenderPass::Create(); root_render_pass->SetNew(root_render_pass_id, root_rect, root_rect, gfx::Transform()); @@ -323,7 +326,7 @@ RenderPassList list; // Draw a fullscreen green quad in a first frame. - int root_clear_pass_id = 1; + RenderPassId root_clear_pass_id{1}; RenderPass* root_clear_pass = cc::AddRenderPass(&list, root_clear_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -346,7 +349,7 @@ // frame. gfx::Rect smaller_rect(20, 20, 60, 60); - int root_smaller_pass_id = 2; + RenderPassId root_smaller_pass_id{2}; RenderPass* root_smaller_pass = cc::AddRenderPass(&list, root_smaller_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -378,14 +381,14 @@ // Pass drawn as inner quad is magenta. gfx::Rect smaller_rect(20, 20, 60, 60); - int smaller_pass_id = 2; + RenderPassId smaller_pass_id{2}; RenderPass* smaller_pass = cc::AddRenderPass(&list, smaller_pass_id, smaller_rect, gfx::Transform(), cc::FilterOperations()); cc::AddQuad(smaller_pass, smaller_rect, SK_ColorMAGENTA); // Root pass is green. - int root_clear_pass_id = 1; + RenderPassId root_clear_pass_id{1}; RenderPass* root_clear_pass = AddRenderPass(&list, root_clear_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -475,7 +478,7 @@ // Draw one black frame to make sure output surface is reshaped before // tests. RenderPassList list; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = AddRenderPass(&list, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations()); @@ -491,7 +494,7 @@ } { RenderPassList list; - int root_pass_id = 1; + RenderPassId root_pass_id{1}; RenderPass* root_pass = AddRenderPass(&list, root_pass_id, gfx::Rect(viewport_size), gfx::Transform(), cc::FilterOperations());
diff --git a/components/viz/service/display/surface_aggregator.cc b/components/viz/service/display/surface_aggregator.cc index e33b0d30..502aad0 100644 --- a/components/viz/service/display/surface_aggregator.cc +++ b/components/viz/service/display/surface_aggregator.cc
@@ -1403,7 +1403,7 @@ gfx::Rect SurfaceAggregator::PrewalkSurface(Surface* surface, bool in_moved_pixel_surface, - int parent_pass_id, + RenderPassId parent_pass_id, bool will_draw, const gfx::Rect& damage_from_parent, PrewalkResult* result) { @@ -1528,8 +1528,8 @@ result->undrawn_surfaces.insert(surface_id); Surface* undrawn_surface = manager_->GetSurfaceForId(surface_id); if (undrawn_surface) - PrewalkSurface(undrawn_surface, false, 0, /*will_draw=*/false, - gfx::Rect(), result); + PrewalkSurface(undrawn_surface, false, RenderPassId(), + /*will_draw=*/false, gfx::Rect(), result); } } @@ -1682,7 +1682,7 @@ DCHECK(referenced_surfaces_.empty()); PrewalkResult prewalk_result; gfx::Rect surfaces_damage_rect = PrewalkSurface( - surface, /*in_moved_pixel_surface=*/false, /*parent_pass=*/0, + surface, /*in_moved_pixel_surface=*/false, /*parent_pass=*/RenderPassId(), /*will_draw=*/true, /*damage_from_parent=*/gfx::Rect(), &prewalk_result); root_damage_rect_ = surfaces_damage_rect; // |root_damage_rect_| is used to restrict aggregating quads only if they
diff --git a/components/viz/service/display/surface_aggregator.h b/components/viz/service/display/surface_aggregator.h index e4f2435..72bac63 100644 --- a/components/viz/service/display/surface_aggregator.h +++ b/components/viz/service/display/surface_aggregator.h
@@ -219,7 +219,7 @@ // and return the combined damage rect. gfx::Rect PrewalkSurface(Surface* surface, bool in_moved_pixel_surface, - int parent_pass, + RenderPassId parent_pass, bool will_draw, const gfx::Rect& damage_from_parent, PrewalkResult* result); @@ -326,9 +326,9 @@ // passes. int max_texture_size_ = 0; // The id for the final color conversion render pass. - RenderPassId color_conversion_render_pass_id_ = 0; + RenderPassId color_conversion_render_pass_id_; // The id for the optional render pass used to apply the display transform. - RenderPassId display_transform_render_pass_id_ = 0; + RenderPassId display_transform_render_pass_id_; base::flat_map<SurfaceId, int> surface_id_to_resource_child_id_;
diff --git a/components/viz/service/display/surface_aggregator_pixeltest.cc b/components/viz/service/display/surface_aggregator_pixeltest.cc index 3730a6a..d95a948 100644 --- a/components/viz/service/display/surface_aggregator_pixeltest.cc +++ b/components/viz/service/display/surface_aggregator_pixeltest.cc
@@ -96,7 +96,7 @@ // Draws a very simple frame with no surface references. TYPED_TEST(SurfaceAggregatorPixelTest, DrawSimpleFrame) { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; auto pass = RenderPass::Create(); pass->SetNew(id, rect, rect, gfx::Transform()); @@ -155,7 +155,7 @@ { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; auto pass = RenderPass::Create(); pass->SetNew(id, rect, rect, gfx::Transform()); @@ -182,7 +182,7 @@ { gfx::Rect rect(child_size); - int id = 1; + RenderPassId id{1}; auto pass = RenderPass::Create(); pass->SetNew(id, rect, rect, gfx::Transform()); @@ -252,7 +252,7 @@ { gfx::Rect rect(this->device_viewport_size_); - int id = 1; + RenderPassId id{1}; auto pass = RenderPass::Create(); pass->SetNew(id, rect, rect, gfx::Transform()); @@ -285,7 +285,7 @@ { gfx::Rect rect(child_size); - int id = 1; + RenderPassId id{1}; auto pass = RenderPass::Create(); pass->SetNew(id, rect, rect, gfx::Transform()); @@ -313,7 +313,7 @@ { gfx::Rect rect(child_size); - int id = 1; + RenderPassId id{1}; auto pass = RenderPass::Create(); pass->SetNew(id, rect, rect, gfx::Transform());
diff --git a/components/viz/service/display/surface_aggregator_unittest.cc b/components/viz/service/display/surface_aggregator_unittest.cc index 4c60ee6..0ddafd3 100644 --- a/components/viz/service/display/surface_aggregator_unittest.cc +++ b/components/viz/service/display/surface_aggregator_unittest.cc
@@ -196,7 +196,7 @@ return quad; } - static Quad RenderPassQuad(int id, + static Quad RenderPassQuad(RenderPassId id, const gfx::Transform& transform, bool can_use_backdrop_filter_cache) { Quad quad; @@ -237,9 +237,11 @@ }; struct Pass { - Pass(const std::vector<Quad>& quads, int id, const gfx::Size& size) + Pass(const std::vector<Quad>& quads, RenderPassId id, const gfx::Size& size) : Pass(quads, id, gfx::Rect(size)) {} - Pass(const std::vector<Quad>& quads, int id, const gfx::Rect& output_rect) + Pass(const std::vector<Quad>& quads, + RenderPassId id, + const gfx::Rect& output_rect) : quads(quads), id(id), output_rect(output_rect), @@ -252,7 +254,7 @@ : quads(quads), output_rect(size), damage_rect(damage_rect) {} const std::vector<Quad>& quads; - int id = 1; + RenderPassId id{1}; gfx::Rect output_rect; gfx::Rect damage_rect; bool has_transparent_background = true; @@ -732,8 +734,8 @@ Quad::SolidColorQuad(SK_ColorLTGRAY, gfx::Rect(5, 5))}, {Quad::SolidColorQuad(SK_ColorGRAY, gfx::Rect(5, 5)), Quad::SolidColorQuad(SK_ColorDKGRAY, gfx::Rect(5, 5))}}; - std::vector<Pass> passes = {Pass(quads[0], 1, SurfaceSize()), - Pass(quads[1], 2, SurfaceSize())}; + std::vector<Pass> passes = {Pass(quads[0], RenderPassId{1}, SurfaceSize()), + Pass(quads[1], RenderPassId{2}, SurfaceSize())}; constexpr float device_scale_factor = 1.0f; @@ -753,8 +755,8 @@ Quad::SolidColorQuad(SK_ColorLTGRAY, gfx::Rect(5, 5))}, {Quad::SolidColorQuad(SK_ColorGRAY, gfx::Rect(5, 5)), Quad::SolidColorQuad(SK_ColorDKGRAY, gfx::Rect(5, 5))}}; - std::vector<Pass> passes = {Pass(quads[0], 2, SurfaceSize()), - Pass(quads[1], 1, SurfaceSize())}; + std::vector<Pass> passes = {Pass(quads[0], RenderPassId{2}, SurfaceSize()), + Pass(quads[1], RenderPassId{1}, SurfaceSize())}; constexpr float device_scale_factor = 1.0f; SubmitCompositorFrame(root_sink_.get(), passes, root_local_surface_id_, @@ -772,8 +774,8 @@ EXPECT_EQ(id0, aggregated_frame.render_pass_list[0]->id); EXPECT_EQ(id1, aggregated_frame.render_pass_list[1]->id); - std::vector<Pass> passes2 = {Pass(quads[0], 3, SurfaceSize()), - Pass(quads[1], 1, SurfaceSize())}; + std::vector<Pass> passes2 = {Pass(quads[0], RenderPassId{3}, SurfaceSize()), + Pass(quads[1], RenderPassId{1}, SurfaceSize())}; SubmitCompositorFrame(root_sink_.get(), passes2, root_local_surface_id_, device_scale_factor); @@ -1089,7 +1091,8 @@ { auto pass = RenderPass::Create(); - pass->SetNew(1, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform()); + pass->SetNew(RenderPassId{1}, gfx::Rect(0, 0, 20, 20), gfx::Rect(), + gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); auto* solid_color_quad = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); @@ -1159,7 +1162,8 @@ { auto pass = RenderPass::Create(); - pass->SetNew(1, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform()); + pass->SetNew(RenderPassId{1}, gfx::Rect(0, 0, 20, 20), gfx::Rect(), + gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); auto* solid_color_quad = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); @@ -1230,7 +1234,8 @@ { auto pass = RenderPass::Create(); - pass->SetNew(1, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform()); + pass->SetNew(RenderPassId{1}, gfx::Rect(0, 0, 20, 20), gfx::Rect(), + gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); auto* solid_color_quad = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); @@ -1296,7 +1301,7 @@ const gfx::Rect display_rect(0, 0, 100, 100); { auto pass = RenderPass::Create(); - pass->SetNew(1, display_rect, display_rect, gfx::Transform()); + pass->SetNew(RenderPassId{1}, display_rect, display_rect, gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->opacity = 1.f; @@ -1327,7 +1332,8 @@ { auto pass = RenderPass::Create(); - pass->SetNew(1, mirror_display_rect, mirror_display_rect, gfx::Transform()); + pass->SetNew(RenderPassId{1}, mirror_display_rect, mirror_display_rect, + gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->quad_to_target_transform = scale_transform; sqs->opacity = 1.f; @@ -1378,7 +1384,7 @@ const gfx::Rect display_rect(0, 0, 100, 100); { auto pass = RenderPass::Create(); - pass->SetNew(1, display_rect, display_rect, gfx::Transform()); + pass->SetNew(RenderPassId{1}, display_rect, display_rect, gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->opacity = 1.f; @@ -1409,7 +1415,8 @@ { auto pass = RenderPass::Create(); - pass->SetNew(1, mirror_display_rect, mirror_display_rect, gfx::Transform()); + pass->SetNew(RenderPassId{1}, mirror_display_rect, mirror_display_rect, + gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->quad_to_target_transform = translate_transform; sqs->opacity = 1.f; @@ -1642,8 +1649,9 @@ Quad::SolidColorQuad(SK_ColorBLACK, gfx::Rect(5, 5))}; std::vector<Quad> root_quads2 = { Quad::SolidColorQuad(SK_ColorRED, gfx::Rect(5, 5))}; - std::vector<Pass> root_passes = {Pass(root_quads, 1, SurfaceSize()), - Pass(root_quads2, 2, SurfaceSize())}; + std::vector<Pass> root_passes = { + Pass(root_quads, RenderPassId{1}, SurfaceSize()), + Pass(root_quads2, RenderPassId{2}, SurfaceSize())}; { CompositorFrame frame = MakeEmptyCompositorFrame(); AddPasses(&frame.render_pass_list, root_passes, @@ -1807,7 +1815,7 @@ SurfaceId embedded_surface_id(child_sink_->frame_sink_id(), embedded_local_surface_id); - int pass_ids[] = {1, 2, 3}; + RenderPassId pass_ids[] = {RenderPassId{1}, RenderPassId{2}, RenderPassId{3}}; std::vector<Quad> embedded_quads[3] = { {Quad::SolidColorQuad(1, gfx::Rect(5, 5)), @@ -2113,7 +2121,7 @@ SurfaceId child_surface_id(child_sink_->frame_sink_id(), child_local_surface_id); - RenderPassId child_pass_id[] = {1u, 2u}; + RenderPassId child_pass_id[] = {RenderPassId{1u}, RenderPassId{2u}}; std::vector<Quad> child_quad[2] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, {Quad::RenderPassQuad(child_pass_id[0], gfx::Transform(), false)}}; @@ -2126,7 +2134,7 @@ child_local_surface_id, device_scale_factor); // Pass IDs from the parent surface may collide with ones from the child. - RenderPassId parent_pass_id[] = {3u, 2u}; + RenderPassId parent_pass_id[] = {RenderPassId{3u}, RenderPassId{2u}}; std::vector<Quad> parent_quad[2] = { {Quad::SurfaceQuad(SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), @@ -2243,7 +2251,7 @@ nullptr, &manager_, kArbitraryFrameSinkId2, kChildIsRoot); auto child_two_support = std::make_unique<CompositorFrameSinkSupport>( nullptr, &manager_, kArbitraryFrameSinkId3, kChildIsRoot); - int pass_id = 1; + RenderPassId pass_id{1}; grandchild_allocator.GenerateId(); LocalSurfaceId grandchild_local_surface_id = grandchild_allocator.GetCurrentLocalSurfaceIdAllocation() @@ -2391,7 +2399,7 @@ nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot); auto child_three_support = std::make_unique<CompositorFrameSinkSupport>( nullptr, &manager_, kArbitraryFrameSinkId3, kChildIsRoot); - int pass_id = 1; + RenderPassId pass_id{1}; gfx::Rect output_rect(SurfaceSize()); gfx::Rect damage_rect(SurfaceSize()); @@ -2578,7 +2586,7 @@ SurfaceId child_surface_id(child_sink_->frame_sink_id(), child_local_surface_id); { - int child_pass_id[] = {1, 2}; + RenderPassId child_pass_id[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> child_quads[2] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, {Quad::RenderPassQuad(child_pass_id[0], gfx::Transform(), false)}, @@ -2808,7 +2816,8 @@ Quad::SolidColorQuad(SK_ColorWHITE, gfx::Rect(5, 0, 7, 15)); Quad bottom_gutter_quad = Quad::SolidColorQuad(SK_ColorWHITE, gfx::Rect(0, 5, 5, 10)); - Quad render_pass_quad = Quad::RenderPassQuad(2, gfx::Transform(), false); + Quad render_pass_quad = + Quad::RenderPassQuad(RenderPassId{2}, gfx::Transform(), false); Quad fallback_quad = Quad::SolidColorQuad(SK_ColorRED, gfx::Rect(fallback_size)); @@ -2872,7 +2881,7 @@ surface_quad_rect, testing::A<base::TimeTicks>())) .Times(1); - render_pass_quad.render_pass_id = 3; + render_pass_quad.render_pass_id = RenderPassId{3}; std::vector<Quad> expected_quads2{ right_gutter_quad, bottom_gutter_quad, AllowMerge() ? fallback_quad : render_pass_quad}; @@ -2902,7 +2911,7 @@ // SurfaceAggregator to embed the primary Surface, and drop the fallback // Surface. Quad primary_quad = Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5)); - render_pass_quad.render_pass_id = 4; + render_pass_quad.render_pass_id = RenderPassId{4}; std::vector<Quad> expected_quads3{AllowMerge() ? primary_quad : render_pass_quad}; std::vector<Pass> expected_passes3; @@ -2944,7 +2953,8 @@ nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot); std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -2967,7 +2977,7 @@ SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; std::vector<Pass> parent_surface_passes = { - Pass(parent_surface_quads, 1, SurfaceSize())}; + Pass(parent_surface_quads, RenderPassId{1}, SurfaceSize())}; // Parent surface is only used to test if the transform is applied correctly // to the child surface's damage. @@ -2988,11 +2998,11 @@ SurfaceRange(base::nullopt, parent_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; std::vector<Quad> root_render_pass_quads = { - Quad::RenderPassQuad(1, gfx::Transform(), false)}; + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), false)}; std::vector<Pass> root_passes = { - Pass(root_surface_quads, 1, SurfaceSize()), - Pass(root_render_pass_quads, 2, SurfaceSize())}; + Pass(root_surface_quads, RenderPassId{1}, SurfaceSize()), + Pass(root_render_pass_quads, RenderPassId{2}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -3139,7 +3149,8 @@ nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot); std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, gfx::Size(100, 100))}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -3162,7 +3173,7 @@ SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; std::vector<Pass> parent_surface_passes = { - Pass(parent_surface_quads, 1, SurfaceSize())}; + Pass(parent_surface_quads, RenderPassId{1}, SurfaceSize())}; // Parent surface is only used to test if the transform is applied correctly // to the child surface's damage. @@ -3184,11 +3195,11 @@ SK_ColorWHITE, gfx::Rect(50, 50), /*stretch_content_to_fill_bounds=*/true, AllowMerge())}; std::vector<Quad> root_render_pass_quads = { - Quad::RenderPassQuad(1, gfx::Transform(), false)}; + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), false)}; std::vector<Pass> root_passes = { - Pass(root_surface_quads, 1, SurfaceSize()), - Pass(root_render_pass_quads, 2, SurfaceSize())}; + Pass(root_surface_quads, RenderPassId{1}, SurfaceSize()), + Pass(root_render_pass_quads, RenderPassId{2}, SurfaceSize())}; SubmitCompositorFrame(root_sink_.get(), root_passes, root_local_surface_id_, 1.0f); @@ -3251,7 +3262,8 @@ nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot); std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, gfx::Size(100, 100))}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -3274,7 +3286,7 @@ SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; std::vector<Pass> parent_surface_passes = { - Pass(parent_surface_quads, 1, SurfaceSize())}; + Pass(parent_surface_quads, RenderPassId{1}, SurfaceSize())}; // Parent surface is only used to test if the transform is applied correctly // to the child surface's damage. @@ -3296,11 +3308,11 @@ SK_ColorWHITE, gfx::Rect(200, 200), /*stretch_content_to_fill_bounds=*/true, AllowMerge())}; std::vector<Quad> root_render_pass_quads = { - Quad::RenderPassQuad(1, gfx::Transform(), false)}; + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), false)}; std::vector<Pass> root_passes = { - Pass(root_surface_quads, 1, SurfaceSize()), - Pass(root_render_pass_quads, 2, SurfaceSize())}; + Pass(root_surface_quads, RenderPassId{1}, SurfaceSize()), + Pass(root_render_pass_quads, RenderPassId{2}, SurfaceSize())}; SubmitCompositorFrame(root_sink_.get(), root_passes, root_local_surface_id_, 1.0f); @@ -3356,7 +3368,7 @@ Quad::SolidColorQuad(1, gfx::Rect(5, 5))}; std::vector<Pass> root_passes = { - Pass(root_render_pass_quads, 2, SurfaceSize())}; + Pass(root_render_pass_quads, RenderPassId{2}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -3390,7 +3402,7 @@ Quad::SolidColorQuad(1, gfx::Rect(5, 5))}; std::vector<Pass> root_passes = { - Pass(root_render_pass_quads, 2, SurfaceSize())}; + Pass(root_render_pass_quads, RenderPassId{2}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -3669,7 +3681,8 @@ std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, child_surface_size)}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, child_surface_size)}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -3695,15 +3708,16 @@ // We will verify the correctness of the |can_use_backdrop_filter_cache| // flag // on this quad. - Quad::RenderPassQuad(1, gfx::Transform(), + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), /*can_use_backdrop_filter_cache=*/true), Quad::SurfaceQuad(SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(90, 90), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; - std::vector<Pass> root_passes{Pass(render_pass_1_quads, 1, gfx::Size(80, 80)), - Pass(render_pass_2_quads, 2, SurfaceSize())}; + std::vector<Pass> root_passes{ + Pass(render_pass_1_quads, RenderPassId{1}, gfx::Size(80, 80)), + Pass(render_pass_2_quads, RenderPassId{2}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -3879,12 +3893,13 @@ // the subject of this test. std::vector<Quad> child_rp1_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Quad> child_rp2_quads = {Quad::RenderPassQuad( - 1, gfx::Transform(), /*can_use_backdrop_filter_cache=*/true)}; + std::vector<Quad> child_rp2_quads = { + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), + /*can_use_backdrop_filter_cache=*/true)}; std::vector<Pass> child_passes = { - Pass(child_rp1_quads, 1, child_surface_size), - Pass(child_rp2_quads, 2, child_surface_size)}; + Pass(child_rp1_quads, RenderPassId{1}, child_surface_size), + Pass(child_rp2_quads, RenderPassId{2}, child_surface_size)}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -3907,7 +3922,7 @@ Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> second_surface_passes = { - Pass(second_surface_quads, 1, second_surface_size)}; + Pass(second_surface_quads, RenderPassId{1}, second_surface_size)}; CompositorFrame second_surface_frame = MakeEmptyCompositorFrame(); AddPasses(&second_surface_frame.render_pass_list, second_surface_passes, @@ -3936,7 +3951,8 @@ /*stretch_content_to_fill_bounds=*/false, /*allow_merge=*/false)}; - std::vector<Pass> root_passes{Pass(render_pass_quads, 1, SurfaceSize())}; + std::vector<Pass> root_passes{ + Pass(render_pass_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -4137,7 +4153,8 @@ nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot); std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, gfx::Size(80, 80))}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, gfx::Size(80, 80))}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -4160,7 +4177,7 @@ SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; std::vector<Pass> parent_surface_passes = { - Pass(parent_surface_quads, 1, gfx::Size(90, 90))}; + Pass(parent_surface_quads, RenderPassId{1}, gfx::Size(90, 90))}; // Parent surface is only used to test if the transform is applied correctly // to the child surface's damage. @@ -4186,15 +4203,16 @@ // we are testing here. The |can_use_backdrop_filter_cache| // should be updated correctly based on the damage of the // SurfaceDrawQuad under it. - Quad::RenderPassQuad(1, gfx::Transform(), + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), /*can_use_backdrop_filter_cache=*/true), Quad::SurfaceQuad(SurfaceRange(base::nullopt, parent_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; - std::vector<Pass> root_passes{Pass(render_pass_1_quads, 1, gfx::Size(50, 50)), - Pass(render_pass_2_quads, 2, SurfaceSize())}; + std::vector<Pass> root_passes{ + Pass(render_pass_1_quads, RenderPassId{1}, gfx::Size(50, 50)), + Pass(render_pass_2_quads, RenderPassId{2}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -4375,15 +4393,16 @@ SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}, - {Quad::RenderPassQuad(1, scale, false)}, - {Quad::RenderPassQuad(4, translation2, true), - Quad::RenderPassQuad(2, translation, false), - Quad::RenderPassQuad(1, gfx::Transform(), false)}, + {Quad::RenderPassQuad(RenderPassId{1}, scale, false)}, + {Quad::RenderPassQuad(RenderPassId{4}, translation2, true), + Quad::RenderPassQuad(RenderPassId{2}, translation, false), + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), false)}, {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}}; - std::vector<Pass> root_passes = {Pass(root_quads[3], 4, gfx::Size(5, 5)), - Pass(root_quads[0], 1, SurfaceSize()), - Pass(root_quads[1], 2, SurfaceSize()), - Pass(root_quads[2], 3, SurfaceSize())}; + std::vector<Pass> root_passes = { + Pass(root_quads[3], RenderPassId{4}, gfx::Size(5, 5)), + Pass(root_quads[0], RenderPassId{1}, SurfaceSize()), + Pass(root_quads[1], RenderPassId{2}, SurfaceSize()), + Pass(root_quads[2], RenderPassId{3}, SurfaceSize())}; SurfaceId root_surface_id(root_sink_->frame_sink_id(), root_local_surface_id_); @@ -4545,14 +4564,16 @@ // - the third pass contains a render pass quad referencing the second pass. std::vector<Quad> child_rp1_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Quad> child_rp2_quads = {Quad::RenderPassQuad( - 1, gfx::Transform(), /*can_use_backdrop_filter_cache=*/false)}; - std::vector<Quad> child_rp3_quads = {Quad::RenderPassQuad( - 2, gfx::Transform(), /*can_use_backdrop_filter_cache=*/false)}; + std::vector<Quad> child_rp2_quads = { + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), + /*can_use_backdrop_filter_cache=*/false)}; + std::vector<Quad> child_rp3_quads = { + Quad::RenderPassQuad(RenderPassId{2}, gfx::Transform(), + /*can_use_backdrop_filter_cache=*/false)}; std::vector<Pass> child_passes = { - Pass(child_rp1_quads, 1, child_surface_size), - Pass(child_rp2_quads, 2, child_surface_size), - Pass(child_rp3_quads, 3, child_surface_size)}; + Pass(child_rp1_quads, RenderPassId{1}, child_surface_size), + Pass(child_rp2_quads, RenderPassId{2}, child_surface_size), + Pass(child_rp3_quads, RenderPassId{3}, child_surface_size)}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -4584,7 +4605,8 @@ /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; - std::vector<Pass> root_passes{Pass(render_pass_quads, 1, SurfaceSize())}; + std::vector<Pass> root_passes{ + Pass(render_pass_quads, RenderPassId{1}, SurfaceSize())}; root_passes[0].damage_rect = gfx::Rect(0, 0, 10, 20); CompositorFrame root_frame = MakeEmptyCompositorFrame(); @@ -4682,14 +4704,16 @@ // - the third pass contains a render pass quad referencing the second pass. std::vector<Quad> child_rp1_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Quad> child_rp2_quads = {Quad::RenderPassQuad( - 1, gfx::Transform(), /*can_use_backdrop_filter_cache=*/false)}; - std::vector<Quad> child_rp3_quads = {Quad::RenderPassQuad( - 2, gfx::Transform(), /*can_use_backdrop_filter_cache=*/false)}; + std::vector<Quad> child_rp2_quads = { + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), + /*can_use_backdrop_filter_cache=*/false)}; + std::vector<Quad> child_rp3_quads = { + Quad::RenderPassQuad(RenderPassId{2}, gfx::Transform(), + /*can_use_backdrop_filter_cache=*/false)}; std::vector<Pass> child_passes = { - Pass(child_rp1_quads, 1, child_surface_size), - Pass(child_rp2_quads, 2, child_surface_size), - Pass(child_rp3_quads, 3, child_surface_size)}; + Pass(child_rp1_quads, RenderPassId{1}, child_surface_size), + Pass(child_rp2_quads, RenderPassId{2}, child_surface_size), + Pass(child_rp3_quads, RenderPassId{3}, child_surface_size)}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -4720,7 +4744,8 @@ SK_ColorWHITE, gfx::Rect(90, 90), /*stretch_content_to_fill_bounds=*/true, AllowMerge())}; - std::vector<Pass> root_passes{Pass(render_pass_quads, 1, SurfaceSize())}; + std::vector<Pass> root_passes{ + Pass(render_pass_quads, RenderPassId{1}, SurfaceSize())}; root_passes[0].damage_rect = gfx::Rect(0, 0, 10, 20); CompositorFrame root_frame = MakeEmptyCompositorFrame(); @@ -4827,7 +4852,8 @@ // the other other with a visible rect of 10,10 2x2 (relative to root target // space), and one with a non-invertible transform. { - int child_pass_ids[] = {1, 2, 3}; + RenderPassId child_pass_ids[] = {RenderPassId{1}, RenderPassId{2}, + RenderPassId{3}}; std::vector<Quad> child_quads1 = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Quad> child_quads2 = { @@ -4942,7 +4968,7 @@ // New child frame has same content and no damage, but has a // CopyOutputRequest. { - int child_pass_ids[] = {1, 2}; + RenderPassId child_pass_ids[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> child_quads1 = {Quad::SolidColorQuad(1, gfx::Rect(5, 5))}; std::vector<Quad> child_quads2 = { Quad::RenderPassQuad(child_pass_ids[0], gfx::Transform(), false)}; @@ -5007,7 +5033,8 @@ // Root surface has smaller damage rect, but filter on render pass means all // of it and its descendant passes should be aggregated. { - int root_pass_ids[] = {1, 2, 3}; + RenderPassId root_pass_ids[] = {RenderPassId{1}, RenderPassId{2}, + RenderPassId{3}}; std::vector<Quad> root_quads1 = {Quad::SurfaceQuad( SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; @@ -5057,7 +5084,7 @@ // Root surface has smaller damage rect. Opacity filter on render pass // means Surface quad under it should be aggregated. { - int root_pass_ids[] = {1, 2}; + RenderPassId root_pass_ids[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> root_quads1 = { Quad::SolidColorQuad(1, gfx::Rect(5, 5)), }; @@ -5109,7 +5136,7 @@ // the damage of the contents will overlap the render pass. Since one of the // render passes has a pixel-moving backdrop filter no quads are ignored. { - int child_pass_ids[] = {1, 2}; + RenderPassId child_pass_ids[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> child_quads1 = {Quad::SolidColorQuad(1, gfx::Rect(5, 5))}; std::vector<Quad> child_quads2 = { Quad::RenderPassQuad(child_pass_ids[0], gfx::Transform(), false)}; @@ -5135,7 +5162,7 @@ child_sink_.get(), child_local_surface_id, &child_pass_list, std::move(child_referenced_surfaces), device_scale_factor); - int root_pass_ids[] = {1, 2}; + RenderPassId root_pass_ids[] = {RenderPassId{1}, RenderPassId{2}}; const gfx::Size pass_with_filter_size(5, 5); std::vector<Quad> root_quads1 = { Quad::SolidColorQuad(1, gfx::Rect(pass_with_filter_size)), @@ -5191,7 +5218,7 @@ // rect, the damage won't be expanded to cover the render pass. Since one of // the render passes has a pixel-moving backdrop filter no quads are ignored. { - int child_pass_ids[] = {1, 2}; + RenderPassId child_pass_ids[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> child_quads1 = {Quad::SolidColorQuad(1, gfx::Rect(5, 5))}; std::vector<Quad> child_quads2 = { Quad::RenderPassQuad(child_pass_ids[0], gfx::Transform(), false)}; @@ -5217,7 +5244,7 @@ child_sink_.get(), child_local_surface_id, &child_pass_list, std::move(child_referenced_surfaces), device_scale_factor); - int root_pass_ids[] = {1, 2}; + RenderPassId root_pass_ids[] = {RenderPassId{1}, RenderPassId{2}}; const gfx::Size pass_with_filter_size(5, 5); std::vector<Quad> root_quads1 = { Quad::SolidColorQuad(1, gfx::Rect(pass_with_filter_size)), @@ -5280,7 +5307,7 @@ // The child surface has one quad. { - int child_pass_id = 1; + RenderPassId child_pass_id{1}; std::vector<Quad> child_quads1 = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> child_passes = { @@ -5429,7 +5456,8 @@ SurfaceId surface_id) { CompositorFrame frame = MakeEmptyCompositorFrame(); auto pass = RenderPass::Create(); - pass->SetNew(1, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform()); + pass->SetNew(RenderPassId{1}, gfx::Rect(0, 0, 20, 20), gfx::Rect(), + gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->opacity = 1.f; if (child_id.is_valid()) { @@ -5684,7 +5712,8 @@ { auto pass = RenderPass::Create(); - pass->SetNew(1, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform()); + pass->SetNew(RenderPassId{1}, gfx::Rect(0, 0, 20, 20), gfx::Rect(), + gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->opacity = 1.f; auto* surface_quad = pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); @@ -5757,8 +5786,8 @@ gfx::ContentColorUsage::kHDR, true /* needs_alpha */, gfx::ColorSpace::CreateSCRGBLinear(), gfx::BufferFormat::RGBA_F16); - std::vector<Pass> passes = {Pass(quads[0], 2, SurfaceSize()), - Pass(quads[1], 1, SurfaceSize())}; + std::vector<Pass> passes = {Pass(quads[0], RenderPassId{2}, SurfaceSize()), + Pass(quads[1], RenderPassId{1}, SurfaceSize())}; passes[1].has_transparent_background = true; passes[1].damage_rect = partial_damage_rect; passes[0].damage_rect = child_pass_damage_rect; @@ -5886,7 +5915,7 @@ std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> child_passes = { - Pass(child_quads, 1, gfx::Size(100, 100))}; + Pass(child_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); // Set the child's color space @@ -5940,7 +5969,7 @@ std::vector<Quad> child_surface_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> child_surface_passes = { - Pass(child_surface_quads, 1, SurfaceSize())}; + Pass(child_surface_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame child_surface_frame = MakeEmptyCompositorFrame(); AddPasses(&child_surface_frame.render_pass_list, child_surface_passes, @@ -5958,7 +5987,8 @@ std::vector<Quad> root_surface_quads = {Quad::SurfaceQuad( SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> root_passes = {Pass(root_surface_quads, 1, SurfaceSize())}; + std::vector<Pass> root_passes = { + Pass(root_surface_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -6020,7 +6050,7 @@ std::vector<Quad> child_surface_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> child_surface_passes = { - Pass(child_surface_quads, 1, SurfaceSize())}; + Pass(child_surface_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame child_surface_frame = MakeEmptyCompositorFrame(); AddPasses(&child_surface_frame.render_pass_list, child_surface_passes, @@ -6038,7 +6068,8 @@ std::vector<Quad> root_surface_quads = {Quad::SurfaceQuad( SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> root_passes = {Pass(root_surface_quads, 1, SurfaceSize())}; + std::vector<Pass> root_passes = { + Pass(root_surface_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -6064,7 +6095,7 @@ std::vector<Quad> grand_child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> grand_child_passes = { - Pass(grand_child_quads, 1, SurfaceSize())}; + Pass(grand_child_quads, RenderPassId{1}, SurfaceSize())}; ParentLocalSurfaceIdAllocator grandchild_allocator; grandchild_allocator.GenerateId(); LocalSurfaceId grand_child_local_surface_id = @@ -6086,7 +6117,7 @@ SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; std::vector<Pass> new_child_surface_passes = { - Pass(new_child_surface_quads, 1, SurfaceSize())}; + Pass(new_child_surface_quads, RenderPassId{1}, SurfaceSize())}; child_surface_frame = MakeEmptyCompositorFrame(); AddPasses(&child_surface_frame.render_pass_list, new_child_surface_passes, &child_surface_frame.metadata.referenced_surfaces); @@ -6141,7 +6172,8 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, HasDamageFromRenderPassQuads) { std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -6160,11 +6192,11 @@ SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; std::vector<Quad> root_render_pass_quads = { - Quad::RenderPassQuad(1, gfx::Transform(), false)}; + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), false)}; std::vector<Pass> root_passes = { - Pass(root_surface_quads, 1, SurfaceSize()), - Pass(root_render_pass_quads, 2, SurfaceSize())}; + Pass(root_surface_quads, RenderPassId{1}, SurfaceSize()), + Pass(root_render_pass_quads, RenderPassId{2}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -6212,7 +6244,7 @@ // Tests that the first frame damage_rect of a cached render pass should be // fully damaged. TEST_F(SurfaceAggregatorValidSurfaceTest, DamageRectOfCachedRenderPass) { - int pass_id[] = {1, 2}; + RenderPassId pass_id[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> root_quads[2] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, {Quad::RenderPassQuad(pass_id[0], gfx::Transform(), false)}, @@ -6301,7 +6333,7 @@ // surface should be fully damaged. TEST_F(SurfaceAggregatorValidSurfaceTest, DamageRectOfCachedRenderPassInChildSurface) { - int pass_id[] = {1, 2}; + RenderPassId pass_id[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> child_quads[2] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, {Quad::RenderPassQuad(pass_id[0], gfx::Transform(), false)}, @@ -6327,7 +6359,8 @@ SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> root_passes = {Pass(root_surface_quads, 1, SurfaceSize())}; + std::vector<Pass> root_passes = { + Pass(root_surface_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -6411,7 +6444,7 @@ std::vector<Quad> child_surface_quads = { Quad::SolidColorQuad(SK_ColorRED, gfx::Rect(SurfaceSize()))}; std::vector<Pass> child_surface_passes = { - Pass(child_surface_quads, 1, SurfaceSize())}; + Pass(child_surface_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame child_surface_frame = MakeEmptyCompositorFrame(); AddPasses(&child_surface_frame.render_pass_list, child_surface_passes, @@ -6430,7 +6463,8 @@ std::vector<Quad> root_surface_quads = {Quad::SurfaceQuad( SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(SurfaceSize()), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> root_passes = {Pass(root_surface_quads, 1, SurfaceSize())}; + std::vector<Pass> root_passes = { + Pass(root_surface_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -6712,7 +6746,7 @@ // space). constexpr float device_scale_factor = 1.0f; { - int pass_id[] = {1, 2}; + RenderPassId pass_id[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> child_quads[2] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, {Quad::RenderPassQuad(pass_id[0], gfx::Transform(), false)}, @@ -6742,7 +6776,7 @@ } { - int pass_id[] = {1, 2}; + RenderPassId pass_id[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> root_quads[2] = { {Quad::SurfaceQuad(SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), @@ -6784,7 +6818,7 @@ // Test should not ignore outside for cached render pass. // Create a root surface with a smaller damage rect. { - int pass_id[] = {1, 2}; + RenderPassId pass_id[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> root_quads[2] = { {Quad::SurfaceQuad(SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), @@ -6843,7 +6877,8 @@ { auto pass = RenderPass::Create(); - pass->SetNew(1, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform()); + pass->SetNew(RenderPassId{1}, gfx::Rect(0, 0, 20, 20), gfx::Rect(), + gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); auto* solid_color_quad = pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); @@ -6905,7 +6940,8 @@ std::vector<Quad> child_quads[1] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, }; - std::vector<Pass> child_passes = {Pass(child_quads[0], 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads[0], RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -6966,7 +7002,8 @@ std::vector<Quad> child_quads[1] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, }; - std::vector<Pass> child_passes = {Pass(child_quads[0], 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads[0], RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -6990,7 +7027,8 @@ gfx::Transform(), false, gfx::RRectF(0, 0, 96, 10, 5), /*is_fast_border_radius*/ false)}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7052,7 +7090,8 @@ std::vector<Quad> child_quads[1] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, }; - std::vector<Pass> child_passes = {Pass(child_quads[0], 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads[0], RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7075,7 +7114,8 @@ false, gfx::RRectF(0, 0, 96, 10, 5), /*is_fast_border_radius*/ false)}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7137,7 +7177,8 @@ std::vector<Quad> child_quads[1] = { {Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}, }; - std::vector<Pass> child_passes = {Pass(child_quads[0], 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads[0], RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7230,12 +7271,13 @@ SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}, - {Quad::RenderPassQuad(1, scale, false)}, - {Quad::RenderPassQuad(2, translation, false), - Quad::RenderPassQuad(1, gfx::Transform(), false)}}; - std::vector<Pass> root_passes = {Pass(root_quads[0], 1, SurfaceSize()), - Pass(root_quads[1], 2, SurfaceSize()), - Pass(root_quads[2], 3, SurfaceSize())}; + {Quad::RenderPassQuad(RenderPassId{1}, scale, false)}, + {Quad::RenderPassQuad(RenderPassId{2}, translation, false), + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), false)}}; + std::vector<Pass> root_passes = { + Pass(root_quads[0], RenderPassId{1}, SurfaceSize()), + Pass(root_quads[1], RenderPassId{2}, SurfaceSize()), + Pass(root_quads[2], RenderPassId{3}, SurfaceSize())}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -7321,7 +7363,7 @@ // 2) The second render pass contains a render pass draw quad with a // transform applied that is referencing the first render pass, // creating a cycle. - RenderPassId root_pass_ids[] = {1, 2}; + RenderPassId root_pass_ids[] = {RenderPassId{1}, RenderPassId{2}}; std::vector<Quad> root_quads_1 = { Quad::SurfaceQuad(SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), @@ -7396,7 +7438,8 @@ { std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, child_rect)}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, SurfaceSize())}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, SurfaceSize())}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7411,7 +7454,7 @@ // Submit a SurfaceDrawQuad that allows merging. { auto pass = RenderPass::Create(); - pass->SetNew(1, root_rect, root_rect, gfx::Transform()); + pass->SetNew(RenderPassId{1}, root_rect, root_rect, gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->opacity = 1.f; @@ -7439,7 +7482,7 @@ // Submit a SurfaceDrawQuad that does not allow merging { auto pass = RenderPass::Create(); - pass->SetNew(1, root_rect, root_rect, gfx::Transform()); + pass->SetNew(RenderPassId{1}, root_rect, root_rect, gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->opacity = 1.f; @@ -7483,7 +7526,8 @@ // Offset child output rect so it's outside the root visible rect. gfx::Rect output_rect(SurfaceSize()); output_rect.Offset(output_rect.width(), output_rect.height()); - std::vector<Pass> child_passes = {Pass(child_quads, 1, output_rect)}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, output_rect)}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7496,7 +7540,7 @@ gfx::Rect root_rect(SurfaceSize()); auto pass = RenderPass::Create(); - pass->SetNew(1, root_rect, root_rect, gfx::Transform()); + pass->SetNew(RenderPassId{1}, root_rect, root_rect, gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->opacity = 1.f; @@ -7537,7 +7581,8 @@ { std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, child_rect)}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, child_rect)}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, child_rect)}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7553,7 +7598,7 @@ // Submit a SurfaceDrawQuad that does not allow merging. { auto pass = RenderPass::Create(); - pass->SetNew(1, root_rect, root_rect, gfx::Transform()); + pass->SetNew(RenderPassId{1}, root_rect, root_rect, gfx::Transform()); auto* sqs = pass->CreateAndAppendSharedQuadState(); sqs->opacity = 1.f; @@ -7606,7 +7651,8 @@ std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, child_surface_size)}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, child_surface_size)}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7625,21 +7671,21 @@ Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(30, 30))}; std::vector<Quad> render_pass_draw_quads = { - Quad::RenderPassQuad(1, gfx::Transform(), false), - Quad::RenderPassQuad(2, gfx::Transform(), false), - Quad::RenderPassQuad(3, gfx::Transform(), false), - Quad::RenderPassQuad(4, gfx::Transform(), false), + Quad::RenderPassQuad(RenderPassId{1}, gfx::Transform(), false), + Quad::RenderPassQuad(RenderPassId{2}, gfx::Transform(), false), + Quad::RenderPassQuad(RenderPassId{3}, gfx::Transform(), false), + Quad::RenderPassQuad(RenderPassId{4}, gfx::Transform(), false), Quad::SurfaceQuad(SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(child_surface_size), /*stretch_content_to_fill_bounds=*/false, AllowMerge())}; std::vector<Pass> root_passes = { - Pass(solid_color_quad, 1, gfx::Size(30, 30)), - Pass(solid_color_quad, 2, gfx::Size(30, 30)), - Pass(solid_color_quad, 3, gfx::Size(30, 30)), - Pass(solid_color_quad, 4, gfx::Size(30, 30)), - Pass(render_pass_draw_quads, 5, gfx::Size(100, 100))}; + Pass(solid_color_quad, RenderPassId{1}, gfx::Size(30, 30)), + Pass(solid_color_quad, RenderPassId{2}, gfx::Size(30, 30)), + Pass(solid_color_quad, RenderPassId{3}, gfx::Size(30, 30)), + Pass(solid_color_quad, RenderPassId{4}, gfx::Size(30, 30)), + Pass(render_pass_draw_quads, RenderPassId{5}, gfx::Size(100, 100))}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -7813,7 +7859,8 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, DelegatedInkMetadataTest) { std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, gfx::Size(100, 100))}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); DelegatedInkMetadata metadata(gfx::PointF(100, 100), 1.5, SK_ColorRED, @@ -7837,7 +7884,8 @@ SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> root_passes = {Pass(root_quads, 1, gfx::Size(30, 30))}; + std::vector<Pass> root_passes = { + Pass(root_quads, RenderPassId{1}, gfx::Size(30, 30))}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -7885,7 +7933,7 @@ std::vector<Quad> greatgrandchild_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> greatgrandchild_passes = { - Pass(greatgrandchild_quads, 1, gfx::Size(100, 100))}; + Pass(greatgrandchild_quads, RenderPassId{1}, gfx::Size(100, 100))}; DelegatedInkMetadata metadata(gfx::PointF(100, 100), 1.5, SK_ColorRED, base::TimeTicks::Now(), @@ -7913,7 +7961,7 @@ SurfaceRange(base::nullopt, great_grandchild_surface_id), SK_ColorWHITE, gfx::Rect(7, 7), /*stretch_content_to_fill_bounds=*/false)}; std::vector<Pass> grandchild_passes = { - Pass(grandchild_quads, 1, gfx::Size(100, 100))}; + Pass(grandchild_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame grandchild_frame = MakeEmptyCompositorFrame(); @@ -7951,7 +7999,8 @@ std::vector<Quad> child_quads = {Quad::SurfaceQuad( SurfaceRange(base::nullopt, grandchild_surface_id), SK_ColorWHITE, gfx::Rect(7, 7), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, gfx::Size(30, 30))}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, gfx::Size(30, 30))}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); AddPasses(&child_frame.render_pass_list, child_passes, @@ -7981,7 +8030,8 @@ SurfaceRange(base::nullopt, child_surface_id), SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> root_passes = {Pass(root_quads, 1, gfx::Size(30, 30))}; + std::vector<Pass> root_passes = { + Pass(root_quads, RenderPassId{1}, gfx::Size(30, 30))}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -8029,7 +8079,7 @@ std::vector<Quad> child_1_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> child_1_passes = { - Pass(child_1_quads, 1, gfx::Size(100, 100))}; + Pass(child_1_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_1_frame = MakeEmptyCompositorFrame(); AddPasses(&child_1_frame.render_pass_list, child_1_passes, @@ -8047,7 +8097,7 @@ std::vector<Quad> child_2_quads = { Quad::SolidColorQuad(SK_ColorMAGENTA, gfx::Rect(5, 5))}; std::vector<Pass> child_2_passes = { - Pass(child_2_quads, 1, gfx::Size(100, 100))}; + Pass(child_2_quads, RenderPassId{1}, gfx::Size(100, 100))}; DelegatedInkMetadata metadata = DelegatedInkMetadata( gfx::PointF(88, 34), 1.8, SK_ColorBLACK, base::TimeTicks::Now(), @@ -8070,7 +8120,7 @@ std::vector<Quad> child_3_quads = { Quad::SolidColorQuad(SK_ColorCYAN, gfx::Rect(5, 5))}; std::vector<Pass> child_3_passes = { - Pass(child_3_quads, 1, gfx::Size(100, 100))}; + Pass(child_3_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_3_frame = MakeEmptyCompositorFrame(); AddPasses(&child_3_frame.render_pass_list, child_3_passes, @@ -8096,7 +8146,8 @@ SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> root_passes = {Pass(root_quads, 1, gfx::Size(30, 30))}; + std::vector<Pass> root_passes = { + Pass(root_quads, RenderPassId{1}, gfx::Size(30, 30))}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -8154,7 +8205,7 @@ std::vector<Quad> child_1_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; std::vector<Pass> child_1_passes = { - Pass(child_1_quads, 1, gfx::Size(100, 100))}; + Pass(child_1_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_1_frame = MakeEmptyCompositorFrame(); AddPasses(&child_1_frame.render_pass_list, child_1_passes, @@ -8172,7 +8223,7 @@ std::vector<Quad> child_2_quads = { Quad::SolidColorQuad(SK_ColorMAGENTA, gfx::Rect(5, 5))}; std::vector<Pass> child_2_passes = { - Pass(child_2_quads, 1, gfx::Size(100, 100))}; + Pass(child_2_quads, RenderPassId{1}, gfx::Size(100, 100))}; // Making both metadatas here so that the one with a later timestamp can be // on child 2. This will cause the test to fail if we don't default to using @@ -8205,7 +8256,7 @@ std::vector<Quad> child_3_quads = { Quad::SolidColorQuad(SK_ColorCYAN, gfx::Rect(5, 5))}; std::vector<Pass> child_3_passes = { - Pass(child_3_quads, 1, gfx::Size(100, 100))}; + Pass(child_3_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_3_frame = MakeEmptyCompositorFrame(); child_3_frame.metadata.delegated_ink_metadata = @@ -8233,7 +8284,8 @@ SK_ColorWHITE, gfx::Rect(5, 5), /*stretch_content_to_fill_bounds=*/false)}; - std::vector<Pass> root_passes = {Pass(root_quads, 1, gfx::Size(30, 30))}; + std::vector<Pass> root_passes = { + Pass(root_quads, RenderPassId{1}, gfx::Size(30, 30))}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); AddPasses(&root_frame.render_pass_list, root_passes, @@ -8287,7 +8339,8 @@ DelegatedInkMetadataOnUndrawnSurface) { std::vector<Quad> child_quads = { Quad::SolidColorQuad(SK_ColorGREEN, gfx::Rect(5, 5))}; - std::vector<Pass> child_passes = {Pass(child_quads, 1, gfx::Size(100, 100))}; + std::vector<Pass> child_passes = { + Pass(child_quads, RenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); DelegatedInkMetadata metadata(gfx::PointF(34, 89), 1.597, SK_ColorBLUE, @@ -8312,7 +8365,8 @@ std::vector<Quad> root_quads = { Quad::SolidColorQuad(SK_ColorMAGENTA, gfx::Rect(5, 5))}; - std::vector<Pass> root_passes = {Pass(root_quads, 1, gfx::Size(30, 30))}; + std::vector<Pass> root_passes = { + Pass(root_quads, RenderPassId{1}, gfx::Size(30, 30))}; CompositorFrame root_frame = MakeEmptyCompositorFrame(); root_frame.metadata.referenced_surfaces.emplace_back(
diff --git a/components/viz/service/display_embedder/image_context_impl.h b/components/viz/service/display_embedder/image_context_impl.h index 69db76a..51e4a56 100644 --- a/components/viz/service/display_embedder/image_context_impl.h +++ b/components/viz/service/display_embedder/image_context_impl.h
@@ -100,7 +100,7 @@ bool BindOrCopyTextureIfNecessary(gpu::TextureBase* texture_base, gfx::Size* size); - const RenderPassId render_pass_id_ = 0; + const RenderPassId render_pass_id_; const GrMipMapped mipmap_ = GrMipMapped::kNo; // Fallback in case we cannot produce a |representation_|.
diff --git a/components/viz/service/display_embedder/output_presenter.cc b/components/viz/service/display_embedder/output_presenter.cc index 0f23a26..035c23c5 100644 --- a/components/viz/service/display_embedder/output_presenter.cc +++ b/components/viz/service/display_embedder/output_presenter.cc
@@ -117,8 +117,18 @@ scoped_read_access_(std::move(scoped_read_access)) {} OutputPresenter::OverlayData::OverlayData(OverlayData&&) = default; OutputPresenter::OverlayData::~OverlayData() = default; + OutputPresenter::OverlayData& OutputPresenter::OverlayData::operator=( - OverlayData&&) = default; + OverlayData&& other) { + // If the default assignment operator is called when |this| is populated, then + // the members will be moved in declared order. As a consequence, + // |this->representation_| will be overwritten and therefore deleted before + // |this_->scoped_read_access_|, which will cause a DCHECK (because scoped + // accesses may not outlive their representation). + scoped_read_access_ = std::move(other.scoped_read_access_); + representation_ = std::move(other.representation_); + return *this; +} const gpu::Mailbox& OutputPresenter::OverlayData::mailbox() const { return representation_->mailbox();
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.cc b/components/viz/service/display_embedder/skia_output_surface_impl.cc index aa4554e..e9f671f 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl.cc
@@ -494,10 +494,10 @@ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(current_paint_); DCHECK(!deferred_framebuffer_draw_closure_); - // If current_render_pass_id_ is not 0, we are painting a render pass. + // If current_render_pass_id_ is not null, we are painting a render pass. // Otherwise we are painting a frame. - bool painting_render_pass = current_paint_->render_pass_id() != 0; + bool painting_render_pass = !current_paint_->render_pass_id().is_null(); gpu::SyncToken sync_token( gpu::CommandBufferNamespace::VIZ_SKIA_OUTPUT_SURFACE,
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_unittest.cc b/components/viz/service/display_embedder/skia_output_surface_impl_unittest.cc index 9299f97b..e5ab3d7 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_unittest.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl_unittest.cc
@@ -156,7 +156,8 @@ geometry.sampling_bounds = output_rect; geometry.readback_offset = gfx::Vector2d(0, 0); - output_surface_->CopyOutput(0, geometry, color_space, std::move(request)); + output_surface_->CopyOutput(RenderPassId{0}, geometry, color_space, + std::move(request)); output_surface_->SwapBuffersSkipped(); BlockMainThread();
diff --git a/components/viz/service/surfaces/surface_unittest.cc b/components/viz/service/surfaces/surface_unittest.cc index 0ccffb3..17b2b653 100644 --- a/components/viz/service/surfaces/surface_unittest.cc +++ b/components/viz/service/surfaces/surface_unittest.cc
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <utility> + #include "components/viz/service/surfaces/surface.h" #include "base/bind.h" #include "base/run_loop.h" @@ -115,17 +117,17 @@ for (int i = 0; i < max_frame; ++i) { CompositorFrame frame = CompositorFrameBuilder().Build(); frame.render_pass_list.push_back(RenderPass::Create()); - frame.render_pass_list.back()->id = i * 3 + start_id; + frame.render_pass_list.back()->id = RenderPassId{i * 3 + start_id}; frame.render_pass_list.push_back(RenderPass::Create()); - frame.render_pass_list.back()->id = i * 3 + start_id + 1; + frame.render_pass_list.back()->id = RenderPassId{i * 3 + start_id + 1}; frame.render_pass_list.push_back(RenderPass::Create()); - frame.render_pass_list.back()->SetNew(i * 3 + start_id + 2, + frame.render_pass_list.back()->SetNew(RenderPassId{i * 3 + start_id + 2}, gfx::Rect(0, 0, 20, 20), gfx::Rect(), gfx::Transform()); support->SubmitCompositorFrame(local_surface_id, std::move(frame)); } - int last_pass_id = (max_frame - 1) * 3 + start_id + 2; + RenderPassId last_pass_id{(max_frame - 1) * 3 + start_id + 2}; // The copy request should stay on the Surface until TakeCopyOutputRequests // is called. EXPECT_FALSE(copy_called);
diff --git a/components/viz/test/compositor_frame_helpers.cc b/components/viz/test/compositor_frame_helpers.cc index f2055c0..e4891145 100644 --- a/components/viz/test/compositor_frame_helpers.cc +++ b/components/viz/test/compositor_frame_helpers.cc
@@ -35,8 +35,8 @@ const gfx::Rect& output_rect, const gfx::Rect& damage_rect) { std::unique_ptr<RenderPass> pass = RenderPass::Create(); - pass->SetNew(next_render_pass_id_++, output_rect, damage_rect, - gfx::Transform()); + pass->SetNew(render_pass_id_generator_.GenerateNextId(), output_rect, + damage_rect, gfx::Transform()); frame_->render_pass_list.push_back(std::move(pass)); return *this; } @@ -44,8 +44,8 @@ CompositorFrameBuilder& CompositorFrameBuilder::AddRenderPass( std::unique_ptr<RenderPass> render_pass) { // Give the render pass a unique id if one hasn't been assigned. - if (render_pass->id == 0) - render_pass->id = next_render_pass_id_++; + if (render_pass->id.is_null()) + render_pass->id = render_pass_id_generator_.GenerateNextId(); frame_->render_pass_list.push_back(std::move(render_pass)); return *this; }
diff --git a/components/viz/test/compositor_frame_helpers.h b/components/viz/test/compositor_frame_helpers.h index 872ca876..7a5c171 100644 --- a/components/viz/test/compositor_frame_helpers.h +++ b/components/viz/test/compositor_frame_helpers.h
@@ -66,7 +66,7 @@ CompositorFrame MakeInitCompositorFrame() const; base::Optional<CompositorFrame> frame_; - uint64_t next_render_pass_id_ = 1; + RenderPassId::Generator render_pass_id_generator_; DISALLOW_COPY_AND_ASSIGN(CompositorFrameBuilder); };
diff --git a/components/viz/test/fake_skia_output_surface.cc b/components/viz/test/fake_skia_output_surface.cc index d1a0a8f..1fb404d 100644 --- a/components/viz/test/fake_skia_output_surface.cc +++ b/components/viz/test/fake_skia_output_surface.cc
@@ -71,7 +71,7 @@ const gfx::ColorSpace& color_space, gfx::BufferFormat format, bool use_stencil) { - auto& sk_surface = sk_surfaces_[0]; + auto& sk_surface = sk_surfaces_[RenderPassId{0}]; SkColorType color_type = kRGBA_8888_SkColorType; SkImageInfo image_info = SkImageInfo::Make(size.width(), size.height(), color_type, @@ -139,9 +139,9 @@ SkCanvas* FakeSkiaOutputSurface::BeginPaintCurrentFrame() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - auto& sk_surface = sk_surfaces_[0]; + auto& sk_surface = sk_surfaces_[RenderPassId{0}]; DCHECK(sk_surface); - DCHECK_EQ(current_render_pass_id_, 0u); + DCHECK_EQ(current_render_pass_id_, RenderPassId{0u}); return sk_surface->getCanvas(); } @@ -197,7 +197,7 @@ sk_sp<SkColorSpace> color_space) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); // Make sure there is no unsubmitted PaintFrame or PaintRenderPass. - DCHECK_EQ(current_render_pass_id_, 0u); + DCHECK_EQ(current_render_pass_id_, RenderPassId{0u}); auto& sk_surface = sk_surfaces_[id]; if (!sk_surface) { @@ -216,7 +216,7 @@ base::OnceClosure on_finished) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); sk_surfaces_[current_render_pass_id_]->flushAndSubmit(); - current_render_pass_id_ = 0; + current_render_pass_id_ = RenderPassId{0}; if (on_finished) std::move(on_finished).Run();
diff --git a/components/viz/test/fake_skia_output_surface.h b/components/viz/test/fake_skia_output_surface.h index 39745b6..195aba6 100644 --- a/components/viz/test/fake_skia_output_surface.h +++ b/components/viz/test/fake_skia_output_surface.h
@@ -138,7 +138,7 @@ std::unique_ptr<TextureDeleter> texture_deleter_; // The current render pass id set by BeginPaintRenderPass. - RenderPassId current_render_pass_id_ = 0; + RenderPassId current_render_pass_id_; // SkSurfaces for render passes, sk_surfaces_[0] is the root surface. base::flat_map<RenderPassId, sk_sp<SkSurface>> sk_surfaces_;
diff --git a/content/browser/frame_host/clipboard_host_impl.cc b/content/browser/frame_host/clipboard_host_impl.cc index 8404c8b..83f0a2d1 100644 --- a/content/browser/frame_host/clipboard_host_impl.cc +++ b/content/browser/frame_host/clipboard_host_impl.cc
@@ -30,10 +30,15 @@ namespace content { -// TODO(rogerta): how old is too old will need to be determined, maybe via -// experimentation. For now using 1 minute. +// 5 mins is based on the timeout in BinaryUploadService. This scanning timeout +// of 5 mins means no paste will be held back longer before being allowed or +// blocked, so matching this timeout with the threshold for a paste being too +// old ensures scans that: +// - Scans that timeout can be retried without waiting +// - Scans that succeed will apply their verdicts without the risk that their +// associated IsPasteAllowedRequest is already too old. const base::TimeDelta ClipboardHostImpl::kIsPasteAllowedRequestTooOld = - base::TimeDelta::FromMinutes(1); + base::TimeDelta::FromMinutes(5); ClipboardHostImpl::IsPasteAllowedRequest::IsPasteAllowedRequest() = default; ClipboardHostImpl::IsPasteAllowedRequest::~IsPasteAllowedRequest() = default;
diff --git a/content/browser/frame_host/cookie_utils.cc b/content/browser/frame_host/cookie_utils.cc index 8736a3f..dc7b772 100644 --- a/content/browser/frame_host/cookie_utils.cc +++ b/content/browser/frame_host/cookie_utils.cc
@@ -56,7 +56,7 @@ /* blocked_by_policy=*/true}); for (auto& cookie_and_access_result : cookie_details->cookie_list) { - if (cookie_and_access_result.access_result.status.HasExclusionReason( + if (cookie_and_access_result.access_result.status.HasOnlyExclusionReason( net::CookieInclusionStatus::EXCLUDE_USER_PREFERENCES)) { blocked->cookie_list.push_back( std::move(cookie_and_access_result.cookie));
diff --git a/content/browser/frame_host/cookie_utils.h b/content/browser/frame_host/cookie_utils.h index f578cf5..564dd11 100644 --- a/content/browser/frame_host/cookie_utils.h +++ b/content/browser/frame_host/cookie_utils.h
@@ -12,6 +12,11 @@ class RenderFrameHostImpl; struct CookieAccessDetails; +// Sorts cookies into allowed (cookies that were included for the access +// attempt) and blocked (cookies that were excluded solely because they were +// blocked by the user's preferences). Cookies that are excluded independently +// of the user's cookie blocking settings are not included in either of the +// outputs. void SplitCookiesIntoAllowedAndBlocked( const network::mojom::CookieAccessDetailsPtr& cookie_details, CookieAccessDetails* allowed,
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc index 3c94c561..f07d96e 100644 --- a/content/browser/frame_host/render_frame_host_impl.cc +++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -1014,6 +1014,9 @@ // the dtor has run. (It may also be null in tests.) unload_event_monitor_timeout_.reset(); + for (auto& iter : visual_state_callbacks_) + std::move(iter.second).Run(false); + // Delete this before destroying the widget, to guard against reentrancy // by in-process screen readers such as JAWS. browser_accessibility_manager_.reset(); @@ -1613,6 +1616,7 @@ IPC_MESSAGE_HANDLER(FrameHostMsg_Detach, OnDetach) IPC_MESSAGE_HANDLER(FrameHostMsg_Unload_ACK, OnUnloadACK) IPC_MESSAGE_HANDLER(FrameHostMsg_ContextMenu, OnContextMenu) + IPC_MESSAGE_HANDLER(FrameHostMsg_VisualStateResponse, OnVisualStateResponse) IPC_MESSAGE_HANDLER(FrameHostMsg_DidStopLoading, OnDidStopLoading) IPC_MESSAGE_HANDLER(FrameHostMsg_SelectionChanged, OnSelectionChanged) IPC_END_MESSAGE_MAP() @@ -1822,6 +1826,8 @@ smart_clip_callbacks_.Clear(); #endif // defined(OS_ANDROID) + visual_state_callbacks_.clear(); + // Ensure that future remote interface requests are associated with the new // process's channel. remote_associated_interfaces_.reset(); @@ -3079,6 +3085,16 @@ } #endif // defined(OS_ANDROID) +void RenderFrameHostImpl::OnVisualStateResponse(uint64_t id) { + auto it = visual_state_callbacks_.find(id); + if (it != visual_state_callbacks_.end()) { + std::move(it->second).Run(true); + visual_state_callbacks_.erase(it); + } else { + NOTREACHED() << "Received script response for unknown request"; + } +} + void RenderFrameHostImpl::RunModalAlertDialog( const base::string16& alert_message, RunModalAlertDialogCallback response_callback) { @@ -6601,7 +6617,10 @@ void RenderFrameHostImpl::InsertVisualStateCallback( VisualStateCallback callback) { - GetRenderWidgetHost()->InsertVisualStateCallback(std::move(callback)); + static uint64_t next_id = 1; + uint64_t key = next_id++; + Send(new FrameMsg_VisualStateRequest(routing_id_, key)); + visual_state_callbacks_.emplace(key, std::move(callback)); } bool RenderFrameHostImpl::IsRenderFrameCreated() {
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h index 57cf39c7..f339978 100644 --- a/content/browser/frame_host/render_frame_host_impl.h +++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -1863,6 +1863,8 @@ void OnDetach(); void OnUnloadACK(); void OnContextMenu(const UntrustworthyContextMenuParams& params); + void OnVisualStateResponse(uint64_t id); + void OnForwardResourceTimingToParent( const ResourceTimingInfo& resource_timing); void OnDidStopLoading(); @@ -2473,6 +2475,8 @@ // The http status code of the last committed navigation. int last_http_status_code_ = 0; + std::map<uint64_t, VisualStateCallback> visual_state_callbacks_; + // Local root subframes directly own their RenderWidgetHost. // Please see comments about the GetLocalRenderWidgetHost() function. // TODO(kenrb): Later this will also be used on the top-level frame, when
diff --git a/content/browser/renderer_host/mock_render_widget_host.cc b/content/browser/renderer_host/mock_render_widget_host.cc index ac444ae..fb78b02 100644 --- a/content/browser/renderer_host/mock_render_widget_host.cc +++ b/content/browser/renderer_host/mock_render_widget_host.cc
@@ -71,7 +71,21 @@ RenderWidgetHostDelegate* delegate, RenderProcessHost* process, int32_t routing_id) { - return new MockRenderWidgetHost(delegate, process, routing_id); + mojo::AssociatedRemote<blink::mojom::Widget> blink_widget; + auto blink_widget_receiver = + blink_widget.BindNewEndpointAndPassDedicatedReceiverForTesting(); + return new MockRenderWidgetHost(delegate, process, routing_id, + blink_widget.Unbind()); +} + +MockRenderWidgetHost* MockRenderWidgetHost::Create( + RenderWidgetHostDelegate* delegate, + RenderProcessHost* process, + int32_t routing_id, + mojo::PendingAssociatedRemote<blink::mojom::Widget> pending_blink_widget) { + DCHECK(pending_blink_widget); + return new MockRenderWidgetHost(delegate, process, routing_id, + std::move(pending_blink_widget)); } blink::mojom::WidgetInputHandler* @@ -83,9 +97,11 @@ new_content_rendering_timeout_fired_ = true; } -MockRenderWidgetHost::MockRenderWidgetHost(RenderWidgetHostDelegate* delegate, - RenderProcessHost* process, - int routing_id) +MockRenderWidgetHost::MockRenderWidgetHost( + RenderWidgetHostDelegate* delegate, + RenderProcessHost* process, + int routing_id, + mojo::PendingAssociatedRemote<blink::mojom::Widget> pending_blink_widget) : RenderWidgetHostImpl(delegate, process, routing_id, @@ -95,12 +111,9 @@ fling_scheduler_(std::make_unique<FlingScheduler>(this)) { acked_touch_event_type_ = blink::WebInputEvent::Type::kUndefined; mojo::AssociatedRemote<blink::mojom::WidgetHost> blink_widget_host; - mojo::AssociatedRemote<blink::mojom::Widget> blink_widget; - auto blink_widget_receiver = - blink_widget.BindNewEndpointAndPassDedicatedReceiverForTesting(); BindWidgetInterfaces( blink_widget_host.BindNewEndpointAndPassDedicatedReceiverForTesting(), - blink_widget.Unbind()); + std::move(pending_blink_widget)); } } // namespace content
diff --git a/content/browser/renderer_host/mock_render_widget_host.h b/content/browser/renderer_host/mock_render_widget_host.h index ea4c29d..8e65251 100644 --- a/content/browser/renderer_host/mock_render_widget_host.h +++ b/content/browser/renderer_host/mock_render_widget_host.h
@@ -64,6 +64,12 @@ RenderProcessHost* process, int32_t routing_id); + static MockRenderWidgetHost* Create( + RenderWidgetHostDelegate* delegate, + RenderProcessHost* process, + int32_t routing_id, + mojo::PendingAssociatedRemote<blink::mojom::Widget> pending_blink_widget); + blink::mojom::WidgetInputHandler* GetWidgetInputHandler() override; MockWidgetInputHandler mock_widget_input_handler_; @@ -75,9 +81,11 @@ blink::WebInputEvent::Type acked_touch_event_type_; private: - MockRenderWidgetHost(RenderWidgetHostDelegate* delegate, - RenderProcessHost* process, - int routing_id); + MockRenderWidgetHost( + RenderWidgetHostDelegate* delegate, + RenderProcessHost* process, + int32_t routing_id, + mojo::PendingAssociatedRemote<blink::mojom::Widget> pending_blink_widget); std::unique_ptr<FlingScheduler> fling_scheduler_; DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHost);
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index f92d55b..0579758 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -95,7 +95,6 @@ #include "gpu/GLES2/gl2extchromium.h" #include "gpu/command_buffer/service/gpu_switches.h" #include "gpu/ipc/common/gpu_messages.h" -#include "mojo/public/cpp/bindings/callback_helpers.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/system/platform_handle.h" #include "net/base/filename_util.h" @@ -533,7 +532,7 @@ } void RenderWidgetHostImpl::SendScreenRects() { - if (!renderer_initialized_ || waiting_for_screen_rects_ack_) + if (!renderer_initialized_ || !blink_widget_ || waiting_for_screen_rects_ack_) return; if (is_hidden_) { @@ -548,8 +547,10 @@ last_view_screen_rect_ = view_->GetViewBounds(); last_window_screen_rect_ = view_->GetBoundsInRootWindow(); view_->WillSendScreenRects(); - Send(new WidgetMsg_UpdateScreenRects(GetRoutingID(), last_view_screen_rect_, - last_window_screen_rect_)); + blink_widget_->UpdateScreenRects( + last_view_screen_rect_, last_window_screen_rect_, + base::BindOnce(&RenderWidgetHostImpl::OnUpdateScreenRectsAck, + weak_factory_.GetWeakPtr())); waiting_for_screen_rects_ack_ = true; } @@ -631,7 +632,6 @@ blink_frame_widget_host_receiver_.reset(); blink_frame_widget_.reset(); frame_widget_input_handler_.reset(); - widget_compositor_.reset(); return std::make_pair( blink_frame_widget_host_receiver_.BindNewEndpointAndPassRemote(), blink_frame_widget_.BindNewEndpointAndPassReceiver()); @@ -646,7 +646,6 @@ blink_frame_widget_host_receiver_.reset(); blink_frame_widget_.reset(); frame_widget_input_handler_.reset(); - widget_compositor_.reset(); blink_frame_widget_host_receiver_.Bind(std::move(frame_widget_host)); blink_frame_widget_.Bind(std::move(frame_widget)); } @@ -699,8 +698,6 @@ bool handled = true; IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostImpl, msg) IPC_MESSAGE_HANDLER(WidgetHostMsg_Close, OnClose) - IPC_MESSAGE_HANDLER(WidgetHostMsg_UpdateScreenRects_ACK, - OnUpdateScreenRectsAck) IPC_MESSAGE_HANDLER(WidgetHostMsg_RequestSetBounds, OnRequestSetBounds) IPC_MESSAGE_HANDLER(DragHostMsg_StartDragging, OnStartDragging) IPC_MESSAGE_HANDLER(DragHostMsg_UpdateDragCursor, OnUpdateDragCursor) @@ -932,14 +929,14 @@ // // The plumbing goes: // 1. Browser: parent RenderWidgetHost - // 2. IPC -> WidgetMsg_UpdateVisualProperties + // 2. IPC -> blink::mojom::Widget::UpdateVisualProperties // 3. Renderer A: parent RenderWidget // (sometimes blink involved) // 4. Renderer A: child RenderFrameProxy // 5. IPC -> FrameHostMsg_SynchronizeVisualProperties // 6. Browser: child CrossProcessFrameConnector // 7. Browser: parent RenderWidgetHost (We're here if |is_child_frame|.) - // 8. IPC -> WidgetMsg_UpdateVisualProperties + // 8. IPC -> blink::mojom::Widget::UpdateVisualProperties // 9. Renderer B: child RenderWidget // This property comes from the top-level main frame. @@ -1064,6 +1061,11 @@ if (!renderer_initialized_) return false; + // If we have not bound the blink widget interface put this request off. + // SynchronizeVisualProperties will get called after the channel is bound. + if (!blink_widget_) + return false; + // Skip if the |delegate_| has already been detached because it's web contents // is being deleted, or if LocalSurfaceIdAllocation is suppressed, as we are // first updating our internal state from a child's request, before @@ -1084,7 +1086,7 @@ visual_properties->scroll_focused_node_into_view = scroll_focused_node_into_view; - Send(new WidgetMsg_UpdateVisualProperties(routing_id_, *visual_properties)); + blink_widget_->UpdateVisualProperties(*visual_properties); bool width_changed = !old_visual_properties_ || old_visual_properties_->new_size.width() != @@ -2890,23 +2892,6 @@ return false; } -void RenderWidgetHostImpl::InsertVisualStateCallback( - VisualStateCallback callback) { - if (!blink_frame_widget_) { - std::move(callback).Run(false); - return; - } - - if (!widget_compositor_) { - blink_frame_widget_->BindWidgetCompositor( - widget_compositor_.BindNewPipeAndPassReceiver()); - } - - widget_compositor_->VisualStateRequest(base::BindOnce( - [](VisualStateCallback callback) { std::move(callback).Run(true); }, - mojo::WrapCallbackWithDefaultInvokeIfNotRun(std::move(callback), false))); -} - const mojo::AssociatedRemote<blink::mojom::FrameWidget>& RenderWidgetHostImpl::GetAssociatedFrameWidget() { return blink_frame_widget_;
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h index 92d86a7b..168049a 100644 --- a/content/browser/renderer_host/render_widget_host_impl.h +++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -16,7 +16,6 @@ #include <vector> #include "base/callback.h" -#include "base/containers/flat_map.h" #include "base/containers/flat_set.h" #include "base/containers/queue.h" #include "base/gtest_prod_util.h" @@ -786,14 +785,6 @@ // Add/ClearPendingUserActivation() for details. bool RemovePendingUserActivationIfAvailable(); - // Roundtrips through the renderer and compositor pipeline to ensure that any - // changes to the contents resulting from operations executed prior to this - // call are visible on screen. The call completes asynchronously by running - // the supplied |callback| with a value of true upon successful completion and - // false otherwise when the widget is destroyed. - using VisualStateCallback = base::OnceCallback<void(bool)>; - void InsertVisualStateCallback(VisualStateCallback callback); - const mojo::AssociatedRemote<blink::mojom::FrameWidget>& GetAssociatedFrameWidget(); @@ -1133,9 +1124,10 @@ // frame to a child frame RenderWidgetHost. They are not used on a top-level // RenderWidgetHost. The child frame RenderWidgetHost stores these values to // pass them to the renderer, instead of computing them for itself. It - // collects them and passes them though WidgetMsg_UpdateVisualProperties so - // that the renderer receives updates in an atomic fashion along with a - // synchronization token for the compositor in a LocalSurfaceIdAllocation. + // collects them and passes them though + // blink::mojom::Widget::UpdateVisualProperties so that the renderer receives + // updates in an atomic fashion along with a synchronization token for the + // compositor in a LocalSurfaceIdAllocation. struct MainFramePropagationProperties { MainFramePropagationProperties(); ~MainFramePropagationProperties(); @@ -1334,8 +1326,6 @@ blink_widget_host_receiver_{this}; mojo::AssociatedRemote<blink::mojom::Widget> blink_widget_; - mojo::Remote<blink::mojom::WidgetCompositor> widget_compositor_; - base::WeakPtrFactory<RenderWidgetHostImpl> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostImpl);
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc index 24910364..5bc668b 100644 --- a/content/browser/renderer_host/render_widget_host_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_unittest.cc
@@ -45,6 +45,7 @@ #include "content/public/test/browser_task_environment.h" #include "content/public/test/mock_render_process_host.h" #include "content/public/test/test_browser_context.h" +#include "content/test/mock_widget.h" #include "content/test/mock_widget_input_handler.h" #include "content/test/stub_render_widget_host_owner_delegate.h" #include "content/test/test_render_view_host.h" @@ -503,6 +504,16 @@ return handle_mouse_event_; } + void ClearVisualProperties() { + base::RunLoop().RunUntilIdle(); + widget_.ClearVisualProperties(); + } + + void ClearScreenRects() { + base::RunLoop().RunUntilIdle(); + widget_.ClearScreenRects(); + } + protected: // testing::Test void SetUp() override { @@ -525,7 +536,8 @@ display::Screen::SetScreenInstance(screen_.get()); #endif host_.reset(MockRenderWidgetHost::Create(delegate_.get(), process_, - process_->GetNextRoutingID())); + process_->GetNextRoutingID(), + widget_.GetNewRemote())); // Set up the RenderWidgetHost as being for a main frame. host_->set_owner_delegate(&mock_owner_delegate_); // Act like there is no RenderWidget present in the renderer yet. @@ -589,12 +601,9 @@ void ReinitalizeHost() { mojo::AssociatedRemote<blink::mojom::WidgetHost> widget_host; - mojo::AssociatedRemote<blink::mojom::Widget> widget; - auto widget_receiver = - widget.BindNewEndpointAndPassDedicatedReceiverForTesting(); host_->BindWidgetInterfaces( widget_host.BindNewEndpointAndPassDedicatedReceiverForTesting(), - widget.Unbind()); + widget_.GetNewRemote()); mojo::AssociatedRemote<blink::mojom::FrameWidgetHost> frame_widget_host; mojo::AssociatedRemote<blink::mojom::FrameWidget> frame_widget; @@ -770,6 +779,7 @@ IPC::TestSink* sink_; std::unique_ptr<FakeRenderFrameMetadataObserver> renderer_render_frame_metadata_observer_; + MockWidget widget_; private: blink::SyntheticWebTouchEvent touch_event_; @@ -789,15 +799,16 @@ // ----------------------------------------------------------------------------- TEST_F(RenderWidgetHostTest, SynchronizeVisualProperties) { - sink_->ClearMessages(); + ClearVisualProperties(); // The initial zoom is 0 so host should not send a sync message delegate_->SetZoomLevel(0); EXPECT_FALSE(host_->SynchronizeVisualProperties()); EXPECT_FALSE(host_->visual_properties_ack_pending_); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // The zoom has changed so host should send out a sync message. double new_zoom_level = blink::PageZoomFactorToZoomLevel(0.25); @@ -805,27 +816,30 @@ EXPECT_TRUE(host_->SynchronizeVisualProperties()); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_NEAR(new_zoom_level, host_->old_visual_properties_->zoom_level, 0.01); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // The initial bounds is the empty rect, so setting it to the same thing // shouldn't send the resize message. view_->SetBounds(gfx::Rect()); host_->SynchronizeVisualProperties(); EXPECT_FALSE(host_->visual_properties_ack_pending_); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // No visual properties ACK if the physical backing gets set, but the view // bounds are zero. view_->SetMockCompositorViewportPixelSize(gfx::Size(200, 200)); host_->SynchronizeVisualProperties(); EXPECT_FALSE(host_->visual_properties_ack_pending_); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // Setting the view bounds to nonzero should send out the notification. // but should not expect ack for empty physical backing size. @@ -835,9 +849,10 @@ host_->SynchronizeVisualProperties(); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(original_size.size(), host_->old_visual_properties_->new_size); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // Setting the bounds and physical backing size to nonzero should send out // the notification and expect an ack. @@ -851,9 +866,10 @@ static_cast<RenderFrameMetadataProvider::Observer&>(*host_) .OnLocalSurfaceIdChanged(metadata); EXPECT_FALSE(host_->visual_properties_ack_pending_); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); gfx::Rect second_size(0, 0, 110, 110); EXPECT_FALSE(host_->visual_properties_ack_pending_); @@ -861,7 +877,7 @@ EXPECT_TRUE(host_->SynchronizeVisualProperties()); EXPECT_TRUE(host_->visual_properties_ack_pending_); - sink_->ClearMessages(); + ClearVisualProperties(); // Sending out a new notification should NOT send out a new IPC message since // a visual properties ACK is pending. @@ -870,9 +886,10 @@ view_->SetBounds(third_size); EXPECT_FALSE(host_->SynchronizeVisualProperties()); EXPECT_TRUE(host_->visual_properties_ack_pending_); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // Send a update that's a visual properties ACK, but for the original_size we // sent. Since this isn't the second_size, the message handler should @@ -883,9 +900,10 @@ .OnLocalSurfaceIdChanged(metadata); EXPECT_TRUE(host_->visual_properties_ack_pending_); EXPECT_EQ(third_size.size(), host_->old_visual_properties_->new_size); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // Send the visual properties ACK for the latest size. metadata.viewport_size_in_pixels = third_size.size(); @@ -894,9 +912,10 @@ .OnLocalSurfaceIdChanged(metadata); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(third_size.size(), host_->old_visual_properties_->new_size); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // Now clearing the bounds should send out a notification but we shouldn't // expect a visual properties ACK (since the renderer won't ack empty sizes). @@ -906,35 +925,39 @@ host_->SynchronizeVisualProperties(); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(gfx::Size(), host_->old_visual_properties_->new_size); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // Send a rect that has no area but has either width or height set. view_->SetBounds(gfx::Rect(0, 0, 0, 30)); host_->SynchronizeVisualProperties(); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(gfx::Size(0, 30), host_->old_visual_properties_->new_size); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // Set the same size again. It should not be sent again. host_->SynchronizeVisualProperties(); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(gfx::Size(0, 30), host_->old_visual_properties_->new_size); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // A different size should be sent again, however. view_->SetBounds(gfx::Rect(0, 0, 0, 31)); host_->SynchronizeVisualProperties(); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(gfx::Size(0, 31), host_->old_visual_properties_->new_size); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); - sink_->ClearMessages(); + ClearVisualProperties(); // An invalid LocalSurfaceId should result in no change to the // |visual_properties_ack_pending_| bit. @@ -943,7 +966,8 @@ host_->SynchronizeVisualProperties(); EXPECT_FALSE(host_->visual_properties_ack_pending_); EXPECT_EQ(gfx::Size(25, 25), host_->old_visual_properties_->new_size); - EXPECT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); } // Test that a resize event is sent if SynchronizeVisualProperties() is called @@ -957,47 +981,48 @@ screen_info.orientation_type = blink::mojom::ScreenOrientation::kPortraitPrimary; - sink_->ClearMessages(); + ClearVisualProperties(); view_->SetScreenInfo(screen_info); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); EXPECT_TRUE(host_->SynchronizeVisualProperties()); - // WidgetMsg_UpdateVisualProperties sent to the renderer. - ASSERT_EQ(1u, sink_->message_count()); - EXPECT_EQ(WidgetMsg_UpdateVisualProperties::ID, - sink_->GetMessageAt(0)->type()); + // blink::mojom::Widget::UpdateVisualProperties sent to the renderer. + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_.ReceivedVisualProperties().size()); EXPECT_FALSE(host_->visual_properties_ack_pending_); screen_info.orientation_angle = 180; screen_info.orientation_type = blink::mojom::ScreenOrientation::kLandscapePrimary; - sink_->ClearMessages(); + ClearVisualProperties(); view_->SetScreenInfo(screen_info); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); EXPECT_TRUE(host_->SynchronizeVisualProperties()); - // WidgetMsg_UpdateVisualProperties sent to the renderer. - ASSERT_EQ(1u, sink_->message_count()); - EXPECT_EQ(WidgetMsg_UpdateVisualProperties::ID, - sink_->GetMessageAt(0)->type()); + // blink::mojom::Widget::UpdateVisualProperties sent to the renderer. + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_.ReceivedVisualProperties().size()); EXPECT_FALSE(host_->visual_properties_ack_pending_); screen_info.device_scale_factor = 2.f; - sink_->ClearMessages(); + ClearVisualProperties(); view_->SetScreenInfo(screen_info); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); EXPECT_TRUE(host_->SynchronizeVisualProperties()); - // WidgetMsg_UpdateVisualProperties sent to the renderer. - ASSERT_EQ(1u, sink_->message_count()); - EXPECT_EQ(WidgetMsg_UpdateVisualProperties::ID, - sink_->GetMessageAt(0)->type()); + // blink::mojom::Widget::UpdateVisualProperties sent to the renderer. + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_.ReceivedVisualProperties().size()); EXPECT_FALSE(host_->visual_properties_ack_pending_); // No screen change. - sink_->ClearMessages(); + ClearVisualProperties(); view_->SetScreenInfo(screen_info); EXPECT_FALSE(host_->SynchronizeVisualProperties()); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); EXPECT_FALSE(host_->visual_properties_ack_pending_); } @@ -1016,40 +1041,36 @@ blink::mojom::ScreenOrientation::kPortraitPrimary; view_->SetScreenInfo(screen_info); - sink_->ClearMessages(); + ClearVisualProperties(); // Do initial VisualProperties sync while not fullscreened. view_->SetBounds(kViewBounds); ASSERT_FALSE(delegate_->IsFullscreen()); host_->SynchronizeVisualPropertiesIgnoringPendingAck(); - // WidgetMsg_UpdateVisualProperties sent to the renderer. - ASSERT_EQ(1u, sink_->message_count()); - WidgetMsg_UpdateVisualProperties::Param param; - ASSERT_TRUE( - WidgetMsg_UpdateVisualProperties::Read(sink_->GetMessageAt(0), ¶m)); - blink::VisualProperties props = std::get<0>(param); + // blink::mojom::Widget::UpdateVisualProperties sent to the renderer. + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); + blink::VisualProperties props = widget_.ReceivedVisualProperties().at(0); EXPECT_EQ(kScreenBounds, props.screen_info.rect); EXPECT_EQ(kScreenBounds, props.screen_info.available_rect); // Enter fullscreen and do another VisualProperties sync. delegate_->set_is_fullscreen(true); host_->SynchronizeVisualPropertiesIgnoringPendingAck(); - // WidgetMsg_UpdateVisualProperties sent to the renderer. - ASSERT_EQ(2u, sink_->message_count()); - ASSERT_TRUE( - WidgetMsg_UpdateVisualProperties::Read(sink_->GetMessageAt(1), ¶m)); - props = std::get<0>(param); + // blink::mojom::Widget::UpdateVisualProperties sent to the renderer. + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(2u, widget_.ReceivedVisualProperties().size()); + props = widget_.ReceivedVisualProperties().at(1); EXPECT_EQ(kViewBounds.size(), props.screen_info.rect.size()); EXPECT_EQ(kViewBounds.size(), props.screen_info.available_rect.size()); // Exit fullscreen and do another VisualProperties sync. delegate_->set_is_fullscreen(false); host_->SynchronizeVisualPropertiesIgnoringPendingAck(); - // WidgetMsg_UpdateVisualProperties sent to the renderer. - ASSERT_EQ(3u, sink_->message_count()); - ASSERT_TRUE( - WidgetMsg_UpdateVisualProperties::Read(sink_->GetMessageAt(2), ¶m)); - props = std::get<0>(param); + // blink::mojom::Widget::UpdateVisualProperties sent to the renderer. + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(3u, widget_.ReceivedVisualProperties().size()); + props = widget_.ReceivedVisualProperties().at(2); EXPECT_EQ(kScreenBounds, props.screen_info.rect); EXPECT_EQ(kScreenBounds, props.screen_info.available_rect); } @@ -1074,34 +1095,26 @@ /* mask_length */ kDisplayFeatureLength}; view_->SetDisplayFeatureForTesting(emulated_display_feature); - // Flush initial state (Init ends up leaving a pending UpdateScreenRects ACK - - // we need this cleared so that the below call to SendScreenRects updates - // RenderWidgetHostImpl members). - host_->OnMessageReceived( - WidgetHostMsg_UpdateScreenRects_ACK(host_->GetRoutingID())); + ClearScreenRects(); view_->SetBounds(screen_rect); host_->SendScreenRects(); - sink_->ClearMessages(); - ASSERT_EQ(0u, sink_->message_count()); + ClearVisualProperties(); // Run SynchronizeVisualProperties and validate the window segments sent to // the renderer are correct. EXPECT_TRUE(host_->SynchronizeVisualProperties()); - ASSERT_EQ(1u, sink_->message_count()); - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - auto window_segments = std::get<0>(params).root_widget_window_segments; + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); + auto window_segments = + widget_.ReceivedVisualProperties().at(0).root_widget_window_segments; EXPECT_EQ(window_segments.size(), 2u); gfx::Rect expected_first_rect(0, 0, 390, 600); EXPECT_EQ(window_segments[0], expected_first_rect); gfx::Rect expected_second_rect(410, 0, 390, 600); EXPECT_EQ(window_segments[1], expected_second_rect); - sink_->ClearMessages(); - ASSERT_EQ(0u, sink_->message_count()); + ClearVisualProperties(); // Setting a bottom inset (simulating virtual keyboard displaying on Aura) // should result in 'shorter' segments. @@ -1110,16 +1123,14 @@ expected_first_rect.Inset(insets); expected_second_rect.Inset(insets); host_->SynchronizeVisualPropertiesIgnoringPendingAck(); - ASSERT_EQ(1u, sink_->message_count()); - msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - auto inset_window_segments = std::get<0>(params).root_widget_window_segments; + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); + auto inset_window_segments = + widget_.ReceivedVisualProperties().at(0).root_widget_window_segments; EXPECT_EQ(inset_window_segments.size(), 2u); EXPECT_EQ(inset_window_segments[0], expected_first_rect); EXPECT_EQ(inset_window_segments[1], expected_second_rect); - sink_->ClearMessages(); - ASSERT_EQ(0u, sink_->message_count()); + ClearVisualProperties(); view_->SetInsets(gfx::Insets(0, 0, 0, 0)); @@ -1129,15 +1140,13 @@ // |SynchronizeVisualPropertiesIgnoringPendingAck()|. view_->SetDisplayFeatureForTesting(base::nullopt); host_->SynchronizeVisualPropertiesIgnoringPendingAck(); - ASSERT_EQ(1u, sink_->message_count()); - msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - auto single_window_segments = std::get<0>(params).root_widget_window_segments; + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); + auto single_window_segments = + widget_.ReceivedVisualProperties().at(0).root_widget_window_segments; EXPECT_EQ(single_window_segments.size(), 1u); EXPECT_EQ(single_window_segments[0], gfx::Rect(0, 0, 800, 600)); - sink_->ClearMessages(); - ASSERT_EQ(0u, sink_->message_count()); + ClearVisualProperties(); // Set a horizontal display feature which results in two window segments // stacked on top of each other. @@ -1147,23 +1156,21 @@ /* mask_length */ kDisplayFeatureLength}; view_->SetDisplayFeatureForTesting(emulated_display_feature); host_->SynchronizeVisualPropertiesIgnoringPendingAck(); - ASSERT_EQ(1u, sink_->message_count()); - msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); auto vertical_window_segments = - std::get<0>(params).root_widget_window_segments; + widget_.ReceivedVisualProperties().at(0).root_widget_window_segments; EXPECT_EQ(vertical_window_segments.size(), 2u); expected_first_rect = gfx::Rect(0, 0, 800, 290); EXPECT_EQ(vertical_window_segments[0], expected_first_rect); expected_second_rect = gfx::Rect(0, 310, 800, 290); EXPECT_EQ(vertical_window_segments[1], expected_second_rect); - sink_->ClearMessages(); - ASSERT_EQ(0u, sink_->message_count()); + ClearVisualProperties(); // If the segments don't change, there should be no IPC message sent. host_->SynchronizeVisualPropertiesIgnoringPendingAck(); - EXPECT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_.ReceivedVisualProperties().size()); } TEST_F(RenderWidgetHostTest, ReceiveFrameTokenFromCrashedRenderer) { @@ -1874,21 +1881,14 @@ } TEST_F(RenderWidgetHostTest, RendererExitedResetsScreenRectsAck) { - auto count_screen_rect_messages = [&]() { - int count = 0; - for (uint32_t i = 0; i < sink_->message_count(); ++i) { - if (sink_->GetMessageAt(i)->type() == WidgetMsg_UpdateScreenRects::ID) - ++count; - } - return count; - }; - // Screen rects are sent during initialization, but we are waiting for an ack. - EXPECT_EQ(1, count_screen_rect_messages()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedScreenRects().size()); // Waiting for the ack prevents further sending. host_->SendScreenRects(); host_->SendScreenRects(); - EXPECT_EQ(1, count_screen_rect_messages()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedScreenRects().size()); // RendererExited will delete the view. host_->SetView(new TestView(host_.get())); @@ -1896,7 +1896,8 @@ // Still can't send until the RenderWidget is replaced. host_->SendScreenRects(); - EXPECT_EQ(1, count_screen_rect_messages()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedScreenRects().size()); // The renderer is recreated. host_->SetView(view_.get()); @@ -1909,25 +1910,19 @@ // The RenderWidget is shown when navigation completes. This sends screen // rects again. The IPC is sent as it's not waiting for an ack. host_->WasShown(base::nullopt); - EXPECT_EQ(2, count_screen_rect_messages()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(2u, widget_.ReceivedScreenRects().size()); } TEST_F(RenderWidgetHostTest, DestroyingRenderWidgetResetsScreenRectsAck) { - auto count_screen_rect_messages = [&]() { - int count = 0; - for (uint32_t i = 0; i < sink_->message_count(); ++i) { - if (sink_->GetMessageAt(i)->type() == WidgetMsg_UpdateScreenRects::ID) - ++count; - } - return count; - }; - // Screen rects are sent during initialization, but we are waiting for an ack. - EXPECT_EQ(1, count_screen_rect_messages()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedScreenRects().size()); // Waiting for the ack prevents further sending. host_->SendScreenRects(); host_->SendScreenRects(); - EXPECT_EQ(1, count_screen_rect_messages()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedScreenRects().size()); // The RenderWidget has been destroyed in the renderer. EXPECT_CALL(mock_owner_delegate_, IsMainFrameActive()) @@ -1935,7 +1930,8 @@ // Still can't send until the RenderWidget is replaced. host_->SendScreenRects(); - EXPECT_EQ(1, count_screen_rect_messages()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedScreenRects().size()); // Make a new RenderWidget when the renderer is recreated and inform that a // RenderWidget is being created. @@ -1947,7 +1943,8 @@ // We are able to send screen rects again. The IPC is sent as it's not waiting // for an ack. host_->SendScreenRects(); - EXPECT_EQ(2, count_screen_rect_messages()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(2u, widget_.ReceivedScreenRects().size()); } // Regression test for http://crbug.com/401859 and http://crbug.com/522795. @@ -2025,19 +2022,16 @@ } TEST_F(RenderWidgetHostTest, HideUnthrottlesResize) { - sink_->ClearMessages(); + ClearVisualProperties(); view_->SetBounds(gfx::Rect(100, 100)); EXPECT_TRUE(host_->SynchronizeVisualProperties()); - // WidgetMsg_UpdateVisualProperties is sent to the renderer. - ASSERT_EQ(1u, sink_->message_count()); + // blink::mojom::Widget::UpdateVisualProperties sent to the renderer. + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(1u, widget_.ReceivedVisualProperties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); // Size sent to the renderer. - EXPECT_EQ(gfx::Size(100, 100), visual_properties.new_size); + EXPECT_EQ(gfx::Size(100, 100), + widget_.ReceivedVisualProperties().at(0).new_size); } // An ack is pending, throttling further updates. EXPECT_TRUE(host_->visual_properties_ack_pending_);
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc index 8ef4ff1..4687bc15 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -67,6 +67,7 @@ #include "content/public/test/mock_render_process_host.h" #include "content/public/test/test_browser_context.h" #include "content/test/mock_render_widget_host_delegate.h" +#include "content/test/mock_widget.h" #include "content/test/test_overscroll_delegate.h" #include "content/test/test_render_view_host.h" #include "content/test/test_web_contents.h" @@ -366,6 +367,24 @@ return ret; } + void ClearVisualProperties() { + base::RunLoop().RunUntilIdle(); + widget_.ClearVisualProperties(); + } + + void ClearScreenRects() { + base::RunLoop().RunUntilIdle(); + widget_.ClearScreenRects(); + } + + const std::vector<blink::VisualProperties>& visual_properties() { + return widget_.ReceivedVisualProperties(); + } + + const std::vector<std::pair<gfx::Rect, gfx::Rect>>& screen_rects() { + return widget_.ReceivedScreenRects(); + } + static MockRenderWidgetHostImpl* Create(RenderWidgetHostDelegate* delegate, RenderProcessHost* process, int32_t routing_id) { @@ -398,12 +417,9 @@ std::make_unique<FrameTokenMessageQueue>()) { lastWheelOrTouchEventLatencyInfo = ui::LatencyInfo(); mojo::AssociatedRemote<blink::mojom::WidgetHost> blink_widget_host; - mojo::AssociatedRemote<blink::mojom::Widget> blink_widget; - auto blink_widget_receiver = - blink_widget.BindNewEndpointAndPassDedicatedReceiverForTesting(); BindWidgetInterfaces( blink_widget_host.BindNewEndpointAndPassDedicatedReceiverForTesting(), - blink_widget.Unbind()); + widget_.GetNewRemote()); } void NotifyNewContentRenderingTimeoutForTesting() override { @@ -412,6 +428,7 @@ bool new_content_rendering_timeout_fired_ = false; MockWidgetInputHandler input_handler_; + MockWidget widget_; base::Optional<WebGestureEvent> last_forwarded_gesture_event_; }; @@ -1081,41 +1098,25 @@ view_ = nullptr; // Flush the state after initial setup is done. - widget_host_->OnMessageReceived( - WidgetHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID())); - widget_host_->OnMessageReceived( - WidgetHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID())); - sink_->ClearMessages(); + widget_host_->ClearScreenRects(); // Move parents. parent2->SetBounds(gfx::Rect(20, 20, 200, 200)); - ASSERT_EQ(1U, sink_->message_count()); - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(static_cast<uint32_t>(WidgetMsg_UpdateScreenRects::ID), - msg->type()); - WidgetMsg_UpdateScreenRects::Param params; - WidgetMsg_UpdateScreenRects::Read(msg, ¶ms); - EXPECT_EQ(gfx::Rect(21, 21, 100, 100), std::get<0>(params)); - EXPECT_EQ(gfx::Rect(1, 1, 300, 300), std::get<1>(params)); - sink_->ClearMessages(); - widget_host_->OnMessageReceived( - WidgetHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID())); - // There should not be any pending update. - EXPECT_EQ(0U, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1U, widget_host_->screen_rects().size()); + EXPECT_EQ(gfx::Rect(21, 21, 100, 100), + widget_host_->screen_rects().at(0).first); + EXPECT_EQ(gfx::Rect(1, 1, 300, 300), + widget_host_->screen_rects().at(0).second); + widget_host_->ClearScreenRects(); parent1->SetBounds(gfx::Rect(10, 10, 300, 300)); - ASSERT_EQ(1U, sink_->message_count()); - msg = sink_->GetMessageAt(0); - ASSERT_EQ(static_cast<uint32_t>(WidgetMsg_UpdateScreenRects::ID), - msg->type()); - WidgetMsg_UpdateScreenRects::Read(msg, ¶ms); - EXPECT_EQ(gfx::Rect(30, 30, 100, 100), std::get<0>(params)); - EXPECT_EQ(gfx::Rect(10, 10, 300, 300), std::get<1>(params)); - sink_->ClearMessages(); - widget_host_->OnMessageReceived( - WidgetHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID())); - // There should not be any pending update. - EXPECT_EQ(0U, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1U, widget_host_->screen_rects().size()); + EXPECT_EQ(gfx::Rect(30, 30, 100, 100), + widget_host_->screen_rects().at(0).first); + EXPECT_EQ(gfx::Rect(10, 10, 300, 300), + widget_host_->screen_rects().at(0).second); } // Checks that a fullscreen view is destroyed when it loses the focus. @@ -2533,20 +2534,18 @@ parent_view_->GetNativeView()->GetRootWindow(), gfx::Rect()); - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); view_->SetSize(gfx::Size(100, 100)); // Physical pixel size. EXPECT_EQ(gfx::Size(100, 100), view_->GetCompositorViewportPixelSize()); // Update to the renderer. - ASSERT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); // DIP size. EXPECT_EQ(gfx::Size(100, 100), visual_properties.new_size); // Physical pixel size. @@ -2562,6 +2561,7 @@ ->OnLocalSurfaceIdChanged(metadata); } sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); // Device scale factor changes to 2, so the physical pixel sizes should // change, while the DIP sizes do not. @@ -2570,13 +2570,11 @@ // Physical pixel size. EXPECT_EQ(gfx::Size(200, 200), view_->GetCompositorViewportPixelSize()); // Update to the renderer. - ASSERT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); // DIP size. EXPECT_EQ(gfx::Size(100, 100), visual_properties.new_size); // Physical pixel size. @@ -2591,20 +2589,18 @@ static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) ->OnLocalSurfaceIdChanged(metadata); } - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); aura_test_helper_->GetTestScreen()->SetDeviceScaleFactor(1.0f); // Physical pixel size. EXPECT_EQ(gfx::Size(100, 100), view_->GetCompositorViewportPixelSize()); // Update to the renderer. - ASSERT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); // DIP size. EXPECT_EQ(gfx::Size(100, 100), visual_properties.new_size); // Physical pixel size. @@ -2614,7 +2610,7 @@ } // This test verifies that in AutoResize mode a new -// WidgetMsg_UpdateVisualProperties message is sent when ScreenInfo +// blink::mojom::Widget::UpdateVisualProperties message is sent when ScreenInfo // changes and that message contains the latest ScreenInfo. TEST_F(RenderWidgetHostViewAuraTest, AutoResizeWithScale) { view_->InitAsChild(nullptr); @@ -2626,18 +2622,16 @@ view_->GetLocalSurfaceIdAllocation(); EXPECT_TRUE(host_local_surface_id_allocation.IsValid()); - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); view_->EnableAutoResize(gfx::Size(50, 50), gfx::Size(100, 100)); // Update to the renderer. It includes the current LocalSurfaceIdAllocation. - ASSERT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); // Auto resize parameters that we set above. EXPECT_EQ(gfx::Size(50, 50), visual_properties.min_size_for_auto_resize); EXPECT_EQ(gfx::Size(100, 100), visual_properties.max_size_for_auto_resize); @@ -2668,20 +2662,17 @@ } // Changing the device scale factor updates the renderer. - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); aura_test_helper_->GetTestScreen()->SetDeviceScaleFactor(2.0f); // Update to the renderer. // TODO(samans): There should be only one message in the sink, but some // testers are seeing two (crrev.com/c/839580). Investigate why. - ASSERT_LE(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = - sink_->GetFirstMessageMatching(WidgetMsg_UpdateVisualProperties::ID); - ASSERT_TRUE(msg); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); // Auto resize parameters did not change as they DIP values. EXPECT_EQ(gfx::Size(50, 50), visual_properties.min_size_for_auto_resize); EXPECT_EQ(gfx::Size(100, 100), visual_properties.max_size_for_auto_resize); @@ -2697,7 +2688,8 @@ } // This test verifies that in AutoResize mode a new -// WidgetMsg_UpdateVisualProperties message is sent when size changes. +// blink::mojom::Widget::UpdateVisualProperties message is sent when size +// changes. TEST_F(RenderWidgetHostViewAuraTest, AutoResizeWithBrowserInitiatedResize) { view_->InitAsChild(nullptr); aura::client::ParentWindowWithContext( @@ -2707,17 +2699,15 @@ view_->GetLocalSurfaceIdAllocation()); EXPECT_TRUE(host_local_surface_id_allocation.IsValid()); - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); view_->EnableAutoResize(gfx::Size(50, 50), gfx::Size(100, 100)); - // WidgetMsg_UpdateVisualProperties is sent to the renderer. - ASSERT_EQ(1u, sink_->message_count()); + // blink::mojom::Widget::UpdateVisualProperties is sent to the renderer. + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); // Auto-resizve limits sent to the renderer. EXPECT_EQ(gfx::Size(50, 50), visual_properties.min_size_for_auto_resize); EXPECT_EQ(gfx::Size(100, 100), visual_properties.max_size_for_auto_resize); @@ -2747,17 +2737,15 @@ // Do a resize in the browser. It does not apply, but VisualProperties are // sent. (Why?) - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); view_->SetSize(gfx::Size(120, 120)); - // WidgetMsg_UpdateVisualProperties is sent to the renderer. - ASSERT_EQ(1u, sink_->message_count()); + // blink::mojom::Widget::UpdateVisualProperties is sent to the renderer. + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); // Auto-resizve limits sent to the renderer. EXPECT_EQ(gfx::Size(50, 50), visual_properties.min_size_for_auto_resize); EXPECT_EQ(gfx::Size(100, 100), visual_properties.max_size_for_auto_resize); @@ -2807,14 +2795,14 @@ // This test verifies that if the parent is hidden when the child sends a // child-allocated viz::LocalSurfaceId, the parent will store it and it will -// not send a WidgetMsg_UpdateVisualProperties back to the child. +// not send a blink::mojom::Widget::UpdateVisualProperties back to the child. TEST_F(RenderWidgetHostViewAuraTest, ChildAllocationAcceptedInParentWhileHidden) { view_->InitAsChild(nullptr); aura::client::ParentWindowWithContext( view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), gfx::Rect()); - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); viz::LocalSurfaceIdAllocation local_surface_id_allocation1( view_->GetLocalSurfaceIdAllocation()); EXPECT_TRUE(local_surface_id_allocation1.IsValid()); @@ -2842,8 +2830,8 @@ EXPECT_NE(local_surface_id_allocation1, local_surface_id_allocation3); EXPECT_EQ(local_surface_id_allocation2, local_surface_id_allocation3); - EXPECT_FALSE( - sink_->GetUniqueMessageMatching(WidgetMsg_UpdateVisualProperties::ID)); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0u, widget_host_->visual_properties().size()); } // This test verifies that when the child and parent both allocate their own @@ -3036,13 +3024,11 @@ EXPECT_EQ(gfx::Rect(), parent_layer->bounds()); // Update to the renderer. - ASSERT_EQ(2u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(1); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); // Empty size is sent. EXPECT_EQ(gfx::Size(), visual_properties.new_size); // A LocalSurfaceIdAllocation is sent too. @@ -3117,21 +3103,15 @@ ->OnLocalSurfaceIdChanged(metadata); EXPECT_FALSE(widget_host_->visual_properties_ack_pending_for_testing()); } - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); // Resize the renderer. This should produce an UpdateVisualProperties IPC. view_->SetSize(size2); EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); EXPECT_TRUE(widget_host_->visual_properties_ack_pending_for_testing()); - ASSERT_EQ(1u, sink_->message_count()); - { - const IPC::Message* msg = sink_->GetMessageAt(0); - EXPECT_EQ(static_cast<uint32_t>(WidgetMsg_UpdateVisualProperties::ID), - msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - EXPECT_EQ(size2, std::get<0>(params).new_size); - } + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); + EXPECT_EQ(size2, widget_host_->visual_properties().at(0).new_size); // Render should send back RenderFrameMetadata with new size. { cc::RenderFrameMetadata metadata; @@ -3140,12 +3120,13 @@ ->OnLocalSurfaceIdChanged(metadata); EXPECT_FALSE(widget_host_->visual_properties_ack_pending_for_testing()); } - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); // Calling SetSize() with the current size should be a no-op. view_->SetSize(size2); EXPECT_FALSE(widget_host_->visual_properties_ack_pending_for_testing()); - ASSERT_EQ(0u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(0u, widget_host_->visual_properties().size()); } // This test verifies that the primary SurfaceId is populated on resize. @@ -3400,7 +3381,7 @@ parent_view_->GetNativeView()->GetRootWindow(), gfx::Rect()); - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); view_->SetSize(view_rect.size()); view_->Show(); @@ -3408,13 +3389,11 @@ EXPECT_EQ(100, view_->GetVisibleViewportSize().height()); // Update to the renderer. - ASSERT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); EXPECT_EQ(gfx::Size(100, 100), visual_properties.new_size); EXPECT_EQ(gfx::Size(100, 100), visual_properties.visible_viewport_size); } @@ -3426,19 +3405,17 @@ static_cast<RenderFrameMetadataProvider::Observer*>(widget_host_) ->OnLocalSurfaceIdChanged(metadata); } - sink_->ClearMessages(); + widget_host_->ClearVisualProperties(); view_->SetInsets(gfx::Insets(0, 0, 40, 0)); EXPECT_EQ(60, view_->GetVisibleViewportSize().height()); // Update to the renderer has the inset size. - ASSERT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_host_->visual_properties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties visual_properties = std::get<0>(params); + blink::VisualProperties visual_properties = + widget_host_->visual_properties().at(0); EXPECT_EQ(gfx::Size(100, 100), visual_properties.new_size); EXPECT_EQ(gfx::Size(100, 60), visual_properties.visible_viewport_size); }
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc b/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc index c7385554..b861375 100644 --- a/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc
@@ -33,6 +33,7 @@ #include "content/public/test/mock_render_process_host.h" #include "content/public/test/test_browser_context.h" #include "content/test/mock_render_widget_host_delegate.h" +#include "content/test/mock_widget.h" #include "content/test/test_render_view_host.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -125,12 +126,9 @@ /*hidden=*/false, std::make_unique<FrameTokenMessageQueue>()); mojo::AssociatedRemote<blink::mojom::WidgetHost> blink_widget_host; - mojo::AssociatedRemote<blink::mojom::Widget> blink_widget; - auto blink_widget_receiver = - blink_widget.BindNewEndpointAndPassDedicatedReceiverForTesting(); widget_host_->BindWidgetInterfaces( blink_widget_host.BindNewEndpointAndPassDedicatedReceiverForTesting(), - blink_widget.Unbind()); + widget_.GetNewRemote()); mojo::AssociatedRemote<blink::mojom::FrameWidgetHost> frame_widget_host; mojo::AssociatedRemote<blink::mojom::FrameWidget> frame_widget; @@ -185,6 +183,7 @@ std::unique_ptr<BrowserContext> browser_context_; IPC::TestSink* sink_ = nullptr; MockRenderWidgetHostDelegate delegate_; + MockWidget widget_; // Tests should set these to NULL if they've already triggered their // destruction. @@ -300,18 +299,17 @@ visual_properties.local_surface_id_allocation = local_surface_id_allocation; visual_properties.root_widget_window_segments.emplace_back(1, 2, 3, 4); - sink_->ClearMessages(); + base::RunLoop().RunUntilIdle(); + widget_.ClearVisualProperties(); test_frame_connector_->SynchronizeVisualProperties(frame_sink_id, visual_properties); // Update to the renderer. - ASSERT_EQ(1u, sink_->message_count()); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(1u, widget_.ReceivedVisualProperties().size()); { - const IPC::Message* msg = sink_->GetMessageAt(0); - ASSERT_EQ(WidgetMsg_UpdateVisualProperties::ID, msg->type()); - WidgetMsg_UpdateVisualProperties::Param params; - WidgetMsg_UpdateVisualProperties::Read(msg, ¶ms); - blink::VisualProperties sent_visual_properties = std::get<0>(params); + blink::VisualProperties sent_visual_properties = + widget_.ReceivedVisualProperties().at(0); EXPECT_EQ(compositor_viewport_pixel_rect, sent_visual_properties.compositor_viewport_pixel_rect);
diff --git a/content/browser/site_per_process_hit_test_browsertest.cc b/content/browser/site_per_process_hit_test_browsertest.cc index a2878215..219230e2 100644 --- a/content/browser/site_per_process_hit_test_browsertest.cc +++ b/content/browser/site_per_process_hit_test_browsertest.cc
@@ -4225,14 +4225,18 @@ void SetCursor(const ui::Cursor& cursor) override { GetForwardingInterface()->SetCursor(cursor); + cursor_ = cursor; run_loop_.Quit(); } void Wait() { run_loop_.Run(); } + base::Optional<ui::Cursor> cursor() const { return cursor_; } + private: base::RunLoop run_loop_; RenderWidgetHostImpl* render_widget_host_; + base::Optional<ui::Cursor> cursor_; }; // Verify that we receive a mouse cursor update message when we mouse over @@ -4331,6 +4335,82 @@ CursorUpdateReceivedFromCrossSiteIframeHelper(shell(), embedded_test_server()); } + +// Regression test for https://crbug.com/1099276. An OOPIF at a negative offset +// from the main document should not allow large cursors to intersect browser +// UI. +IN_PROC_BROWSER_TEST_F(SitePerProcessHitTestBrowserTest, + LargeCursorRemovedInOffsetOOPIF) { + GURL url(R"(data:text/html, + <iframe id='iframe' + style ='position:absolute; top: -100px' + width=1000px height=1000px> + </iframe>)"); + EXPECT_TRUE(NavigateToURL(shell(), url)); + + // The large-cursor.html document has a custom cursor that is 120x120 with a + // hotspot on the bottom right corner. + NavigateIframeToURL(shell()->web_contents(), "iframe", + embedded_test_server()->GetURL("/large-cursor.html")); + + auto* web_contents = static_cast<WebContentsImpl*>(shell()->web_contents()); + FrameTreeNode* root = web_contents->GetFrameTree()->root(); + + FrameTreeNode* child_node = root->child_at(0); + EXPECT_NE(shell()->web_contents()->GetSiteInstance(), + child_node->current_frame_host()->GetSiteInstance()); + + WaitForHitTestData(child_node->current_frame_host()); + + RenderWidgetHostViewBase* root_view = static_cast<RenderWidgetHostViewBase*>( + root->current_frame_host()->GetRenderWidgetHost()->GetView()); + RenderWidgetHostImpl* rwh_child = + root->child_at(0)->current_frame_host()->GetRenderWidgetHost(); + RenderWidgetHostViewBase* child_view = + static_cast<RenderWidgetHostViewBase*>(rwh_child->GetView()); + + auto* router = web_contents->GetInputEventRouter(); + RenderWidgetHostMouseEventMonitor child_monitor( + child_view->GetRenderWidgetHost()); + RenderWidgetHostMouseEventMonitor root_monitor( + root_view->GetRenderWidgetHost()); + + // A cursor with enough room in the root view to fully display without + // blocking native UI should be shown. + { + blink::WebMouseEvent mouse_event( + blink::WebInputEvent::Type::kMouseMove, + blink::WebInputEvent::kNoModifiers, + blink::WebInputEvent::GetStaticTimeStampForTests()); + SetWebEventPositions(&mouse_event, gfx::Point(300, 300), root_view); + auto set_cursor_interceptor = + std::make_unique<SetCursorInterceptor>(rwh_child); + RouteMouseEventAndWaitUntilDispatch(router, root_view, child_view, + &mouse_event); + set_cursor_interceptor->Wait(); + EXPECT_TRUE(set_cursor_interceptor->cursor().has_value()); + EXPECT_EQ(120, set_cursor_interceptor->cursor()->custom_bitmap().width()); + EXPECT_EQ(120, set_cursor_interceptor->cursor()->custom_bitmap().height()); + } + // A cursor without enough room to be fully enclosed within the root view + // should not be shown, even if the iframe is at an offset. + { + blink::WebMouseEvent mouse_event( + blink::WebInputEvent::Type::kMouseMove, + blink::WebInputEvent::kNoModifiers, + blink::WebInputEvent::GetStaticTimeStampForTests()); + SetWebEventPositions(&mouse_event, gfx::Point(300, 115), root_view); + auto set_cursor_interceptor = + std::make_unique<SetCursorInterceptor>(rwh_child); + RouteMouseEventAndWaitUntilDispatch(router, root_view, child_view, + &mouse_event); + // We should see a new cursor come in that replaces the large one. + set_cursor_interceptor->Wait(); + EXPECT_TRUE(set_cursor_interceptor->cursor().has_value()); + EXPECT_NE(120, set_cursor_interceptor->cursor()->custom_bitmap().width()); + EXPECT_NE(120, set_cursor_interceptor->cursor()->custom_bitmap().height()); + } +} #endif // !defined(OS_ANDROID) #if defined(USE_AURA)
diff --git a/content/common/common_param_traits_macros.h b/content/common/common_param_traits_macros.h index 32faa88..c1baffb 100644 --- a/content/common/common_param_traits_macros.h +++ b/content/common/common_param_traits_macros.h
@@ -28,27 +28,4 @@ IPC_ENUM_TRAITS_MAX_VALUE(blink::mojom::ScreenOrientation, blink::mojom::ScreenOrientation::kMaxValue) -IPC_ENUM_TRAITS_MAX_VALUE(blink::mojom::DisplayMode, - blink::mojom::DisplayMode::kMaxValue) - -IPC_STRUCT_TRAITS_BEGIN(blink::VisualProperties) - IPC_STRUCT_TRAITS_MEMBER(screen_info) - IPC_STRUCT_TRAITS_MEMBER(auto_resize_enabled) - IPC_STRUCT_TRAITS_MEMBER(min_size_for_auto_resize) - IPC_STRUCT_TRAITS_MEMBER(max_size_for_auto_resize) - IPC_STRUCT_TRAITS_MEMBER(new_size) - IPC_STRUCT_TRAITS_MEMBER(visible_viewport_size) - IPC_STRUCT_TRAITS_MEMBER(compositor_viewport_pixel_rect) - IPC_STRUCT_TRAITS_MEMBER(browser_controls_params) - IPC_STRUCT_TRAITS_MEMBER(scroll_focused_node_into_view) - IPC_STRUCT_TRAITS_MEMBER(local_surface_id_allocation) - IPC_STRUCT_TRAITS_MEMBER(is_fullscreen_granted) - IPC_STRUCT_TRAITS_MEMBER(display_mode) - IPC_STRUCT_TRAITS_MEMBER(capture_sequence_number) - IPC_STRUCT_TRAITS_MEMBER(zoom_level) - IPC_STRUCT_TRAITS_MEMBER(page_scale_factor) - IPC_STRUCT_TRAITS_MEMBER(root_widget_window_segments) - IPC_STRUCT_TRAITS_MEMBER(is_pinch_gesture_active) -IPC_STRUCT_TRAITS_END() - #endif // CONTENT_COMMON_COMMON_PARAM_TRAITS_MACROS_H_
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h index dad296f..e5632a9 100644 --- a/content/common/frame_messages.h +++ b/content/common/frame_messages.h
@@ -425,6 +425,10 @@ content::CustomContextMenuContext /* custom_context */, unsigned /* action */) +// Requests that the RenderFrame send back a response after waiting for the +// commit, activation and frame swap of the current DOM tree in blink. +IPC_MESSAGE_ROUTED1(FrameMsg_VisualStateRequest, uint64_t /* id */) + #if BUILDFLAG(ENABLE_PLUGINS) // Notifies the renderer of updates to the Plugin Power Saver origin allowlist. IPC_MESSAGE_ROUTED1(FrameMsg_UpdatePluginContentOriginAllowlist, @@ -636,6 +640,10 @@ uint32_t /* the offset of the text in the document */, gfx::Range /* selection range in the document */) +// Sent as a response to FrameMsg_VisualStateRequest. +// The message is delivered using RenderWidget::QueueMessage. +IPC_MESSAGE_ROUTED1(FrameHostMsg_VisualStateResponse, uint64_t /* id */) + // Adding a new message? Stick to the sort order above: first platform // independent FrameMsg, then ifdefs for platform specific FrameMsg, then // platform independent FrameHostMsg, then ifdefs for platform specific
diff --git a/content/common/widget_messages.h b/content/common/widget_messages.h index b877905..2888ae16 100644 --- a/content/common/widget_messages.h +++ b/content/common/widget_messages.h
@@ -94,24 +94,18 @@ // are in progress. IPC_MESSAGE_ROUTED0(WidgetMsg_SetBounds_ACK) -// Updates a RenderWidget's visual properties. This should include all -// geometries and compositing inputs so that they are updated atomically. -IPC_MESSAGE_ROUTED1(WidgetMsg_UpdateVisualProperties, - blink::VisualProperties /* visual_properties */) - -// Informs the RenderWidget of its position on the user's screen, as well as -// the position of the native window holding the RenderWidget. -// TODO(danakj): These should be part of UpdateVisualProperties. -IPC_MESSAGE_ROUTED2(WidgetMsg_UpdateScreenRects, - gfx::Rect /* widget_screen_rect */, - gfx::Rect /* window_screen_rect */) - // Sent by a parent frame to notify its child about the state of the child's // intersection with the parent's viewport, primarily for use by the // IntersectionObserver API. Also see FrameHostMsg_UpdateViewportIntersection. IPC_MESSAGE_ROUTED1(WidgetMsg_SetViewportIntersection, blink::ViewportIntersectionState /* intersection_state */) + +// Sent by the browser to synchronize with the next compositor frame by +// requesting an ACK be queued. Used only for tests. +IPC_MESSAGE_ROUTED1(WidgetMsg_WaitForNextFrameForTests, + int /* main_frame_thread_observer_routing_id */) + // // Renderer -> Browser Messages. // @@ -122,10 +116,6 @@ // message to close the widget. IPC_MESSAGE_ROUTED0(WidgetHostMsg_Close) -// Sent in response to a WidgetMsg_UpdateScreenRects so that the renderer can -// throttle these messages. -IPC_MESSAGE_ROUTED0(WidgetHostMsg_UpdateScreenRects_ACK) - // Sent by the renderer process to request that the browser change the bounds of // the widget. This corresponds to the window.resizeTo() and window.moveTo() // APIs, and the browser may ignore this message. @@ -144,4 +134,7 @@ // Close message. IPC_MESSAGE_CONTROL1(WidgetHostMsg_Close_ACK, int /* old_route_id */) +// Sent in reply to WidgetMsg_WaitForNextFrameForTests. +IPC_MESSAGE_ROUTED0(WidgetHostMsg_WaitForNextFrameForTests_ACK) + #endif // CONTENT_COMMON_WIDGET_MESSAGES_H_
diff --git a/content/public/browser/render_frame_host.h b/content/public/browser/render_frame_host.h index 2f51d90f..a6ee392 100644 --- a/content/public/browser/render_frame_host.h +++ b/content/public/browser/render_frame_host.h
@@ -304,7 +304,7 @@ // changes to the contents resulting from operations executed prior to this // call are visible on screen. The call completes asynchronously by running // the supplied |callback| with a value of true upon successful completion and - // false otherwise when the widget is destroyed. + // false otherwise (when the frame is destroyed, detached, etc..). using VisualStateCallback = base::OnceCallback<void(bool)>; virtual void InsertVisualStateCallback(VisualStateCallback callback) = 0;
diff --git a/content/public/browser/supported_delegations.cc b/content/public/browser/supported_delegations.cc index d9066345..5803f69 100644 --- a/content/public/browser/supported_delegations.cc +++ b/content/public/browser/supported_delegations.cc
@@ -10,4 +10,19 @@ SupportedDelegations::~SupportedDelegations() = default; -} // namespace content \ No newline at end of file +bool SupportedDelegations::ProvidesAll( + const payments::mojom::PaymentOptionsPtr& payment_options) const { + if (!payment_options) + return true; + if (payment_options->request_shipping && !shipping_address) + return false; + if (payment_options->request_payer_name && !payer_name) + return false; + if (payment_options->request_payer_phone && !payer_phone) + return false; + if (payment_options->request_payer_email && !payer_email) + return false; + return true; +} + +} // namespace content
diff --git a/content/public/browser/supported_delegations.h b/content/public/browser/supported_delegations.h index 817e5155..91e9d49b 100644 --- a/content/public/browser/supported_delegations.h +++ b/content/public/browser/supported_delegations.h
@@ -6,6 +6,7 @@ #define CONTENT_PUBLIC_BROWSER_SUPPORTED_DELEGATIONS_H_ #include "content/common/content_export.h" +#include "third_party/blink/public/mojom/payments/payment_request.mojom.h" namespace content { @@ -18,6 +19,9 @@ bool payer_name = false; bool payer_phone = false; bool payer_email = false; + + bool ProvidesAll( + const payments::mojom::PaymentOptionsPtr& payment_options) const; }; } // namespace content
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc index 561901eb..4ee793f3 100644 --- a/content/public/test/browser_test_utils.cc +++ b/content/public/test/browser_test_utils.cc
@@ -2651,25 +2651,40 @@ MainThreadFrameObserver::MainThreadFrameObserver( RenderWidgetHost* render_widget_host) : render_widget_host_(render_widget_host), - routing_id_(render_widget_host_->GetProcess()->GetNextRoutingID()) {} + routing_id_(render_widget_host_->GetProcess()->GetNextRoutingID()) { + // TODO(lfg): We should look into adding a way to observe RenderWidgetHost + // messages similarly to what WebContentsObserver can do with RFH and RVW. + render_widget_host_->GetProcess()->AddRoute(routing_id_, this); +} -MainThreadFrameObserver::~MainThreadFrameObserver() = default; +MainThreadFrameObserver::~MainThreadFrameObserver() { + render_widget_host_->GetProcess()->RemoveRoute(routing_id_); +} void MainThreadFrameObserver::Wait() { DCHECK_CURRENTLY_ON(BrowserThread::UI); - static_cast<RenderWidgetHostImpl*>(render_widget_host_) - ->InsertVisualStateCallback(base::BindOnce(&MainThreadFrameObserver::Quit, - base::Unretained(this))); + render_widget_host_->Send(new WidgetMsg_WaitForNextFrameForTests( + render_widget_host_->GetRoutingID(), routing_id_)); base::RunLoop run_loop; quit_closure_ = run_loop.QuitClosure(); run_loop.Run(); } -void MainThreadFrameObserver::Quit(bool) { +void MainThreadFrameObserver::Quit() { if (quit_closure_) std::move(quit_closure_).Run(); } +bool MainThreadFrameObserver::OnMessageReceived(const IPC::Message& msg) { + if (msg.type() == WidgetHostMsg_WaitForNextFrameForTests_ACK::ID && + msg.routing_id() == routing_id_) { + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, + base::BindOnce(&MainThreadFrameObserver::Quit, base::Unretained(this))); + } + return true; +} + InputMsgWatcher::InputMsgWatcher(RenderWidgetHost* render_widget_host, blink::WebInputEvent::Type type) : render_widget_host_(render_widget_host),
diff --git a/content/public/test/browser_test_utils.h b/content/public/test/browser_test_utils.h index f0ed1a8..83514d8 100644 --- a/content/public/test/browser_test_utils.h +++ b/content/public/test/browser_test_utils.h
@@ -1307,17 +1307,20 @@ // So while the ACK can arrive before a CompositorFrame submission occurs. The // processing does not occur until after the FrameToken for that frame // submission arrives to the main thread. -class MainThreadFrameObserver { +class MainThreadFrameObserver : public IPC::Listener { public: explicit MainThreadFrameObserver(RenderWidgetHost* render_widget_host); - ~MainThreadFrameObserver(); + ~MainThreadFrameObserver() override; // Synchronizes the browser main thread with the renderer main thread and impl // thread. void Wait(); + // Overridden IPC::Listener methods. + bool OnMessageReceived(const IPC::Message& msg) override; + private: - void Quit(bool); + void Quit(); RenderWidgetHost* render_widget_host_; base::OnceClosure quit_closure_;
diff --git a/content/public/test/fake_frame_widget.h b/content/public/test/fake_frame_widget.h index 7025daf5..40c4de8 100644 --- a/content/public/test/fake_frame_widget.h +++ b/content/public/test/fake_frame_widget.h
@@ -60,9 +60,6 @@ #endif void ShowContextMenu(ui::MenuSourceType source_type, const gfx::Point& location) override {} - void BindWidgetCompositor( - mojo::PendingReceiver<blink::mojom::WidgetCompositor> receiver) override { - } mojo::AssociatedReceiver<blink::mojom::FrameWidget> receiver_; base::i18n::TextDirection text_direction_ =
diff --git a/content/public/test/render_view_test.cc b/content/public/test/render_view_test.cc index ad276b82..e9e68b4 100644 --- a/content/public/test/render_view_test.cc +++ b/content/public/test/render_view_test.cc
@@ -738,9 +738,7 @@ visual_properties.is_fullscreen_granted = is_fullscreen_granted; visual_properties.display_mode = blink::mojom::DisplayMode::kBrowser; - WidgetMsg_UpdateVisualProperties resize_msg(render_widget->routing_id(), - visual_properties); - render_widget->OnMessageReceived(resize_msg); + render_widget->UpdateVisualProperties(visual_properties); } void RenderViewTest::SimulateUserTypingASCIICharacter(char ascii_character,
diff --git a/content/renderer/android/synchronous_layer_tree_frame_sink_impl.cc b/content/renderer/android/synchronous_layer_tree_frame_sink_impl.cc index 8f1c6c2..b0eb655 100644 --- a/content/renderer/android/synchronous_layer_tree_frame_sink_impl.cc +++ b/content/renderer/android/synchronous_layer_tree_frame_sink_impl.cc
@@ -358,7 +358,7 @@ // The embedding RenderPass covers the entire Display's area. const auto& embed_render_pass = embed_frame.render_pass_list.back(); - embed_render_pass->SetNew(1, gfx::Rect(display_size), + embed_render_pass->SetNew(viz::RenderPassId{1}, gfx::Rect(display_size), gfx::Rect(display_size), gfx::Transform()); embed_render_pass->has_transparent_background = false;
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc index 248a0ec..5ea8ee6 100644 --- a/content/renderer/pepper/pepper_plugin_instance_impl.cc +++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -1956,22 +1956,18 @@ #if BUILDFLAG(ENABLE_PRINTING) DCHECK(plugin_print_interface_); - // When compositing to PDF output, the |canvas| metafile is not the - // document metafile, and cannot be used for getting the final PDF. - if (current_print_settings_.format != PP_PRINTOUTPUTFORMAT_PDF) { - // |canvas| should always have an associated metafile. - auto* metafile = canvas->GetPrintingMetafile(); - DCHECK(metafile); + // |canvas| should always have an associated metafile. + auto* metafile = canvas->GetPrintingMetafile(); + DCHECK(metafile); - // |ranges_| should be empty IFF |metafile_| is not set. - DCHECK_EQ(ranges_.empty(), !metafile_); - if (metafile_) { - // The metafile should be the same across all calls for a given print job. - DCHECK_EQ(metafile_, metafile); - } else { - // Store |metafile| on the first call. - metafile_ = metafile; - } + // |ranges_| should be empty IFF |metafile_| is not set. + DCHECK_EQ(ranges_.empty(), !metafile_); + if (metafile_) { + // The metafile should be the same across all calls for a given print job. + DCHECK_EQ(metafile_, metafile); + } else { + // Store |metafile| on the first call. + metafile_ = metafile; } PP_PrintPageNumberRange_Dev page_range = {page_number, page_number}; @@ -1988,7 +1984,8 @@ PP_Resource print_output = plugin_print_interface_->PrintPages( pp_instance(), ranges_.data(), ranges_.size()); if (print_output) { - if (current_print_settings_.format == PP_PRINTOUTPUTFORMAT_RASTER) { + if (current_print_settings_.format == PP_PRINTOUTPUTFORMAT_PDF || + current_print_settings_.format == PP_PRINTOUTPUTFORMAT_RASTER) { PrintPDFOutput(print_output, metafile_); }
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 25d1da2..4b25d73 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -1482,7 +1482,7 @@ // we need at least one update to them in order to meet expectations in the // renderer, and that update comes as part of the CreateFrame message. // TODO(crbug.com/419087): This could become part of RenderWidget Init. - render_widget->OnUpdateVisualProperties(params->visual_properties); + render_widget->UpdateVisualProperties(params->visual_properties); render_frame->render_widget_ = render_widget.get(); render_frame->owned_render_widget_ = std::move(render_widget); @@ -1641,7 +1641,7 @@ // we need at least one update to them in order to meet expectations in the // renderer, and that update comes as part of the CreateFrame message. // TODO(crbug.com/419087): This could become part of RenderWidget Init. - render_widget->OnUpdateVisualProperties(widget_params->visual_properties); + render_widget->UpdateVisualProperties(widget_params->visual_properties); // Note that we do *not* call WebView's DidAttachLocalMainFrame() here yet // because this frame is provisional and not attached to the Page yet. We @@ -1692,7 +1692,7 @@ // we need at least one update to them in order to meet expectations in the // renderer, and that update comes as part of the CreateFrame message. // TODO(crbug.com/419087): This could become part of RenderWidget Init. - render_widget->OnUpdateVisualProperties(widget_params->visual_properties); + render_widget->UpdateVisualProperties(widget_params->visual_properties); render_frame->render_widget_ = render_widget.get(); render_frame->owned_render_widget_ = std::move(render_widget); @@ -2227,6 +2227,8 @@ #if BUILDFLAG(ENABLE_PLUGINS) IPC_MESSAGE_HANDLER(FrameMsg_SetPepperVolume, OnSetPepperVolume) #endif + IPC_MESSAGE_HANDLER(FrameMsg_VisualStateRequest, + OnVisualStateRequest) IPC_MESSAGE_HANDLER(FrameMsg_MixedContentFound, OnMixedContentFound) IPC_MESSAGE_HANDLER(UnfreezableFrameMsg_Delete, OnDeleteFrame) IPC_END_MESSAGE_MAP() @@ -2619,6 +2621,11 @@ return base::Value(); } +void RenderFrameImpl::OnVisualStateRequest(uint64_t id) { + GetLocalRootRenderWidget()->QueueMessage( + std::make_unique<FrameHostMsg_VisualStateResponse>(routing_id_, id)); +} + void RenderFrameImpl::OnPortalActivated( const base::UnguessableToken& portal_token, mojo::PendingAssociatedRemote<blink::mojom::Portal> portal,
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index d951a9f..c5b50c3 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h
@@ -1009,6 +1009,7 @@ void OnMoveCaret(const gfx::Point& point); void OnScrollFocusedEditableNodeIntoRect(const gfx::Rect& rect); void OnSelectRange(const gfx::Point& base, const gfx::Point& extent); + void OnVisualStateRequest(uint64_t key); void OnSuppressFurtherDialogs(); void OnMixedContentFound(const FrameMsg_MixedContentFound_Params& params);
diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc index ee4f8a5e..6da1597 100644 --- a/content/renderer/render_frame_impl_browsertest.cc +++ b/content/renderer/render_frame_impl_browsertest.cc
@@ -223,11 +223,7 @@ // The main frame's widget will receive the resize message before the // subframe's widget, and it will set the size for the WebView. - { - WidgetMsg_UpdateVisualProperties resize_message( - main_frame_widget->routing_id(), visual_properties); - main_frame_widget->OnMessageReceived(resize_message); - } + main_frame_widget->UpdateVisualProperties(visual_properties); // The main frame widget's size is the "widget size", not the visible viewport // size, which is given to blink separately. EXPECT_EQ(gfx::Size(view_->GetWebView()->MainFrameWidget()->Size()), @@ -238,11 +234,7 @@ EXPECT_NE(gfx::Size(frame_widget()->GetWebWidget()->Size()), visible_size); // A subframe in the same process does not modify the WebView. - { - WidgetMsg_UpdateVisualProperties resize_message_subframe( - frame_widget()->routing_id(), visual_properties); - frame_widget()->OnMessageReceived(resize_message_subframe); - } + frame_widget()->UpdateVisualProperties(visual_properties); EXPECT_EQ(gfx::Size(frame_widget()->GetWebWidget()->Size()), widget_size); // A subframe in another process would use the |visible_viewport_size| as its
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc index 41b8a9d4..1e1f828 100644 --- a/content/renderer/render_view_browsertest.cc +++ b/content/renderer/render_view_browsertest.cc
@@ -510,9 +510,8 @@ void SetDeviceScaleFactor(float dsf) { RenderWidget* widget = main_widget(); - WidgetMsg_UpdateVisualProperties msg( - widget->routing_id(), MakeVisualPropertiesWithDeviceScaleFactor(dsf)); - widget->OnMessageReceived(msg); + widget->UpdateVisualProperties( + MakeVisualPropertiesWithDeviceScaleFactor(dsf)); ASSERT_EQ(dsf, view()->GetMainRenderFrame()->GetDeviceScaleFactor()); ASSERT_EQ(dsf, widget->GetOriginalScreenInfo().device_scale_factor); @@ -694,11 +693,7 @@ ASSERT_TRUE(popup_widget); // Set its size. - { - WidgetMsg_UpdateScreenRects msg(popup_widget->routing_id(), - widget_screen_rect, window_screen_rect); - popup_widget->OnMessageReceived(msg); - } + popup_widget->UpdateScreenRects(widget_screen_rect, window_screen_rect); // The WindowScreenRect, WidgetScreenRect, and ScreenRect are all available // to the popup. @@ -735,11 +730,7 @@ ASSERT_TRUE(popup_widget); // Set its size again. - { - WidgetMsg_UpdateScreenRects msg(popup_widget->routing_id(), - widget_screen_rect, window_screen_rect); - popup_widget->OnMessageReceived(msg); - } + popup_widget->UpdateScreenRects(widget_screen_rect, window_screen_rect); // This time, the position of the WidgetScreenRect and WindowScreenRect // should be affected by emulation params.
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index 31c1d05..3a97c49 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc
@@ -439,15 +439,14 @@ IPC_MESSAGE_HANDLER(WidgetMsg_DisableDeviceEmulation, OnDisableDeviceEmulation) IPC_MESSAGE_HANDLER(WidgetMsg_Close, OnClose) - IPC_MESSAGE_HANDLER(WidgetMsg_UpdateVisualProperties, - OnUpdateVisualProperties) IPC_MESSAGE_HANDLER(WidgetMsg_WasHidden, OnWasHidden) IPC_MESSAGE_HANDLER(WidgetMsg_WasShown, OnWasShown) IPC_MESSAGE_HANDLER(WidgetMsg_SetActive, OnSetActive) IPC_MESSAGE_HANDLER(WidgetMsg_SetBounds_ACK, OnRequestSetBoundsAck) - IPC_MESSAGE_HANDLER(WidgetMsg_UpdateScreenRects, OnUpdateScreenRects) IPC_MESSAGE_HANDLER(WidgetMsg_SetViewportIntersection, OnSetViewportIntersection) + IPC_MESSAGE_HANDLER(WidgetMsg_WaitForNextFrameForTests, + OnWaitNextFrameForTests) IPC_MESSAGE_HANDLER(DragMsg_TargetDragEnter, OnDragTargetDragEnter) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() @@ -473,9 +472,9 @@ Close(base::WrapUnique(this)); } -void RenderWidget::OnUpdateVisualProperties( +void RenderWidget::UpdateVisualProperties( const blink::VisualProperties& visual_properties_from_browser) { - TRACE_EVENT0("renderer", "RenderWidget::OnUpdateVisualProperties"); + TRACE_EVENT0("renderer", "RenderWidget::UpdateVisualProperties"); // UpdateVisualProperties is used to receive properties from the browser // process for this RenderWidget. There are roughly 4 types of @@ -1583,15 +1582,14 @@ } } -void RenderWidget::OnUpdateScreenRects(const gfx::Rect& widget_screen_rect, - const gfx::Rect& window_screen_rect) { +void RenderWidget::UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) { if (device_emulator_) { device_emulator_->OnUpdateScreenRects(widget_screen_rect, window_screen_rect); } else { SetScreenRects(widget_screen_rect, window_screen_rect); } - Send(new WidgetHostMsg_UpdateScreenRects_ACK(routing_id())); } void RenderWidget::OnSetViewportIntersection( @@ -1786,6 +1784,13 @@ render_frames_.RemoveObserver(frame); } +void RenderWidget::OnWaitNextFrameForTests( + int main_frame_thread_observer_routing_id) { + // Sends an ACK to the browser process during the next compositor frame. + QueueMessage(std::make_unique<WidgetHostMsg_WaitForNextFrameForTests_ACK>( + main_frame_thread_observer_routing_id)); +} + const blink::ScreenInfo& RenderWidget::GetOriginalScreenInfo() const { if (device_emulator_) return device_emulator_->original_screen_info();
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h index b9a5d33..294803164 100644 --- a/content/renderer/render_widget.h +++ b/content/renderer/render_widget.h
@@ -326,6 +326,10 @@ const gfx::Range& replacement_range, int relative_cursor_pos) override; void ImeFinishComposingTextForPepper(bool keep_selection) override; + void UpdateVisualProperties( + const blink::VisualProperties& properties) override; + void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) override; // Returns the scale being applied to the document in blink by the device // emulator. Returns 1 if there is no emulation active. Use this to position @@ -461,7 +465,6 @@ // RenderWidget IPC message handlers. void OnClose(); - void OnUpdateVisualProperties(const blink::VisualProperties& properties); void OnCreatingNewAck(); void OnEnableDeviceEmulation(const blink::WebDeviceEmulationParams& params); void OnDisableDeviceEmulation(); @@ -476,8 +479,6 @@ void OnRequestSetBoundsAck(); void OnGetFPS(); - void OnUpdateScreenRects(const gfx::Rect& widget_screen_rect, - const gfx::Rect& window_screen_rect); void OnSetViewportIntersection( const blink::ViewportIntersectionState& intersection_state); void OnDragTargetDragEnter( @@ -490,6 +491,7 @@ const gfx::PointF& screen_point, blink::WebDragOperation drag_operation); void OnOrientationChange(); + void OnWaitNextFrameForTests(int routing_id); // Sets the "hidden" state of this widget. All modification of is_hidden_ // should use this method so that we can properly inform the RenderThread of
diff --git a/content/renderer/render_widget_browsertest.cc b/content/renderer/render_widget_browsertest.cc index 6b26dba..77c5b0a 100644 --- a/content/renderer/render_widget_browsertest.cc +++ b/content/renderer/render_widget_browsertest.cc
@@ -33,9 +33,7 @@ void OnSynchronizeVisualProperties( const blink::VisualProperties& visual_properties) { - WidgetMsg_UpdateVisualProperties msg(widget()->routing_id(), - visual_properties); - widget()->OnMessageReceived(msg); + widget()->UpdateVisualProperties(visual_properties); } gfx::Range LastCompositionRange() { @@ -380,11 +378,7 @@ // Sync visual properties on a mainframe RenderWidget. visual_properties.is_pinch_gesture_active = true; - { - WidgetMsg_UpdateVisualProperties msg(widget()->routing_id(), - visual_properties); - widget()->OnMessageReceived(msg); - } + widget()->UpdateVisualProperties(visual_properties); // We do not expect the |is_pinch_gesture_active| value to propagate to the // LayerTreeHost for the main-frame. Since GesturePinch events are handled // directly by the layer tree for the main frame, it already knows whether or
diff --git a/content/renderer/render_widget_fullscreen_pepper.cc b/content/renderer/render_widget_fullscreen_pepper.cc index 39c925b1..dbeef934 100644 --- a/content/renderer/render_widget_fullscreen_pepper.cc +++ b/content/renderer/render_widget_fullscreen_pepper.cc
@@ -163,6 +163,16 @@ void FocusChanged(bool enabled) override { widget_->FocusChanged(enabled); } + void UpdateVisualProperties( + const blink::VisualProperties& visual_properties) override { + widget_->UpdateVisualProperties(visual_properties); + } + + void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) override { + widget_->UpdateScreenRects(widget_screen_rect, window_screen_rect); + } + private: RenderWidgetFullscreenPepper* widget_; };
diff --git a/content/renderer/render_widget_unittest.cc b/content/renderer/render_widget_unittest.cc index 5c83b78c..2f77c32 100644 --- a/content/renderer/render_widget_unittest.cc +++ b/content/renderer/render_widget_unittest.cc
@@ -546,11 +546,7 @@ allocator.GenerateId(); visual_properties.local_surface_id_allocation = allocator.GetCurrentLocalSurfaceIdAllocation(); - { - WidgetMsg_UpdateVisualProperties msg(widget()->routing_id(), - visual_properties); - widget()->OnMessageReceived(msg); - } + widget()->UpdateVisualProperties(visual_properties); EXPECT_EQ(allocator.GetCurrentLocalSurfaceIdAllocation(), widget()->local_surface_id_allocation_from_parent()); EXPECT_FALSE(widget() @@ -595,11 +591,7 @@ // Sync visual properties on a child RenderWidget. visual_properties.is_pinch_gesture_active = true; - { - WidgetMsg_UpdateVisualProperties msg(widget()->routing_id(), - visual_properties); - widget()->OnMessageReceived(msg); - } + widget()->UpdateVisualProperties(visual_properties); // We expect the |is_pinch_gesture_active| value to propagate to the // LayerTreeHost for sub-frames. Since GesturePinch events are handled // directly in the main-frame's layer tree (and only there), information about @@ -609,11 +601,7 @@ // pinch gestures are active. EXPECT_TRUE(layer_tree_host->is_external_pinch_gesture_active_for_testing()); visual_properties.is_pinch_gesture_active = false; - { - WidgetMsg_UpdateVisualProperties msg(widget()->routing_id(), - visual_properties); - widget()->OnMessageReceived(msg); - } + widget()->UpdateVisualProperties(visual_properties); EXPECT_FALSE(layer_tree_host->is_external_pinch_gesture_active_for_testing()); } @@ -642,7 +630,7 @@ widget()->OnMessageReceived(msg); // TODO(danakj): This usually happens through - // RenderWidget::OnUpdateVisualProperties() and we are cutting past that for + // RenderWidget::UpdateVisualProperties() and we are cutting past that for // some reason. allocator.GenerateId(); widget()->layer_tree_host()->SetViewportRectAndScale(
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index e14d134..bc242b5 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -295,6 +295,8 @@ "mock_render_widget_host_delegate.h", "mock_ssl_host_state_delegate.cc", "mock_ssl_host_state_delegate.h", + "mock_widget.cc", + "mock_widget.h", "mock_widget_input_handler.cc", "mock_widget_input_handler.h", "navigation_simulator_impl.cc",
diff --git a/content/test/data/large-cursor.html b/content/test/data/large-cursor.html new file mode 100644 index 0000000..d07dbb3 --- /dev/null +++ b/content/test/data/large-cursor.html
@@ -0,0 +1,10 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<style> +body { + height: 1000px; + width: 1000px; + cursor: -webkit-image-set(url(single_face.jpg) 1x) 120 120, auto; +} +</style> +
diff --git a/content/test/mock_widget.cc b/content/test/mock_widget.cc new file mode 100644 index 0000000..646222b --- /dev/null +++ b/content/test/mock_widget.cc
@@ -0,0 +1,59 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/test/mock_widget.h" + +namespace content { + +MockWidget::MockWidget() = default; + +MockWidget::~MockWidget() = default; + +mojo::PendingAssociatedRemote<blink::mojom::Widget> MockWidget::GetNewRemote() { + blink_widget_.reset(); + return blink_widget_.BindNewEndpointAndPassDedicatedRemoteForTesting(); +} + +const std::vector<blink::VisualProperties>& +MockWidget::ReceivedVisualProperties() { + return visual_properties_; +} + +void MockWidget::ClearVisualProperties() { + visual_properties_.clear(); +} + +const std::vector<std::pair<gfx::Rect, gfx::Rect>>& +MockWidget::ReceivedScreenRects() { + return screen_rects_; +} + +void MockWidget::ClearScreenRects() { + for (auto& callback : screen_rects_callbacks_) { + std::move(callback).Run(); + } + screen_rects_callbacks_.clear(); + screen_rects_.clear(); +} + +void MockWidget::ForceRedraw(ForceRedrawCallback callback) {} + +void MockWidget::GetWidgetInputHandler( + mojo::PendingReceiver<blink::mojom::WidgetInputHandler> request, + mojo::PendingRemote<blink::mojom::WidgetInputHandlerHost> host) {} + +void MockWidget::UpdateVisualProperties( + const blink::VisualProperties& visual_properties) { + visual_properties_.push_back(visual_properties); +} + +void MockWidget::UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect, + UpdateScreenRectsCallback callback) { + screen_rects_.push_back( + std::make_pair(widget_screen_rect, window_screen_rect)); + screen_rects_callbacks_.push_back(std::move(callback)); +} + +} // namespace content
diff --git a/content/test/mock_widget.h b/content/test/mock_widget.h new file mode 100644 index 0000000..e9546c4 --- /dev/null +++ b/content/test/mock_widget.h
@@ -0,0 +1,55 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_TEST_MOCK_WIDGET_H_ +#define CONTENT_TEST_MOCK_WIDGET_H_ + +#include <stddef.h> + +#include <memory> +#include <utility> + +#include "mojo/public/cpp/bindings/associated_receiver.h" +#include "third_party/blink/public/common/widget/visual_properties.h" +#include "third_party/blink/public/mojom/page/widget.mojom.h" + +namespace content { + +class MockWidget : public blink::mojom::Widget { + public: + MockWidget(); + + ~MockWidget() override; + + mojo::PendingAssociatedRemote<blink::mojom::Widget> GetNewRemote(); + const std::vector<blink::VisualProperties>& ReceivedVisualProperties(); + void ClearVisualProperties(); + + const std::vector<std::pair<gfx::Rect, gfx::Rect>>& ReceivedScreenRects(); + void ClearScreenRects(); + + // blink::mojom::Widget overrides. + void ForceRedraw(ForceRedrawCallback callback) override; + + void GetWidgetInputHandler( + mojo::PendingReceiver<blink::mojom::WidgetInputHandler> request, + mojo::PendingRemote<blink::mojom::WidgetInputHandlerHost> host) override; + + void UpdateVisualProperties( + const blink::VisualProperties& visual_properties) override; + + void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect, + UpdateScreenRectsCallback callback) override; + + private: + std::vector<blink::VisualProperties> visual_properties_; + std::vector<std::pair<gfx::Rect, gfx::Rect>> screen_rects_; + std::vector<UpdateScreenRectsCallback> screen_rects_callbacks_; + mojo::AssociatedReceiver<blink::mojom::Widget> blink_widget_{this}; +}; + +} // namespace content + +#endif // CONTENT_TEST_MOCK_WIDGET_H_
diff --git a/docs/speed_metrics/webperf_okrs.md b/docs/speed_metrics/webperf_okrs.md index 8213b6f..98cf59c6 100644 --- a/docs/speed_metrics/webperf_okrs.md +++ b/docs/speed_metrics/webperf_okrs.md
@@ -18,8 +18,11 @@ [VisibilityStateEntry](https://docs.google.com/document/d/1l5kHiJRkdQwEN-CYI5_mUNODhQVB5rCyjN4jHDdXDHA/edit). * {#frame-timing-20203}Work on the **[Frame Timing](https://docs.google.com/document/d/1t3A56iTN01ReEELJ18_jLYrvc13L3hDTXWK46AafKwE/edit)** proposal. - * Draft a spec. - * _(Stretch)_ Land a prototype of the API. + * Draft a spec. + * _(Stretch)_ Land a prototype of the API. + * {#fb-driven-20203}Continue [previous work](#fb-driven-20202) on Facebook-driven APIs. + * Based on the iframe layerization experiment results, send Intent to Ship for **isInputPending**. + * _(Stretch)_ Implement warm initialization logic for the **JS Self-Profiling** API. ### Existing web performance API improvements @@ -68,6 +71,7 @@ all of them. * [Documentation](#documentation-20202): Submitted feedback on some of the metrics content on web.dev, most of which was actioned upon. Updated MDN entries for core web vitals metrics. +* [Facebook-driven APIs](#fb-driven-20202): Landed support for predicting touch and gesture events for isInputPending. ## 2020 Q2 Objectives @@ -123,7 +127,7 @@ [support](https://lists.w3.org/Archives/Public/public-web-perf/2020Apr/0005.html) for the observer instead. - * Provide support for two Facebook-driven APIs: + * {#fb-driven-20202}Provide support for two Facebook-driven APIs: [isInputPending](https://github.com/WICG/is-input-pending) and [JavaScript Self-Profiling](https://github.com/WICG/js-self-profiling). The **isInputPending** API enables developers to query whether the browser has
diff --git a/docs/testing/test_descriptions.md b/docs/testing/test_descriptions.md index 29ccba7..82e5f92 100644 --- a/docs/testing/test_descriptions.md +++ b/docs/testing/test_descriptions.md
@@ -14,7 +14,6 @@ |blink\_platform\_unittests| | |breakpad\_unittests | | |[browser\_tests](https://sites.google.com/a/chromium.org/dev/developers/testing/browser-tests)|Tests the browser UI. Can not inject user input or depend on focus/activation behavior because it can be run in parallel processes and/or with a locked screen, headless etc. For tests sensitive to that, use interactive\_ui\_tests. For example, when tests need to navigate to chrome://hang (see chrome/browser/ui/webui/ntp/new\_tab\_ui\_uitest.cc)| -|cacheinvalidation\_unittests| | |chromedriver\_unittests | | |content\_browsertests |Similar to browser\_tests, but with a minimal shell contained entirely within content/. This test, as well as the entire content module, has no dependencies on chrome/.| |content\_gl\_tests | |
diff --git a/extensions/common/manifest_handlers/mime_types_handler.cc b/extensions/common/manifest_handlers/mime_types_handler.cc index d290ee5..8a43f563 100644 --- a/extensions/common/manifest_handlers/mime_types_handler.cc +++ b/extensions/common/manifest_handlers/mime_types_handler.cc
@@ -7,6 +7,7 @@ #include <stddef.h> #include "base/metrics/histogram_functions.h" +#include "base/no_destructor.h" #include "base/stl_util.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -25,7 +26,7 @@ // This has to by in sync with MimeHandlerType enum. // Note that if multiple versions of quickoffice are installed, the // higher-indexed entry will clobber earlier entries. -const char* const kMIMETypeHandlersAllowlist[] = { +constexpr const char* const kMIMETypeHandlersAllowlist[] = { extension_misc::kPdfExtensionId, extension_misc::kQuickOfficeComponentExtensionId, extension_misc::kQuickOfficeInternalExtensionId, @@ -68,9 +69,11 @@ } // namespace // static -std::vector<std::string> MimeTypesHandler::GetMIMETypeAllowlist() { - return {std::begin(kMIMETypeHandlersAllowlist), - std::end(kMIMETypeHandlersAllowlist)}; +const std::vector<std::string>& MimeTypesHandler::GetMIMETypeAllowlist() { + static base::NoDestructor<std::vector<std::string>> allowlist_vector{ + std::begin(kMIMETypeHandlersAllowlist), + std::end(kMIMETypeHandlersAllowlist)}; + return *allowlist_vector; } // static
diff --git a/extensions/common/manifest_handlers/mime_types_handler.h b/extensions/common/manifest_handlers/mime_types_handler.h index 8e9e858..cfc80ac049 100644 --- a/extensions/common/manifest_handlers/mime_types_handler.h +++ b/extensions/common/manifest_handlers/mime_types_handler.h
@@ -16,7 +16,7 @@ class MimeTypesHandler { public: // Returns list of extensions' ids that are allowed to use MIME type filters. - static std::vector<std::string> GetMIMETypeAllowlist(); + static const std::vector<std::string>& GetMIMETypeAllowlist(); static MimeTypesHandler* GetHandler(const extensions::Extension* extension);
diff --git a/fuchsia/runners/cast/cast_runner.cc b/fuchsia/runners/cast/cast_runner.cc index 7e19858..2ad08fc 100644 --- a/fuchsia/runners/cast/cast_runner.cc +++ b/fuchsia/runners/cast/cast_runner.cc
@@ -343,9 +343,11 @@ return; } - LOG(WARNING) << "fuchsia.camera3.DeviceWatcher request was received while no " - "apps with the CAMERA permission are running."; - // Drop the request. + // fuchsia.camera3.DeviceWatcher may be requested while none of the running + // apps have the CAMERA permission. Return ZX_ERR_UNAVAILABLE, which implies + // that the client should try connecting again later, since the service may + // become available after a web.Frame with camera access is created. + request.Close(ZX_ERR_UNAVAILABLE); } void CastRunner::OnMetricsRecorderServiceRequest(
diff --git a/ios/chrome/app/application_delegate/user_activity_handler.mm b/ios/chrome/app/application_delegate/user_activity_handler.mm index 74e93d1..135626e 100644 --- a/ios/chrome/app/application_delegate/user_activity_handler.mm +++ b/ios/chrome/app/application_delegate/user_activity_handler.mm
@@ -20,6 +20,7 @@ #import "ios/chrome/app/application_delegate/tab_opening.h" #include "ios/chrome/app/application_mode.h" #import "ios/chrome/app/intents/OpenInChromeIntent.h" +#import "ios/chrome/app/intents/SearchInChromeIntent.h" #import "ios/chrome/app/spotlight/actions_spotlight_manager.h" #import "ios/chrome/app/spotlight/spotlight_util.h" #include "ios/chrome/app/startup/chrome_app_startup_parameters.h" @@ -144,10 +145,23 @@ } else if ([userActivity.activityType isEqualToString:@"SearchInChromeIntent"]) { base::RecordAction(UserMetricsAction("IOSLaunchedBySearchInChromeIntent")); + AppStartupParameters* startupParams = [[AppStartupParameters alloc] initWithExternalURL:GURL(kChromeUINewTabURL) completeURL:GURL(kChromeUINewTabURL)]; - [startupParams setPostOpeningAction:FOCUS_OMNIBOX]; + + SearchInChromeIntent* intent = + base::mac::ObjCCastStrict<SearchInChromeIntent>( + userActivity.interaction.intent); + + NSString* searchPhrase = intent.searchPhrase; + + if ([searchPhrase length]) { + startupParams.textQuery = searchPhrase; + } else { + startupParams.postOpeningAction = FOCUS_OMNIBOX; + } + [connectionInformation setStartupParameters:startupParams]; webpageURL = [NSURL URLWithString:base::SysUTF8ToNSString(kChromeUINewTabURL)];
diff --git a/ios/chrome/app/intents/Intents.intentdefinition b/ios/chrome/app/intents/Intents.intentdefinition index dcd52ee..77973b5 100644 --- a/ios/chrome/app/intents/Intents.intentdefinition +++ b/ios/chrome/app/intents/Intents.intentdefinition
@@ -107,28 +107,69 @@ <dict> <key>INIntentCategory</key> <string>information</string> + <key>INIntentConfigurable</key> + <true/> <key>INIntentDescriptionID</key> <string>k0Ho6W</string> - <key>INIntentName</key> - <string>SearchInChrome</string> - <key>INIntentParameterCombinations</key> + <key>INIntentIneligibleForSuggestions</key> + <true/> + <key>INIntentInput</key> + <string>searchPhrase</string> + <key>INIntentLastParameterTag</key> + <integer>1</integer> + <key>INIntentManagedParameterCombinations</key> <dict> - <key></key> + <key>searchPhrase</key> <dict> - <key>INIntentParameterCombinationIsPrimary</key> - <true/> - <key>INIntentParameterCombinationSubtitle</key> - <string>Start a search in a new Chrome tab.</string> - <key>INIntentParameterCombinationSubtitleID</key> - <string>4nGj7v</string> <key>INIntentParameterCombinationSupportsBackgroundExecution</key> - <false/> + <true/> <key>INIntentParameterCombinationTitle</key> - <string>Search in Chrome</string> + <string>Search ${searchPhrase} in Chrome</string> <key>INIntentParameterCombinationTitleID</key> - <string>ceiocv</string> + <string>TqBLdA</string> + <key>INIntentParameterCombinationUpdatesLinked</key> + <true/> </dict> </dict> + <key>INIntentName</key> + <string>SearchInChrome</string> + <key>INIntentParameters</key> + <array> + <dict> + <key>INIntentParameterDisplayName</key> + <string>Search phrase</string> + <key>INIntentParameterDisplayNameID</key> + <string>bsFAEt</string> + <key>INIntentParameterDisplayPriority</key> + <integer>1</integer> + <key>INIntentParameterMetadata</key> + <dict> + <key>INIntentParameterMetadataCapitalization</key> + <string>Sentences</string> + </dict> + <key>INIntentParameterName</key> + <string>searchPhrase</string> + <key>INIntentParameterPromptDialogs</key> + <array> + <dict> + <key>INIntentParameterPromptDialogCustom</key> + <true/> + <key>INIntentParameterPromptDialogFormatString</key> + <string>What do you want to search?</string> + <key>INIntentParameterPromptDialogFormatStringID</key> + <string>rIYS61</string> + <key>INIntentParameterPromptDialogType</key> + <string>Primary</string> + </dict> + </array> + <key>INIntentParameterSupportsResolution</key> + <true/> + <key>INIntentParameterTag</key> + <integer>1</integer> + <key>INIntentParameterType</key> + <string>String</string> + </dict> + </array> <key>INIntentResponse</key> <dict> <key>INIntentResponseCodes</key>
diff --git a/ios/chrome/app/resources/chrome_localize_strings_config.plist b/ios/chrome/app/resources/chrome_localize_strings_config.plist index b0d25e1..ecbdaa2 100644 --- a/ios/chrome/app/resources/chrome_localize_strings_config.plist +++ b/ios/chrome/app/resources/chrome_localize_strings_config.plist
@@ -46,6 +46,12 @@ <key>output</key> <string>Z6KvRw</string> </dict> + <dict> + <key>input</key> + <string>IDS_IOS_INTENTS_SEARCH_IN_CHROME_PARAMETER_COMBINATION_TITLE</string> + <key>output</key> + <string>TqBLdA</string> + </dict> <dict> <key>input</key> <string>IDS_IOS_INTENTS_OPEN_IN_CHROME_PARAMETER_COMBINATION_TITLE</string>
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index 8dbcee9..a891d08b 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -918,7 +918,11 @@ Search in Chrome </message> <message name="IDS_IOS_INTENTS_SEARCH_IN_CHROME_TITLE" desc="Siri Shortcut for search in chrome title [iOS only]."> - Search in Chrome + Search in Chrome + </message> + <message name="IDS_IOS_INTENTS_SEARCH_IN_CHROME_PARAMETER_COMBINATION_TITLE" desc="Apple Shortcuts App's format for displaying the user search phrase input, shown by the Siri Shortcut app when the + user is adding or editing a Search in Chrome shortcut[iOS only]."> + Search ${searchPhrase} in Chrome </message> <message name="IDS_IOS_JAVA_SCRIPT_DIALOG_BLOCKING_BUTTON_TEXT" desc="The text used for the button added to JavaScript dialogs to prevent a page from spamming the user with endless alerts. [Length:27em]"> Suppress Dialogs
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_INTENTS_SEARCH_IN_CHROME_PARAMETER_COMBINATION_TITLE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_INTENTS_SEARCH_IN_CHROME_PARAMETER_COMBINATION_TITLE.png.sha1 new file mode 100644 index 0000000..f936e262c --- /dev/null +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_INTENTS_SEARCH_IN_CHROME_PARAMETER_COMBINATION_TITLE.png.sha1
@@ -0,0 +1 @@ +45f78256bc7c591ecb43b6e2989c1981ea45a6cf \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb index 42a5c57..502a594 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ja.xtb
@@ -20,6 +20,8 @@ <translation id="2730884209570016437">カメラは別のアプリが使用中のため、Chromium では使用できません</translation> <translation id="2915596697727466327">Chromium では Face ID の使用により、パスワードへの認証されたアクセスのみが許可されます。</translation> <translation id="3256316712990552818">Chromium にコピー済み</translation> +<translation id="3344973607274501920">Chromium でパスワードを確認できませんでした。インターネット接続を確認してみてください。</translation> +<translation id="3639997914391704523">Google アカウントでログインすると、Chromium でパスワードを確認できるようになります。</translation> <translation id="3805899903892079518">Chromium で写真または動画にアクセスできません。iOS の [設定] > [プライバシー] > [写真] でアクセスを有効にしてください。</translation> <translation id="4555020257205549924">この機能を有効にすると、外国語のページを開いたときに翻訳ツールが表示されます。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="4681781466797808448">Chromium のスキャナをオンにしてください</translation> @@ -27,6 +29,7 @@ <translation id="4999538639245140991"><ph name="SIGNOUT_MANAGED_DOMAIN" /> で管理されているアカウントからログアウトするにあたり、Chromium データはこのデバイスから削除されます(ただし Google アカウントには残ります)。</translation> <translation id="5521125884468363740">どのデバイスからでも Chromium で自分のタブにアクセスするには、ログインして同期をオンにしてください</translation> <translation id="5573014823074921752">Chromium の使い方のヒント: タブのオプションをさらに表示するには、画面の下部または上部のツールバーにある [タブを表示] を長押しします。</translation> +<translation id="5700709190537129682">Chromium でパスワードを確認できません</translation> <translation id="5777187867430702742">Chromium ページ</translation> <translation id="5862307444128926510">Chromium へようこそ</translation> <translation id="5945387852661427312"><ph name="DOMAIN" /> で管理されているアカウントでログインして、Chromium データの管理を管理者に委ねようとしています。この操作を行うと、データはこのアカウントに恒久的に関連付けられます。Chromium からログアウトすると、データはこのデバイスから削除されますが、Google アカウントには残ります。</translation> @@ -34,6 +37,7 @@ <translation id="6268381023930128611">Chromium からログアウトしますか?</translation> <translation id="6424492062988593837">Chromium のアップデートが見つかりました。新しいバージョンが利用可能です。</translation> <translation id="6604711459180487467">ユーザーの場所に応じて Chromium を使いやすくします。</translation> +<translation id="6820823224820483452">Chromium ですべてのパスワードを確認できませんでした。明日もう一度お試しください。</translation> <translation id="7099326575020694068">Chromium では、分割表示モードでカメラを使用することはできません</translation> <translation id="7208566199746267865">Chromium ではアカウントがウェブで管理されるので、さまざまな手間を省くことができます。[設定] でアカウントの追加と削除を行うことができます。</translation> <translation id="7269362888766543920">アドオンが原因で Chromium がクラッシュしました。アドオンをアンインストールしてみてください。</translation> @@ -42,6 +46,7 @@ <translation id="7400689562045506105">Chromium をどこでも使用</translation> <translation id="7674213385180944843">[設定] > [プライバシー] > [カメラ] > [Chromium] の順に選択し、カメラをオンにします。</translation> <translation id="7746854981345936341">Chromium の使い方のヒント: 戻る、進む、検索など一部のボタンは画面の下部に表示されるようになりました。</translation> +<translation id="7798909783578470546">Chromium ですべてのパスワードを確認できませんでした。もう一度お試しください。</translation> <translation id="786327964234957808">同期アカウントを <ph name="USER_EMAIL1" /> から <ph name="USER_EMAIL2" /> に切り替えようとしています。既存の Chromium データは <ph name="DOMAIN" /> で管理されています。この操作を行うと、データはこのデバイスから削除されますが、<ph name="USER_EMAIL1" /> には残ります。</translation> <translation id="7890287942691234100">Chromium のスキャナの使用開始</translation> <translation id="8013573822802650211">どのデバイスからでも Chromium で自分のタブにアクセスするには、すべてのデバイスでログインしてください</translation> @@ -51,5 +56,6 @@ <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. All rights reserved.</translation> <translation id="8776843108004031667">このアカウントと保存されていないデータは Chromium から削除されます。</translation> <translation id="9022552996538154597">Chromium にログイン</translation> +<translation id="921174536258924340">Chromium ですべてのパスワードを確認できませんでした。明日もう一度お試しいただくか、<ph name="BEGIN_LINK" />Google アカウント内のパスワードをご確認ください<ph name="END_LINK" />。</translation> <translation id="985602178874221306">Chromium 開発者</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb index 33457483..d6540a4 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb
@@ -20,7 +20,7 @@ <translation id="2730884209570016437">Chromium камераңызды иштете албайт, себеби аны башка колдонмо пайдаланып жатат</translation> <translation id="2915596697727466327">Сырсөздөрүңүзгө уруксатсыз кирүүгө жол бербөө үчүн, Chromium кызматы Face ID функциясын колдонот.</translation> <translation id="3256316712990552818">Chromium'га көчүрүлдү</translation> -<translation id="3344973607274501920">Chromium сырсөздөрүңүздү текшерген жок. Интернет байланышын текшерип көрүңүз.</translation> +<translation id="3344973607274501920">Chromium сырсөздөрүңүздү текшере алган жок. Интернет байланышын текшерип көрүңүз.</translation> <translation id="3639997914391704523">Google аккаунтуңуз менен киргенде Chromium сырсөздөрүңүздү текшерет.</translation> <translation id="3805899903892079518">Chromium сүрөттөрүңүздү же видеолоруңузду көрө албайт. Көрүү үчүн iOS Жөндөөлөрү > Купуялык > Сүрөттөргө өтүңүз.</translation> <translation id="4555020257205549924">Бул функция иштетилгенде, Chromium Google Котормочу аркылуу башка тилдерде жазылган барактарды которууну сунуштайт. <ph name="BEGIN_LINK" />Көбүрөөк маалымат<ph name="END_LINK" /></translation> @@ -37,7 +37,7 @@ <translation id="6268381023930128611">Chromium'дан чыгасызбы?</translation> <translation id="6424492062988593837">Chromium жаңы эле жакшыртылды! Эми жаңы нускасы бар.</translation> <translation id="6604711459180487467">Chromium'ду жайгашкан жериңизге ылайык пайдаланыңыз.</translation> -<translation id="6820823224820483452">Chromium бардык сырсөздөрдү текшерген жок. Эртең кайталап көрүңүз.</translation> +<translation id="6820823224820483452">Chromium бардык сырсөздөрдү текшере алган жок. Эртең кайталап көрүңүз.</translation> <translation id="7099326575020694068">Экранды бөлүп көрсөтүү режиминде Chromium камераны иштете албайт</translation> <translation id="7208566199746267865">Аккаунттарыңызды желеге жайгаштыруу менен Chromium убакытыңызды үнөмдөйт. Аккаунттарды Жөндөөлөрдөн кошуп же алып салсаңыз болот.</translation> <translation id="7269362888766543920">Айрым көмөкчү жөндөөлөрдөн улам Chromium бузулуп калды. Аларды өчүрүп көрүңүз.</translation> @@ -46,7 +46,7 @@ <translation id="7400689562045506105">Chromium'ду каалаган жерден пайдаланыңыз</translation> <translation id="7674213385180944843">Жөндөөлөр > Купуялык > Камера > Chromium'ду ачып туруп, камераны иштетиңиз.</translation> <translation id="7746854981345936341">Chromium'дан кеңеш. Артка, Алдыга жана Издөө сыяктуу айрым баскычтар эми экраныңыздын төмөн жагында жайгашкан.</translation> -<translation id="7798909783578470546">Chromium бардык сырсөздөрдү текшерген жок. Кайталоо.</translation> +<translation id="7798909783578470546">Chromium бардык сырсөздөрдү текшере алган жок. Кайталоо.</translation> <translation id="786327964234957808">Шайкештирилүүчү каттоо эсебин <ph name="USER_EMAIL1" /> дарегинен <ph name="USER_EMAIL2" /> дарегине которуп жатасыз. Учурдагы Chromium дайын-даректериңиз <ph name="DOMAIN" /> тарабынан башкарылат. Ушуну менен бул түзмөктөн дайын-даректериңиз өчүрүлөт, бирок алар <ph name="USER_EMAIL1" /> дарегинде кала берет.</translation> <translation id="7890287942691234100">Chromium сканерин колдонуп баштоо</translation> <translation id="8013573822802650211">Chromium колдонулган түзмөктөрдүн баарындагы өтмөктөрүңүздү көрүү үчүн бардык түзмөктөрдөн аккаунтуңузга кириңиз</translation> @@ -56,6 +56,6 @@ <translation id="8586442755830160949">Автордук укук <ph name="YEAR" /> Chromium авторлору. Бардык укуктар корголгон.</translation> <translation id="8776843108004031667">Бул аккаунт жана башка сакталбаган маалымат Chromium'дан өчүрүлөт.</translation> <translation id="9022552996538154597">Chromium'га кирүү</translation> -<translation id="921174536258924340">Chromium бардык сырсөздөрдү текшерген жок. Эртең кайра аракет кылыңыз же <ph name="BEGIN_LINK" />Google аккаунтуңуздагы сырсөздөрдү текшериңиз<ph name="END_LINK" /></translation> +<translation id="921174536258924340">Chromium бардык сырсөздөрдү текшере алган жок. Эртең кайра аракет кылыңыз же <ph name="BEGIN_LINK" />Google аккаунтуңуздагы сырсөздөрдү текшериңиз<ph name="END_LINK" /></translation> <translation id="985602178874221306">Chromium'дун авторлору</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sw.xtb index 55babb5..827fffe 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sw.xtb
@@ -56,6 +56,6 @@ <translation id="8586442755830160949">Hakimiliki <ph name="YEAR" /> Wasanidi wa Chromium. Haki zote zimehifadhiwa.</translation> <translation id="8776843108004031667">Akaunti hii na data yoyote ambayo haijahifadhiwa itaondolewa kwenye Chromium.</translation> <translation id="9022552996538154597">Ingia kwenye Chromium</translation> -<translation id="921174536258924340">Chromium imeshindwa kukagua manenosiri yote. Jaribu tena kesho au <ph name="BEGIN_LINK" />ukague manenosiri katika Akaunti yako ya Google<ph name="END_LINK" /></translation> +<translation id="921174536258924340">Chromium imeshindwa kukagua manenosiri yote. Jaribu tena kesho au <ph name="BEGIN_LINK" />ukague manenosiri katika Akaunti yako ya Google.<ph name="END_LINK" /></translation> <translation id="985602178874221306">Waandishi wa Chromium</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb index 9de4592..b7f508e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ja.xtb
@@ -2,15 +2,19 @@ <!DOCTYPE translationbundle> <translationbundle lang="ja"> <translation id="1282031177488366470">Chrome の機能と動作の改善に協力する</translation> +<translation id="1479202195792305274">Google アカウントでログインすると、Chrome でパスワードを確認できるようになります。</translation> +<translation id="1647024380514430932">Chrome ですべてのパスワードを確認できませんでした。もう一度お試しください。</translation> <translation id="1682483655351012182">Chrome のデータを同期する</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1917964099031477364">このアカウントと保存されていないデータは、Chrome やこのデバイスの他の Google アプリから削除されます。</translation> +<translation id="2009224836393115614">Chrome でパスワードを確認できませんでした。インターネット接続を確認してみてください。</translation> <translation id="2147651015520127414">このウェブサイトの証明書が <ph name="ISSUER" /> 発行のものであると確認されました。</translation> <translation id="2199719347983604670">Chrome 同期のデータ</translation> <translation id="2347208864470321755">この機能を有効にすると、外国語のページで翻訳ツールが表示されます。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="2574249610672786438">どのデバイスからでも Chrome で自分のタブにアクセスするには、すべてのデバイスでログインしてください</translation> <translation id="2576431527583832481">Chrome のアップデートが見つかりました。新しいバージョンが利用可能です。</translation> <translation id="257708665678654955">次回から Google Chrome でこのサイトの <ph name="LANGUAGE_NAME" /> ページの翻訳を表示しますか?</translation> +<translation id="2732745070297234559">Chrome ですべてのパスワードを確認できませんでした。明日もう一度お試しください。</translation> <translation id="2919738076569633423">Chrome を使用すると、<ph name="BEGIN_LINK_TOS" />利用規約<ph name="END_LINK_TOS" />に同意したことになります。</translation> <translation id="3030414234702425231"><ph name="SIGNOUT_MANAGED_DOMAIN" /> で管理されているアカウントからログアウトするにあたり、Chrome データはこのデバイスから削除されます(ただし Google アカウントには残ります)。</translation> <translation id="3148688391461398285">Chromeの機能がユーザーの所在地に応じて便利に変化します。</translation> @@ -28,6 +32,7 @@ <translation id="424864128008805179">Chrome からログアウトしますか?</translation> <translation id="4249068189593983585">Chrome の使い方のヒント: タブのオプションをさらに表示するには、画面の下部または上部のツールバーにある [タブを表示] を長押しします。</translation> <translation id="4523886039239821078">アドオンが原因でChromeがクラッシュしました。次をアンインストールしてください:</translation> +<translation id="4698415050768537821">Chrome ですべてのパスワードを確認できませんでした。明日もう一度お試しいただくか、<ph name="BEGIN_LINK" />Google アカウント内のパスワードをご確認ください<ph name="END_LINK" />。</translation> <translation id="5389212809648216794">カメラは別のアプリが使用中のため、Google Chrome では使用できません</translation> <translation id="5639704535586432836">[設定] > [プライバシー] > [カメラ] > [Google Chrome] の順に選択し、カメラをオンにします。</translation> <translation id="5642200033778930880">Google Chrome では、分割表示モードでカメラを使用することはできません</translation> @@ -42,6 +47,7 @@ <translation id="7165736900384873061">Google Chrome の QR スキャナの使用を開始する</translation> <translation id="7172660552945675509">ヒント: <ph name="BEGIN_LINK" />Chrome を Dock に移動<ph name="END_LINK" />するとアクセスしやすくなります</translation> <translation id="7173660919484573146">Chrome では Face ID の使用により、パスワードへの認証されたアクセスのみが許可されます。</translation> +<translation id="7261678641327190792">Chrome でパスワードを確認できません</translation> <translation id="7265369419224458312">パソコンで開いたタブにこちらからアクセスできます。パソコンでChromeを開き、メニューから[Chromeにログイン]を選択してください。</translation> <translation id="7272930098487145294">画像を保存するには、[設定] をタップして写真への追加を Chrome に許可してください</translation> <translation id="7400722733683201933">Google Chrome について</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb index 271c112..539841c 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb
@@ -3,7 +3,7 @@ <translationbundle lang="ky"> <translation id="1282031177488366470">Chrome'дун функцияларын жана өндүрүмдүүлүгүн өркүндөтүүгө жардам бериңиз</translation> <translation id="1479202195792305274">Google аккаунтуңуз менен киргенде Chrome сырсөздөрүңүздү текшерет.</translation> -<translation id="1647024380514430932">Chrome бардык сырсөздөрдү текшерген жок. Кайталоо.</translation> +<translation id="1647024380514430932">Chrome бардык сырсөздөрдү текшере алган жок. Кайталоо.</translation> <translation id="1682483655351012182">Chrome дайындарын шайкештирүү</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1917964099031477364">Бул аккаунт жана башка сакталбаган маалымат Chrome'дон жана ушул түзмөктөгү башка Google колдонмолорунан өчүрүлөт.</translation> @@ -14,7 +14,7 @@ <translation id="2574249610672786438">Chrome колдонулган түзмөктөрдүн баарындагы өтмөктөрүңүздү көрүү үчүн бардык түзмөктөрдөн аккаунтуңузга кириңиз</translation> <translation id="2576431527583832481">Chrome жаңы эле жакшыртылды! Эми жаңы нускасы бар.</translation> <translation id="257708665678654955">Кийинки жолу Google Chrome ушул сайттагы <ph name="LANGUAGE_NAME" /> тилиндеги барактарды которууну сунуштасынбы?</translation> -<translation id="2732745070297234559">Chrome бардык сырсөздөрдү текшерген жок. Эртең кайталап көрүңүз.</translation> +<translation id="2732745070297234559">Chrome бардык сырсөздөрдү текшере алган жок. Эртең кайталап көрүңүз.</translation> <translation id="2919738076569633423">Chrome'ду колдонуу менен, <ph name="BEGIN_LINK_TOS" />Тейлөө шарттарына<ph name="END_LINK_TOS" /> макулдугуңузду билдиресиз.</translation> <translation id="3030414234702425231">Сиз <ph name="SIGNOUT_MANAGED_DOMAIN" /> домениндеги аккаунтуңуздан чыгып жатканыңызга байланыштуу, Chrome'догу дайын-даректериңиз бул түзмөктөн өчүрүлөт. Бирок дайын-даректериңиз Google аккаунтуңузда сакталып калат.</translation> <translation id="3148688391461398285">Chrome'ду жайгашкан жериңизге ылайык пайдаланыңыз.</translation> @@ -32,7 +32,7 @@ <translation id="424864128008805179">Chrome каттоо эсебинен чыгасызбы?</translation> <translation id="4249068189593983585">Chrome'дон кеңеш. Өтмөктөгү башка параметрлерди көрүү үчүн Өтмөктөрдү көрсөтүү баскычын коё бербей басып туруңуз. Баскыч экраныңыздын төмөн же жогору жагындагы куралдар тилкесинде жайгашкан.</translation> <translation id="4523886039239821078">Айрым көмөкчү жөндөөлөрдөн улам Chrome бузулуп калды. Аларды орнотуудан чыгарыңыз.</translation> -<translation id="4698415050768537821">Chrome бардык сырсөздөрдү текшерген жок. Эртең кайра аракет кылыңыз же <ph name="BEGIN_LINK" />Google аккаунтуңуздагы сырсөздөрдү текшериңиз<ph name="END_LINK" /></translation> +<translation id="4698415050768537821">Chrome бардык сырсөздөрдү текшере алган жок. Эртең кайра аракет кылыңыз же <ph name="BEGIN_LINK" />Google аккаунтуңуздагы сырсөздөрдү текшериңиз<ph name="END_LINK" /></translation> <translation id="5389212809648216794">Google Chrome камераңызды иштете албайт, себеби аны башка колдонмо пайдаланып жатат</translation> <translation id="5639704535586432836">Жөндөөлөр > Купуялык > Камера > Google Chrome'ду ачып туруп, камераны иштетиңиз.</translation> <translation id="5642200033778930880">Экранды бөлүп көрсөтүү режиминде Google Chrome камераны иштете албайт</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb index b6a7834..1b4bb61 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ml.xtb
@@ -7,7 +7,7 @@ <translation id="1682483655351012182">നിങ്ങളുടെ Chrome ഡാറ്റ സമന്വയിപ്പിക്കുക</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1917964099031477364">ഈ അക്കൗണ്ടും സംരക്ഷിക്കാത്ത എല്ലാ ഡാറ്റയും Chrome-ൽ നിന്നും ഈ ഉപകരണത്തിലെ മറ്റ് Google ആപ്പുകളിൽ നിന്നും നീക്കം ചെയ്യും.</translation> -<translation id="2009224836393115614">Chrome-ന് നിങ്ങളുടെ പാസ്വേഡുകൾ പരിശോധിക്കാനാകുന്നില്ല. നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക.</translation> +<translation id="2009224836393115614">Chrome-ന് നിങ്ങളുടെ പാസ്വേഡുകൾ പരിശോധിക്കാനായില്ല. നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക.</translation> <translation id="2147651015520127414">ഈ വെബ്സൈറ്റിന്റെ സർട്ടിഫിക്കറ്റ് <ph name="ISSUER" /> നൽകിയതാണെന്ന് Chrome പരിശോധിച്ചുറപ്പിച്ചു.</translation> <translation id="2199719347983604670">Chrome സമന്വയത്തിൽ നിന്നുള്ള ഡാറ്റ</translation> <translation id="2347208864470321755">ഈ സവിശേഷത ഓണായിരിക്കുമ്പോൾ, മറ്റ് ഭാഷകളിൽ എഴുതിയിരിക്കുന്ന പേജുകൾ Google വിവർത്തനം ഉപയോഗിച്ച് വിവർത്തനം ചെയ്യുന്നത് Chrome ഓഫർ ചെയ്യും. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sw.xtb index 4e49be5b..97c8ef61 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sw.xtb
@@ -32,7 +32,7 @@ <translation id="424864128008805179">Ungependa kuondoka kwenye Chrome?</translation> <translation id="4249068189593983585">Kidokezo cha Chrome. Ili upate chaguo zaidi za kichupo, bofya na ushikilie kitufe cha 'Onyesha Vichupo' katika upau wa vidhibiti unaopatikana sehemu ya chini au juu ya skrini yako.</translation> <translation id="4523886039239821078">Baadhi ya programu jalizi husababisha Chrome iache kufanya kazi. Tafadhali ondoa:</translation> -<translation id="4698415050768537821">Chrome imeshindwa kukagua manenosiri yote. Jaribu tena kesho au <ph name="BEGIN_LINK" />ukague manenosiri katika Akaunti yako ya Google<ph name="END_LINK" /></translation> +<translation id="4698415050768537821">Chrome imeshindwa kukagua manenosiri yote. Jaribu tena kesho au <ph name="BEGIN_LINK" />ukague manenosiri katika Akaunti yako ya Google.<ph name="END_LINK" /></translation> <translation id="5389212809648216794">Google Chrome imeshindwa kutumia kamera yako kwa sababu inatumiwa na programu nyingine</translation> <translation id="5639704535586432836">Fungua Mipangilio > Faragha > Kamera > Google Chrome na uwashe kamera.</translation> <translation id="5642200033778930880">Google Chrome imeshindwa kutumia kamera yako katika hali ya Mwonekano wa Madirisha Mawili</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb index a8c5b31..1d93d5d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> на <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Включете синхронизирането, за да получите отметките си на всичките си устройства.</translation> <translation id="1687475363370981210">Означаване на всичко като прочетено</translation> +<translation id="1689333818294560261">Псевдоним</translation> <translation id="1690731385917361335">Няма елементи</translation> <translation id="1692118695553449118">Синхронизирането е включено</translation> <translation id="1700629756560807968">Избрахте <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Повторно отваряне на затворения раздел</translation> <translation id="3371831930909698441">Налице е превод. Опциите са достъпни в долната част на екрана.</translation> <translation id="3393920035788932672">Изск. прозорци са разр.</translation> +<translation id="3425644765244388016">Псевдоним на картата</translation> <translation id="3443810440409579745">Получен раздел.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> мин</translation> <translation id="3448016392200048164">Разделен изглед</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Запазване на изобрaжението</translation> <translation id="3789841737615482174">Инсталиране</translation> <translation id="3803696231112616155">Предлагане да се преведе този сайт</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Няма компрометирани пароли}=1{{COUNT} компрометирана парола}other{{COUNT} компрометирани пароли}}</translation> <translation id="385051799172605136">Назад</translation> <translation id="3892144330757387737">Тук ще се показва историята ви</translation> <translation id="3897092660631435901">Меню</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Споделяне...</translation> <translation id="7192050974311852563">Стартиране на регистрирането</translation> <translation id="7203585745079012652">Изговаряне на отговорите</translation> +<translation id="721597782417389033">Псевдонимът на картата е невалиден</translation> <translation id="7265758999917665941">Никога за този сайт</translation> <translation id="7272437679830969316">Паролата не бе копирана поради неуспешно удостоверяване.</translation> <translation id="7291368939935408496">Паролите се подготвят...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb index 0d3c8fc4..e87cb49 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> na <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Da biste imali svoje oznake na svim svojim uređajima, uključite sinhronizaciju.</translation> <translation id="1687475363370981210">Označi sve pročitano</translation> +<translation id="1689333818294560261">Nadimak</translation> <translation id="1690731385917361335">Nema stavki</translation> <translation id="1692118695553449118">Sinhronizacija je uključena</translation> <translation id="1700629756560807968">Odabrano je <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Ponovo otvori zatvorenu karticu</translation> <translation id="3371831930909698441">Dostupan je Prevodilac. Opcije su dostupne pri dnu ekrana.</translation> <translation id="3393920035788932672">Skočni prozori su dozvoljeni</translation> +<translation id="3425644765244388016">Nadimak kartice</translation> <translation id="3443810440409579745">Kartica je primljena.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Podijeljeni prikaz</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Sačuvaj sliku</translation> <translation id="3789841737615482174">Instaliraj</translation> <translation id="3803696231112616155">Ponudi prijevod ove web lokacije</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Nijedna lozinka nije ugrožena}=1{{COUNT} lozinka je ugrožena}one{{COUNT} lozinka je ugrožena}few{{COUNT} lozinke su ugrožene}other{{COUNT} lozinki je ugroženo}}</translation> <translation id="385051799172605136">Nazad</translation> <translation id="3892144330757387737">Svoju historiju ćete pronaći ovdje</translation> <translation id="3897092660631435901">Meni</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Dijeli...</translation> <translation id="7192050974311852563">Pokreni zapisivanje</translation> <translation id="7203585745079012652">Izgovori odgovore</translation> +<translation id="721597782417389033">Nevažeći nadimak kartice</translation> <translation id="7265758999917665941">Nikada za ovu web lokaciju</translation> <translation id="7272437679830969316">Nije moguće potvrditi vaš identitet. Lozinka nije kopirana.</translation> <translation id="7291368939935408496">Pripremanje lozinki...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb index 1595d7a5..86ca9a1 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478">Z: <ph name="SOURCE_LANGUAGE" /> do: <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Chcete-li mít záložky ve všech zařízeních, zapněte synchronizaci.</translation> <translation id="1687475363370981210">Označit vše jako přečtené</translation> +<translation id="1689333818294560261">Přezdívka</translation> <translation id="1690731385917361335">Žádné položky</translation> <translation id="1692118695553449118">Synchronizace je zapnuta</translation> <translation id="1700629756560807968">Počet vybraných položek: <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Znovu otevřít zavřenou kartu</translation> <translation id="3371831930909698441">Je k dispozici Překladač. Možnosti jsou k dispozici ve spodní části obrazovky.</translation> <translation id="3393920035788932672">Vyskakovací okna povolena</translation> +<translation id="3425644765244388016">Přezdívka karty</translation> <translation id="3443810440409579745">Byla přijata karta.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Režim Split View</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Uložit obrázek</translation> <translation id="3789841737615482174">Instalovat</translation> <translation id="3803696231112616155">Nabízet překlad tohoto webu</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Žádná hesla nebyla prolomena}=1{Bylo prolomeno {COUNT} heslo}few{Byla prolomena {COUNT} hesla}many{Bylo prolomeno {COUNT} hesla}other{Bylo prolomeno {COUNT} hesel}}</translation> <translation id="385051799172605136">Zpět</translation> <translation id="3892144330757387737">Zde najdete svou historii</translation> <translation id="3897092660631435901">Nabídka</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Sdílet...</translation> <translation id="7192050974311852563">Začít protokolovat</translation> <translation id="7203585745079012652">Vyslovovat odpovědi</translation> +<translation id="721597782417389033">Neplatná přezdívka karty</translation> <translation id="7265758999917665941">Pro tento web nikdy</translation> <translation id="7272437679830969316">Vaši totožnost nelze ověřit. Heslo nebylo zkopírováno.</translation> <translation id="7291368939935408496">Příprava hesel…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb index a871134..d57c16fdf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> til <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Aktivér synkronisering for at se dine bogmærker på alle dine enheder.</translation> <translation id="1687475363370981210">Markér alle som læste</translation> +<translation id="1689333818294560261">Kaldenavn</translation> <translation id="1690731385917361335">Ingen elementer</translation> <translation id="1692118695553449118">Synkronisering er slået til</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> valgt</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Åbn lukket fane igen</translation> <translation id="3371831930909698441">Oversættelse er tilgængelig. Du finder indstillingerne nederst på skærmen.</translation> <translation id="3393920035788932672">Pop op-vinduer tilladt</translation> +<translation id="3425644765244388016">Kortets kaldenavn</translation> <translation id="3443810440409579745">Du har modtaget en fane.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min.</translation> <translation id="3448016392200048164">Opdelt visning</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Gem billede</translation> <translation id="3789841737615482174">Installer</translation> <translation id="3803696231112616155">Tilbyd at oversætte dette website</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Ingen adgangskoder er kompromitteret}=1{{COUNT} adgangskode er kompromitteret}one{{COUNT} adgangskode er kompromitteret}other{{COUNT} adgangskoder er kompromitteret}}</translation> <translation id="385051799172605136">Tilbage</translation> <translation id="3892144330757387737">Her kan du se din historik</translation> <translation id="3897092660631435901">Menu</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Del...</translation> <translation id="7192050974311852563">Start logføring</translation> <translation id="7203585745079012652">Giv talte svar</translation> +<translation id="721597782417389033">Kortets kaldenavn er ugyldigt</translation> <translation id="7265758999917665941">Aldrig for dette website</translation> <translation id="7272437679830969316">Din identitet kunne ikke bekræftes. Adgangskoden blev ikke kopieret.</translation> <translation id="7291368939935408496">Forbereder adgangskoder...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb index c8266d0..cc9d921 100644 --- a/ios/chrome/app/strings/resources/ios_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> προς <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Για να εμφανίζονται οι σελιδοδείκτες σας σε όλες τις συσκευές σας, ενεργοποιήστε τον συγχρονισμό.</translation> <translation id="1687475363370981210">Επισήμανση όλων ως αναγνωσμένων</translation> +<translation id="1689333818294560261">Ψευδώνυμο</translation> <translation id="1690731385917361335">Κανένα στοιχείο</translation> <translation id="1692118695553449118">Ο συγχρονισμός είναι ενεργοποιημένος</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> στοιχεία επιλεγμένα</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Εκ Νέου Άνοιγμα Κλεισμένης Καρτέλας</translation> <translation id="3371831930909698441">Διατίθεται μετάφραση. Διαθέσιμες επιλογές κοντά στο κάτω μέρος της οθόνης.</translation> <translation id="3393920035788932672">Επιτρέπ. τα αναδυόμ.</translation> +<translation id="3425644765244388016">Ψευδώνυμο κάρτας</translation> <translation id="3443810440409579745">Η καρτέλα λήφθηκε.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> λεπτά</translation> <translation id="3448016392200048164">Προβολή διαχωρισμού οθόνης</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Αποθήκευση εικόνας</translation> <translation id="3789841737615482174">Εγκατάσταση</translation> <translation id="3803696231112616155">Πρόταση για μετάφραση αυτού του ιστοτόπου</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Δεν παραβιάστηκαν κωδικοί πρόσβασης.}=1{Παραβιάστηκε {COUNT} κωδικός πρόσβασης.}other{Παραβιάστηκαν {COUNT} κωδικοί πρόσβασης.}}</translation> <translation id="385051799172605136">Πίσω</translation> <translation id="3892144330757387737">Εδώ θα βρείτε το ιστορικό σας</translation> <translation id="3897092660631435901">Μενού</translation> @@ -530,6 +533,7 @@ <translation id="7189598951263744875">Κοινοποίηση…</translation> <translation id="7192050974311852563">Έναρξη καταγραφής</translation> <translation id="7203585745079012652">Εκφώνηση απαντήσεων</translation> +<translation id="721597782417389033">Μη έγκυρο ψευδώνυμο κάρτας</translation> <translation id="7265758999917665941">Ποτέ για αυτόν τον ιστότοπο</translation> <translation id="7272437679830969316">Δεν είναι δυνατή η επαλήθευση της ταυτότητας σας. Ο κωδικός πρόσβασης δεν αντιγράφηκε.</translation> <translation id="7291368939935408496">Προετοιμασία κωδικών πρόσβασης…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb index 8901a71..c4644aee 100644 --- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> to <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">To get your bookmarks on all your devices, turn on sync.</translation> <translation id="1687475363370981210">Mark All Read</translation> +<translation id="1689333818294560261">Nickname</translation> <translation id="1690731385917361335">No items</translation> <translation id="1692118695553449118">Sync is on</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> selected</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Re-open Closed Tab</translation> <translation id="3371831930909698441">Translate is available. Options available near bottom of the screen.</translation> <translation id="3393920035788932672">Pop-ups Allowed</translation> +<translation id="3425644765244388016">Card nickname</translation> <translation id="3443810440409579745">Tab received.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Split View</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Save Image</translation> <translation id="3789841737615482174">Install</translation> <translation id="3803696231112616155">Offer to translate this site</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{No passwords compromised}=1{{COUNT} password compromised}other{{COUNT} passwords compromised}}</translation> <translation id="385051799172605136">Back</translation> <translation id="3892144330757387737">You'll find your history here</translation> <translation id="3897092660631435901">Menu</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Share...</translation> <translation id="7192050974311852563">Start logging</translation> <translation id="7203585745079012652">Speak Answers Back</translation> +<translation id="721597782417389033">Invalid card nickname</translation> <translation id="7265758999917665941">Never for this site</translation> <translation id="7272437679830969316">Can't verify your identity. Password not copied.</translation> <translation id="7291368939935408496">Preparing Passwords…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb index c64cd89..fae8c60 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> – <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Da bi se vaše oznake prikazale na svim vašim uređajima, uključite sinkronizaciju.</translation> <translation id="1687475363370981210">Označi sve kao pročitano</translation> +<translation id="1689333818294560261">Nadimak</translation> <translation id="1690731385917361335">Nema stavki</translation> <translation id="1692118695553449118">Sinkronizacija je uključena</translation> <translation id="1700629756560807968">Broj odabranih oznaka: <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Ponovo otvori zatvorenu karticu</translation> <translation id="3371831930909698441">Prevoditelj je dostupan. Opcije su dostupne pri dnu zaslona.</translation> <translation id="3393920035788932672">Dopušteni skočni</translation> +<translation id="3425644765244388016">Nadimak kartice</translation> <translation id="3443810440409579745">Primljena je kartica.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Podijeljeni prikaz</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Spremi sliku</translation> <translation id="3789841737615482174">Instaliraj</translation> <translation id="3803696231112616155">Ponudi prevođenje ove web-lokacije</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Nema ugroženih zaporki}=1{{COUNT} ugrožena zaporka}one{{COUNT} ugrožena zaporka}few{{COUNT} ugrožene zaporke}other{{COUNT} ugroženih zaporki}}</translation> <translation id="385051799172605136">Natrag</translation> <translation id="3892144330757387737">Ovdje ćete pronaći svoju povijest</translation> <translation id="3897092660631435901">Izbornik</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Dijeli...</translation> <translation id="7192050974311852563">Započni zapisivanje</translation> <translation id="7203585745079012652">Izgovaranje odgovora</translation> +<translation id="721597782417389033">Nadimak kartice nije važeći</translation> <translation id="7265758999917665941">Nikad za ovu web lokaciju</translation> <translation id="7272437679830969316">Potvrda identiteta nije moguća. Zaporka nije kopirana.</translation> <translation id="7291368939935408496">Priprema zaporki...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb index 7a49fdbb..0184e767 100644 --- a/ios/chrome/app/strings/resources/ios_strings_is.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> > <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Kveiktu á samstillingu til að fá aðgang að bókamerkjunum þínum í öllum tækjum.</translation> <translation id="1687475363370981210">Merkja allt sem lesið</translation> +<translation id="1689333818294560261">Gælunafn</translation> <translation id="1690731385917361335">Engin atriði</translation> <translation id="1692118695553449118">Kveikt er á samstillingu</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> valin</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Enduropna lokaðan flipa</translation> <translation id="3371831930909698441">Þýðing er í boði. Valkostir eru neðst á skjánum</translation> <translation id="3393920035788932672">Sprettigluggar leyfðir</translation> +<translation id="3425644765244388016">Gælunafn korts</translation> <translation id="3443810440409579745">Flipi móttekinn.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> mín.</translation> <translation id="3448016392200048164">Tvískiptur skjár</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Vista mynd</translation> <translation id="3789841737615482174">Setja upp</translation> <translation id="3803696231112616155">Bjóðast til að þýða þetta vefsvæði</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Engin aðgangsorð í hættu}=1{{COUNT} aðgangsorð í hættu}one{{COUNT} aðgangsorð í hættu}other{{COUNT} aðgangsorð í hættu}}</translation> <translation id="385051799172605136">Til baka</translation> <translation id="3892144330757387737">Þú finnur ferilinn þinn hér</translation> <translation id="3897092660631435901">Valmynd</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Deila...</translation> <translation id="7192050974311852563">Hefja skráningu</translation> <translation id="7203585745079012652">Lesa upp svör</translation> +<translation id="721597782417389033">Ógilt gælunafn korts</translation> <translation id="7265758999917665941">Aldrei fyrir þetta vefsvæði</translation> <translation id="7272437679830969316">Ekki tókst að staðfesta hver þú ert. Aðgangsorð var ekki afritað.</translation> <translation id="7291368939935408496">Undirbýr aðgangsorð...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb index dbb60a8..a904836c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> į <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Jei norite gauti žymes visuose įrenginiuose, įjunkite sinchronizavimą.</translation> <translation id="1687475363370981210">Pažymėti visus kaip skaitytus</translation> +<translation id="1689333818294560261">Slapyvardis</translation> <translation id="1690731385917361335">Nėra jokių elementų</translation> <translation id="1692118695553449118">Sinchronizavimas įjungtas</translation> <translation id="1700629756560807968">Pasirinkta: <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Iš naujo atidarykite uždarytą skirtuką</translation> <translation id="3371831930909698441">Pasiekiamas vertimas. Parinktys pasiekiamos netoli ekrano apačios.</translation> <translation id="3393920035788932672">Iššok. l. leidžiami</translation> +<translation id="3425644765244388016">Kortelės slapyvardis</translation> <translation id="3443810440409579745">Skirtukas gautas.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min.</translation> <translation id="3448016392200048164">Padalytas rodinys</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Išsaugoti vaizdą</translation> <translation id="3789841737615482174">Įdiegti</translation> <translation id="3803696231112616155">Siūlyti versti šią svetainę</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Nėra pažeistų slaptažodžių}=1{{COUNT} pažeistas slaptažodis}one{{COUNT} pažeistas slaptažodis}few{{COUNT} pažeisti slaptažodžiai}many{{COUNT} pažeisto slaptažodžio}other{{COUNT} pažeistų slaptažodžių}}</translation> <translation id="385051799172605136">Atgal</translation> <translation id="3892144330757387737">Čia rasite istoriją</translation> <translation id="3897092660631435901">Meniu</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Bendrinti...</translation> <translation id="7192050974311852563">Pradėti registravimą</translation> <translation id="7203585745079012652">Sakyti atsakymus</translation> +<translation id="721597782417389033">Netinkamas kortelės slapyvardis</translation> <translation id="7265758999917665941">Niekada šioje svetainėje</translation> <translation id="7272437679830969316">Nepavyko patvirtinti tapatybės. Slaptažodis nenukopijuotas.</translation> <translation id="7291368939935408496">Ruošiami slaptažodžiai…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb index 0ae4eec..1830fca8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_no.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> til <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">For å få bokmerkene dine på alle enhetene dine, slå på synkronisering.</translation> <translation id="1687475363370981210">Merk alle som lest</translation> +<translation id="1689333818294560261">Kallenavn</translation> <translation id="1690731385917361335">Ingen elementer</translation> <translation id="1692118695553449118">Synkronisering er slått på.</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> er valgt</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Åpne lukkede faner igjen</translation> <translation id="3371831930909698441">Oversetter er tilgjengelig. Du finner alternativer på nedre del av skjermen.</translation> <translation id="3393920035788932672">Tillat forgrunnsvinduer</translation> +<translation id="3425644765244388016">Kallenavn på kortet</translation> <translation id="3443810440409579745">Fane er mottatt.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Delt visning</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Lagre bildet</translation> <translation id="3789841737615482174">Installer</translation> <translation id="3803696231112616155">Tilby å oversette dette nettstedet</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Ingen passord er utsatt for sikkerhetsbrudd}=1{{COUNT} passord er utsatt for sikkerhetsbrudd}other{{COUNT} passord er utsatt for sikkerhetsbrudd}}</translation> <translation id="385051799172605136">Tilbake</translation> <translation id="3892144330757387737">Her finner du loggen din</translation> <translation id="3897092660631435901">Meny</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Del</translation> <translation id="7192050974311852563">Start loggføring</translation> <translation id="7203585745079012652">Svar med tale</translation> +<translation id="721597782417389033">Ugyldig kallenavn på kortet</translation> <translation id="7265758999917665941">Aldri for dette nettstedet</translation> <translation id="7272437679830969316">Kan ikke bekrefte identiteten din. Passordet er ikke kopiert.</translation> <translation id="7291368939935408496">Klargjør passordene …</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb index 343d409..89b0320 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478">Z: <ph name="SOURCE_LANGUAGE" /> na: <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Aby korzystać ze swoich zakładek na wszystkich urządzeniach, włącz synchronizację.</translation> <translation id="1687475363370981210">Oznacz wszystkie jako przeczytane</translation> +<translation id="1689333818294560261">Pseudonim</translation> <translation id="1690731385917361335">Brak elementów</translation> <translation id="1692118695553449118">Synchronizacja jest włączona</translation> <translation id="1700629756560807968">Wybrane: <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Otwórz ponownie zamkniętą kartę</translation> <translation id="3371831930909698441">Dostępne jest tłumaczenie. Opcje znajdują się u dołu ekranu.</translation> <translation id="3393920035788932672">Pop-upy akceptowane</translation> +<translation id="3425644765244388016">Nazwa karty</translation> <translation id="3443810440409579745">Odebrano kartę.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Widok dzielony</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Zapisz obraz</translation> <translation id="3789841737615482174">Zainstaluj</translation> <translation id="3803696231112616155">Proponuj tłumaczenie tej strony</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Brak przejętych haseł}=1{Zostało przejęte {COUNT} hasło}few{Zostały przejęte {COUNT} hasła}many{Zostało przejętych {COUNT} haseł}other{Zostało przejęte {COUNT} hasła}}</translation> <translation id="385051799172605136">Wstecz</translation> <translation id="3892144330757387737">Tu znajdziesz swoją historię</translation> <translation id="3897092660631435901">Menu</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Udostępnij...</translation> <translation id="7192050974311852563">Uruchom rejestrowanie</translation> <translation id="7203585745079012652">Odczytuj odpowiedzi</translation> +<translation id="721597782417389033">Nieprawidłowa nazwa karty</translation> <translation id="7265758999917665941">Nigdy dla tej witryny</translation> <translation id="7272437679830969316">Nie można zweryfikować Twojej tożsamości. Hasło nie zostało skopiowane.</translation> <translation id="7291368939935408496">Przygotowuję hasła…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb index 4e5e601b..5d1d0d0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478">De <ph name="SOURCE_LANGUAGE" /> para <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Para obter os seus marcadores em todos os dispositivos, ative a sincronização.</translation> <translation id="1687475363370981210">Marcar tudo como lido</translation> +<translation id="1689333818294560261">Pseudónimo</translation> <translation id="1690731385917361335">Sem itens</translation> <translation id="1692118695553449118">A sincronização está ativada</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> selecionados</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Reabrir separador fechado</translation> <translation id="3371831930909698441">A tradução está disponível. Opções disponíveis junto à parte inferior do ecrã.</translation> <translation id="3393920035788932672">Pop-ups Permitidos</translation> +<translation id="3425644765244388016">Pseudónimo do cartão</translation> <translation id="3443810440409579745">Separador recebido.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Vista dividida</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Guardar Imagem</translation> <translation id="3789841737615482174">Instalar</translation> <translation id="3803696231112616155">Propor tradução deste site</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Não existem palavras-passe comprometidas.}=1{{COUNT} palavra-passe comprometida.}other{{COUNT} palavras-passe comprometidas.}}</translation> <translation id="385051799172605136">Anterior</translation> <translation id="3892144330757387737">O seu histórico será apresentado aqui</translation> <translation id="3897092660631435901">Menu</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Partilhar...</translation> <translation id="7192050974311852563">Iniciar registo</translation> <translation id="7203585745079012652">Ouvir Respostas</translation> +<translation id="721597782417389033">Pseudónimo do cartão inválido</translation> <translation id="7265758999917665941">Nunca para este site</translation> <translation id="7272437679830969316">Não é possível validar a sua identidade. Palavra-passe não copiada.</translation> <translation id="7291368939935408496">A preparar palavras-passe…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb index 4877524..107040f9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478">Din <ph name="SOURCE_LANGUAGE" /> în <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Pentru a accesa marcajele pe toate dispozitivele, activează sincronizarea.</translation> <translation id="1687475363370981210">Marchează-le pe toate ca citite</translation> +<translation id="1689333818294560261">Pseudonim</translation> <translation id="1690731385917361335">Niciun element</translation> <translation id="1692118695553449118">Sincronizarea este activată</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> selectate</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Redeschide fila închisă</translation> <translation id="3371831930909698441">Traducerea este disponibilă. Sunt disponibile opțiuni în partea de jos a ecranului.</translation> <translation id="3393920035788932672">Pop-upuri permise</translation> +<translation id="3425644765244388016">Pseudonimul cardului</translation> <translation id="3443810440409579745">Fila a fost primită.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min.</translation> <translation id="3448016392200048164">Vizualizare împărțită</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Salvează imaginea</translation> <translation id="3789841737615482174">Instalează</translation> <translation id="3803696231112616155">Oferă traducerea acestui site</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Nu există parole compromise}=1{{COUNT} parolă compromisă}few{{COUNT} parole compromise}other{{COUNT} de parole compromise}}</translation> <translation id="385051799172605136">Înapoi</translation> <translation id="3892144330757387737">Aici vei vedea istoricul</translation> <translation id="3897092660631435901">Meniu</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Trimite...</translation> <translation id="7192050974311852563">Activează înregistrarea în jurnal</translation> <translation id="7203585745079012652">Primești răspunsuri vocale</translation> +<translation id="721597782417389033">Pseudonimul cardului nu este valid</translation> <translation id="7265758999917665941">Niciodată pentru acest site</translation> <translation id="7272437679830969316">Nu ți se poate confirma identitatea. Parola nu a fost copiată.</translation> <translation id="7291368939935408496">Se pregătesc parolele...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb index 4c51cd5..b6150af 100644 --- a/ios/chrome/app/strings/resources/ios_strings_si.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> සිට <ph name="TARGET_LANGUAGE" /> ට</translation> <translation id="168715261339224929">ඔබේ සියලු උපාංගවල ඔබේ පිටුසන් ලබා ගැනීමට, සමමුහුර්තය ක්රියාත්මක කරන්න.</translation> <translation id="1687475363370981210">සියල්ල කියවූ ලෙස ලකුණු කරන්න</translation> +<translation id="1689333818294560261">අපනාමය</translation> <translation id="1690731385917361335">අයිතම නොමැත</translation> <translation id="1692118695553449118">සමමුහුව ක්රියාත්මකයි</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> ක් තෝරා ගන්නා ලදි</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">වැසූ ටැබය යළි විවෘත කරන්න</translation> <translation id="3371831930909698441">පරිවර්තනය ලැබේ. තිරයේ පහළට ආසන්නව විකල්ප ලබා ගත හැක.</translation> <translation id="3393920035788932672">උත්පතන වලට ඉඩ දෙන ලද</translation> +<translation id="3425644765244388016">කාඩ්පත් අපනාමය</translation> <translation id="3443810440409579745">ලැබූ පටිත්ත.</translation> <translation id="3445288400492335833">මිනි <ph name="MINUTES" /></translation> <translation id="3448016392200048164">විභෙදුම් දසුන</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">රූපය සුරකින්න</translation> <translation id="3789841737615482174">ස්ථාපනය</translation> <translation id="3803696231112616155">මෙම වෙබ් අඩවිය පරිවර්තන කිරීමට පිරිනමන්න</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{කිසිදු මුරපදයක් අවදානමේ නැත}=1{මුරපද {COUNT}ක් අවදානමකට පත් විය}one{මුරපද {COUNT}ක් අවදානමකට පත් විය}other{මුරපද {COUNT}ක් අවදානමකට පත් විය}}</translation> <translation id="385051799172605136">ආපසු</translation> <translation id="3892144330757387737">ඔබට ඔබේ ඉතිහාසය මෙහි හමුවනු ඇත</translation> <translation id="3897092660631435901">මෙනුව</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">බෙදා ගන්න…</translation> <translation id="7192050974311852563">ලොග් කිරීම අරඹන්න</translation> <translation id="7203585745079012652">පිළිතුරු ආපසු දෙන්න</translation> +<translation id="721597782417389033">වලංගු නොවන කාඩ්පත් අපනාමය</translation> <translation id="7265758999917665941">කිසි විටෙක මෙම වෙබ් අඩවිය සඳහා නැත</translation> <translation id="7272437679830969316">ඔබගේ අනන්යතාව තහවුරු කළ නොහැකිය. මුරපදය පිටපත් නොකරන ලදී.</translation> <translation id="7291368939935408496">මුරපද සූදානම් කරමින්...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index 4d13824..64f47bb5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478">Iz jezika <ph name="SOURCE_LANGUAGE" /> v jezik <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Če želite dostopati do zaznamkov v vseh napravah, vklopite sinhronizacijo.</translation> <translation id="1687475363370981210">Označi vse kot prebrano</translation> +<translation id="1689333818294560261">Vzdevek</translation> <translation id="1690731385917361335">Ni elementov</translation> <translation id="1692118695553449118">Sinhroniziranje je vklopljeno</translation> <translation id="1700629756560807968">Št. izbranih: <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Znova odpri zaprt zavihek</translation> <translation id="3371831930909698441">Prevod je na voljo. Možnosti so na voljo pri dnu zaslona.</translation> <translation id="3393920035788932672">Pojavna okna so dovoljena</translation> +<translation id="3425644765244388016">Vzdevek za kartico</translation> <translation id="3443810440409579745">Prejet zavihek.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Razdeljeni pogled</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Shrani sliko</translation> <translation id="3789841737615482174">Namesti</translation> <translation id="3803696231112616155">Ponudi prevod tega spletnega mesta</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Ni ogroženih gesel}=1{{COUNT} ogroženo geslo}one{{COUNT} ogroženo geslo}two{{COUNT} ogroženi gesli}few{{COUNT} ogrožena gesla}other{{COUNT} ogroženih gesel}}</translation> <translation id="385051799172605136">Nazaj</translation> <translation id="3892144330757387737">Tukaj bo prikazana zgodovina</translation> <translation id="3897092660631435901">Meni</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Deli z drugimi</translation> <translation id="7192050974311852563">Začni pisanje dnevnika</translation> <translation id="7203585745079012652">Izgovorjava odgovorov</translation> +<translation id="721597782417389033">Neveljaven vzdevek za kartico</translation> <translation id="7265758999917665941">Nikoli za to spletno mesto</translation> <translation id="7272437679830969316">Identitete ni mogoče preveriti. Geslo ni kopirano.</translation> <translation id="7291368939935408496">Pripravljanje gesel ...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb index ae211b1..c5217183 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> na <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Da bi vam obeleživači bili dostupni na svim uređajima, uključite sinhronizaciju.</translation> <translation id="1687475363370981210">Označi sve kao pročitano</translation> +<translation id="1689333818294560261">Nadimak</translation> <translation id="1690731385917361335">Nema stavki</translation> <translation id="1692118695553449118">Sinhronizacija je uključena</translation> <translation id="1700629756560807968">Broj izabranih stavki je <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Ponovo otvori zatvorenu karticu</translation> <translation id="3371831930909698441">Prevodilac je dostupan. Opcije su dostupne u dnu ekrana.</translation> <translation id="3393920035788932672">Dozvoljeni iskačući prozori</translation> +<translation id="3425644765244388016">Nadimak kartice</translation> <translation id="3443810440409579745">Kartica je primljena.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3448016392200048164">Podeljeni prikaz</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Sačuvaj sliku</translation> <translation id="3789841737615482174">Instaliraj</translation> <translation id="3803696231112616155">Ponudi prevod ovog sajta</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Nije ugrožena nijedna lozinka}=1{{COUNT} lozinka je ugrožena}one{{COUNT} lozinka je ugrožena}few{{COUNT} lozinke su ugrožene}other{{COUNT} lozinki je ugroženo}}</translation> <translation id="385051799172605136">Nazad</translation> <translation id="3892144330757387737">Ovde ćete pronaći istoriju</translation> <translation id="3897092660631435901">Meni</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Deli...</translation> <translation id="7192050974311852563">Pokreni evidentiranje</translation> <translation id="7203585745079012652">Izgovaraj odgovore</translation> +<translation id="721597782417389033">Nevažeći nadimak kartice</translation> <translation id="7265758999917665941">Nikada za ovaj sajt</translation> <translation id="7272437679830969316">Verifikacija identiteta nije uspela. Lozinka nije kopirana.</translation> <translation id="7291368939935408496">Pripremaju se lozinke...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb index 15c01474..cc73ff5e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> на <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Да би вам обележивачи били доступни на свим уређајима, укључите синхронизацију.</translation> <translation id="1687475363370981210">Означи све као прочитано</translation> +<translation id="1689333818294560261">Надимак</translation> <translation id="1690731385917361335">Нема ставки</translation> <translation id="1692118695553449118">Синхронизација је укључена</translation> <translation id="1700629756560807968">Број изабраних ставки је <ph name="NUMBER_OF_SELECTED_BOOKMARKS" /></translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Поново отвори затворену картицу</translation> <translation id="3371831930909698441">Преводилац је доступан. Опције су доступне у дну екрана.</translation> <translation id="3393920035788932672">Дозвољени искачући прозори</translation> +<translation id="3425644765244388016">Надимак картице</translation> <translation id="3443810440409579745">Картица је примљена.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> мин</translation> <translation id="3448016392200048164">Подељени приказ</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Сачувај слику</translation> <translation id="3789841737615482174">Инсталирај</translation> <translation id="3803696231112616155">Понуди превод овог сајта</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Није угрожена ниједна лозинка}=1{{COUNT} лозинка је угрожена}one{{COUNT} лозинка је угрожена}few{{COUNT} лозинке су угрожене}other{{COUNT} лозинки је угрожено}}</translation> <translation id="385051799172605136">Назад</translation> <translation id="3892144330757387737">Овде ћете пронаћи историју</translation> <translation id="3897092660631435901">Мени</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Дели...</translation> <translation id="7192050974311852563">Покрени евидентирање</translation> <translation id="7203585745079012652">Изговарај одговоре</translation> +<translation id="721597782417389033">Неважећи надимак картице</translation> <translation id="7265758999917665941">Никада за овај сајт</translation> <translation id="7272437679830969316">Верификација идентитета није успела. Лозинка није копирана.</translation> <translation id="7291368939935408496">Припремају се лозинке...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb index f04b553a..8b7ccc7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> kwenda <ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Ili upate alamisho kwenye vifaa vyako vyote, washa usawazishaji.</translation> <translation id="1687475363370981210">Tia Alama kuwa Umesoma Zote</translation> +<translation id="1689333818294560261">Jina la kuwakilisha</translation> <translation id="1690731385917361335">Hakuna chochote</translation> <translation id="1692118695553449118">Usawazishajii umewashwa</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> vimechaguliwa</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Fungua Tena Kichupo Kilichofugwa</translation> <translation id="3371831930909698441">Huduma ya Tafsiri inapatikana. Chaguo zinapatikana karibu na sehemu ya chini ya skrini.</translation> <translation id="3393920035788932672">Ibukizi zimeruhusiwa</translation> +<translation id="3425644765244388016">Jina la Kuwakilisha Kadi</translation> <translation id="3443810440409579745">Umepokea kichupo.</translation> <translation id="3445288400492335833">Dakika <ph name="MINUTES" /></translation> <translation id="3448016392200048164">Mwonekano wa Madirisha Mawili</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Hifadhi Picha</translation> <translation id="3789841737615482174">Sakinisha</translation> <translation id="3803696231112616155">Jitolee kutafsiri tovuti hii</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Hakuna manenosiri yaliyoathiriwa}=1{Nenosiri {COUNT} limeathiriwa}other{Manenosiri {COUNT} yameathiriwa}}</translation> <translation id="385051799172605136">Rudi nyuma</translation> <translation id="3892144330757387737">Utapata historia yako hapa</translation> <translation id="3897092660631435901">Menyu</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Shiriki...</translation> <translation id="7192050974311852563">Anza Kuleta Kumbukumbu</translation> <translation id="7203585745079012652">Tamka Majibu</translation> +<translation id="721597782417389033">Jina la Kuwakilisha Kadi si Sahihi</translation> <translation id="7265758999917665941">Isikumbuke Kamwe Katika Tovuti Hii</translation> <translation id="7272437679830969316">Utambulisho wako haujathibitishwa. Nenosiri halijanakiliwa.</translation> <translation id="7291368939935408496">Inatayarisha Manenosiri...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb index 94125f0..5b7023a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -72,6 +72,7 @@ <translation id="1674504678466460478">Isi-<ph name="SOURCE_LANGUAGE" /> ukuya kusi-<ph name="TARGET_LANGUAGE" /></translation> <translation id="168715261339224929">Ukuze uthole amabhukhimakhi akho kuwo onke amadivayisi akho, vula ukuvumelanisa.</translation> <translation id="1687475363370981210">Maka konke njengokufundiwe</translation> +<translation id="1689333818294560261">Isiteketiso</translation> <translation id="1690731385917361335">Azikho izinto</translation> <translation id="1692118695553449118">Ukuvumelanisa kuvuliwe</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> kukhethiwe</translation> @@ -206,6 +207,7 @@ <translation id="3335947283844343239">Phinda uvule ithebhu evaliwe</translation> <translation id="3371831930909698441">Ukuhumusha kuyatholakala. Izinketho ziyatholakala eduze kwangaphansi kwesikrini.</translation> <translation id="3393920035788932672">Izigelekeqe zivunyelwe</translation> +<translation id="3425644765244388016">Isiteketiso segama</translation> <translation id="3443810440409579745">Ithebhu itholiwe.</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> amaminithi</translation> <translation id="3448016392200048164">Ukubuka okuhlukanisiwe</translation> @@ -240,6 +242,7 @@ <translation id="3783017676699494206">Londoloza isithombe</translation> <translation id="3789841737615482174">Faka</translation> <translation id="3803696231112616155">Nikeza ukuhumusha leli sayithi</translation> +<translation id="3836313059960742452">{COUNT,plural, =0{Awekho amaphasiwedi onakalisiwe}=1{Amaphasiwedi onakalisiwe angu-{COUNT}}one{Amaphasiwedi onakalisiwe angu-{COUNT}}other{Amaphasiwedi onakalisiwe angu-{COUNT}}}</translation> <translation id="385051799172605136">Emuva</translation> <translation id="3892144330757387737">Uzothola umlando wakho lapha</translation> <translation id="3897092660631435901">Imenyu</translation> @@ -529,6 +532,7 @@ <translation id="7189598951263744875">Yabelana...</translation> <translation id="7192050974311852563">Qala ukuloga</translation> <translation id="7203585745079012652">Khulumela emuva izimpendulo</translation> +<translation id="721597782417389033">Isiteketiso Sekhadi Esingavumelekile</translation> <translation id="7265758999917665941">Ungalokothi kuleli sayithi</translation> <translation id="7272437679830969316">Ayikwazi ukuqinisekisa ubunikazi bakho. Iphasiwedi ayikopishiwe.</translation> <translation id="7291368939935408496">Ilungiselela amaphasiwedi...</translation>
diff --git a/ios/chrome/browser/context_menu/context_menu_egtest.mm b/ios/chrome/browser/context_menu/context_menu_egtest.mm index 7f0afd1..ee13d5c 100644 --- a/ios/chrome/browser/context_menu/context_menu_egtest.mm +++ b/ios/chrome/browser/context_menu/context_menu_egtest.mm
@@ -183,6 +183,10 @@ // Tests "Open in New Tab" on context menu. - (void)testContextMenuOpenInNewTab { + // TODO(crbug.com/1107513): Test fails in some iPads. + if ([ChromeEarlGrey isIPadIdiom]) { + EARL_GREY_TEST_SKIPPED(@"Test disabled on iPad."); + } const GURL initialURL = self.testServer->GetURL(kInitialPageUrl); [ChromeEarlGrey loadURL:initialURL]; [ChromeEarlGrey
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm index ff0fbd55..bc3c98f6 100644 --- a/ios/chrome/browser/flags/about_flags.mm +++ b/ios/chrome/browser/flags/about_flags.mm
@@ -665,6 +665,10 @@ flag_descriptions::kAddWebContentDropInteractionDescription, flags_ui::kOsIos, FEATURE_VALUE_TYPE(web::features::kAddWebContentDropInteraction)}, + {"enable-fullpage-screenshot", + flag_descriptions::kEnableFullPageScreenshotName, + flag_descriptions::kEnableFullPageScreenshotDescription, flags_ui::kOsIos, + FEATURE_VALUE_TYPE(kEnableFullPageScreenshot)}, }; bool SkipConditionalFeatureEntry(const flags_ui::FeatureEntry& entry) {
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc index 7f5ff8c..e81b744 100644 --- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc +++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
@@ -228,6 +228,11 @@ const char kEnableClipboardProviderImageSuggestionsDescription[] = "Enable suggesting a search for the image copied to the clipboard"; +const char kEnableFullPageScreenshotName[] = "Enable fullpage screenshots"; +const char kEnableFullPageScreenshotDescription[] = + "Enables the option of capturing an entire webpage as a PDF when a " + "screenshot is taken."; + const char kEnableIOSManagedSettingsUIName[] = "Enable IOS Managed Settings UI"; const char kEnableIOSManagedSettingsUIDescription[] = "Enable showing a different UI when the setting is managed by an "
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h index bc4af91..3af260c 100644 --- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h +++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
@@ -192,6 +192,10 @@ extern const char kEnableClipboardProviderImageSuggestionsName[]; extern const char kEnableClipboardProviderImageSuggestionsDescription[]; +// Title and description for the flag to enable fullpage screenshots. +extern const char kEnableFullPageScreenshotName[]; +extern const char kEnableFullPageScreenshotDescription[]; + // Title and description for the flag to enable to show a different UI when the // setting is managed by an enterprise policy. extern const char kEnableIOSManagedSettingsUIName[];
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_egtest.mm b/ios/chrome/browser/ui/fullscreen/fullscreen_egtest.mm index 30efebe..f250e4a 100644 --- a/ios/chrome/browser/ui/fullscreen/fullscreen_egtest.mm +++ b/ios/chrome/browser/ui/fullscreen/fullscreen_egtest.mm
@@ -78,12 +78,8 @@ // Verifies that the content offset of the web view is set up at the correct // initial value when initially displaying a PDF. // TODO(crbug.com/947536): Fails on iOS 12 devices. -#if !TARGET_IPHONE_SIMULATOR -#define MAYBE_testLongPDFInitialState DISABLED_testLongPDFInitialState -#else -#define MAYBE_testLongPDFInitialState testLongPDFInitialState -#endif -- (void)MAYBE_testLongPDFInitialState { +// TODO(crbug.com/1106997): Test fails in simulator builders. +- (void)DISABLED_testLongPDFInitialState { web::test::SetUpFileBasedHttpServer(); GURL URL = web::test::HttpServer::MakeUrl( "http://ios/testing/data/http_server_files/two_pages.pdf");
diff --git a/ios/chrome/browser/ui/recent_tabs/BUILD.gn b/ios/chrome/browser/ui/recent_tabs/BUILD.gn index 74eedd3..a31c84e 100644 --- a/ios/chrome/browser/ui/recent_tabs/BUILD.gn +++ b/ios/chrome/browser/ui/recent_tabs/BUILD.gn
@@ -65,6 +65,7 @@ ] deps = [ ":recent_tabs_ui_constants", + "resources:recent_tabs_other_devices_empty", "//base", "//components/sessions", "//components/strings", @@ -142,6 +143,7 @@ "//base/test:test_support", "//components/strings", "//ios/chrome/app/strings", + "//ios/chrome/browser/ui:feature_flags", "//ios/chrome/browser/ui/authentication:eg_test_support+eg2", "//ios/chrome/browser/ui/authentication/cells:constants", "//ios/chrome/browser/ui/history:constants",
diff --git a/ios/chrome/browser/ui/recent_tabs/recent_tabs_egtest.mm b/ios/chrome/browser/ui/recent_tabs/recent_tabs_egtest.mm index ed6c9a6..2193ada 100644 --- a/ios/chrome/browser/ui/recent_tabs/recent_tabs_egtest.mm +++ b/ios/chrome/browser/ui/recent_tabs/recent_tabs_egtest.mm
@@ -15,6 +15,7 @@ #import "ios/chrome/browser/ui/recent_tabs/recent_tabs_constants.h" #import "ios/chrome/browser/ui/table_view/feature_flags.h" #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.h" +#import "ios/chrome/browser/ui/ui_feature_flags.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" @@ -239,4 +240,21 @@ OpenRecentTabsPanel(); } +// Tests that there is a text cell in the Recently Closed section when it's +// empty (Only with illustrated-empty-states flag enabled). +- (void)testEmptyState { + OpenRecentTabsPanel(); + + id<GREYInteraction> detailTextCell = [EarlGrey + selectElementWithMatcher: + grey_allOf(chrome_test_util::StaticTextWithAccessibilityLabelId( + IDS_IOS_RECENT_TABS_RECENTLY_CLOSED_EMPTY), + grey_sufficientlyVisible(), nil)]; + if (base::FeatureList::IsEnabled(kIllustratedEmptyStates)) { + [detailTextCell assertWithMatcher:grey_notNil()]; + } else { + [detailTextCell assertWithMatcher:grey_nil()]; + } +} + @end
diff --git a/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm b/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm index 686620c..01e2b009 100644 --- a/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm +++ b/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm
@@ -41,6 +41,7 @@ #import "ios/chrome/browser/ui/settings/sync/utils/sync_util.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" +#import "ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_image_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.h" @@ -82,6 +83,7 @@ typedef NS_ENUM(NSInteger, ItemType) { ItemTypeRecentlyClosedHeader = kItemTypeEnumZero, ItemTypeRecentlyClosed, + ItemTypeRecentlyClosedEmpty, ItemTypeOtherDevicesHeader, ItemTypeOtherDevicesSyncOff, ItemTypeOtherDevicesNoSessions, @@ -297,6 +299,18 @@ [self.tableViewModel addItem:recentlyClosedTab toSectionWithIdentifier:SectionIdentifierRecentlyClosedTabs]; } + if (base::FeatureList::IsEnabled(kIllustratedEmptyStates) && + self.tabRestoreService->entries().empty()) { + TableViewDetailTextItem* textItem = [[TableViewDetailTextItem alloc] + initWithType:ItemTypeRecentlyClosedEmpty]; + textItem.accessibilityLabel = + l10n_util::GetNSString(IDS_IOS_RECENT_TABS_RECENTLY_CLOSED_EMPTY); + textItem.detailText = + l10n_util::GetNSString(IDS_IOS_RECENT_TABS_RECENTLY_CLOSED_EMPTY); + textItem.detailTextColor = [UIColor colorNamed:kTextSecondaryColor]; + [self.tableViewModel addItem:textItem + toSectionWithIdentifier:SectionIdentifierRecentlyClosedTabs]; + } } // Updates the recently closed tabs section by clobbering and reinserting @@ -674,6 +688,7 @@ [self.presentationDelegate showHistoryFromRecentTabs]; } break; + case ItemTypeRecentlyClosedEmpty: case ItemTypeOtherDevicesSyncOff: case ItemTypeOtherDevicesNoSessions: case ItemTypeOtherDevicesSigninPromo: @@ -727,6 +742,17 @@ action:@selector(updateSyncState) forControlEvents:UIControlEventTouchUpInside]; } + // Setup the cell for multiline and hide the separator. + if (itemTypeSelected == ItemTypeRecentlyClosedEmpty) { + // This cell should only exist when illustrated-empty-states is enabled. + DCHECK(base::FeatureList::IsEnabled(kIllustratedEmptyStates)); + TableViewDetailTextCell* textCell = + base::mac::ObjCCastStrict<TableViewDetailTextCell>(cell); + textCell.detailTextLabel.numberOfLines = 0; + textCell.selectionStyle = UITableViewCellSelectionStyleNone; + textCell.separatorInset = + UIEdgeInsetsMake(0, tableView.bounds.size.width, 0, 0); + } return cell; } @@ -770,6 +796,7 @@ } case ItemTypeRecentlyClosedHeader: + case ItemTypeRecentlyClosedEmpty: case ItemTypeOtherDevicesHeader: case ItemTypeOtherDevicesSyncOff: case ItemTypeOtherDevicesNoSessions:
diff --git a/ios/chrome/browser/ui/recent_tabs/resources/BUILD.gn b/ios/chrome/browser/ui/recent_tabs/resources/BUILD.gn index b6129aa..5fa0a2c 100644 --- a/ios/chrome/browser/ui/recent_tabs/resources/BUILD.gn +++ b/ios/chrome/browser/ui/recent_tabs/resources/BUILD.gn
@@ -4,6 +4,14 @@ import("//build/config/ios/asset_catalog.gni") +imageset("recent_tabs_other_devices_empty") { + sources = [ + "recent_tabs_other_devices_empty.imageset/Contents.json", + "recent_tabs_other_devices_empty.imageset/recent_tabs_other_devices_empty.pdf", + "recent_tabs_other_devices_empty.imageset/recent_tabs_other_devices_empty_dark.pdf", + ] +} + imageset("show_history") { sources = [ "show_history.imageset/Contents.json",
diff --git a/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/Contents.json b/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/Contents.json new file mode 100644 index 0000000..67e3421c --- /dev/null +++ b/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/Contents.json
@@ -0,0 +1,25 @@ +{ + "images" : [ + { + "filename" : "recent_tabs_other_devices_empty.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "recent_tabs_other_devices_empty_dark.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +}
diff --git a/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/recent_tabs_other_devices_empty.pdf b/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/recent_tabs_other_devices_empty.pdf new file mode 100644 index 0000000..b88dd6f --- /dev/null +++ b/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/recent_tabs_other_devices_empty.pdf Binary files differ
diff --git a/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/recent_tabs_other_devices_empty_dark.pdf b/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/recent_tabs_other_devices_empty_dark.pdf new file mode 100644 index 0000000..3426cdd4 --- /dev/null +++ b/ios/chrome/browser/ui/recent_tabs/resources/recent_tabs_other_devices_empty.imageset/recent_tabs_other_devices_empty_dark.pdf Binary files differ
diff --git a/ios/chrome/browser/ui/ui_feature_flags.cc b/ios/chrome/browser/ui/ui_feature_flags.cc index 5ca909e..b588f1e 100644 --- a/ios/chrome/browser/ui/ui_feature_flags.cc +++ b/ios/chrome/browser/ui/ui_feature_flags.cc
@@ -62,3 +62,6 @@ const base::Feature kSharedHighlightingIOS{"SharedHighlightingIOS", base::FEATURE_DISABLED_BY_DEFAULT}; + +const base::Feature kEnableFullPageScreenshot{ + "EnableFullPageScreenshot", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/ios/chrome/browser/ui/ui_feature_flags.h b/ios/chrome/browser/ui/ui_feature_flags.h index 63bd0676..43015dc 100644 --- a/ios/chrome/browser/ui/ui_feature_flags.h +++ b/ios/chrome/browser/ui/ui_feature_flags.h
@@ -69,4 +69,7 @@ // and Link to Text features). extern const base::Feature kSharedHighlightingIOS; +// Feature flag that enables taking fullpage screenshots of a webpage. +extern const base::Feature kEnableFullPageScreenshot; + #endif // IOS_CHROME_BROWSER_UI_UI_FEATURE_FLAGS_H_
diff --git a/ios/chrome/browser/web/BUILD.gn b/ios/chrome/browser/web/BUILD.gn index 38d520b..144ba5ac 100644 --- a/ios/chrome/browser/web/BUILD.gn +++ b/ios/chrome/browser/web/BUILD.gn
@@ -347,6 +347,14 @@ ] } +source_set("constants") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "lookalike_url_constants.h", + "lookalike_url_constants.mm", + ] +} + source_set("eg_test_support+eg2") { defines = [ "CHROME_EARL_GREY_2" ] configs += [ @@ -355,7 +363,10 @@ ] testonly = true - sources = [ "progress_indicator_app_interface.h" ] + sources = [ + "lookalike_url_app_interface.h", + "progress_indicator_app_interface.h", + ] deps = [ "//ios/chrome/test/earl_grey:eg_test_support+eg2", @@ -372,15 +383,23 @@ defines = [ "CHROME_EARL_GREY_2" ] sources = [ + "lookalike_url_app_interface.h", + "lookalike_url_app_interface.mm", "progress_indicator_app_interface.h", "progress_indicator_app_interface.mm", ] deps = [ + ":constants", "//base", + "//components/lookalikes/core", + "//ios/chrome/test/app:test_support", + "//ios/components/security_interstitials/lookalikes", "//ios/testing/earl_grey:eg_app_support+eg2", "//ios/third_party/earl_grey2:app_framework+link", "//ios/third_party/material_components_ios", + "//ios/web/public", + "//net", ] } @@ -402,6 +421,7 @@ "forms_egtest.mm", "http_auth_egtest.mm", "js_print_egtest.mm", + "lookalike_url_egtest.mm", "navigation_egtest.mm", "progress_indicator_egtest.mm", "push_and_replace_state_navigation_egtest.mm", @@ -414,6 +434,7 @@ ] deps = [ + ":constants", ":eg_test_support+eg2", "//components/content_settings/core/common", "//components/strings",
diff --git a/ios/chrome/browser/web/lookalike_url_app_interface.h b/ios/chrome/browser/web/lookalike_url_app_interface.h new file mode 100644 index 0000000..a4f864c --- /dev/null +++ b/ios/chrome/browser/web/lookalike_url_app_interface.h
@@ -0,0 +1,28 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_WEB_LOOKALIKE_URL_APP_INTERFACE_H_ +#define IOS_CHROME_BROWSER_WEB_LOOKALIKE_URL_APP_INTERFACE_H_ + +#import <Foundation/Foundation.h> + +// The app interface for lookalike URL blocking page tests. It sets +// up LookalikeUrlDecider, which does the following: +// - Lets a navigation proceed if the domain is explicitly allowed +// - Cancels the navigation and shows error page with a suggested URL +// for the /lookalike.html path +// - Cancels the navigation and shows error page with no suggested URL +// for the /lookalike-empty.html path +// - Allows other navigations to proceed +@interface LookalikeUrlAppInterface : NSObject + +// Sets up lookalike policy decider. Used for testing. ++ (void)setUpLookalikeUrlDeciderForWebState; + +// Tear down lookalike policy decider. Used for testing. ++ (void)tearDownLookalikeUrlDeciderForWebState; + +@end + +#endif // IOS_CHROME_BROWSER_WEB_LOOKALIKE_URL_APP_INTERFACE_H_
diff --git a/ios/chrome/browser/web/lookalike_url_app_interface.mm b/ios/chrome/browser/web/lookalike_url_app_interface.mm new file mode 100644 index 0000000..b2ec43e --- /dev/null +++ b/ios/chrome/browser/web/lookalike_url_app_interface.mm
@@ -0,0 +1,90 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/web/lookalike_url_app_interface.h" + +#include "components/lookalikes/core/lookalike_url_util.h" +#import "ios/chrome/browser/web/lookalike_url_constants.h" +#import "ios/chrome/test/app/chrome_test_util.h" +#import "ios/chrome/test/app/tab_test_util.h" +#include "ios/components/security_interstitials/lookalikes/lookalike_url_container.h" +#include "ios/components/security_interstitials/lookalikes/lookalike_url_error.h" +#include "ios/components/security_interstitials/lookalikes/lookalike_url_tab_allow_list.h" +#import "ios/web/public/navigation/web_state_policy_decider.h" +#import "ios/web/public/web_state_user_data.h" +#import "net/base/mac/url_conversions.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace { + +// This decider determines whether a URL is a lookalike. If so, it cancels +// navigation and shows an error. +class LookalikeUrlDecider : public web::WebStatePolicyDecider, + public web::WebStateUserData<LookalikeUrlDecider> { + public: + LookalikeUrlDecider(web::WebState* web_state) + : web::WebStatePolicyDecider(web_state), web_state_(web_state) {} + + void ShouldAllowResponse( + NSURLResponse* response, + bool for_main_frame, + web::WebStatePolicyDecider::PolicyDecisionCallback callback) override { + LookalikeUrlContainer* lookalike_container = + LookalikeUrlContainer::FromWebState(web_state_); + LookalikeUrlTabAllowList* allow_list = + LookalikeUrlTabAllowList::FromWebState(web_state_); + + GURL response_url = net::GURLWithNSURL(response.URL); + if (allow_list->IsDomainAllowed(response_url.host())) { + return std::move(callback).Run( + web::WebStatePolicyDecider::PolicyDecision::Allow()); + } + if (response_url.path() == kLookalikePagePathForTesting) { + GURL::Replacements safeReplacements; + safeReplacements.SetPathStr("echo"); + lookalike_container->SetLookalikeUrlInfo( + response_url.ReplaceComponents(safeReplacements), response_url, + LookalikeUrlMatchType::kSkeletonMatchTop5k); + std::move(callback).Run(CreateLookalikeErrorDecision()); + return; + } + if (response_url.path() == kLookalikePageEmptyUrlPathForTesting) { + lookalike_container->SetLookalikeUrlInfo( + GURL::EmptyGURL(), response_url, + LookalikeUrlMatchType::kSkeletonMatchTop5k); + std::move(callback).Run(CreateLookalikeErrorDecision()); + return; + } + return std::move(callback).Run( + web::WebStatePolicyDecider::PolicyDecision::Allow()); + } + + WEB_STATE_USER_DATA_KEY_DECL(); + + private: + web::WebState* web_state_ = nullptr; + + DISALLOW_COPY_AND_ASSIGN(LookalikeUrlDecider); +}; + +WEB_STATE_USER_DATA_KEY_IMPL(LookalikeUrlDecider) + +} // namespace + +@implementation LookalikeUrlAppInterface + ++ (void)setUpLookalikeUrlDeciderForWebState { + LookalikeUrlDecider::CreateForWebState( + chrome_test_util::GetCurrentWebState()); +} + ++ (void)tearDownLookalikeUrlDeciderForWebState { + LookalikeUrlDecider::RemoveFromWebState( + chrome_test_util::GetCurrentWebState()); +} + +@end
diff --git a/ios/chrome/browser/web/lookalike_url_constants.h b/ios/chrome/browser/web/lookalike_url_constants.h new file mode 100644 index 0000000..c8b88d4 --- /dev/null +++ b/ios/chrome/browser/web/lookalike_url_constants.h
@@ -0,0 +1,14 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_WEB_LOOKALIKE_URL_CONSTANTS_H_ +#define IOS_CHROME_BROWSER_WEB_LOOKALIKE_URL_CONSTANTS_H_ + +// Constant used for testing a lookalike URL interstitial. +extern const char kLookalikePagePathForTesting[]; + +// Constant used for testing a lookalike URL interstitial with no suggested URL. +extern const char kLookalikePageEmptyUrlPathForTesting[]; + +#endif // IOS_CHROME_BROWSER_WEB_LOOKALIKE_URL_CONSTANTS_H_
diff --git a/ios/chrome/browser/web/lookalike_url_constants.mm b/ios/chrome/browser/web/lookalike_url_constants.mm new file mode 100644 index 0000000..eec1f20 --- /dev/null +++ b/ios/chrome/browser/web/lookalike_url_constants.mm
@@ -0,0 +1,12 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/web/lookalike_url_constants.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +const char kLookalikePagePathForTesting[] = "/lookalike.html"; +const char kLookalikePageEmptyUrlPathForTesting[] = "/lookalike-empty.html";
diff --git a/ios/chrome/browser/web/lookalike_url_egtest.mm b/ios/chrome/browser/web/lookalike_url_egtest.mm new file mode 100644 index 0000000..c69227e --- /dev/null +++ b/ios/chrome/browser/web/lookalike_url_egtest.mm
@@ -0,0 +1,307 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <string> + +#include "base/bind.h" +#include "base/strings/stringprintf.h" +#include "components/strings/grit/components_strings.h" +#import "ios/chrome/browser/web/lookalike_url_app_interface.h" +#import "ios/chrome/browser/web/lookalike_url_constants.h" +#import "ios/chrome/test/earl_grey/chrome_earl_grey.h" +#import "ios/chrome/test/earl_grey/chrome_matchers.h" +#import "ios/chrome/test/earl_grey/chrome_test_case.h" +#import "ios/testing/earl_grey/earl_grey_test.h" +#include "ios/testing/embedded_test_server_handlers.h" +#include "ios/web/common/features.h" +#include "ios/web/public/test/element_selector.h" +#include "net/test/embedded_test_server/default_handlers.h" +#include "net/test/embedded_test_server/http_request.h" +#include "net/test/embedded_test_server/http_response.h" +#include "net/test/embedded_test_server/request_handler_util.h" +#include "ui/base/l10n/l10n_util.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +#if defined(CHROME_EARL_GREY_2) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++98-compat-extra-semi" +GREY_STUB_CLASS_IN_APP_MAIN_QUEUE(LookalikeUrlAppInterface); +#pragma clang diagnostic pop +#endif // defined(CHROME_EARL_GREY_2) + +using chrome_test_util::BackButton; +using chrome_test_util::ForwardButton; + +namespace { +// Relative paths used for a page that opens a lookalike in a new tab. +const char kLookalikeInNewTab[] = "/lookalike-newtab.html"; + +// Text that is found on the lookalike page. +const char kLookalikeContent[] = "Lookalike - Safety warning bypassed"; +// Text that is found on a page that opens a lookalike in a new tab. +const char kLookalikeInNewTabContent[] = "New tab"; +} // namespace + +// Tests lookalike URL blocking. +@interface LookalikeUrlTestCase : ChromeTestCase { + // A URL that is treated as a lookalike. + GURL _lookalikeURL; + // A URL that is treated as a safe page. + GURL _safeURL; + // Text that is found on the safe page. + std::string _safeContent; + // Text that is found on the lookalike interstitial. + std::string _lookalikeBlockingPageContent; + // Text that is found on the lookalike interstitial with no suggestion. + std::string _lookalikeBlockingPageNoSuggestionContent; +} +@end + +@implementation LookalikeUrlTestCase + +- (AppLaunchConfiguration)appConfigurationForTestCase { + AppLaunchConfiguration config; + config.features_enabled.push_back( + web::features::kIOSLookalikeUrlNavigationSuggestionsUI); + config.features_enabled.push_back(web::features::kSSLCommittedInterstitials); + config.relaunch_policy = NoForceRelaunchAndResetState; + return config; +} + +- (void)setUp { + [super setUp]; + [LookalikeUrlAppInterface setUpLookalikeUrlDeciderForWebState]; + std::string lookalikeHTML = + base::StringPrintf("<html><body>%s</body></html>", kLookalikeContent); + self.testServer->RegisterRequestHandler(base::BindRepeating( + &net::test_server::HandlePrefixedRequest, kLookalikePagePathForTesting, + base::BindRepeating(&testing::HandlePageWithHtml, lookalikeHTML))); + self.testServer->RegisterRequestHandler(base::BindRepeating( + &net::test_server::HandlePrefixedRequest, + kLookalikePageEmptyUrlPathForTesting, + base::BindRepeating(&testing::HandlePageWithHtml, lookalikeHTML))); + std::string lookalikeNewTabHTML = base::StringPrintf( + "<html><body><a target=\"_blank\" href=\"%s\" " + "id=\"lookalike-newtab\">%s</a></body></html>", + kLookalikePageEmptyUrlPathForTesting, kLookalikeInNewTabContent); + self.testServer->RegisterRequestHandler(base::BindRepeating( + &net::test_server::HandlePrefixedRequest, kLookalikeInNewTab, + base::BindRepeating(&testing::HandlePageWithHtml, lookalikeNewTabHTML))); + GREYAssertTrue(self.testServer->Start(), @"Test server failed to start."); + _safeURL = self.testServer->GetURL("/echo"); + _safeContent = "Echo"; + _lookalikeURL = self.testServer->GetURL(kLookalikePagePathForTesting); + _lookalikeBlockingPageContent = + l10n_util::GetStringUTF8(IDS_LOOKALIKE_URL_PRIMARY_PARAGRAPH); + _lookalikeBlockingPageNoSuggestionContent = l10n_util::GetStringUTF8( + IDS_LOOKALIKE_URL_PRIMARY_PARAGRAPH_NO_SUGGESTED_URL); +} + +- (void)tearDown { + [LookalikeUrlAppInterface tearDownLookalikeUrlDeciderForWebState]; + [super tearDown]; +} + +// Tests that non-lookalike URLs are not blocked. +- (void)testSafePage { + [ChromeEarlGrey loadURL:_safeURL]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; +} + +// Tests that a lookalike URL navigation is blocked, and the Go to suggested +// site button works. Also tests that navigating back to the site shows the +// interstitial and that navigating forward again works. +- (void)testLookalikeUrlPage { + // Load the lookalike page and verify a warning is shown. + [ChromeEarlGrey loadURL:_lookalikeURL]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + + // Tap on the "Go to" button and verify that the suggested page + // contents are loaded. + [ChromeEarlGrey tapWebStateElementWithID:@"primary-button"]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; + + // Verify that the warning is shown when navigating back and that safe + // content is shown when navigating forward again. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + [[EarlGrey selectElementWithMatcher:ForwardButton()] + performAction:grey_tap()]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; +} + +// Tests that a lookalike URL navigation is blocked, and the text link for +// suggested site works. Also tests that navigating back to the site shows +// the interstitial and that navigating forward again works. +- (void)testLookalikeUrlPageSiteLink { + // Load the lookalike page and verify a warning is shown. + [ChromeEarlGrey loadURL:_lookalikeURL]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + + // Tap on the site suggestion link and verify that the suggested page + // contents are loaded. + [ChromeEarlGrey tapWebStateElementWithID:@"dont-proceed-link"]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; + + // Verify that the warning is shown when navigating back and that safe + // content is shown when navigating forward again. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + [[EarlGrey selectElementWithMatcher:ForwardButton()] + performAction:grey_tap()]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; +} + +// Tests that Back to safety works when there is no suggested URL. Also tests +// that navigating forward to the site shows the interstitial and that +// navigating back again works. +- (void)testLookalikeUrlPageNoSuggestion { + // Navigate to safe page first to enable later verification of + // back/forward navigation. + [ChromeEarlGrey loadURL:_safeURL]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; + + // Navigate to a lookalike page with no suggestion and verify that a warning + // and the correct button is shown. + [ChromeEarlGrey + loadURL:self.testServer->GetURL(kLookalikePageEmptyUrlPathForTesting)]; + [ChromeEarlGrey + waitForWebStateContainingText:_lookalikeBlockingPageNoSuggestionContent]; + [ChromeEarlGrey + waitForWebStateContainingText:l10n_util::GetStringUTF8( + IDS_LOOKALIKE_URL_BACK_TO_SAFETY)]; + + // Tap on the "Back to safety" button and verify that the safe content + // is loaded. + [ChromeEarlGrey tapWebStateElementWithID:@"primary-button"]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; + + // Verify that the warning is shown when navigating forward and that safe + // content is shown when navigating back again. + [[EarlGrey selectElementWithMatcher:ForwardButton()] + performAction:grey_tap()]; + [ChromeEarlGrey + waitForWebStateContainingText:_lookalikeBlockingPageNoSuggestionContent]; + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; +} + +// Tests that Close page works when there is no suggested URL and unable +// to go back. +- (void)testLookalikeUrlPageNoSuggestionClosePage { + // First navigate to a page that will open the lookalike URL in a new tab, + // then open the lookalike page. + [ChromeEarlGrey loadURL:self.testServer->GetURL(kLookalikeInNewTab)]; + [ChromeEarlGrey tapWebStateElementWithID:@"lookalike-newtab"]; + + // Verify that the new tab has loaded before setting up the policy decider + // for the new web state. Then reload to make sure the interstitial is + // displayed. + [ChromeEarlGrey waitForWebStateContainingText:kLookalikeContent]; + [LookalikeUrlAppInterface setUpLookalikeUrlDeciderForWebState]; + [ChromeEarlGrey reload]; + + // Verify that a warning and the correct button is shown. + [ChromeEarlGrey + waitForWebStateContainingText:_lookalikeBlockingPageNoSuggestionContent]; + [ChromeEarlGrey + waitForWebStateContainingText:l10n_util::GetStringUTF8( + IDS_LOOKALIKE_URL_CLOSE_PAGE)]; + + // Tap on the "Close" button and verify that the page closes. + [ChromeEarlGrey tapWebStateElementWithID:@"primary-button"]; + [ChromeEarlGrey waitForWebStateContainingText:kLookalikeInNewTabContent]; +} + +// Tests proceeding past the lookalike warning and that opening the page in +// a new tab will bypass the warning. +- (void)testProceedingPastLookalikeUrlWarning { + // Load the lookalike page and verify a warning is shown. + [ChromeEarlGrey loadURL:_lookalikeURL]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + + // Tap on the link to ignore the warning, and verify that the page is loaded. + [ChromeEarlGrey tapWebStateElementWithID:@"proceed-button"]; + [ChromeEarlGrey waitForWebStateContainingText:kLookalikeContent]; + + // In a new tab, the warning should not be shown. + [ChromeEarlGrey openNewTab]; + [ChromeEarlGrey loadURL:_lookalikeURL]; + [ChromeEarlGrey waitForWebStateContainingText:kLookalikeContent]; +} + +// Tests displaying a warning for an lookalike URL, proceeding past the warning, +// and navigating back/forward, in incognito. +- (void)testProceedingPastLookalikeWarningInIncognito { + [ChromeEarlGrey openNewIncognitoTab]; + [LookalikeUrlAppInterface setUpLookalikeUrlDeciderForWebState]; + + // Navigate to safe page first to enable later verification of + // back/forward navigation. + [ChromeEarlGrey loadURL:_safeURL]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; + + // Load the lookalike page and verify a warning is shown. + [ChromeEarlGrey loadURL:_lookalikeURL]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + + // Tap on the link to ignore the warning, and verify that the page is loaded. + [ChromeEarlGrey tapWebStateElementWithID:@"proceed-button"]; + [ChromeEarlGrey waitForWebStateContainingText:kLookalikeContent]; + + // Verify that no warning is shown when navigating back and then forward to + // the unsafe page. + [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; + [[EarlGrey selectElementWithMatcher:ForwardButton()] + performAction:grey_tap()]; + [ChromeEarlGrey waitForWebStateContainingText:kLookalikeContent]; +} + +// Tests that performing session restoration to a lookalike URL warning page +// preserves navigation history. +- (void)testRestoreToWarningPagePreservesHistory { + // Build up navigation history that consists of a safe URL, a warning page, + // and the suggested safe URL. + [ChromeEarlGrey loadURL:self.testServer->GetURL("/echoall")]; + std::string safeContent2 = "Request Body"; + [ChromeEarlGrey waitForWebStateContainingText:safeContent2]; + + // Load the lookalike URL page and verify a warning is shown. + [ChromeEarlGrey loadURL:_lookalikeURL]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + + // Tap on the "Go to" button and verify that the suggested page contents + // are loaded. + [ChromeEarlGrey tapWebStateElementWithID:@"primary-button"]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; + + // Navigate back to the interstitial. Now both the back list and the forward + // list are non-empty. + [ChromeEarlGrey goBack]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + + // Do a session restoration and verify that all navigation history is + // preserved. For this test, the policy decider doesn't get installed for + // the first page load, so expect the page content instead of the warning. + [ChromeEarlGrey triggerRestoreViaTabGridRemoveAllUndo]; + [ChromeEarlGrey waitForWebStateContainingText:kLookalikeContent]; + [LookalikeUrlAppInterface setUpLookalikeUrlDeciderForWebState]; + + [ChromeEarlGrey goBack]; + [ChromeEarlGrey waitForWebStateContainingText:safeContent2]; + + // The policy decider will trigger at this point, so the warning should + // be shown. + [ChromeEarlGrey goForward]; + [ChromeEarlGrey waitForWebStateContainingText:_lookalikeBlockingPageContent]; + + [ChromeEarlGrey goForward]; + [ChromeEarlGrey waitForWebStateContainingText:_safeContent]; +} + +@end
diff --git a/ios/chrome/browser/web/tab_order_egtest.mm b/ios/chrome/browser/web/tab_order_egtest.mm index ebbb0184..9b180c0 100644 --- a/ios/chrome/browser/web/tab_order_egtest.mm +++ b/ios/chrome/browser/web/tab_order_egtest.mm
@@ -47,8 +47,7 @@ @implementation TabOrderTestCase // Tests that new tabs are always inserted after their parent tab. -// TODO(crbug.com/1106739): reenable this test. -- (void)DISABLED_testChildTabOrdering { +- (void)testChildTabOrdering { GREYAssertTrue(self.testServer->Start(), @"Test server failed to start."); const GURL URL1 = self.testServer->GetURL(kLinksTestURL1); @@ -62,6 +61,8 @@ [ElementSelector selectorWithElementID:kLinkSelectorID], true /* menu should appear */)]; [[EarlGrey selectElementWithMatcher:OpenLinkInNewTabButton()] + assertWithMatcher:grey_notNil()]; + [[EarlGrey selectElementWithMatcher:OpenLinkInNewTabButton()] performAction:grey_tap()]; [ChromeEarlGrey waitForMainTabCount:2U]; NSString* childTab1ID = [ChromeEarlGrey nextTabID];
diff --git a/ios/components/security_interstitials/lookalikes/lookalike_url_controller_client.mm b/ios/components/security_interstitials/lookalikes/lookalike_url_controller_client.mm index a11b3eb..769ff52a 100644 --- a/ios/components/security_interstitials/lookalikes/lookalike_url_controller_client.mm +++ b/ios/components/security_interstitials/lookalikes/lookalike_url_controller_client.mm
@@ -46,9 +46,10 @@ if (!safe_url_.is_valid()) { IOSBlockingPageControllerClient::GoBack(); } else { - // TODO(crbug.com/1058898): Replace the last committed navigation - // (the interstitial) with the safe URL navigation to prevent the - // back button from returning to the bad site. + // For simplicity and because replacement doesn't always work, the + // navigation to the safe URL does not replace the navigation to + // the interstitial. However, this is acceptable since if a user + // navigates back to the lookalike, the interstitial will be shown. OpenUrlInCurrentTab(safe_url_); } }
diff --git a/ios/components/security_interstitials/lookalikes/lookalike_url_error.h b/ios/components/security_interstitials/lookalikes/lookalike_url_error.h index 5183cf70..e8606a0 100644 --- a/ios/components/security_interstitials/lookalikes/lookalike_url_error.h +++ b/ios/components/security_interstitials/lookalikes/lookalike_url_error.h
@@ -7,10 +7,16 @@ #import <Foundation/Foundation.h> +#import "ios/web/public/navigation/web_state_policy_decider.h" + // The error domain for lookalike URL errors. extern const NSErrorDomain kLookalikeUrlErrorDomain; // Error code for navigations to lookalike URLs. extern const NSInteger kLookalikeUrlErrorCode; +// Creates a PolicyDecision that cancels a navigation to show a lookalike +// error. +web::WebStatePolicyDecider::PolicyDecision CreateLookalikeErrorDecision(); + #endif // IOS_COMPONENTS_SECURITY_INTERSTITIALS_LOOKALIKES_LOOKALIKE_URL_ERROR_H_
diff --git a/ios/components/security_interstitials/lookalikes/lookalike_url_error.mm b/ios/components/security_interstitials/lookalikes/lookalike_url_error.mm index fffae48..00e19439 100644 --- a/ios/components/security_interstitials/lookalikes/lookalike_url_error.mm +++ b/ios/components/security_interstitials/lookalikes/lookalike_url_error.mm
@@ -11,3 +11,10 @@ const NSErrorDomain kLookalikeUrlErrorDomain = @"com.google.chrome.lookalike_url"; const NSInteger kLookalikeUrlErrorCode = -1003; + +web::WebStatePolicyDecider::PolicyDecision CreateLookalikeErrorDecision() { + return web::WebStatePolicyDecider::PolicyDecision::CancelAndDisplayError( + [NSError errorWithDomain:kLookalikeUrlErrorDomain + code:kLookalikeUrlErrorCode + userInfo:nil]); +}
diff --git a/ios/components/security_interstitials/lookalikes/lookalike_url_tab_helper.mm b/ios/components/security_interstitials/lookalikes/lookalike_url_tab_helper.mm index 555ed74e..371c01e 100644 --- a/ios/components/security_interstitials/lookalikes/lookalike_url_tab_helper.mm +++ b/ios/components/security_interstitials/lookalikes/lookalike_url_tab_helper.mm
@@ -19,15 +19,6 @@ #endif namespace { -// Creates a PolicyDecision that cancels a navigation to show a lookalike -// error. -web::WebStatePolicyDecider::PolicyDecision CreateLookalikeErrorDecision() { - return web::WebStatePolicyDecider::PolicyDecision::CancelAndDisplayError( - [NSError errorWithDomain:kLookalikeUrlErrorDomain - code:kLookalikeUrlErrorCode - userInfo:nil]); -} - // Creates a PolicyDecision that allows the navigation. web::WebStatePolicyDecider::PolicyDecision CreateAllowDecision() { return web::WebStatePolicyDecider::PolicyDecision::Allow(); @@ -50,7 +41,7 @@ return; } - // TODO(crbug.com/1058898): Create container and ReleaseInterstitialParams. + // TODO(crbug.com/1104386): Create container and ReleaseInterstitialParams. // Get stored interstitial parameters early. Doing so ensures that a // navigation to an irrelevant (for this interstitial's purposes) URL such as // chrome://settings while the lookalike interstitial is being shown clears @@ -78,7 +69,7 @@ return; } - // TODO(crbug.com/1058898): If this is a reload and if the current + // TODO(crbug.com/1104386): If this is a reload and if the current // URL is the last URL of the stored redirect chain, the interstitial // was probably reloaded. Stop the reload and navigate back to the // original lookalike URL so that the full checks are exercised again. @@ -91,7 +82,7 @@ return; } - // TODO(crbug.com/1058898): After site engagement has been componentized, + // TODO(crbug.com/1104384): After site engagement has been componentized, // fetch and set |engaged_sites| here so that an interstitial won't be // shown on engaged sites, and so that the interstitial will be shown on // lookalikes of engaged sites.
diff --git a/ios/web/web_view/wk_web_view_util.h b/ios/web/web_view/wk_web_view_util.h index 4bbe73a..345a8ef 100644 --- a/ios/web/web_view/wk_web_view_util.h +++ b/ios/web/web_view/wk_web_view_util.h
@@ -5,8 +5,11 @@ #ifndef IOS_WEB_WEB_VIEW_WK_WEB_VIEW_UTIL_H_ #define IOS_WEB_WEB_VIEW_WK_WEB_VIEW_UTIL_H_ +#import <Foundation/Foundation.h> #import <WebKit/WebKit.h> +#include "base/callback.h" + namespace web { // Returns true if a SafeBrowsing warning is currently displayed within // |web_view|. @@ -21,6 +24,11 @@ // https://bugs.webkit.org/show_bug.cgi?id=198794 WebKit bug. // TODO(crbug.com/973653): Remove this workaround when WebKit bug is fixed. bool RequiresProvisionalNavigationFailureWorkaround(); + +// Generates a PDF of the entire content of a |web_view| and invokes the +// |callback| with the NSData of the PDF. +void CreateFullPagePdf(WKWebView* web_view, + base::OnceCallback<void(NSData*)> callback); } // namespace web #endif // IOS_WEB_WEB_VIEW_WK_WEB_VIEW_UTIL_H_
diff --git a/ios/web/web_view/wk_web_view_util.mm b/ios/web/web_view/wk_web_view_util.mm index c3b6b19..6e2b076c 100644 --- a/ios/web/web_view/wk_web_view_util.mm +++ b/ios/web/web_view/wk_web_view_util.mm
@@ -49,4 +49,39 @@ return true; return false; } + +void CreateFullPagePdf(WKWebView* web_view, + base::OnceCallback<void(NSData*)> callback) { + // iOS14 createPDFWithConfiguration returns a PDF of the WebView + // Asynchronously though a |callback| thus this method's signature matches it + // for future insertion. + + if (!web_view) { + std::move(callback).Run(nil); + return; + } + + UIPrintPageRenderer* print_renderer = [[UIPrintPageRenderer alloc] init]; + [print_renderer addPrintFormatter:[web_view viewPrintFormatter] + startingAtPageAtIndex:0]; + + // Set the size of a page to be the size of the WebPage. + CGRect entire_web_page = + CGRectMake(0, 0, web_view.scrollView.contentSize.width, + web_view.scrollView.contentSize.height); + [print_renderer setValue:[NSValue valueWithCGRect:entire_web_page] + forKey:@"paperRect"]; + [print_renderer setValue:[NSValue valueWithCGRect:entire_web_page] + forKey:@"printableRect"]; + + UIGraphicsPDFRenderer* pdf_renderer = + [[UIGraphicsPDFRenderer alloc] initWithBounds:entire_web_page]; + + NSData* pdf_document_data = [pdf_renderer + PDFDataWithActions:^(UIGraphicsPDFRendererContext* context) { + [context beginPage]; + [print_renderer drawPageAtIndex:0 inRect:entire_web_page]; + }]; + std::move(callback).Run(pdf_document_data); +} } // namespace web
diff --git a/ios/web/web_view/wk_web_view_util_unittest.mm b/ios/web/web_view/wk_web_view_util_unittest.mm index 47774308..71061e3 100644 --- a/ios/web/web_view/wk_web_view_util_unittest.mm +++ b/ios/web/web_view/wk_web_view_util_unittest.mm
@@ -4,6 +4,7 @@ #import "ios/web/web_view/wk_web_view_util.h" +#include "base/bind.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" @@ -30,6 +31,8 @@ class WKWebViewUtilTest : public PlatformTest {}; +namespace web { + // Tests that IsSafeBrowsingWarningDisplayedInWebView returns true when safe // browsing warning is displayed in WKWebView. TEST_F(WKWebViewUtilTest, TestIsSafeBrowsingWarningDisplayedInWebView) { @@ -55,3 +58,37 @@ EXPECT_TRUE(web::IsSafeBrowsingWarningDisplayedInWebView(web_view)); } } + +// Tests that CreateFullPagePDF invokes the callback with NSData. +TEST_F(WKWebViewUtilTest, EnsureCallbackIsCalled) { + WKWebViewConfiguration* config = [[WKWebViewConfiguration alloc] init]; + WKWebView* web_view = [[WKWebView alloc] initWithFrame:CGRectZero + configuration:config]; + + __block bool callback_called = false; + __block NSData* callback_data = nil; + + CreateFullPagePdf(web_view, base::Bind(^(NSData* data) { + callback_called = true; + callback_data = [data copy]; + })); + + ASSERT_TRUE(callback_called); + EXPECT_TRUE(callback_data); +} + +// Tests that CreateFullPagePDF invokes the callback with NULL if +// its given a NULL WKWebView. +TEST_F(WKWebViewUtilTest, NULLWebView) { + __block bool callback_called = false; + __block NSData* callback_data = nil; + + CreateFullPagePdf(nil, base::Bind(^(NSData* data) { + callback_called = true; + callback_data = [data copy]; + })); + + ASSERT_TRUE(callback_called); + EXPECT_FALSE(callback_data); +} +}
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc index e5fc6b4..8cc8cea 100644 --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc
@@ -410,7 +410,7 @@ // Enables using the media history store to store media engagement metrics. const base::Feature kUseMediaHistoryStore{"UseMediaHistoryStore", - base::FEATURE_DISABLED_BY_DEFAULT}; + base::FEATURE_ENABLED_BY_DEFAULT}; // Use R16 texture for 9-16 bit channel instead of half-float conversion by CPU. const base::Feature kUseR16Texture{"use-r16-texture",
diff --git a/media/capture/BUILD.gn b/media/capture/BUILD.gn index 445bcb05..1e4d5aa 100644 --- a/media/capture/BUILD.gn +++ b/media/capture/BUILD.gn
@@ -403,7 +403,10 @@ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sysmem", "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp", ] - sources += [ "video/fuchsia/video_capture_device_fuchsia_test.cc" ] + sources += [ + "video/fuchsia/video_capture_device_factory_fuchsia_test.cc", + "video/fuchsia/video_capture_device_fuchsia_test.cc", + ] } if (is_win) {
diff --git a/media/capture/content/video_capture_oracle.cc b/media/capture/content/video_capture_oracle.cc index e92d28ec..bf16675 100644 --- a/media/capture/content/video_capture_oracle.cc +++ b/media/capture/content/video_capture_oracle.cc
@@ -5,6 +5,8 @@ #include "media/capture/content/video_capture_oracle.h" #include <algorithm> +#include <limits> +#include <utility> #include "base/callback.h" #include "base/compiler_specific.h" @@ -79,7 +81,8 @@ constexpr base::TimeDelta VideoCaptureOracle::kDefaultMinSizeChangePeriod; VideoCaptureOracle::VideoCaptureOracle(bool enable_auto_throttling) - : auto_throttling_enabled_(enable_auto_throttling), + : capture_size_throttling_mode_( + enable_auto_throttling ? kThrottlingEnabled : kThrottlingDisabled), min_size_change_period_(kDefaultMinSizeChangePeriod), next_frame_number_(0), last_successfully_delivered_frame_number_(-1), @@ -90,8 +93,8 @@ kBufferUtilizationEvaluationMicros)), estimated_capable_area_(base::TimeDelta::FromMicroseconds( kConsumerCapabilityEvaluationMicros)) { - VLOG(1) << "Auto-throttling is " - << (auto_throttling_enabled_ ? "enabled." : "disabled."); + VLOG(1) << "Capture size auto-throttling is now " + << (enable_auto_throttling ? "enabled." : "disabled."); } VideoCaptureOracle::~VideoCaptureOracle() = default; @@ -111,9 +114,14 @@ } void VideoCaptureOracle::SetAutoThrottlingEnabled(bool enabled) { - if (auto_throttling_enabled_ == enabled) + const bool was_enabled = + (capture_size_throttling_mode_ != kThrottlingDisabled); + if (was_enabled == enabled) return; - auto_throttling_enabled_ = enabled; + capture_size_throttling_mode_ = + enabled ? kThrottlingEnabled : kThrottlingDisabled; + VLOG(1) << "Capture size auto-throttling is now " + << (enabled ? "enabled." : "disabled."); // When not auto-throttling, have the CaptureResolutionChooser target the max // resolution within constraints. @@ -225,7 +233,7 @@ const base::TimeTicks timestamp = GetFrameTimestamp(next_frame_number_); content_sampler_.RecordSample(timestamp); - if (auto_throttling_enabled_) { + if (capture_size_throttling_mode_ == kThrottlingActive) { buffer_pool_utilization_.Update(pool_utilization, timestamp); AnalyzeAndAdjust(timestamp); } @@ -238,7 +246,7 @@ VLOG(1) << "Client rejects proposal to capture frame (at #" << next_frame_number_ << ")."; - if (auto_throttling_enabled_) { + if (capture_size_throttling_mode_ == kThrottlingActive) { DCHECK(std::isfinite(pool_utilization) && pool_utilization >= 0.0); const base::TimeTicks timestamp = GetFrameTimestamp(next_frame_number_); buffer_pool_utilization_.Update(pool_utilization, timestamp); @@ -326,7 +334,7 @@ void VideoCaptureOracle::RecordConsumerFeedback(int frame_number, double resource_utilization) { - if (!auto_throttling_enabled_) + if (capture_size_throttling_mode_ == kThrottlingDisabled) return; if (!std::isfinite(resource_utilization)) { @@ -337,6 +345,12 @@ if (resource_utilization <= 0.0) return; // Non-positive values are normal, meaning N/A. + if (capture_size_throttling_mode_ != kThrottlingActive) { + VLOG(1) << "Received consumer feedback at frame #" << frame_number + << "; activating capture size auto-throttling."; + capture_size_throttling_mode_ = kThrottlingActive; + } + if (!IsFrameInRecentHistory(frame_number)) { VLOG(1) << "Very old frame feedback being ignored: frame #" << frame_number; return; @@ -409,7 +423,7 @@ } void VideoCaptureOracle::AnalyzeAndAdjust(const base::TimeTicks analyze_time) { - DCHECK(auto_throttling_enabled_); + DCHECK(capture_size_throttling_mode_ == kThrottlingActive); const int decreased_area = AnalyzeForDecreasedArea(analyze_time); if (decreased_area > 0) {
diff --git a/media/capture/content/video_capture_oracle.h b/media/capture/content/video_capture_oracle.h index 212b8be4..ee4e267 100644 --- a/media/capture/content/video_capture_oracle.h +++ b/media/capture/content/video_capture_oracle.h
@@ -5,6 +5,8 @@ #ifndef MEDIA_CAPTURE_CONTENT_VIDEO_CAPTURE_ORACLE_H_ #define MEDIA_CAPTURE_CONTENT_VIDEO_CAPTURE_ORACLE_H_ +#include <string> + #include "base/callback.h" #include "base/time/time.h" #include "media/base/feedback_signal_accumulator.h" @@ -30,10 +32,9 @@ // Constructs a VideoCaptureOracle with a default min capture period and // capture size constraints. Clients should call SetMinCapturePeriod() and - // SetCaptureSizeConstraints() to provide more-accurate hard limits. If - // |enable_auto_throttling| is true, enable realtime analysis of system - // performance and auto-adjust the capture resolution and sampling decisions - // to provide the best user experience. + // SetCaptureSizeConstraints() to provide more-accurate hard limits. + // + // See SetAutoThrottlingEnabled() for |enable_auto_throttling| semantics. explicit VideoCaptureOracle(bool enable_auto_throttling); virtual ~VideoCaptureOracle(); @@ -51,8 +52,11 @@ const gfx::Size& max_size, bool use_fixed_aspect_ratio); - // Specifies whether the oracle should automatically adjust the capture size - // in response to end-to-end utilization. + // Specifies whether the oracle should propose varying capture sizes, in + // response to consumer feedback. If not |enabled|, capture_size() will always + // return the source_size(). + // + // See: SetMinSizeChangePeriod(). void SetAutoThrottlingEnabled(bool enabled); // Get/Update the source content size. Changes may not have an immediate @@ -161,7 +165,7 @@ void CommitCaptureSizeAndReset(base::TimeTicks last_frame_time); // Called after a capture or no-capture decision was recorded. This analyzes - // current state and may result in a future change to the capture frame size. + // current state and may result in a future change to the capture size. void AnalyzeAndAdjust(base::TimeTicks analyze_time); // Analyzes current feedback signal accumulators for an indication that the @@ -188,9 +192,15 @@ const FeedbackSignalAccumulator<base::TimeTicks>& accumulator, base::TimeTicks now); - // Set to false to prevent the oracle from automatically adjusting the capture - // size in response to end-to-end utilization. - bool auto_throttling_enabled_; + // Set to disabled/enabled via SetAutoThrottlingEnabled(). Data collection and + // analysis for capture size changes only occurs while in "active" mode, which + // is only engaged when in "enabled" mode and consumer feedback is received + // for the first time. + enum { + kThrottlingDisabled, + kThrottlingEnabled, + kThrottlingActive + } capture_size_throttling_mode_; // The minimum amount of time that must pass between changes to the capture // size.
diff --git a/media/capture/content/video_capture_oracle_unittest.cc b/media/capture/content/video_capture_oracle_unittest.cc index 36eef24..8535f40 100644 --- a/media/capture/content/video_capture_oracle_unittest.cc +++ b/media/capture/content/video_capture_oracle_unittest.cc
@@ -11,43 +11,27 @@ namespace { -base::TimeTicks InitialTestTimeTicks() { - return base::TimeTicks() + base::TimeDelta::FromSeconds(1); -} - -base::TimeDelta Get30HzPeriod() { - return base::TimeDelta::FromSeconds(1) / 30; -} - -gfx::Size Get1080pSize() { - return gfx::Size(1920, 1080); -} - -gfx::Size Get720pSize() { - return gfx::Size(1280, 720); -} - -gfx::Size Get360pSize() { - return gfx::Size(640, 360); -} - -gfx::Size GetSmallestNonEmptySize() { - return gfx::Size(2, 2); -} +constexpr base::TimeTicks kInitialTestTimeTicks = + base::TimeTicks() + base::TimeDelta::FromSeconds(1); +constexpr base::TimeDelta k30HzPeriod = base::TimeDelta::FromSeconds(1) / 30; +constexpr gfx::Size k1080pSize = gfx::Size(1920, 1080); +constexpr gfx::Size k720pSize = gfx::Size(1280, 720); +constexpr gfx::Size k360pSize = gfx::Size(640, 360); +constexpr gfx::Size kSmallestNonEmptySize = gfx::Size(2, 2); } // namespace // Tests that VideoCaptureOracle filters out events whose timestamps are // decreasing. TEST(VideoCaptureOracleTest, EnforcesEventTimeMonotonicity) { - const gfx::Rect damage_rect(Get720pSize()); - const base::TimeDelta event_increment = Get30HzPeriod() * 2; + const gfx::Rect damage_rect(k720pSize); + const base::TimeDelta event_increment = k30HzPeriod * 2; VideoCaptureOracle oracle(false); - oracle.SetMinCapturePeriod(Get30HzPeriod()); - oracle.SetCaptureSizeConstraints(Get720pSize(), Get720pSize(), false); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(k720pSize, k720pSize, false); - base::TimeTicks t = InitialTestTimeTicks(); + base::TimeTicks t = kInitialTestTimeTicks; for (int i = 0; i < 10; ++i) { t += event_increment; ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( @@ -73,16 +57,16 @@ // successfully captured frames are delivered in order. Otherwise, downstream // consumers could be tripped-up by out-of-order frames or frame timestamps. TEST(VideoCaptureOracleTest, EnforcesFramesDeliveredInOrder) { - const gfx::Rect damage_rect(Get720pSize()); - const base::TimeDelta event_increment = Get30HzPeriod() * 2; + const gfx::Rect damage_rect(k720pSize); + const base::TimeDelta event_increment = k30HzPeriod * 2; VideoCaptureOracle oracle(false); - oracle.SetMinCapturePeriod(Get30HzPeriod()); - oracle.SetCaptureSizeConstraints(Get720pSize(), Get720pSize(), false); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(k720pSize, k720pSize, false); // Most basic scenario: Frames delivered one at a time, with no additional // captures in-between deliveries. - base::TimeTicks t = InitialTestTimeTicks(); + base::TimeTicks t = kInitialTestTimeTicks; int last_frame_number; base::TimeTicks ignored; for (int i = 0; i < 10; ++i) { @@ -151,17 +135,17 @@ // Tests that VideoCaptureOracle transitions between using its two samplers in a // way that does not introduce severe jank, pauses, etc. TEST(VideoCaptureOracleTest, TransitionsSmoothlyBetweenSamplers) { - const gfx::Rect animation_damage_rect(Get720pSize()); - const base::TimeDelta event_increment = Get30HzPeriod() * 2; + const gfx::Rect animation_damage_rect(k720pSize); + const base::TimeDelta event_increment = k30HzPeriod * 2; VideoCaptureOracle oracle(false); - oracle.SetMinCapturePeriod(Get30HzPeriod()); - oracle.SetCaptureSizeConstraints(Get720pSize(), Get720pSize(), false); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(k720pSize, k720pSize, false); // Run sequences of animation events and non-animation events through the // oracle. As the oracle transitions between each sampler, make sure the // frame timestamps won't trip-up downstream consumers. - base::TimeTicks t = InitialTestTimeTicks(); + base::TimeTicks t = kInitialTestTimeTicks; base::TimeTicks last_frame_timestamp; for (int i = 0; i < 1000; ++i) { t += event_increment; @@ -218,12 +202,12 @@ base::TimeDelta::FromMilliseconds(125); // 8 FPS VideoCaptureOracle oracle(false); - oracle.SetMinCapturePeriod(Get30HzPeriod()); - oracle.SetCaptureSizeConstraints(Get720pSize(), Get720pSize(), false); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(k720pSize, k720pSize, false); // Have the oracle observe some compositor events. Simulate that each capture // completes successfully. - base::TimeTicks t = InitialTestTimeTicks(); + base::TimeTicks t = kInitialTestTimeTicks; base::TimeTicks ignored; bool did_complete_a_capture = false; for (int i = 0; i < 10; ++i) { @@ -312,29 +296,29 @@ // stabilize. TEST(VideoCaptureOracleTest, DoesNotRapidlyChangeCaptureSize) { VideoCaptureOracle oracle(true); - oracle.SetMinCapturePeriod(Get30HzPeriod()); - oracle.SetCaptureSizeConstraints(GetSmallestNonEmptySize(), Get720pSize(), - false); - oracle.SetSourceSize(Get1080pSize()); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(kSmallestNonEmptySize, k720pSize, false); + oracle.SetSourceSize(k1080pSize); // Run 30 seconds of frame captures without any source size changes. - base::TimeTicks t = InitialTestTimeTicks(); - const base::TimeDelta event_increment = Get30HzPeriod() * 2; + base::TimeTicks t = kInitialTestTimeTicks; + const base::TimeDelta event_increment = k30HzPeriod * 2; base::TimeTicks end_t = t + base::TimeDelta::FromSeconds(30); for (; t < end_t; t += event_increment) { ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( VideoCaptureOracle::kCompositorUpdate, gfx::Rect(), t)); - ASSERT_EQ(Get720pSize(), oracle.capture_size()); + ASSERT_EQ(k720pSize, oracle.capture_size()); base::TimeTicks ignored; const int frame_number = oracle.next_frame_number(); oracle.RecordCapture(0.0); ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, 0.0); } // Now run 30 seconds of frame captures with lots of random source size // changes. Check that there was no more than one size change per second. gfx::Size source_size = oracle.capture_size(); - base::TimeTicks time_of_last_size_change = InitialTestTimeTicks(); + base::TimeTicks time_of_last_size_change = kInitialTestTimeTicks; gfx::Size last_capture_size = oracle.capture_size(); end_t = t + base::TimeDelta::FromSeconds(30); for (; t < end_t; t += event_increment) { @@ -358,6 +342,7 @@ const int frame_number = oracle.next_frame_number(); oracle.RecordCapture(0.0); ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, 0.0); } } @@ -365,16 +350,15 @@ // size if resize throttling is disabled. TEST(VideoCaptureOracleTest, ResizeThrottlingDisabled) { VideoCaptureOracle oracle(true); - oracle.SetMinCapturePeriod(Get30HzPeriod()); + oracle.SetMinCapturePeriod(k30HzPeriod); oracle.SetMinSizeChangePeriod(base::TimeDelta()); - oracle.SetCaptureSizeConstraints(GetSmallestNonEmptySize(), Get720pSize(), - false); - oracle.SetSourceSize(Get1080pSize()); + oracle.SetCaptureSizeConstraints(kSmallestNonEmptySize, k720pSize, false); + oracle.SetSourceSize(k1080pSize); // Run 30 seconds of frame captures with lots of random source size // changes. The capture size should be different every time. - base::TimeTicks t = InitialTestTimeTicks(); - const base::TimeDelta event_increment = Get30HzPeriod() * 2; + base::TimeTicks t = kInitialTestTimeTicks; + const base::TimeDelta event_increment = k30HzPeriod * 2; base::TimeTicks end_t = t + base::TimeDelta::FromSeconds(30); gfx::Size source_size = oracle.capture_size(); gfx::Size last_capture_size = oracle.capture_size(); @@ -396,6 +380,7 @@ const int frame_number = oracle.next_frame_number(); oracle.RecordCapture(0.0); ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, 0.0); } } @@ -416,29 +401,34 @@ << ", with_consumer_feedback=" << with_consumer_feedback << ")"); VideoCaptureOracle oracle(true); - oracle.SetMinCapturePeriod(Get30HzPeriod()); - oracle.SetCaptureSizeConstraints(GetSmallestNonEmptySize(), Get720pSize(), - false); - oracle.SetSourceSize(Get1080pSize()); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(kSmallestNonEmptySize, k720pSize, false); + oracle.SetSourceSize(k1080pSize); // Run 10 seconds of frame captures with 90% utilization expect no capture // size changes. - base::TimeTicks t = InitialTestTimeTicks(); + base::TimeTicks t = kInitialTestTimeTicks; base::TimeTicks time_of_last_size_change = t; - const base::TimeDelta event_increment = Get30HzPeriod() * 2; + const base::TimeDelta event_increment = k30HzPeriod * 2; base::TimeTicks end_t = t + base::TimeDelta::FromSeconds(10); for (; t < end_t; t += event_increment) { ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( VideoCaptureOracle::kCompositorUpdate, - is_content_animating ? gfx::Rect(Get720pSize()) : gfx::Rect(), t)); - ASSERT_EQ(Get720pSize(), oracle.capture_size()); + is_content_animating ? gfx::Rect(k720pSize) : gfx::Rect(), t)); + ASSERT_EQ(k720pSize, oracle.capture_size()); const double utilization = 0.9; const int frame_number = oracle.next_frame_number(); oracle.RecordCapture(with_consumer_feedback ? 0.25 : utilization); base::TimeTicks ignored; ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); - if (with_consumer_feedback) + if (with_consumer_feedback) { oracle.RecordConsumerFeedback(frame_number, utilization); + } else if (t == kInitialTestTimeTicks) { + // Provide feedback with the very first capture to activate the capture + // size auto-throttling logic. After this, no consumer feedback applies + // and the buffer utilization will be the only consideration. + oracle.RecordConsumerFeedback(frame_number, 0.0); + } } // Cause two downward steppings in resolution. First, indicate overload @@ -455,7 +445,7 @@ for (; t < end_t; t += event_increment) { ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( VideoCaptureOracle::kCompositorUpdate, - is_content_animating ? gfx::Rect(Get720pSize()) : gfx::Rect(), t)); + is_content_animating ? gfx::Rect(k720pSize) : gfx::Rect(), t)); if (stepped_down_size.IsEmpty()) { if (oracle.capture_size() != starting_size) { @@ -492,7 +482,7 @@ for (; t < end_t; t += event_increment) { ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( VideoCaptureOracle::kCompositorUpdate, - is_content_animating ? gfx::Rect(Get720pSize()) : gfx::Rect(), t)); + is_content_animating ? gfx::Rect(k720pSize) : gfx::Rect(), t)); if (stepped_up_size.IsEmpty()) { if (oracle.capture_size() != starting_size) { @@ -526,55 +516,95 @@ // up or down, using utilization feedback signals from either the buffer pool or // the consumer, and with slightly different behavior depending on whether // content is animating. -TEST(VideoCaptureOracleTest, AutoThrottlesBasedOnUtilizationFeedback) { +TEST(VideoCaptureOracleTest, + AutoThrottlesCaptureSizeBasedOnUtilizationFeedback) { RunAutoThrottleTest(false, false); RunAutoThrottleTest(false, true); RunAutoThrottleTest(true, false); RunAutoThrottleTest(true, true); } +// Test that the capture size is not auto-throttled if consumer feedback is +// never provided. This represents VideoCaptureOracle being stuck in the +// kThrottlingEnabled mode, but never having entered the kThrottlingActive mode. +TEST(VideoCaptureOracleTest, + DoesNotAutoThrottleCaptureSizeWithoutConsumerFeedback) { + VideoCaptureOracle oracle(true); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(kSmallestNonEmptySize, k720pSize, false); + oracle.SetSourceSize(k1080pSize); + + // Run 10 seconds of frame captures with 90% utilization expect no capture + // size changes. + base::TimeTicks t = kInitialTestTimeTicks; + const base::TimeDelta event_increment = k30HzPeriod * 2; + base::TimeTicks end_t = t + base::TimeDelta::FromSeconds(10); + for (; t < end_t; t += event_increment) { + ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( + VideoCaptureOracle::kCompositorUpdate, gfx::Rect(k720pSize), t)); + ASSERT_EQ(k720pSize, oracle.capture_size()); + const int frame_number = oracle.next_frame_number(); + oracle.RecordCapture(0.9); + base::TimeTicks ignored; + ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + // Important: Not calling oracle.RecordConsumerFeedback(frame_number, ...); + } + + // Increase utilization to 1000%, but expect no capture size change because + // there has never been any consumer feedback. + const gfx::Size starting_size = oracle.capture_size(); + end_t = t + base::TimeDelta::FromSeconds(10); + for (; t < end_t; t += event_increment) { + ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( + VideoCaptureOracle::kCompositorUpdate, gfx::Rect(k720pSize), t)); + ASSERT_EQ(starting_size, oracle.capture_size()); + const int frame_number = oracle.next_frame_number(); + oracle.RecordCapture(10.0); + base::TimeTicks ignored; + ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + } +} + // Tests that, while content is animating, VideoCaptureOracle can make frequent // capture size increases only just after the source size has changed. // Otherwise, capture size increases should only be made cautiously, after a // long "proving period of under-utilization" has elapsed. TEST(VideoCaptureOracleTest, IncreasesFrequentlyOnlyAfterSourceSizeChange) { VideoCaptureOracle oracle(true); - oracle.SetMinCapturePeriod(Get30HzPeriod()); - oracle.SetCaptureSizeConstraints(GetSmallestNonEmptySize(), Get720pSize(), - false); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(kSmallestNonEmptySize, k720pSize, false); // Start out the source size at 360p, so there is room to grow to the 720p // maximum. - oracle.SetSourceSize(Get360pSize()); + oracle.SetSourceSize(k360pSize); // Run 10 seconds of frame captures with under-utilization to represent a // machine that can do more, but won't because the source size is small. - base::TimeTicks t = InitialTestTimeTicks(); - const base::TimeDelta event_increment = Get30HzPeriod() * 2; + base::TimeTicks t = kInitialTestTimeTicks; + const base::TimeDelta event_increment = k30HzPeriod * 2; base::TimeTicks end_t = t + base::TimeDelta::FromSeconds(10); for (; t < end_t; t += event_increment) { if (!oracle.ObserveEventAndDecideCapture( - VideoCaptureOracle::kCompositorUpdate, gfx::Rect(Get360pSize()), - t)) { + VideoCaptureOracle::kCompositorUpdate, gfx::Rect(k360pSize), t)) { continue; } - ASSERT_EQ(Get360pSize(), oracle.capture_size()); + ASSERT_EQ(k360pSize, oracle.capture_size()); const int frame_number = oracle.next_frame_number(); oracle.RecordCapture(0.25); base::TimeTicks ignored; ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, 0.25); } // Now, set the source size to 720p, continuing to report under-utilization, // and expect the capture size increases to reach a full 720p within 15 // seconds. - oracle.SetSourceSize(Get720pSize()); + oracle.SetSourceSize(k720pSize); gfx::Size last_capture_size = oracle.capture_size(); end_t = t + base::TimeDelta::FromSeconds(15); for (; t < end_t; t += event_increment) { if (!oracle.ObserveEventAndDecideCapture( - VideoCaptureOracle::kCompositorUpdate, gfx::Rect(Get720pSize()), - t)) { + VideoCaptureOracle::kCompositorUpdate, gfx::Rect(k720pSize), t)) { continue; } ASSERT_LE(last_capture_size.width(), oracle.capture_size().width()); @@ -584,27 +614,27 @@ oracle.RecordCapture(0.25); base::TimeTicks ignored; ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, 0.25); } - ASSERT_EQ(Get720pSize(), oracle.capture_size()); + ASSERT_EQ(k720pSize, oracle.capture_size()); // Now, change the source size again, but report over-utilization so the // capture size will decrease. Once it decreases one step, report 90% // utilization to achieve a steady-state. - oracle.SetSourceSize(Get1080pSize()); + oracle.SetSourceSize(k1080pSize); gfx::Size stepped_down_size; end_t = t + base::TimeDelta::FromSeconds(10); for (; t < end_t; t += event_increment) { if (!oracle.ObserveEventAndDecideCapture( - VideoCaptureOracle::kCompositorUpdate, gfx::Rect(Get1080pSize()), - t)) { + VideoCaptureOracle::kCompositorUpdate, gfx::Rect(k1080pSize), t)) { continue; } if (stepped_down_size.IsEmpty()) { - if (oracle.capture_size() != Get720pSize()) { + if (oracle.capture_size() != k720pSize) { stepped_down_size = oracle.capture_size(); - ASSERT_GT(Get720pSize().width(), stepped_down_size.width()); - ASSERT_GT(Get720pSize().height(), stepped_down_size.height()); + ASSERT_GT(k720pSize.width(), stepped_down_size.width()); + ASSERT_GT(k720pSize.height(), stepped_down_size.height()); } } else { ASSERT_EQ(stepped_down_size, oracle.capture_size()); @@ -615,6 +645,7 @@ oracle.RecordCapture(utilization); base::TimeTicks ignored; ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, utilization); } ASSERT_FALSE(stepped_down_size.IsEmpty()); @@ -627,8 +658,7 @@ end_t = t + base::TimeDelta::FromSeconds(60); for (; t < end_t; t += event_increment) { if (!oracle.ObserveEventAndDecideCapture( - VideoCaptureOracle::kCompositorUpdate, gfx::Rect(Get1080pSize()), - t)) { + VideoCaptureOracle::kCompositorUpdate, gfx::Rect(k1080pSize), t)) { continue; } @@ -648,6 +678,7 @@ oracle.RecordCapture(utilization); base::TimeTicks ignored; ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, utilization); } ASSERT_FALSE(stepped_up_size.IsEmpty()); } @@ -656,23 +687,24 @@ // auto-throttling is enabled when using a fixed resolution policy. TEST(VideoCaptureOracleTest, DoesNotAutoThrottleWhenResolutionIsFixed) { VideoCaptureOracle oracle(true); - oracle.SetMinCapturePeriod(Get30HzPeriod()); - oracle.SetCaptureSizeConstraints(Get720pSize(), Get720pSize(), false); - oracle.SetSourceSize(Get1080pSize()); + oracle.SetMinCapturePeriod(k30HzPeriod); + oracle.SetCaptureSizeConstraints(k720pSize, k720pSize, false); + oracle.SetSourceSize(k1080pSize); // Run 10 seconds of frame captures with 90% utilization expect no capture // size changes. - base::TimeTicks t = InitialTestTimeTicks(); - const base::TimeDelta event_increment = Get30HzPeriod() * 2; + base::TimeTicks t = kInitialTestTimeTicks; + const base::TimeDelta event_increment = k30HzPeriod * 2; base::TimeTicks end_t = t + base::TimeDelta::FromSeconds(10); for (; t < end_t; t += event_increment) { ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( VideoCaptureOracle::kCompositorUpdate, gfx::Rect(), t)); - ASSERT_EQ(Get720pSize(), oracle.capture_size()); + ASSERT_EQ(k720pSize, oracle.capture_size()); base::TimeTicks ignored; const int frame_number = oracle.next_frame_number(); oracle.RecordCapture(0.9); ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, 0.9); } // Now run 10 seconds with overload indicated. Still, expect no capture size @@ -681,11 +713,12 @@ for (; t < end_t; t += event_increment) { ASSERT_TRUE(oracle.ObserveEventAndDecideCapture( VideoCaptureOracle::kCompositorUpdate, gfx::Rect(), t)); - ASSERT_EQ(Get720pSize(), oracle.capture_size()); + ASSERT_EQ(k720pSize, oracle.capture_size()); base::TimeTicks ignored; const int frame_number = oracle.next_frame_number(); oracle.RecordCapture(2.0); ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored)); + oracle.RecordConsumerFeedback(frame_number, 2.0); } }
diff --git a/media/capture/video/fuchsia/video_capture_device_factory_fuchsia.cc b/media/capture/video/fuchsia/video_capture_device_factory_fuchsia.cc index ecc999c..7437eb6e 100644 --- a/media/capture/video/fuchsia/video_capture_device_factory_fuchsia.cc +++ b/media/capture/video/fuchsia/video_capture_device_factory_fuchsia.cc
@@ -128,6 +128,11 @@ if (!converted) return nullptr; + // CreateDevice() may be called before GetDeviceDescriptors(). Make sure + // |device_watcher_| is initialized. + if (!device_watcher_) + Initialize(); + fidl::InterfaceHandle<fuchsia::camera3::Device> device; device_watcher_->ConnectToDevice(device_id, device.NewRequest()); return std::make_unique<VideoCaptureDeviceFuchsia>(std::move(device)); @@ -139,12 +144,14 @@ device_descriptors->clear(); - if (!device_watcher_) { - DCHECK(!first_update_run_loop_); - DCHECK(devices_.empty()); - + if (!device_watcher_) Initialize(); + // Even if |device_watcher_| was already connected, we may need need to wait + // for the first WatchDevices() response. + if (!received_first_update_) { + DCHECK(!first_update_run_loop_); + // The RunLoop will quit when either we've received the first WatchDevices() // response or DeviceWatcher fails. |devices_| will be empty in case of a // failure. @@ -185,6 +192,7 @@ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(!device_watcher_); DCHECK(devices_.empty()); + DCHECK(!received_first_update_); base::ComponentContextForProcess()->svc()->Connect( device_watcher_.NewRequest()); @@ -199,9 +207,20 @@ zx_status_t status) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - ZX_LOG(ERROR, status) << "fuchsia.camera3.DeviceWatcher disconnected."; + // CastRunner may close the channel with ZX_ERR_UNAVAILABLE error code when + // none of the running applications have access to camera. No need to log the + // error in that case. + if (status != ZX_ERR_UNAVAILABLE) + ZX_LOG(ERROR, status) << "fuchsia.camera3.DeviceWatcher disconnected."; + + // Clear the list of devices and reset |received_first_update_| so we + // don't report any camera devices while DeviceWatcher is disconnected. We + // will try connecting DeviceWatcher again when GetDeviceDescriptors() is + // called. devices_.clear(); + received_first_update_ = false; + if (first_update_run_loop_) first_update_run_loop_->Quit(); } @@ -250,6 +269,8 @@ id, std::make_unique<DeviceInfoFetcher>(id, std::move(device))); } + received_first_update_ = true; + if (first_update_run_loop_) first_update_run_loop_->Quit();
diff --git a/media/capture/video/fuchsia/video_capture_device_factory_fuchsia.h b/media/capture/video/fuchsia/video_capture_device_factory_fuchsia.h index 86f3c6b..177d0a7 100644 --- a/media/capture/video/fuchsia/video_capture_device_factory_fuchsia.h +++ b/media/capture/video/fuchsia/video_capture_device_factory_fuchsia.h
@@ -51,6 +51,10 @@ base::small_map<std::map<uint64_t, std::unique_ptr<DeviceInfoFetcher>>> devices_; + // Indicates whether the first update has been received from + // |device_watcher_|. + bool received_first_update_ = false; + // RunLoop used to wait for the first WatchDevices() response. Currently // required because GetDeviceDescriptors() is synchronous. // TODO(crbug.com/1072932) Refactor interface to allow asynchronous
diff --git a/media/capture/video/fuchsia/video_capture_device_factory_fuchsia_test.cc b/media/capture/video/fuchsia/video_capture_device_factory_fuchsia_test.cc new file mode 100644 index 0000000..d357ebc --- /dev/null +++ b/media/capture/video/fuchsia/video_capture_device_factory_fuchsia_test.cc
@@ -0,0 +1,53 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "media/capture/video/fuchsia/video_capture_device_factory_fuchsia.h" + +#include "base/fuchsia/test_component_context_for_process.h" +#include "base/run_loop.h" +#include "base/test/task_environment.h" +#include "media/fuchsia/camera/fake_fuchsia_camera.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace media { + +class VideoCaptureDeviceFactoryFuchsiaTest : public testing::Test { + protected: + base::test::SingleThreadTaskEnvironment task_environment_{ + base::test::SingleThreadTaskEnvironment::MainThreadType::IO}; + base::TestComponentContextForProcess test_context_; + + FakeCameraDeviceWatcher fake_device_watcher_{ + test_context_.additional_services()}; + + VideoCaptureDeviceFactoryFuchsia device_factory_; +}; + +TEST_F(VideoCaptureDeviceFactoryFuchsiaTest, EnumerateDevices) { + media::VideoCaptureDeviceDescriptors device_descriptors; + device_factory_.GetDeviceDescriptors(&device_descriptors); + + EXPECT_EQ(device_descriptors.size(), 1U); +} + +TEST_F(VideoCaptureDeviceFactoryFuchsiaTest, EnumerateDevicesAfterDisconnect) { + media::VideoCaptureDeviceDescriptors device_descriptors; + device_factory_.GetDeviceDescriptors(&device_descriptors); + + EXPECT_EQ(device_descriptors.size(), 1U); + + device_descriptors.clear(); + + // Disconnect DeviceWatcher and run the run loop so |device_factory_| can + // handle the disconnect. + fake_device_watcher_.DisconnectClients(); + base::RunLoop().RunUntilIdle(); + + // Try enumerating devices again. DeviceWatcher is expected to be reconnected. + device_factory_.GetDeviceDescriptors(&device_descriptors); + + EXPECT_EQ(device_descriptors.size(), 1U); +} + +} // namespace media
diff --git a/media/capture/video/fuchsia/video_capture_device_fuchsia_test.cc b/media/capture/video/fuchsia/video_capture_device_fuchsia_test.cc index 63627c46..1445762 100644 --- a/media/capture/video/fuchsia/video_capture_device_fuchsia_test.cc +++ b/media/capture/video/fuchsia/video_capture_device_fuchsia_test.cc
@@ -4,7 +4,9 @@ #include "media/capture/video/fuchsia/video_capture_device_fuchsia.h" +#include "base/fuchsia/test_component_context_for_process.h" #include "base/test/task_environment.h" +#include "media/capture/video/fuchsia/video_capture_device_factory_fuchsia.h" #include "media/fuchsia/camera/fake_fuchsia_camera.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/geometry/rect.h" @@ -188,15 +190,25 @@ class VideoCaptureDeviceFuchsiaTest : public testing::Test { public: VideoCaptureDeviceFuchsiaTest() { - fidl::InterfaceHandle<fuchsia::camera3::Device> device_handle; - fake_device_.Bind(device_handle.NewRequest()); - device_ = - std::make_unique<VideoCaptureDeviceFuchsia>(std::move(device_handle)); + test_context_.AddService("fuchsia.sysmem.Allocator"); } - ~VideoCaptureDeviceFuchsiaTest() override { device_->StopAndDeAllocate(); } + ~VideoCaptureDeviceFuchsiaTest() override { + if (device_) + device_->StopAndDeAllocate(); + } + + void CreateDevice() { + VideoCaptureDeviceDescriptors device_descriptors; + device_factory_.GetDeviceDescriptors(&device_descriptors); + ASSERT_EQ(device_descriptors.size(), 1U); + device_ = device_factory_.CreateDevice(device_descriptors[0]); + } void StartCapturer() { + if (!device_) + CreateDevice(); + VideoCaptureParams params; params.requested_format.frame_size = FakeCameraStream::kDefaultFrameSize; params.requested_format.frame_rate = 30.0; @@ -206,16 +218,19 @@ client_ = client.get(); device_->AllocateAndStart(params, std::move(client)); - EXPECT_TRUE(fake_stream_.WaitBuffersAllocated()); + EXPECT_TRUE(fake_device_watcher_.stream()->WaitBuffersAllocated()); } protected: base::test::SingleThreadTaskEnvironment task_environment_{ base::test::SingleThreadTaskEnvironment::MainThreadType::IO}; + base::TestComponentContextForProcess test_context_; - FakeCameraStream fake_stream_; - FakeCameraDevice fake_device_{&fake_stream_}; - std::unique_ptr<VideoCaptureDeviceFuchsia> device_; + FakeCameraDeviceWatcher fake_device_watcher_{ + test_context_.additional_services()}; + + VideoCaptureDeviceFactoryFuchsia device_factory_; + std::unique_ptr<VideoCaptureDevice> device_; TestVideoCaptureClient* client_ = nullptr; }; @@ -227,7 +242,7 @@ StartCapturer(); auto frame_timestamp = base::TimeTicks::Now(); - fake_stream_.ProduceFrame(frame_timestamp, 1); + fake_device_watcher_.stream()->ProduceFrame(frame_timestamp, 1); client_->WaitFrame(); ASSERT_EQ(client_->received_frames().size(), 1U); @@ -239,14 +254,14 @@ TEST_F(VideoCaptureDeviceFuchsiaTest, MultipleFrames) { StartCapturer(); - EXPECT_TRUE(fake_stream_.WaitBuffersAllocated()); + EXPECT_TRUE(fake_device_watcher_.stream()->WaitBuffersAllocated()); for (size_t i = 0; i < 10; ++i) { - ASSERT_TRUE(fake_stream_.WaitFreeBuffer()); + ASSERT_TRUE(fake_device_watcher_.stream()->WaitFreeBuffer()); auto frame_timestamp = base::TimeTicks() + base::TimeDelta::FromMilliseconds(i * 16); - fake_stream_.ProduceFrame(frame_timestamp, i); + fake_device_watcher_.stream()->ProduceFrame(frame_timestamp, i); client_->WaitFrame(); ASSERT_EQ(client_->received_frames().size(), i + 1); @@ -258,11 +273,11 @@ TEST_F(VideoCaptureDeviceFuchsiaTest, FrameRotation) { const gfx::Size kResolution(4, 2); - fake_stream_.SetFakeResolution(kResolution); + fake_device_watcher_.stream()->SetFakeResolution(kResolution); StartCapturer(); - EXPECT_TRUE(fake_stream_.WaitBuffersAllocated()); + EXPECT_TRUE(fake_device_watcher_.stream()->WaitBuffersAllocated()); for (int i = static_cast<int>(fuchsia::camera3::Orientation::UP); i <= static_cast<int>(fuchsia::camera3::Orientation::RIGHT_FLIPPED); @@ -271,9 +286,9 @@ auto orientation = static_cast<fuchsia::camera3::Orientation>(i); - ASSERT_TRUE(fake_stream_.WaitFreeBuffer()); - fake_stream_.SetFakeOrientation(orientation); - fake_stream_.ProduceFrame(base::TimeTicks::Now(), i); + ASSERT_TRUE(fake_device_watcher_.stream()->WaitFreeBuffer()); + fake_device_watcher_.stream()->SetFakeOrientation(orientation); + fake_device_watcher_.stream()->ProduceFrame(base::TimeTicks::Now(), i); client_->WaitFrame(); gfx::Size expected_size = kResolution; @@ -289,11 +304,11 @@ TEST_F(VideoCaptureDeviceFuchsiaTest, FrameDimensionsNotDivisibleBy2) { const gfx::Size kOddResolution(21, 7); - fake_stream_.SetFakeResolution(kOddResolution); + fake_device_watcher_.stream()->SetFakeResolution(kOddResolution); StartCapturer(); - fake_stream_.ProduceFrame(base::TimeTicks::Now(), 1); + fake_device_watcher_.stream()->ProduceFrame(base::TimeTicks::Now(), 1); client_->WaitFrame(); ASSERT_EQ(client_->received_frames().size(), 1U); @@ -304,14 +319,14 @@ StartCapturer(); // Capture the first frame at the default resolution. - fake_stream_.ProduceFrame(base::TimeTicks::Now(), 1); + fake_device_watcher_.stream()->ProduceFrame(base::TimeTicks::Now(), 1); client_->WaitFrame(); - ASSERT_TRUE(fake_stream_.WaitFreeBuffer()); + ASSERT_TRUE(fake_device_watcher_.stream()->WaitFreeBuffer()); // Update resolution and produce another frames. const gfx::Size kUpdatedResolution(3, 14); - fake_stream_.SetFakeResolution(kUpdatedResolution); - fake_stream_.ProduceFrame(base::TimeTicks::Now(), 1); + fake_device_watcher_.stream()->SetFakeResolution(kUpdatedResolution); + fake_device_watcher_.stream()->ProduceFrame(base::TimeTicks::Now(), 1); client_->WaitFrame(); // Verify that we get captured frames with correct resolution. @@ -321,4 +336,26 @@ ValidateReceivedFrame(client_->received_frames()[1], kUpdatedResolution, 1); } +TEST_F(VideoCaptureDeviceFuchsiaTest, + CreateDeviceAfterDeviceWatcherDisconnect) { + VideoCaptureDeviceDescriptors device_descriptors; + device_factory_.GetDeviceDescriptors(&device_descriptors); + ASSERT_EQ(device_descriptors.size(), 1U); + + // Disconnect DeviceWatcher and run the run loop so |device_factory_| can + // handle the disconnect. + fake_device_watcher_.DisconnectClients(); + base::RunLoop().RunUntilIdle(); + + // The factory is expected to reconnect DeviceWatcher. + device_ = device_factory_.CreateDevice(device_descriptors[0]); + + StartCapturer(); + + fake_device_watcher_.stream()->ProduceFrame(base::TimeTicks::Now(), 1); + client_->WaitFrame(); + + ASSERT_EQ(client_->received_frames().size(), 1U); +} + } // namespace media
diff --git a/media/fuchsia/camera/fake_fuchsia_camera.cc b/media/fuchsia/camera/fake_fuchsia_camera.cc index 9aa06b46..780c2729 100644 --- a/media/fuchsia/camera/fake_fuchsia_camera.cc +++ b/media/fuchsia/camera/fake_fuchsia_camera.cc
@@ -439,13 +439,13 @@ wait_free_buffer_run_loop_->Quit(); } FakeCameraDevice::FakeCameraDevice(FakeCameraStream* stream) - : binding_(this), stream_(stream) {} + : stream_(stream) {} FakeCameraDevice::~FakeCameraDevice() = default; void FakeCameraDevice::Bind( fidl::InterfaceRequest<fuchsia::camera3::Device> request) { - binding_.Bind(std::move(request)); + bindings_.AddBinding(this, std::move(request)); } void FakeCameraDevice::GetIdentifier(GetIdentifierCallback callback) { @@ -487,6 +487,10 @@ FakeCameraDeviceWatcher::~FakeCameraDeviceWatcher() = default; +void FakeCameraDeviceWatcher::DisconnectClients() { + bindings_.CloseAll(); +} + FakeCameraDeviceWatcher::Client::Client(FakeCameraDevice* device) : device_(device) {} FakeCameraDeviceWatcher::Client::~Client() {}
diff --git a/media/fuchsia/camera/fake_fuchsia_camera.h b/media/fuchsia/camera/fake_fuchsia_camera.h index 016c68d0..8fdab99 100644 --- a/media/fuchsia/camera/fake_fuchsia_camera.h +++ b/media/fuchsia/camera/fake_fuchsia_camera.h
@@ -147,7 +147,7 @@ // fuchsia::camera3::testing::Device_TestBase override. void NotImplemented_(const std::string& name) override; - fidl::Binding<fuchsia::camera3::Device> binding_; + fidl::BindingSet<fuchsia::camera3::Device> bindings_; FakeCameraStream* const stream_; }; @@ -159,6 +159,10 @@ FakeCameraDeviceWatcher(const FakeCameraDeviceWatcher&) = delete; FakeCameraDeviceWatcher& operator=(const FakeCameraDeviceWatcher&) = delete; + void DisconnectClients(); + + FakeCameraStream* stream() { return &stream_; } + private: class Client : public fuchsia::camera3::testing::DeviceWatcher_TestBase { public:
diff --git a/media/gpu/android/frame_info_helper.cc b/media/gpu/android/frame_info_helper.cc index fa336422..e0f8a47 100644 --- a/media/gpu/android/frame_info_helper.cc +++ b/media/gpu/android/frame_info_helper.cc
@@ -4,10 +4,13 @@ #include "media/gpu/android/frame_info_helper.h" +#include "base/threading/sequence_bound.h" #include "gpu/command_buffer/service/shared_image_video.h" #include "gpu/ipc/service/command_buffer_stub.h" #include "gpu/ipc/service/gpu_channel.h" #include "gpu/ipc/service/gpu_channel_manager.h" +#include "media/base/bind_to_current_loop.h" +#include "media/gpu/android/codec_output_buffer_renderer.h" namespace media { @@ -21,106 +24,184 @@ // Concrete implementation of FrameInfoHelper that renders output buffers and // gets the FrameInfo they need. -class FrameInfoHelperImpl : public FrameInfoHelper, - public gpu::CommandBufferStub::DestructionObserver { +class FrameInfoHelperImpl : public FrameInfoHelper { public: - FrameInfoHelperImpl(SharedImageVideoProvider::GetStubCB get_stub_cb) { - stub_ = get_stub_cb.Run(); - if (stub_) - stub_->AddDestructionObserver(this); + FrameInfoHelperImpl(scoped_refptr<base::SequencedTaskRunner> gpu_task_runner, + SharedImageVideoProvider::GetStubCB get_stub_cb) { + on_gpu_ = base::SequenceBound<OnGpu>(std::move(gpu_task_runner), + std::move(get_stub_cb)); } - FrameInfoHelperImpl() = default; + ~FrameInfoHelperImpl() override = default; - ~FrameInfoHelperImpl() override { - if (stub_) - stub_->RemoveDestructionObserver(this); - } - - void GetFrameInfo( - std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, - base::OnceCallback< - void(std::unique_ptr<CodecOutputBufferRenderer>, FrameInfo, bool)> cb) - override { - if (!buffer_renderer) { - std::move(cb).Run(nullptr, FrameInfo(), false); - return; - } - - auto texture_owner = buffer_renderer->texture_owner(); - - FrameInfo info; - - // Indicates that the FrameInfo is reliable and can be cached by caller. - // It's true if we either return cached values or we attempted to render - // frame and succeeded. - bool success = true; - - // We default to visible size if if we can't get real size - info.coded_size = buffer_renderer->size(); - info.visible_rect = gfx::Rect(info.coded_size); - - if (texture_owner) { - if (visible_size_ == buffer_renderer->size()) { - info = frame_info_; - } else if (buffer_renderer->RenderToTextureOwnerFrontBuffer( - CodecOutputBufferRenderer::BindingsMode:: - kDontRestoreIfBound)) { - visible_size_ = buffer_renderer->size(); - texture_owner->GetCodedSizeAndVisibleRect( - visible_size_, &frame_info_.coded_size, &frame_info_.visible_rect); - - frame_info_.ycbcr_info = GetYCbCrInfo(texture_owner.get()); - info = frame_info_; - } else { - // We attempted to render frame and failed, mark request as failed so - // caller won't cache best-guess values. - success = false; - } - } - - std::move(cb).Run(std::move(buffer_renderer), info, success); - } - - void OnWillDestroyStub(bool have_context) override { - DCHECK(stub_); - stub_ = nullptr; + void GetFrameInfo(std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, + FrameInfoReadyCB callback) override { + Request request = {.buffer_renderer = std::move(buffer_renderer), + .callback = std::move(callback)}; + requests_.push(std::move(request)); + // If there were no pending requests start processing queue now. + if (requests_.size() == 1) + ProcessRequestsQueue(); } private: - // Gets YCbCrInfo from last rendered frame. - base::Optional<gpu::VulkanYCbCrInfo> GetYCbCrInfo( - gpu::TextureOwner* texture_owner) { - gpu::ContextResult result; - if (!stub_) - return base::nullopt; + struct Request { + std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer; + FrameInfoReadyCB callback; + }; - auto shared_context = - stub_->channel()->gpu_channel_manager()->GetSharedContextState(&result); - auto context_provider = - (result == gpu::ContextResult::kSuccess) ? shared_context : nullptr; - if (!context_provider) - return base::nullopt; + class OnGpu : public gpu::CommandBufferStub::DestructionObserver { + public: + OnGpu(SharedImageVideoProvider::GetStubCB get_stub_cb) { + stub_ = get_stub_cb.Run(); + if (stub_) + stub_->AddDestructionObserver(this); + } - return gpu::SharedImageVideo::GetYcbcrInfo(texture_owner, context_provider); + ~OnGpu() override { + if (stub_) + stub_->RemoveDestructionObserver(this); + } + + void OnWillDestroyStub(bool have_context) override { + DCHECK(stub_); + stub_ = nullptr; + } + + void GetFrameInfo( + std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, + base::OnceCallback<void(std::unique_ptr<CodecOutputBufferRenderer>, + base::Optional<FrameInfo>)> cb) { + DCHECK(buffer_renderer); + + auto texture_owner = buffer_renderer->texture_owner(); + DCHECK(texture_owner); + + base::Optional<FrameInfo> info; + + if (buffer_renderer->RenderToTextureOwnerFrontBuffer( + CodecOutputBufferRenderer::BindingsMode::kDontRestoreIfBound)) { + info.emplace(); + texture_owner->GetCodedSizeAndVisibleRect( + buffer_renderer->size(), &info->coded_size, &info->visible_rect); + + info->ycbcr_info = GetYCbCrInfo(texture_owner.get()); + } + + std::move(cb).Run(std::move(buffer_renderer), info); + } + + private: + // Gets YCbCrInfo from last rendered frame. + base::Optional<gpu::VulkanYCbCrInfo> GetYCbCrInfo( + gpu::TextureOwner* texture_owner) { + gpu::ContextResult result; + + if (!stub_) + return base::nullopt; + + auto shared_context = + stub_->channel()->gpu_channel_manager()->GetSharedContextState( + &result); + auto context_provider = + (result == gpu::ContextResult::kSuccess) ? shared_context : nullptr; + if (!context_provider) + return base::nullopt; + + return gpu::SharedImageVideo::GetYcbcrInfo(texture_owner, + context_provider); + } + + gpu::CommandBufferStub* stub_ = nullptr; + }; + + FrameInfo GetFrameInfoWithVisibleSize(const gfx::Size& visible_size) { + FrameInfo info; + info.coded_size = visible_size; + info.visible_rect = gfx::Rect(visible_size); + return info; } - gpu::CommandBufferStub* stub_ = nullptr; + void OnFrameInfoReady( + std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, + base::Optional<FrameInfo> frame_info) { + DCHECK(buffer_renderer); + DCHECK(!requests_.empty()); + auto& request = requests_.front(); + + if (frame_info) { + visible_size_ = buffer_renderer->size(); + frame_info_ = *frame_info; + std::move(request.callback).Run(std::move(buffer_renderer), frame_info_); + } else { + // It's possible that we will fail to render frame and so weren't able to + // obtain FrameInfo. In this case we don't cache new values and complete + // current request with visible size, we will attempt to render next frame + // with next request. + auto info = GetFrameInfoWithVisibleSize(buffer_renderer->size()); + std::move(request.callback) + .Run(std::move(buffer_renderer), std::move(info)); + } + requests_.pop(); + ProcessRequestsQueue(); + } + + void ProcessRequestsQueue() { + while (!requests_.empty()) { + auto& request = requests_.front(); + + if (!request.buffer_renderer) { + // If we don't have buffer_renderer we can Run callback immediately. + std::move(request.callback).Run(nullptr, FrameInfo()); + } else if (!request.buffer_renderer->texture_owner()) { + // If there is no texture_owner (SurfaceView case), we can't render + // frame and get proper size. But as Display Compositor won't render + // this frame the actual size is not important, assume coded_size = + // visible_size. + auto info = + GetFrameInfoWithVisibleSize(request.buffer_renderer->size()); + std::move(request.callback) + .Run(std::move(request.buffer_renderer), std::move(info)); + } else if (visible_size_ == request.buffer_renderer->size()) { + // We have cached the results of last frame info request with the same + // size. We assume that coded_size doesn't change if the visible_size + // stays the same. + std::move(request.callback) + .Run(std::move(request.buffer_renderer), frame_info_); + } else { + // We have texture_owner and we don't have cached value, so we need to + // hop to GPU thread and render the frame to get proper size. + auto cb = BindToCurrentLoop( + base::BindOnce(&FrameInfoHelperImpl::OnFrameInfoReady, + weak_factory_.GetWeakPtr())); + + on_gpu_.Post(FROM_HERE, &OnGpu::GetFrameInfo, + std::move(request.buffer_renderer), std::move(cb)); + // We didn't complete this request quite yet, so we can't process queue + // any further. + break; + } + requests_.pop(); + } + } + + base::SequenceBound<OnGpu> on_gpu_; + std::queue<Request> requests_; + + // Cached values. FrameInfo frame_info_; gfx::Size visible_size_; + + base::WeakPtrFactory<FrameInfoHelperImpl> weak_factory_{this}; }; // static -base::SequenceBound<FrameInfoHelper> FrameInfoHelper::Create( +std::unique_ptr<FrameInfoHelper> FrameInfoHelper::Create( scoped_refptr<base::SequencedTaskRunner> gpu_task_runner, SharedImageVideoProvider::GetStubCB get_stub_cb) { - return base::SequenceBound<FrameInfoHelperImpl>(std::move(gpu_task_runner), - std::move(get_stub_cb)); -} - -std::unique_ptr<FrameInfoHelper> FrameInfoHelper::CreateForTesting() { - return std::make_unique<FrameInfoHelperImpl>(); + return std::make_unique<FrameInfoHelperImpl>(std::move(gpu_task_runner), + std::move(get_stub_cb)); } } // namespace media
diff --git a/media/gpu/android/frame_info_helper.h b/media/gpu/android/frame_info_helper.h index 60d9ace..1f60bce 100644 --- a/media/gpu/android/frame_info_helper.h +++ b/media/gpu/android/frame_info_helper.h
@@ -6,12 +6,11 @@ #define MEDIA_GPU_ANDROID_FRAME_INFO_HELPER_H_ #include "base/optional.h" -#include "base/threading/sequence_bound.h" -#include "media/gpu/android/codec_image.h" #include "media/gpu/android/shared_image_video_provider.h" #include "media/gpu/media_gpu_export.h" namespace media { +class CodecOutputBufferRenderer; // Helper class to fetch YCbCrInfo for Vulkan from a CodecImage. class MEDIA_GPU_EXPORT FrameInfoHelper { @@ -29,12 +28,14 @@ base::Optional<gpu::VulkanYCbCrInfo> ycbcr_info; }; - static base::SequenceBound<FrameInfoHelper> Create( + using FrameInfoReadyCB = + base::OnceCallback<void(std::unique_ptr<CodecOutputBufferRenderer>, + FrameInfo)>; + + static std::unique_ptr<FrameInfoHelper> Create( scoped_refptr<base::SequencedTaskRunner> gpu_task_runner, SharedImageVideoProvider::GetStubCB get_stub_cb); - static std::unique_ptr<FrameInfoHelper> CreateForTesting(); - virtual ~FrameInfoHelper() = default; // Call |cb| with the FrameInfo. Will render |buffer_renderer| to the front @@ -42,9 +43,11 @@ // attempt to get YCbCrInfo and cache it. If all necessary info is cached the // call will leave buffer_renderer intact and it can be rendered later. // Rendering can fail for reasons. This function will make best efforts to - // fill FrameInfo which can be used to create VideoFrame, but shouldn't be - // cached by caller. Last parameter in |cb| is bool that indicates that info - // is reliable. + // fill FrameInfo which can be used to create VideoFrame. + // + // Callbacks will be executed and on callers sequence and guaranteed to be + // called in order of GetFrameInfo calls. Callback can be called before this + // function returns if all necessary info is available right away. // // While this API might seem to be out of its Vulkan mind, it's this // complicated to (a) prevent rendering frames out of order to the front @@ -52,9 +55,7 @@ // can't get a YCbCrInfo from a CodecImage due to timeouts. virtual void GetFrameInfo( std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, - base::OnceCallback<void(std::unique_ptr<CodecOutputBufferRenderer>, - FrameInfo, - bool)> cb) = 0; + FrameInfoReadyCB callback) = 0; protected: FrameInfoHelper() = default;
diff --git a/media/gpu/android/frame_info_helper_unittest.cc b/media/gpu/android/frame_info_helper_unittest.cc index 053d198..bfcb13c 100644 --- a/media/gpu/android/frame_info_helper_unittest.cc +++ b/media/gpu/android/frame_info_helper_unittest.cc
@@ -6,6 +6,7 @@ #include "base/test/bind_test_util.h" #include "base/test/task_environment.h" +#include "base/threading/thread_task_runner_handle.h" #include "gpu/command_buffer/service/mock_texture_owner.h" #include "testing/gtest/include/gtest/gtest.h" @@ -18,11 +19,19 @@ constexpr gfx::Size kTestVisibleSize(100, 100); constexpr gfx::Size kTestVisibleSize2(110, 110); constexpr gfx::Size kTestCodedSize(128, 128); + +std::unique_ptr<FrameInfoHelper> CreateHelper() { + auto task_runner = base::ThreadTaskRunnerHandle::Get(); + auto get_stub_cb = + base::Bind([]() -> gpu::CommandBufferStub* { return nullptr; }); + return FrameInfoHelper::Create(std::move(task_runner), + std::move(get_stub_cb)); +} } // namespace class FrameInfoHelperTest : public testing::Test { public: - FrameInfoHelperTest() : helper_(FrameInfoHelper::CreateForTesting()) {} + FrameInfoHelperTest() : helper_(CreateHelper()) {} protected: void GetFrameInfo( @@ -31,13 +40,13 @@ bool called = false; auto callback = base::BindLambdaForTesting( [&](std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, - FrameInfoHelper::FrameInfo info, bool success) { + FrameInfoHelper::FrameInfo info) { ASSERT_EQ(buffer_renderer_raw, buffer_renderer.get()); called = true; - last_get_frame_info_succeeded_ = success; last_frame_info_ = info; }); helper_->GetFrameInfo(std::move(buffer_renderer), callback); + base::RunLoop().RunUntilIdle(); ASSERT_TRUE(called); } @@ -67,15 +76,12 @@ base::test::SingleThreadTaskEnvironment task_environment_; std::unique_ptr<FrameInfoHelper> helper_; - bool last_get_frame_info_succeeded_ = false; FrameInfoHelper::FrameInfo last_frame_info_; }; TEST_F(FrameInfoHelperTest, NoBufferRenderer) { - // If there is no buffer renderer we shouldn't crash and report that request - // failed. + // If there is no buffer renderer we shouldn't crash. GetFrameInfo(nullptr); - EXPECT_FALSE(last_get_frame_info_succeeded_); } TEST_F(FrameInfoHelperTest, TextureOwner) { @@ -93,7 +99,6 @@ // as failed. EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(0); GetFrameInfo(std::move(buffer1)); - EXPECT_FALSE(last_get_frame_info_succeeded_); EXPECT_EQ(last_frame_info_.coded_size, kTestVisibleSize); Mock::VerifyAndClearExpectations(texture_owner.get()); @@ -101,7 +106,6 @@ // be called and result should be kTestCodedSize instead of kTestVisibleSize. EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(1); GetFrameInfo(CreateBufferRenderer(kTestVisibleSize, texture_owner)); - EXPECT_TRUE(last_get_frame_info_succeeded_); EXPECT_EQ(last_frame_info_.coded_size, kTestCodedSize); Mock::VerifyAndClearExpectations(texture_owner.get()); @@ -109,22 +113,102 @@ // size. GetCodedSizeAndVisibleRect should not be called. EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(0); GetFrameInfo(CreateBufferRenderer(kTestVisibleSize, texture_owner)); - EXPECT_TRUE(last_get_frame_info_succeeded_); EXPECT_EQ(last_frame_info_.coded_size, kTestCodedSize); Mock::VerifyAndClearExpectations(texture_owner.get()); // Verify that we render if the visible size changed. EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(1); GetFrameInfo(CreateBufferRenderer(kTestVisibleSize2, texture_owner)); - EXPECT_TRUE(last_get_frame_info_succeeded_); EXPECT_EQ(last_frame_info_.coded_size, kTestCodedSize); } TEST_F(FrameInfoHelperTest, Overlay) { // In overlay case we always use visible size. GetFrameInfo(CreateBufferRenderer(kTestVisibleSize, nullptr)); - EXPECT_TRUE(last_get_frame_info_succeeded_); EXPECT_EQ(last_frame_info_.coded_size, kTestVisibleSize); } +TEST_F(FrameInfoHelperTest, SwitchBetweenOverlayAndTextureOwner) { + auto texture_owner = base::MakeRefCounted<NiceMock<gpu::MockTextureOwner>>( + 0, nullptr, nullptr, true); + + // Return CodedSize when GetCodedSizeAndVisibleRect is called. + ON_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)) + .WillByDefault(SetArgPointee<1>(kTestCodedSize)); + + // In overlay case we always use visible size. + GetFrameInfo(CreateBufferRenderer(kTestVisibleSize, nullptr)); + EXPECT_EQ(last_frame_info_.coded_size, kTestVisibleSize); + + // Verify that when we switch to TextureOwner we request new size. + EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(1); + GetFrameInfo(CreateBufferRenderer(kTestVisibleSize, texture_owner)); + EXPECT_EQ(last_frame_info_.coded_size, kTestCodedSize); + Mock::VerifyAndClearExpectations(texture_owner.get()); + + // Switch back to overlay and verify that we falled back to visible size and + // didn't try to render image. + EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(0); + GetFrameInfo(CreateBufferRenderer(kTestVisibleSize, nullptr)); + EXPECT_EQ(last_frame_info_.coded_size, kTestVisibleSize); + Mock::VerifyAndClearExpectations(texture_owner.get()); + + // Verify that when we switch to TextureOwner we use cached size. + EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(0); + GetFrameInfo(CreateBufferRenderer(kTestVisibleSize, texture_owner)); + EXPECT_EQ(last_frame_info_.coded_size, kTestCodedSize); + Mock::VerifyAndClearExpectations(texture_owner.get()); + + // Switch back to overlay again. + EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(0); + GetFrameInfo(CreateBufferRenderer(kTestVisibleSize, nullptr)); + EXPECT_EQ(last_frame_info_.coded_size, kTestVisibleSize); + Mock::VerifyAndClearExpectations(texture_owner.get()); + + // Verify that when we switch to TextureOwner with resize we render another + // frame. + EXPECT_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)).Times(1); + GetFrameInfo(CreateBufferRenderer(kTestVisibleSize2, texture_owner)); + EXPECT_EQ(last_frame_info_.coded_size, kTestCodedSize); + Mock::VerifyAndClearExpectations(texture_owner.get()); +} + +TEST_F(FrameInfoHelperTest, OrderingTest) { + auto texture_owner = base::MakeRefCounted<NiceMock<gpu::MockTextureOwner>>( + 0, nullptr, nullptr, true); + + // Return CodedSize when GetCodedSizeAndVisibleRect is called. + ON_CALL(*texture_owner, GetCodedSizeAndVisibleRect(_, _, _)) + .WillByDefault(SetArgPointee<1>(kTestCodedSize)); + + auto buffer_renderer = CreateBufferRenderer(kTestVisibleSize, texture_owner); + + // Create first callback and request frame. + const auto* buffer_renderer_raw = buffer_renderer.get(); + bool called = false; + auto callback = base::BindLambdaForTesting( + [&](std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, + FrameInfoHelper::FrameInfo info) { + ASSERT_EQ(buffer_renderer_raw, buffer_renderer.get()); + called = true; + last_frame_info_ = info; + }); + helper_->GetFrameInfo(std::move(buffer_renderer), callback); + + // Create run after callback. + bool run_after_called = false; + auto run_after_callback = base::BindLambdaForTesting( + [&](std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, + FrameInfoHelper::FrameInfo info) { + ASSERT_EQ(buffer_renderer.get(), nullptr); + // Expect first callback was called before this. + EXPECT_TRUE(called); + run_after_called = true; + }); + helper_->GetFrameInfo(nullptr, run_after_callback); + + base::RunLoop().RunUntilIdle(); + ASSERT_TRUE(called); + ASSERT_TRUE(run_after_called); +} } // namespace media
diff --git a/media/gpu/android/video_frame_factory_impl.cc b/media/gpu/android/video_frame_factory_impl.cc index 1c264f9..1132f599 100644 --- a/media/gpu/android/video_frame_factory_impl.cc +++ b/media/gpu/android/video_frame_factory_impl.cc
@@ -81,7 +81,7 @@ const gpu::GpuPreferences& gpu_preferences, std::unique_ptr<SharedImageVideoProvider> image_provider, std::unique_ptr<MaybeRenderEarlyManager> mre_manager, - base::SequenceBound<FrameInfoHelper> frame_info_helper) + std::unique_ptr<FrameInfoHelper> frame_info_helper) : image_provider_(std::move(image_provider)), gpu_task_runner_(std::move(gpu_task_runner)), enable_threaded_texture_mailboxes_( @@ -113,10 +113,6 @@ // changing the TextureOwner. This is temporary. See ImageSpec. image_spec_.generation_id++; - // Reset cached visible size as we might switched between overlay and texture - // owner mode. - visible_size_ = gfx::Size(); - if (!surface_bundle) { // Clear everything, just so we're not holding a reference. codec_buffer_wait_coordinator_ = nullptr; @@ -185,48 +181,20 @@ void VideoFrameFactoryImpl::RequestImage( std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, ImageWithInfoReadyCB image_ready_cb) { - if (buffer_renderer && visible_size_ == buffer_renderer->size()) { - auto cb = base::BindOnce(std::move(image_ready_cb), - std::move(buffer_renderer), frame_info_); - - image_provider_->RequestImage( - std::move(cb), image_spec_, - codec_buffer_wait_coordinator_ - ? codec_buffer_wait_coordinator_->texture_owner() - : nullptr); - return; - } - - // We need to reset size to make sure VFFI pipeline is still ordered. - // e.g: CreateVideoFrame is called with new size. We post task to GPU thread - // to get new frame info. While we wait CreateVideoFrame might be called with - // old size again and if we don't reset size here we will skip GPU hop and new - // frame will be created earlier than first one. - visible_size_ = gfx::Size(); - - auto info_cb = BindToCurrentLoop( + auto info_cb = base::BindOnce(&VideoFrameFactoryImpl::CreateVideoFrame_OnFrameInfoReady, weak_factory_.GetWeakPtr(), std::move(image_ready_cb), - codec_buffer_wait_coordinator_)); + codec_buffer_wait_coordinator_); - frame_info_helper_.Post(FROM_HERE, &FrameInfoHelper::GetFrameInfo, - std::move(buffer_renderer), std::move(info_cb)); + frame_info_helper_->GetFrameInfo(std::move(buffer_renderer), + std::move(info_cb)); } void VideoFrameFactoryImpl::CreateVideoFrame_OnFrameInfoReady( ImageWithInfoReadyCB image_ready_cb, scoped_refptr<CodecBufferWaitCoordinator> codec_buffer_wait_coordinator, std::unique_ptr<CodecOutputBufferRenderer> output_buffer_renderer, - FrameInfoHelper::FrameInfo frame_info, - bool success) { - // To get frame info we need to render frame which might fail for variety of - // reason. FrameInfoHelper will provide best values we can proceed with, but - // we should not cache it and attempt to get info for next frame. - if (success) { - frame_info_ = frame_info; - visible_size_ = output_buffer_renderer->size(); - } - + FrameInfoHelper::FrameInfo frame_info) { // If we don't have output buffer here we can't rely on reply from // FrameInfoHelper as there might be not cached value and we can't render // nothing. But in this case call comes from RunAfterPendingVideoFrames and we
diff --git a/media/gpu/android/video_frame_factory_impl.h b/media/gpu/android/video_frame_factory_impl.h index d407a9d..489149eb 100644 --- a/media/gpu/android/video_frame_factory_impl.h +++ b/media/gpu/android/video_frame_factory_impl.h
@@ -10,7 +10,6 @@ #include "base/memory/weak_ptr.h" #include "base/optional.h" #include "base/single_thread_task_runner.h" -#include "base/threading/sequence_bound.h" #include "gpu/config/gpu_preferences.h" #include "media/base/video_frame.h" #include "media/gpu/android/codec_buffer_wait_coordinator.h" @@ -52,7 +51,7 @@ const gpu::GpuPreferences& gpu_preferences, std::unique_ptr<SharedImageVideoProvider> image_provider, std::unique_ptr<MaybeRenderEarlyManager> mre_manager, - base::SequenceBound<FrameInfoHelper> frame_info_helper); + std::unique_ptr<FrameInfoHelper> frame_info_helper); ~VideoFrameFactoryImpl() override; void Initialize(OverlayMode overlay_mode, InitCB init_cb) override; @@ -105,8 +104,7 @@ ImageWithInfoReadyCB image_ready_cb, scoped_refptr<CodecBufferWaitCoordinator> codec_buffer_wait_coordinator, std::unique_ptr<CodecOutputBufferRenderer> output_buffer_renderer, - FrameInfoHelper::FrameInfo frame_info, - bool success); + FrameInfoHelper::FrameInfo frame_info); MaybeRenderEarlyManager* mre_manager() const { return mre_manager_.get(); } @@ -128,12 +126,8 @@ std::unique_ptr<MaybeRenderEarlyManager> mre_manager_; - // Caches FrameInfo and visible size it was cached for. - gfx::Size visible_size_; - FrameInfoHelper::FrameInfo frame_info_; - - // Optional helper to get the Vulkan YCbCrInfo. - base::SequenceBound<FrameInfoHelper> frame_info_helper_; + // Helper to get coded_size and optional Vulkan YCbCrInfo. + std::unique_ptr<FrameInfoHelper> frame_info_helper_; // The current image spec that we'll use to request images. SharedImageVideoProvider::ImageSpec image_spec_;
diff --git a/media/gpu/android/video_frame_factory_impl_unittest.cc b/media/gpu/android/video_frame_factory_impl_unittest.cc index ade0a27..13231ef 100644 --- a/media/gpu/android/video_frame_factory_impl_unittest.cc +++ b/media/gpu/android/video_frame_factory_impl_unittest.cc
@@ -44,46 +44,14 @@ class MockFrameInfoHelper : public FrameInfoHelper, public DestructionObservable { public: - MockFrameInfoHelper(MockFrameInfoHelper** thiz) { *thiz = this; } - - void GetFrameInfo( - std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, - base::OnceCallback< - void(std::unique_ptr<CodecOutputBufferRenderer>, FrameInfo, bool)> cb) - override { - MockGetFrameInfo(buffer_renderer.get()); - cb_ = std::move(cb); - buffer_renderer_ = std::move(buffer_renderer); - - if (run_callback_automatically_) { - RunWithYcbCrInfo(true); - base::RunLoop().RunUntilIdle(); - } - } - - void RunWithYcbCrInfo(bool success) { - DCHECK(buffer_renderer_); - + void GetFrameInfo(std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer, + FrameInfoReadyCB cb) override { FrameInfo info; - info.coded_size = buffer_renderer_->size(); + info.coded_size = buffer_renderer->size(); info.visible_rect = gfx::Rect(info.coded_size); - std::move(cb_).Run(std::move(buffer_renderer_), info, success); + std::move(cb).Run(std::move(buffer_renderer), info); } - - void set_run_callback_automatically(bool run_callback_automatically) { - run_callback_automatically_ = run_callback_automatically; - } - - MOCK_METHOD1(MockGetFrameInfo, - void(CodecOutputBufferRenderer* buffer_renderer)); - - private: - bool run_callback_automatically_ = true; - base::OnceCallback< - void(std::unique_ptr<CodecOutputBufferRenderer>, FrameInfo, bool)> - cb_; - std::unique_ptr<CodecOutputBufferRenderer> buffer_renderer_; }; class VideoFrameFactoryImplTest : public testing::Test { @@ -96,15 +64,11 @@ auto mre_manager = std::make_unique<MockMaybeRenderEarlyManager>(); mre_manager_raw_ = mre_manager.get(); - auto ycbcr_helper = base::SequenceBound<MockFrameInfoHelper>( - task_runner_, &ycbcr_helper_raw_); - base::RunLoop().RunUntilIdle(); // Init |ycbcr_helper_raw_|. - ycbcr_destruction_observer_ = - ycbcr_helper_raw_->CreateDestructionObserver(); + auto info_helper = std::make_unique<MockFrameInfoHelper>(); impl_ = std::make_unique<VideoFrameFactoryImpl>( task_runner_, gpu_preferences_, std::move(image_provider), - std::move(mre_manager), std::move(ycbcr_helper)); + std::move(mre_manager), std::move(info_helper)); auto texture_owner = base::MakeRefCounted<NiceMock<gpu::MockTextureOwner>>( 0, nullptr, nullptr, true); auto codec_buffer_wait_coordinator = @@ -177,7 +141,6 @@ // Sent to |impl_| by RequestVideoFrame.. base::MockCallback<VideoFrameFactory::OnceOutputCB> output_cb_; - MockFrameInfoHelper* ycbcr_helper_raw_ = nullptr; std::unique_ptr<DestructionObserver> ycbcr_destruction_observer_; gpu::GpuPreferences gpu_preferences_; @@ -272,75 +235,4 @@ impl_ = nullptr; base::RunLoop().RunUntilIdle(); } - -TEST_F(VideoFrameFactoryImplTest, DoesCallFrameInfoHelperIfVulkan) { - // We will be driving callback by ourselves in this test. - ycbcr_helper_raw_->set_run_callback_automatically(false); - // Expect call to get info for the first frame. - EXPECT_CALL(*ycbcr_helper_raw_, MockGetFrameInfo(_)).Times(1); - - RequestVideoFrame(); - - // Provide info. It should send image request. - ycbcr_helper_raw_->RunWithYcbCrInfo(true); - base::RunLoop().RunUntilIdle(); - - testing::Mock::VerifyAndClearExpectations(ycbcr_helper_raw_); - - // Fulfilling image request should provide video frame. - EXPECT_CALL(output_cb_, Run(_)).Times(1); - - auto image_record = MakeImageRecord(); - image_provider_raw_->ProvideOneRequestedImage(&image_record); - base::RunLoop().RunUntilIdle(); - - // Verify that no more calls happen, since we don't want thread hops on every - // frame. Note that multiple could be dispatched before now. It should still - // send along a VideoFrame, though. - EXPECT_CALL(*ycbcr_helper_raw_, MockGetFrameInfo(_)).Times(0); - EXPECT_CALL(output_cb_, Run(_)).Times(1); - - RequestVideoFrame(); - auto other_image_record = MakeImageRecord(); - // If the helper hasn't been destroyed, then we don't expect it to be called. - image_provider_raw_->ProvideOneRequestedImage(&other_image_record); - base::RunLoop().RunUntilIdle(); -} - -TEST_F(VideoFrameFactoryImplTest, NullYCbCrInfoDoesntCrash) { - // We will be driving callback by ourselves in this test. - ycbcr_helper_raw_->set_run_callback_automatically(false); - - // Expect call to get info for the first frame. - EXPECT_CALL(*ycbcr_helper_raw_, MockGetFrameInfo(_)).Times(1); - - RequestVideoFrame(); - - // Provide info. It should send image request. - ycbcr_helper_raw_->RunWithYcbCrInfo(false); - base::RunLoop().RunUntilIdle(); - - testing::Mock::VerifyAndClearExpectations(ycbcr_helper_raw_); - - // Fulfilling image request should provide video frame. - EXPECT_CALL(output_cb_, Run(_)).Times(1); - - auto image_record = MakeImageRecord(); - image_provider_raw_->ProvideOneRequestedImage(&image_record); - base::RunLoop().RunUntilIdle(); - - // Verify that we will get call to GetFrameInfo as previous one failed. - EXPECT_CALL(*ycbcr_helper_raw_, MockGetFrameInfo(_)).Times(1); - EXPECT_CALL(output_cb_, Run(_)).Times(1); - - RequestVideoFrame(); - ycbcr_helper_raw_->RunWithYcbCrInfo(true); - base::RunLoop().RunUntilIdle(); - - auto other_image_record = MakeImageRecord(); - // If the helper hasn't been destroyed, then we don't expect it to be called. - image_provider_raw_->ProvideOneRequestedImage(&other_image_record); - base::RunLoop().RunUntilIdle(); -} - } // namespace media
diff --git a/media/renderers/video_resource_updater.cc b/media/renderers/video_resource_updater.cc index 6f3347fb..7fe3eb43 100644 --- a/media/renderers/video_resource_updater.cc +++ b/media/renderers/video_resource_updater.cc
@@ -158,23 +158,40 @@ class SyncTokenClientImpl : public VideoFrame::SyncTokenClient { public: - SyncTokenClientImpl(gpu::gles2::GLES2Interface* gl, gpu::SyncToken sync_token) - : gl_(gl), sync_token_(sync_token) {} + SyncTokenClientImpl(gpu::gles2::GLES2Interface* gl, + gpu::SharedImageInterface* sii, + gpu::SyncToken sync_token) + : gl_(gl), sii_(sii), sync_token_(sync_token) { + // Only one interface should be used. + DCHECK((gl_ && !sii_) || (!gl_ && sii_)); + } ~SyncTokenClientImpl() override = default; void GenerateSyncToken(gpu::SyncToken* sync_token) override { if (sync_token_.HasData()) { *sync_token = sync_token_; } else { - gl_->GenSyncTokenCHROMIUM(sync_token->GetData()); + if (gl_) { + gl_->GenSyncTokenCHROMIUM(sync_token->GetData()); + } else { + *sync_token = sii_->GenVerifiedSyncToken(); + } } } void WaitSyncToken(const gpu::SyncToken& sync_token) override { if (sync_token.HasData()) { - gl_->WaitSyncTokenCHROMIUM(sync_token.GetConstData()); + if (gl_) { + gl_->WaitSyncTokenCHROMIUM(sync_token.GetConstData()); + } else { + sii_->WaitSyncToken(sync_token); + } if (sync_token_.HasData() && sync_token_ != sync_token) { - gl_->WaitSyncTokenCHROMIUM(sync_token_.GetConstData()); + if (gl_) { + gl_->WaitSyncTokenCHROMIUM(sync_token_.GetConstData()); + } else { + sii_->WaitSyncToken(sync_token); + } sync_token_.Clear(); } } @@ -182,6 +199,7 @@ private: gpu::gles2::GLES2Interface* gl_; + gpu::SharedImageInterface* sii_; gpu::SyncToken sync_token_; DISALLOW_COPY_AND_ASSIGN(SyncTokenClientImpl); }; @@ -796,7 +814,8 @@ gl->DeleteTextures(1, &src_texture_id); // Pass an empty sync token to force generation of a new sync token. - SyncTokenClientImpl client(gl, gpu::SyncToken()); + SyncTokenClientImpl client(gl, nullptr /* gpu::SharedImageInterface* */, + gpu::SyncToken()); gpu::SyncToken sync_token = video_frame->UpdateReleaseSyncToken(&client); auto transferable_resource = viz::TransferableResource::MakeGL( @@ -1231,7 +1250,8 @@ // The video frame will insert a wait on the previous release sync token. auto* gl = raster_context_provider_ ? raster_context_provider_->ContextGL() : context_provider_->ContextGL(); - SyncTokenClientImpl client(gl, sync_token); + SyncTokenClientImpl client(gl, nullptr /* gpu::SharedImageInterface* */, + sync_token); video_frame->UpdateReleaseSyncToken(&client); }
diff --git a/net/base/filename_util.cc b/net/base/filename_util.cc index a514c48..1471fb96 100644 --- a/net/base/filename_util.cc +++ b/net/base/filename_util.cc
@@ -58,7 +58,7 @@ &url_string, 0, FILE_PATH_LITERAL("\\"), FILE_PATH_LITERAL("%5C")); #endif - return GURL(url_string); + return GURL(base::AsCrossPlatformPiece(url_string)); } bool FileURLToFilePath(const GURL& url, base::FilePath* file_path) { @@ -132,7 +132,7 @@ #if defined(OS_WIN) if (base::IsStringUTF8(path)) { - file_path_str.assign(base::UTF8ToUTF16(path)); + file_path_str.assign(base::UTF8ToWide(path)); // We used to try too hard and see if |path| made up entirely of // the 1st 256 characters in the Unicode was a zero-extended UTF-16. // If so, we converted it to 'Latin-1' and checked if the result was UTF-8. @@ -144,7 +144,7 @@ // are giving the conversion function a nonempty string, and it may fail if // the given string is not in the current encoding and give us an empty // string back. We detect this and report failure. - file_path_str = base::WideToUTF16(base::SysNativeMBToWide(path)); + file_path_str = base::SysNativeMBToWide(path); } #else // defined(OS_WIN) // Collapse multiple path slashes into a single path slash. @@ -193,7 +193,7 @@ "com5", "com6", "com7", "com8", "com9", "lpt1", "lpt2", "lpt3", "lpt4", "lpt5", "lpt6", "lpt7", "lpt8", "lpt9", "clock$"}; #if defined(OS_WIN) - std::string filename_lower = base::ToLowerASCII(base::UTF16ToUTF8(filename)); + std::string filename_lower = base::ToLowerASCII(base::WideToUTF8(filename)); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) std::string filename_lower = base::ToLowerASCII(filename); #endif
diff --git a/net/base/filename_util_internal.cc b/net/base/filename_util_internal.cc index 92db27ab..3cb42b5 100644 --- a/net/base/filename_util_internal.cc +++ b/net/base/filename_util_internal.cc
@@ -207,7 +207,7 @@ bool FilePathToString16(const base::FilePath& path, base::string16* converted) { #if defined(OS_WIN) - *converted = path.value(); + converted->assign(path.value().begin(), path.value().end()); return true; #elif defined(OS_POSIX) || defined(OS_FUCHSIA) std::string component8 = path.AsUTF8Unsafe(); @@ -266,8 +266,8 @@ base::FilePath::StringType result_str, default_name_str; #if defined(OS_WIN) replace_trailing = true; - result_str = base::UTF8ToUTF16(filename); - default_name_str = base::UTF8ToUTF16(default_name); + result_str = base::UTF8ToWide(filename); + default_name_str = base::UTF8ToWide(default_name); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) result_str = filename; default_name_str = default_name; @@ -319,7 +319,7 @@ replace_illegal_characters_function); #if defined(OS_WIN) - base::FilePath generated_name(file_name); + base::FilePath generated_name(base::AsWStringPiece(file_name)); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) base::FilePath generated_name( base::SysWideToNativeMB(base::UTF16ToWide(file_name)));
diff --git a/net/base/filename_util_unittest.cc b/net/base/filename_util_unittest.cc index 9ad798c..8e3b6602 100644 --- a/net/base/filename_util_unittest.cc +++ b/net/base/filename_util_unittest.cc
@@ -39,14 +39,14 @@ // std::u16string. std::wstring FilePathAsWString(const base::FilePath& path) { #if defined(OS_WIN) - return base::UTF16ToWide(path.value()); + return path.value(); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) return base::UTF8ToWide(path.value()); #endif } base::FilePath WStringAsFilePath(const std::wstring& str) { #if defined(OS_WIN) - return base::FilePath(base::WideToUTF16(str)); + return base::FilePath(str); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) return base::FilePath(base::WideToUTF8(str)); #endif
diff --git a/net/base/mime_util.cc b/net/base/mime_util.cc index 357006b1..1abed03 100644 --- a/net/base/mime_util.cc +++ b/net/base/mime_util.cc
@@ -245,7 +245,7 @@ static base::FilePath::StringType StringToFilePathStringType( const base::StringPiece& string_piece) { #if defined(OS_WIN) - return base::UTF8ToUTF16(string_piece); + return base::UTF8ToWide(string_piece); #else return string_piece.as_string(); #endif
diff --git a/net/base/network_interfaces_unittest.cc b/net/base/network_interfaces_unittest.cc index b5c5a19..5543169 100644 --- a/net/base/network_interfaces_unittest.cc +++ b/net/base/network_interfaces_unittest.cc
@@ -51,7 +51,7 @@ EXPECT_EQ(static_cast<DWORD>(NO_ERROR), ConvertInterfaceLuidToGuid(&luid, &guid)); auto name = base::win::String16FromGUID(guid); - EXPECT_EQ(base::as_u16cstr(base::UTF8ToWide(it->name)), name); + EXPECT_EQ(base::UTF8ToWide(it->name), name); if (it->type == NetworkChangeNotifier::CONNECTION_WIFI) { EXPECT_NE(WIFI_PHY_LAYER_PROTOCOL_NONE, GetWifiPHYLayerProtocol());
diff --git a/net/base/platform_mime_util_win.cc b/net/base/platform_mime_util_win.cc index 47f61827..c2b843d26 100644 --- a/net/base/platform_mime_util_win.cc +++ b/net/base/platform_mime_util_win.cc
@@ -20,9 +20,9 @@ // names are not case-sensitive). base::FilePath::StringType value, key = FILE_PATH_LITERAL(".") + ext; base::win::RegKey(HKEY_CLASSES_ROOT, key.c_str(), KEY_READ) - .ReadValue(STRING16_LITERAL("Content Type"), &value); + .ReadValue(L"Content Type", &value); if (!value.empty()) { - *result = base::UTF16ToUTF8(value); + *result = base::WideToUTF8(value); return true; } return false; @@ -32,10 +32,9 @@ const std::string& mime_type, base::FilePath::StringType* ext) const { base::FilePath::StringType key = - STRING16_LITERAL("MIME\\Database\\Content Type\\") + - base::UTF8ToUTF16(mime_type); + L"MIME\\Database\\Content Type\\" + base::UTF8ToWide(mime_type); if (base::win::RegKey(HKEY_CLASSES_ROOT, key.c_str(), KEY_READ) - .ReadValue(STRING16_LITERAL("Extension"), ext) != ERROR_SUCCESS) { + .ReadValue(L"Extension", ext) != ERROR_SUCCESS) { return false; } // Strip off the leading dot, this should always be the case.
diff --git a/net/cookies/cookie_inclusion_status.cc b/net/cookies/cookie_inclusion_status.cc index 8e13916b..240b17cd 100644 --- a/net/cookies/cookie_inclusion_status.cc +++ b/net/cookies/cookie_inclusion_status.cc
@@ -51,6 +51,11 @@ return exclusion_reasons_ & GetExclusionBitmask(reason); } +bool CookieInclusionStatus::HasOnlyExclusionReason( + ExclusionReason reason) const { + return exclusion_reasons_ == GetExclusionBitmask(reason); +} + void CookieInclusionStatus::AddExclusionReason(ExclusionReason reason) { exclusion_reasons_ |= GetExclusionBitmask(reason); // If the cookie would be excluded for reasons other than the new SameSite
diff --git a/net/cookies/cookie_inclusion_status.h b/net/cookies/cookie_inclusion_status.h index 3f38edd..9e506b5 100644 --- a/net/cookies/cookie_inclusion_status.h +++ b/net/cookies/cookie_inclusion_status.h
@@ -184,6 +184,10 @@ // Whether the given reason for exclusion is present. bool HasExclusionReason(ExclusionReason status_type) const; + // Whether the given reason for exclusion is present, and is the ONLY reason + // for exclusion. + bool HasOnlyExclusionReason(ExclusionReason status_type) const; + // Add an exclusion reason. void AddExclusionReason(ExclusionReason status_type);
diff --git a/net/cookies/cookie_inclusion_status_unittest.cc b/net/cookies/cookie_inclusion_status_unittest.cc index bc5c7ed..579edb4 100644 --- a/net/cookies/cookie_inclusion_status_unittest.cc +++ b/net/cookies/cookie_inclusion_status_unittest.cc
@@ -32,17 +32,31 @@ TEST(CookieInclusionStatusTest, ExcludeStatus) { int num_exclusion_reasons = static_cast<int>(CookieInclusionStatus::NUM_EXCLUSION_REASONS); + // Test exactly one exclusion reason and multiple (two) exclusion reasons. for (int i = 0; i < num_exclusion_reasons; ++i) { - auto reason = static_cast<CookieInclusionStatus::ExclusionReason>(i); - CookieInclusionStatus status(reason); - EXPECT_TRUE(status.IsValid()); - EXPECT_FALSE(status.IsInclude()); - EXPECT_TRUE(status.HasExclusionReason(reason)); + auto reason1 = static_cast<CookieInclusionStatus::ExclusionReason>(i); + CookieInclusionStatus status_one_reason(reason1); + EXPECT_TRUE(status_one_reason.IsValid()); + EXPECT_FALSE(status_one_reason.IsInclude()); + EXPECT_TRUE(status_one_reason.HasExclusionReason(reason1)); + EXPECT_TRUE(status_one_reason.HasOnlyExclusionReason(reason1)); + for (int j = 0; j < num_exclusion_reasons; ++j) { if (i == j) continue; - EXPECT_FALSE(status.HasExclusionReason( - static_cast<CookieInclusionStatus::ExclusionReason>(j))); + auto reason2 = static_cast<CookieInclusionStatus::ExclusionReason>(j); + + EXPECT_FALSE(status_one_reason.HasExclusionReason(reason2)); + EXPECT_FALSE(status_one_reason.HasOnlyExclusionReason(reason2)); + + CookieInclusionStatus status_two_reasons = status_one_reason; + status_two_reasons.AddExclusionReason(reason2); + EXPECT_TRUE(status_two_reasons.IsValid()); + EXPECT_FALSE(status_two_reasons.IsInclude()); + EXPECT_TRUE(status_two_reasons.HasExclusionReason(reason1)); + EXPECT_TRUE(status_two_reasons.HasExclusionReason(reason2)); + EXPECT_FALSE(status_two_reasons.HasOnlyExclusionReason(reason1)); + EXPECT_FALSE(status_two_reasons.HasOnlyExclusionReason(reason2)); } } }
diff --git a/net/disk_cache/backend_unittest.cc b/net/disk_cache/backend_unittest.cc index 3e98e97..ff17771 100644 --- a/net/disk_cache/backend_unittest.cc +++ b/net/disk_cache/backend_unittest.cc
@@ -3919,13 +3919,13 @@ #if defined(OS_WIN) DWORD sharing = FILE_SHARE_READ | FILE_SHARE_WRITE; DWORD access = GENERIC_READ | GENERIC_WRITE; - base::win::ScopedHandle file2(CreateFile(base::as_wcstr(name.value()), access, + base::win::ScopedHandle file2(CreateFile(name.value().c_str(), access, sharing, nullptr, OPEN_EXISTING, 0, nullptr)); EXPECT_FALSE(file2.IsValid()); sharing |= FILE_SHARE_DELETE; - file2.Set(CreateFile(base::as_wcstr(name.value()), access, sharing, nullptr, + file2.Set(CreateFile(name.value().c_str(), access, sharing, nullptr, OPEN_EXISTING, 0, nullptr)); EXPECT_TRUE(file2.IsValid()); #endif
diff --git a/net/disk_cache/blockfile/file_win.cc b/net/disk_cache/blockfile/file_win.cc index 9dfb629..6eebc48 100644 --- a/net/disk_cache/blockfile/file_win.cc +++ b/net/disk_cache/blockfile/file_win.cc
@@ -115,9 +115,9 @@ DWORD sharing = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; DWORD access = GENERIC_READ | GENERIC_WRITE | DELETE; - base_file_ = base::File(CreateFile(base::as_wcstr(name.value()), access, - sharing, nullptr, OPEN_EXISTING, - FILE_FLAG_OVERLAPPED, nullptr)); + base_file_ = + base::File(CreateFile(name.value().c_str(), access, sharing, nullptr, + OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nullptr)); if (!base_file_.IsValid()) return false; @@ -126,9 +126,8 @@ CompletionHandler::Get()); init_ = true; - sync_base_file_ = - base::File(CreateFile(base::as_wcstr(name.value()), access, sharing, - nullptr, OPEN_EXISTING, 0, nullptr)); + sync_base_file_ = base::File(CreateFile(name.value().c_str(), access, sharing, + nullptr, OPEN_EXISTING, 0, nullptr)); if (!sync_base_file_.IsValid()) return false;
diff --git a/net/disk_cache/cache_util.cc b/net/disk_cache/cache_util.cc index 5512ae8f..79b260da 100644 --- a/net/disk_cache/cache_util.cc +++ b/net/disk_cache/cache_util.cc
@@ -10,6 +10,7 @@ #include "base/files/file_enumerator.h" #include "base/files/file_util.h" #include "base/location.h" +#include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/task/post_task.h" @@ -124,7 +125,7 @@ base::FilePath name = current_path.BaseName(); #if defined(OS_WIN) // We created this file so it should only contain ASCII. - std::string name_str = base::UTF16ToASCII(name.value()); + std::string name_str = base::WideToASCII(name.value()); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) std::string name_str = name.value(); #endif
diff --git a/net/disk_cache/cache_util_win.cc b/net/disk_cache/cache_util_win.cc index f38e608..8b851d4 100644 --- a/net/disk_cache/cache_util_win.cc +++ b/net/disk_cache/cache_util_win.cc
@@ -16,8 +16,7 @@ bool MoveCache(const base::FilePath& from_path, const base::FilePath& to_path) { // I don't want to use the shell version of move because if something goes // wrong, that version will attempt to move file by file and fail at the end. - if (!MoveFileEx(base::as_wcstr(from_path.value()), - base::as_wcstr(to_path.value()), 0)) { + if (!MoveFileEx(from_path.value().c_str(), to_path.value().c_str(), 0)) { PLOG(ERROR) << "Unable to move the cache"; return false; } @@ -27,16 +26,16 @@ bool DeleteCacheFile(const base::FilePath& name) { // We do a simple delete, without ever falling back to SHFileOperation, as the // version from base does. - if (!DeleteFile(base::as_wcstr(name.value()))) { + if (!DeleteFile(name.value().c_str())) { // There is an error, but we share delete access so let's see if there is a // file to open. Note that this code assumes that we have a handle to the // file at all times (even now), so nobody can have a handle that prevents // us from opening the file again (unless it was deleted). DWORD sharing = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; DWORD access = SYNCHRONIZE; - base::win::ScopedHandle file(CreateFile(base::as_wcstr(name.value()), - access, sharing, nullptr, - OPEN_EXISTING, 0, nullptr)); + base::win::ScopedHandle file(CreateFile(name.value().c_str(), access, + sharing, nullptr, OPEN_EXISTING, 0, + nullptr)); if (file.IsValid()) return false;
diff --git a/net/disk_cache/simple/simple_util_win.cc b/net/disk_cache/simple/simple_util_win.cc index 8b6c25ed..4622b2f 100644 --- a/net/disk_cache/simple/simple_util_win.cc +++ b/net/disk_cache/simple/simple_util_win.cc
@@ -31,8 +31,8 @@ path.DirName().AppendASCII(base::StringPrintf("todelete_%016" PRIx64, base::RandUint64())); - bool rename_succeeded = !!MoveFile(base::as_wcstr(path.value()), - base::as_wcstr(rename_target.value())); + bool rename_succeeded = + !!MoveFile(path.value().c_str(), rename_target.value().c_str()); if (rename_succeeded) return DeleteCacheFile(rename_target);
diff --git a/net/dns/dns_config_service_win.cc b/net/dns/dns_config_service_win.cc index 9cd9d76..37fd844 100644 --- a/net/dns/dns_config_service_win.cc +++ b/net/dns/dns_config_service_win.cc
@@ -20,6 +20,7 @@ #include "base/metrics/histogram_macros.h" #include "base/sequence_checker.h" #include "base/single_thread_task_runner.h" +#include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -46,27 +47,27 @@ const int kRetryIntervalSeconds = 5; // Registry key paths. -const base::char16 kTcpipPath[] = - STRING16_LITERAL("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"); -const base::char16 kTcpip6Path[] = - STRING16_LITERAL("SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters"); -const base::char16 kDnscachePath[] = STRING16_LITERAL( - "SYSTEM\\CurrentControlSet\\Services\\Dnscache\\Parameters"); -const base::char16 kPolicyPath[] = - STRING16_LITERAL("SOFTWARE\\Policies\\Microsoft\\Windows NT\\DNSClient"); -const base::char16 kPrimaryDnsSuffixPath[] = - STRING16_LITERAL("SOFTWARE\\Policies\\Microsoft\\System\\DNSClient"); -const base::char16 kNrptPath[] = STRING16_LITERAL( - "SOFTWARE\\Policies\\Microsoft\\Windows NT\\DNSClient\\DnsPolicyConfig"); -const base::char16 kControlSetNrptPath[] = STRING16_LITERAL( - "SYSTEM\\CurrentControlSet\\Services\\Dnscache\\Parameters" - "\\DnsPolicyConfig"); -const base::char16 kDnsConnectionsPath[] = STRING16_LITERAL( - "SYSTEM\\CurrentControlSet\\Services\\Dnscache\\Parameters" - "\\DnsConnections"); -const base::char16 kDnsConnectionsProxies[] = STRING16_LITERAL( - "SYSTEM\\CurrentControlSet\\Services\\Dnscache\\Parameters" - "\\DnsConnectionsProxies"); +const wchar_t kTcpipPath[] = + L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"; +const wchar_t kTcpip6Path[] = + L"SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters"; +const wchar_t kDnscachePath[] = + L"SYSTEM\\CurrentControlSet\\Services\\Dnscache\\Parameters"; +const wchar_t kPolicyPath[] = + L"SOFTWARE\\Policies\\Microsoft\\Windows NT\\DNSClient"; +const wchar_t kPrimaryDnsSuffixPath[] = + L"SOFTWARE\\Policies\\Microsoft\\System\\DNSClient"; +const wchar_t kNrptPath[] = + L"SOFTWARE\\Policies\\Microsoft\\Windows NT\\DNSClient\\DnsPolicyConfig"; +const wchar_t kControlSetNrptPath[] = + L"SYSTEM\\CurrentControlSet\\Services\\Dnscache\\Parameters\\" + L"DnsPolicyConfig"; +const wchar_t kDnsConnectionsPath[] = + L"SYSTEM\\CurrentControlSet\\Services\\Dnscache\\Parameters\\" + L"DnsConnections"; +const wchar_t kDnsConnectionsProxies[] = + L"SYSTEM\\CurrentControlSet\\Services\\Dnscache\\Parameters\\" + L"DnsConnectionsProxies"; enum HostsParseWinResult { HOSTS_PARSE_WIN_OK = 0, @@ -80,14 +81,14 @@ // Convenience for reading values using RegKey. class RegistryReader { public: - explicit RegistryReader(const base::char16* key) { + explicit RegistryReader(const wchar_t* key) { // Ignoring the result. |key_.Valid()| will catch failures. key_.Open(HKEY_LOCAL_MACHINE, key, KEY_QUERY_VALUE); } ~RegistryReader() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } - bool ReadString(const base::char16* name, + bool ReadString(const wchar_t* name, DnsSystemSettings::RegString* out) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); out->set = false; @@ -103,8 +104,7 @@ return (result == ERROR_FILE_NOT_FOUND); } - bool ReadDword(const base::char16* name, - DnsSystemSettings::RegDword* out) const { + bool ReadDword(const wchar_t* name, DnsSystemSettings::RegDword* out) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); out->set = false; if (!key_.Valid()) { @@ -150,10 +150,8 @@ bool ReadDevolutionSetting(const RegistryReader& reader, DnsSystemSettings::DevolutionSetting* setting) { - return reader.ReadDword(STRING16_LITERAL("UseDomainNameDevolution"), - &setting->enabled) && - reader.ReadDword(STRING16_LITERAL("DomainNameDevolutionLevel"), - &setting->level); + return reader.ReadDword(L"UseDomainNameDevolution", &setting->enabled) && + reader.ReadDword(L"DomainNameDevolutionLevel", &setting->level); } // Reads DnsSystemSettings from IpHelper and registry. @@ -173,17 +171,14 @@ RegistryReader policy_reader(kPolicyPath); RegistryReader primary_dns_suffix_reader(kPrimaryDnsSuffixPath); - if (!policy_reader.ReadString(STRING16_LITERAL("SearchList"), - &settings->policy_search_list)) { + if (!policy_reader.ReadString(L"SearchList", &settings->policy_search_list)) { return CONFIG_PARSE_WIN_READ_POLICY_SEARCHLIST; } - if (!tcpip_reader.ReadString(STRING16_LITERAL("SearchList"), - &settings->tcpip_search_list)) + if (!tcpip_reader.ReadString(L"SearchList", &settings->tcpip_search_list)) return CONFIG_PARSE_WIN_READ_TCPIP_SEARCHLIST; - if (!tcpip_reader.ReadString(STRING16_LITERAL("Domain"), - &settings->tcpip_domain)) + if (!tcpip_reader.ReadString(L"Domain", &settings->tcpip_domain)) return CONFIG_PARSE_WIN_READ_DOMAIN; if (!ReadDevolutionSetting(policy_reader, &settings->policy_devolution)) @@ -195,14 +190,13 @@ if (!ReadDevolutionSetting(tcpip_reader, &settings->tcpip_devolution)) return CONFIG_PARSE_WIN_READ_TCPIP_DEVOLUTION; - if (!policy_reader.ReadDword(STRING16_LITERAL("AppendToMultiLabelName"), + if (!policy_reader.ReadDword(L"AppendToMultiLabelName", &settings->append_to_multi_label_name)) { return CONFIG_PARSE_WIN_READ_APPEND_MULTILABEL; } - if (!primary_dns_suffix_reader.ReadString( - STRING16_LITERAL("PrimaryDnsSuffix"), - &settings->primary_dns_suffix)) { + if (!primary_dns_suffix_reader.ReadString(L"PrimaryDnsSuffix", + &settings->primary_dns_suffix)) { return CONFIG_PARSE_WIN_READ_PRIMARY_SUFFIX; } @@ -234,11 +228,10 @@ hosts->insert(std::make_pair(DnsHostsKey("localhost", ADDRESS_FAMILY_IPV6), loopback_ipv6)); - base::char16 buffer[MAX_PATH]; + wchar_t buffer[MAX_PATH]; DWORD size = MAX_PATH; std::string localname; - if (!GetComputerNameExW(ComputerNameDnsHostname, - base::as_writable_wcstr(buffer), &size) || + if (!GetComputerNameExW(ComputerNameDnsHostname, buffer, &size) || !ParseDomainASCII(buffer, &localname)) { return HOSTS_PARSE_WIN_COMPUTER_NAME_FAILED; } @@ -296,7 +289,7 @@ ~RegistryWatcher() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } - bool Watch(const base::char16* key, const CallbackType& callback) { + bool Watch(const wchar_t* key, const CallbackType& callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!callback.is_null()); DCHECK(callback_.is_null()); @@ -342,8 +335,8 @@ // Returns the path to the HOSTS file. base::FilePath GetHostsPath() { - base::char16 buffer[MAX_PATH]; - UINT rc = GetSystemDirectory(base::as_writable_wcstr(buffer), MAX_PATH); + wchar_t buffer[MAX_PATH]; + UINT rc = GetSystemDirectory(buffer, MAX_PATH); DCHECK(0 < rc && rc < MAX_PATH); return base::FilePath(buffer).Append( FILE_PATH_LITERAL("drivers\\etc\\hosts")); @@ -462,13 +455,13 @@ DnsSystemSettings::~DnsSystemSettings() { } -bool ParseDomainASCII(base::StringPiece16 widestr, std::string* domain) { +bool ParseDomainASCII(base::WStringPiece widestr, std::string* domain) { DCHECK(domain); if (widestr.empty()) return false; // Check if already ASCII. - if (base::IsStringASCII(widestr)) { + if (base::IsStringASCII(base::AsStringPiece16(widestr))) { domain->assign(widestr.begin(), widestr.end()); return true; } @@ -476,7 +469,7 @@ // Otherwise try to convert it from IDN to punycode. const int kInitialBufferSize = 256; url::RawCanonOutputT<base::char16, kInitialBufferSize> punycode; - if (!url::IDNToASCII(widestr.data(), widestr.length(), &punycode)) + if (!url::IDNToASCII(base::as_u16cstr(widestr), widestr.length(), &punycode)) return false; // |punycode_output| should now be ASCII; convert it to a std::string. @@ -488,7 +481,7 @@ return success && !domain->empty(); } -bool ParseSearchList(const base::string16& value, +bool ParseSearchList(const std::wstring& value, std::vector<std::string>* output) { DCHECK(output); if (value.empty()) @@ -500,9 +493,8 @@ // Although nslookup and network connection property tab ignore such // fragments ("a,b,,c" becomes ["a", "b", "c"]), our reference is getaddrinfo // (which sees ["a", "b"]). WMI queries also return a matching search list. - for (const base::StringPiece16& t : - base::SplitStringPiece(value, STRING16_LITERAL(","), - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) { + for (base::WStringPiece t : base::SplitStringPiece( + value, L",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) { // Convert non-ASCII to punycode, although getaddrinfo does not properly // handle such suffixes. std::string parsed; @@ -561,7 +553,7 @@ // obtained via DHCP (regkey: Tcpip\Parameters\Interfaces\{XXX}\DhcpDomain) // or specified by the user (regkey: Tcpip\Parameters\Domain). std::string dns_suffix; - if (ParseDomainASCII(base::as_u16cstr(adapter->DnsSuffix), &dns_suffix)) + if (ParseDomainASCII(adapter->DnsSuffix, &dns_suffix)) config->search.push_back(dns_suffix); }
diff --git a/net/dns/dns_config_service_win.h b/net/dns/dns_config_service_win.h index 8b64504a..6c7e3df 100644 --- a/net/dns/dns_config_service_win.h +++ b/net/dns/dns_config_service_win.h
@@ -19,6 +19,7 @@ #include "base/memory/free_deleter.h" #include "base/memory/ref_counted.h" #include "base/strings/string16.h" +#include "base/strings/string_piece_forward.h" #include "net/base/net_export.h" #include "net/dns/dns_config_service.h" @@ -40,14 +41,14 @@ // Converts a UTF-16 domain name to ASCII, possibly using punycode. // Returns true if the conversion succeeds and output is not empty. In case of // failure, |domain| might become dirty. -bool NET_EXPORT_PRIVATE ParseDomainASCII(base::StringPiece16 widestr, +bool NET_EXPORT_PRIVATE ParseDomainASCII(base::WStringPiece widestr, std::string* domain); // Parses |value| as search list (comma-delimited list of domain names) from // a registry key and stores it in |out|. Returns true on success. Empty // entries (e.g., "chromium.org,,org") terminate the list. Non-ascii hostnames // are converted to punycode. -bool NET_EXPORT_PRIVATE ParseSearchList(const base::string16& value, +bool NET_EXPORT_PRIVATE ParseSearchList(const std::wstring& value, std::vector<std::string>* out); // All relevant settings read from registry and IP Helper. This isolates our @@ -57,7 +58,7 @@ // The |set| flag distinguishes between empty and unset values. struct RegString { bool set; - base::string16 value; + std::wstring value; }; struct RegDword {
diff --git a/net/dns/dns_config_service_win_unittest.cc b/net/dns/dns_config_service_win_unittest.cc index cd34aa1..070df338 100644 --- a/net/dns/dns_config_service_win_unittest.cc +++ b/net/dns/dns_config_service_win_unittest.cc
@@ -17,19 +17,19 @@ TEST(DnsConfigServiceWinTest, ParseSearchList) { const struct TestCase { - const base::char16* input; + const wchar_t* input; const char* output[4]; // NULL-terminated, empty if expected false } cases[] = { - {STRING16_LITERAL("chromium.org"), {"chromium.org", nullptr}}, - {STRING16_LITERAL("chromium.org,org"), {"chromium.org", "org", nullptr}}, + {L"chromium.org", {"chromium.org", nullptr}}, + {L"chromium.org,org", {"chromium.org", "org", nullptr}}, // Empty suffixes terminate the list - {STRING16_LITERAL("crbug.com,com,,org"), {"crbug.com", "com", nullptr}}, + {L"crbug.com,com,,org", {"crbug.com", "com", nullptr}}, // IDN are converted to punycode - {STRING16_LITERAL("\u017c\xf3\u0142ta.pi\u0119\u015b\u0107.pl,pl"), + {L"\u017c\xf3\u0142ta.pi\u0119\u015b\u0107.pl,pl", {"xn--ta-4ja03asj.xn--pi-wla5e0q.pl", "pl", nullptr}}, // Empty search list is invalid - {STRING16_LITERAL(""), {nullptr}}, - {STRING16_LITERAL(",,"), {nullptr}}, + {L"", {nullptr}}, + {L",,", {nullptr}}, }; for (const auto& t : cases) { @@ -219,11 +219,10 @@ { // Policy SearchList override. { - {true, - STRING16_LITERAL("policy.searchlist.a,policy.searchlist.b")}, - {true, STRING16_LITERAL("tcpip.searchlist.a,tcpip.searchlist.b")}, - {true, STRING16_LITERAL("tcpip.domain")}, - {true, STRING16_LITERAL("primary.dns.suffix")}, + {true, L"policy.searchlist.a,policy.searchlist.b"}, + {true, L"tcpip.searchlist.a,tcpip.searchlist.b"}, + {true, L"tcpip.domain"}, + {true, L"primary.dns.suffix"}, }, {"policy.searchlist.a", "policy.searchlist.b"}, }, @@ -231,18 +230,18 @@ // User-specified SearchList override. { {false}, - {true, STRING16_LITERAL("tcpip.searchlist.a,tcpip.searchlist.b")}, - {true, STRING16_LITERAL("tcpip.domain")}, - {true, STRING16_LITERAL("primary.dns.suffix")}, + {true, L"tcpip.searchlist.a,tcpip.searchlist.b"}, + {true, L"tcpip.domain"}, + {true, L"primary.dns.suffix"}, }, {"tcpip.searchlist.a", "tcpip.searchlist.b"}, }, { // Void SearchList. Using tcpip.domain { - {true, STRING16_LITERAL(",bad.searchlist,parsed.as.empty")}, - {true, STRING16_LITERAL("tcpip.searchlist,good.but.overridden")}, - {true, STRING16_LITERAL("tcpip.domain")}, + {true, L",bad.searchlist,parsed.as.empty"}, + {true, L"tcpip.searchlist,good.but.overridden"}, + {true, L"tcpip.domain"}, {false}, }, {"tcpip.domain", "connection.suffix"}, @@ -250,10 +249,10 @@ { // Void SearchList. Using primary.dns.suffix { - {true, STRING16_LITERAL(",bad.searchlist,parsed.as.empty")}, - {true, STRING16_LITERAL("tcpip.searchlist,good.but.overridden")}, - {true, STRING16_LITERAL("tcpip.domain")}, - {true, STRING16_LITERAL("primary.dns.suffix")}, + {true, L",bad.searchlist,parsed.as.empty"}, + {true, L"tcpip.searchlist,good.but.overridden"}, + {true, L"tcpip.domain"}, + {true, L"primary.dns.suffix"}, }, {"primary.dns.suffix", "connection.suffix"}, }, @@ -261,19 +260,19 @@ // Void SearchList. Using tcpip.domain when primary.dns.suffix is // empty { - {true, STRING16_LITERAL(",bad.searchlist,parsed.as.empty")}, - {true, STRING16_LITERAL("tcpip.searchlist,good.but.overridden")}, - {true, STRING16_LITERAL("tcpip.domain")}, - {true, STRING16_LITERAL("")}, + {true, L",bad.searchlist,parsed.as.empty"}, + {true, L"tcpip.searchlist,good.but.overridden"}, + {true, L"tcpip.domain"}, + {true, L""}, }, {"tcpip.domain", "connection.suffix"}, }, { // Void SearchList. Using tcpip.domain when primary.dns.suffix is NULL { - {true, STRING16_LITERAL(",bad.searchlist,parsed.as.empty")}, - {true, STRING16_LITERAL("tcpip.searchlist,good.but.overridden")}, - {true, STRING16_LITERAL("tcpip.domain")}, + {true, L",bad.searchlist,parsed.as.empty"}, + {true, L"tcpip.searchlist,good.but.overridden"}, + {true, L"tcpip.domain"}, {true}, }, {"tcpip.domain", "connection.suffix"}, @@ -294,7 +293,7 @@ { {false}, {false}, - {true, STRING16_LITERAL("a.b.c.d.e")}, + {true, L"a.b.c.d.e"}, {false}, {{true, 1}, {false}}, // policy_devolution: enabled, level {{true, 0}, {true, 3}}, // dnscache_devolution @@ -307,8 +306,8 @@ { {false}, {false}, - {true, STRING16_LITERAL("a.b.c.d.e")}, - {true, STRING16_LITERAL("f.g.i.l.j")}, + {true, L"a.b.c.d.e"}, + {true, L"f.g.i.l.j"}, {{false}, {true, 4}}, {{true, 1}, {false}}, {{true, 0}, {true, 3}}, @@ -320,7 +319,7 @@ { {false}, {false}, - {true, STRING16_LITERAL("a.b.c.d.e")}, + {true, L"a.b.c.d.e"}, {false}, {{false}, {false}}, {{false}, {true, 3}}, @@ -333,7 +332,7 @@ { {false}, {false}, - {true, STRING16_LITERAL("a.b")}, + {true, L"a.b"}, {false}, {{false}, {false}}, {{false}, {true, 2}}, @@ -346,7 +345,7 @@ { {false}, {false}, - {true, STRING16_LITERAL("a.b.c.d.e")}, + {true, L"a.b.c.d.e"}, {false}, {{true, 1}, {false}}, {{true, 1}, {false}}, @@ -359,7 +358,7 @@ { {false}, {false}, - {true, STRING16_LITERAL("a.b.c.d.e")}, + {true, L"a.b.c.d.e"}, {false}, {{false}, {true, 1}}, {{true, 1}, {true, 3}}, @@ -372,7 +371,7 @@ { {false}, {false}, - {true, STRING16_LITERAL("a.b.c.d.e")}, + {true, L"a.b.c.d.e"}, {false}, {{false}, {true, 3}}, {{false}, {true, 3}},
diff --git a/net/proxy_resolution/win/proxy_config_service_win.cc b/net/proxy_resolution/win/proxy_config_service_win.cc index 04dd08d..5c7b72a 100644 --- a/net/proxy_resolution/win/proxy_config_service_win.cc +++ b/net/proxy_resolution/win/proxy_config_service_win.cc
@@ -95,21 +95,19 @@ AddKeyToWatchList( HKEY_CURRENT_USER, - STRING16_LITERAL("Software\\Microsoft\\Windows\\CurrentVersion\\") - STRING16_LITERAL("Internet Settings")); + L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"); AddKeyToWatchList( HKEY_LOCAL_MACHINE, - STRING16_LITERAL("Software\\Microsoft\\Windows\\CurrentVersion\\") - STRING16_LITERAL("Internet Settings")); + L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"); AddKeyToWatchList(HKEY_LOCAL_MACHINE, - STRING16_LITERAL("SOFTWARE\\Policies\\Microsoft\\Windows\\") - STRING16_LITERAL("CurrentVersion\\Internet Settings")); + L"SOFTWARE\\Policies\\Microsoft\\Windows\\CurrentVersion\\" + L"Internet Settings"); } bool ProxyConfigServiceWin::AddKeyToWatchList(HKEY rootkey, - const base::char16* subkey) { + const wchar_t* subkey) { std::unique_ptr<base::win::RegKey> key = std::make_unique<base::win::RegKey>(); if (key->Create(rootkey, subkey, KEY_NOTIFY) != ERROR_SUCCESS)
diff --git a/net/proxy_resolution/win/proxy_config_service_win.h b/net/proxy_resolution/win/proxy_config_service_win.h index 937c2028..de54457 100644 --- a/net/proxy_resolution/win/proxy_config_service_win.h +++ b/net/proxy_resolution/win/proxy_config_service_win.h
@@ -70,7 +70,7 @@ // Creates a new key and appends it to |keys_to_watch_|. If the key fails to // be created, it is not appended to the list and we return false. - bool AddKeyToWatchList(HKEY rootkey, const base::char16* subkey); + bool AddKeyToWatchList(HKEY rootkey, const wchar_t* subkey); // This is called whenever one of the registry keys we are watching change. void OnObjectSignaled(base::win::RegKey* key);
diff --git a/net/quic/platform/impl/quic_default_proof_providers_impl.cc b/net/quic/platform/impl/quic_default_proof_providers_impl.cc index bbe4a70..cd2a45f7 100644 --- a/net/quic/platform/impl/quic_default_proof_providers_impl.cc +++ b/net/quic/platform/impl/quic_default_proof_providers_impl.cc
@@ -92,8 +92,8 @@ std::make_unique<SimpleTicketCrypter>(QuicChromiumClock::GetInstance())); CHECK(proof_source->Initialize( #if defined(OS_WIN) - base::FilePath(base::UTF8ToUTF16(GetQuicFlag(FLAGS_certificate_file))), - base::FilePath(base::UTF8ToUTF16(GetQuicFlag(FLAGS_key_file))), + base::FilePath(base::UTF8ToWide(GetQuicFlag(FLAGS_certificate_file))), + base::FilePath(base::UTF8ToWide(GetQuicFlag(FLAGS_key_file))), base::FilePath())); #else base::FilePath(GetQuicFlag(FLAGS_certificate_file)),
diff --git a/net/quic/platform/impl/quic_flags_impl.cc b/net/quic/platform/impl/quic_flags_impl.cc index ab50b42..f2c1542 100644 --- a/net/quic/platform/impl/quic_flags_impl.cc +++ b/net/quic/platform/impl/quic_flags_impl.cc
@@ -18,6 +18,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "build/build_config.h" #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" #define QUIC_FLAG(type, flag, value) type flag = value; @@ -34,19 +35,21 @@ return v; } -// Overload for platforms where base::CommandLine::StringType == base::string16. +#if defined(WCHAR_T_IS_UTF16) +// Overload for platforms where base::CommandLine::StringType == std::wstring. std::vector<std::string> __attribute__((unused)) -ToQuicStringVector(const std::vector<base::string16>& v) { +ToQuicStringVector(const std::vector<std::wstring>& v) { std::vector<std::string> qsv; for (const auto& s : v) { if (!base::IsStringASCII(s)) { QUIC_LOG(ERROR) << "Unable to convert to ASCII: " << s; continue; } - qsv.push_back(base::UTF16ToASCII(s)); + qsv.push_back(base::WideToASCII(s)); } return qsv; } +#endif // defined(WCHAR_T_IS_UTF16) size_t FindLineWrapPosition(const std::string& s, size_t desired_len) { if (s.length() <= desired_len) {
diff --git a/net/quic/quic_chromium_client_stream_test.cc b/net/quic/quic_chromium_client_stream_test.cc index a4923d1..1c46c80 100644 --- a/net/quic/quic_chromium_client_stream_test.cc +++ b/net/quic/quic_chromium_client_stream_test.cc
@@ -68,10 +68,11 @@ quic::StreamSendingState state, quic::TransmissionType type, quiche::QuicheOptional<quic::EncryptionLevel> level)); - MOCK_METHOD3(SendRstStream, + MOCK_METHOD4(SendRstStream, void(quic::QuicStreamId stream_id, quic::QuicRstStreamErrorCode error, - quic::QuicStreamOffset bytes_written)); + quic::QuicStreamOffset bytes_written, + bool send_rst_only)); MOCK_METHOD2(OnStreamHeaders, void(quic::QuicStreamId stream_id, @@ -369,7 +370,7 @@ session_, SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( version_.transport_version, 0), - quic::QUIC_RST_ACKNOWLEDGEMENT, 0)); + quic::QUIC_RST_ACKNOWLEDGEMENT, 0, _)); stream_->OnConnectionClosed(quic::QUIC_INVALID_FRAME_DATA, quic::ConnectionCloseSource::FROM_PEER); @@ -384,24 +385,16 @@ quic::test::GetNthClientInitiatedBidirectionalStreamId( version_.transport_version, 0), quic::QUIC_STREAM_CANCELLED, 0); - if (!version_.HasIetfQuicFrames()) { - EXPECT_CALL( - session_, - SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( - version_.transport_version, 0), - quic::QUIC_RST_ACKNOWLEDGEMENT, 0)); - } else { - // Intercept & check that the call to the QuicConnection's OnStreamReast - // has correct stream ID and error code -- for V99/IETF Quic, it should - // have the STREAM_CANCELLED error code, not RST_ACK... Capture - // OnStreamReset (rather than SendRstStream) because the V99 path bypasses - // SendRstStream, calling SendRstStreamInner directly. Mocking - // SendRstStreamInner is problematic since the test relies on it to perform - // the closing operations and getting the stream in the correct state. - EXPECT_CALL( - *(static_cast<quic::test::MockQuicConnection*>(session_.connection())), - OnStreamReset(stream_->id(), quic::QUIC_STREAM_CANCELLED)); + + quic::QuicRstStreamErrorCode error_code = quic::QUIC_RST_ACKNOWLEDGEMENT; + if (version_.HasIetfQuicFrames()) { + error_code = quic::QUIC_STREAM_CANCELLED; } + EXPECT_CALL( + session_, + SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( + version_.transport_version, 0), + error_code, 0, _)); stream_->OnStreamReset(rst); if (version_.HasIetfQuicFrames()) { @@ -504,7 +497,7 @@ session_, SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( version_.transport_version, 0), - quic::QUIC_BAD_APPLICATION_PAYLOAD, 0)); + quic::QUIC_BAD_APPLICATION_PAYLOAD, 0, _)); auto headers = quic::test::AsHeaderList(bad_headers); stream_->OnStreamHeaderList(false, headers.uncompressed_header_bytes(), @@ -521,7 +514,7 @@ session_, SendRstStream(quic::test::GetNthClientInitiatedBidirectionalStreamId( version_.transport_version, 0), - quic::QUIC_STREAM_CANCELLED, 0)); + quic::QUIC_STREAM_CANCELLED, 0, _)); const char data[] = "hello world!"; int data_len = strlen(data); @@ -958,8 +951,8 @@ if (!VersionUsesHttp3(version_.transport_version)) { // QuicSpdyStream resets itself on empty headers, // because it is used to signal that headers were too large. - EXPECT_CALL(session_, - SendRstStream(stream_->id(), quic::QUIC_HEADERS_TOO_LARGE, 0)); + EXPECT_CALL(session_, SendRstStream(stream_->id(), + quic::QUIC_HEADERS_TOO_LARGE, 0, _)); } const spdy::SpdyHeaderBlock empty_response_headers;
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h index bc24b11..740de96 100644 --- a/net/quic/quic_flags_list.h +++ b/net/quic/quic_flags_list.h
@@ -396,3 +396,12 @@ QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_record_received_min_ack_delay, false) + +// If true, QuicSession will no longer need streams_waiting_for_acks_. +QUIC_FLAG(bool, + FLAGS_quic_reloadable_flag_quic_remove_streams_waiting_for_acks, + false) + +// When true, ParsedQuicVersionToString will print IETF drafts with format +// draft29 instead of ff00001d. +QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_fix_print_draft_version, false)
diff --git a/net/test/embedded_test_server/request_handler_util.cc b/net/test/embedded_test_server/request_handler_util.cc index 2e20ab5..df04aa6 100644 --- a/net/test/embedded_test_server/request_handler_util.cc +++ b/net/test/embedded_test_server/request_handler_util.cc
@@ -211,8 +211,7 @@ base::FilePath::StringPieceType mock_headers_extension; #if defined(OS_WIN) - base::string16 temp = base::ASCIIToUTF16(kMockHttpHeadersExtension); - mock_headers_extension = temp; + mock_headers_extension = base::ASCIIToWide(kMockHttpHeadersExtension); #else mock_headers_extension = kMockHttpHeadersExtension; #endif
diff --git a/net/test/spawned_test_server/base_test_server.cc b/net/test/spawned_test_server/base_test_server.cc index 8330ccda5..9bda291 100644 --- a/net/test/spawned_test_server/base_test_server.cc +++ b/net/test/spawned_test_server/base_test_server.cc
@@ -15,6 +15,7 @@ #include "base/json/json_reader.h" #include "base/logging.h" #include "base/path_service.h" +#include "base/strings/string_util.h" #include "base/values.h" #include "net/base/address_list.h" #include "net/base/host_port_pair.h" @@ -419,7 +420,8 @@ arguments->SetString("host", host_port_pair_.host()); arguments->SetInteger("port", host_port_pair_.port()); - arguments->SetString("data-dir", document_root_.value()); + arguments->SetStringKey("data-dir", + base::AsCrossPlatformPiece(document_root_.value())); if (VLOG_IS_ON(1) || log_to_console_) arguments->Set("log-to-console", std::make_unique<base::Value>()); @@ -452,7 +454,9 @@ << " doesn't exist. Can't launch https server."; return false; } - arguments->SetString("cert-and-key-file", certificate_path.value()); + arguments->SetStringKey( + "cert-and-key-file", + base::AsCrossPlatformPiece(certificate_path.value())); } // Check the client certificate related arguments. @@ -468,7 +472,7 @@ << " doesn't exist. Can't launch https server."; return false; } - ssl_client_certs->AppendString(it->value()); + ssl_client_certs->Append(base::AsCrossPlatformPiece(it->value())); } if (ssl_client_certs->GetSize())
diff --git a/remoting/base/BUILD.gn b/remoting/base/BUILD.gn index a3ac59d..a9b699f 100644 --- a/remoting/base/BUILD.gn +++ b/remoting/base/BUILD.gn
@@ -4,6 +4,10 @@ import("//third_party/protobuf/proto_library.gni") +proto_library("protobuf_http_client_messages_proto") { + sources = [ "protobuf_http_client_messages.proto" ] +} + source_set("base") { sources = [ "auto_thread.cc", @@ -29,8 +33,16 @@ "protobuf_http_client.h", "protobuf_http_request.cc", "protobuf_http_request.h", + "protobuf_http_request_base.cc", + "protobuf_http_request_base.h", + "protobuf_http_request_config.cc", + "protobuf_http_request_config.h", "protobuf_http_status.cc", "protobuf_http_status.h", + "protobuf_http_stream_parser.cc", + "protobuf_http_stream_parser.h", + "protobuf_http_stream_request.cc", + "protobuf_http_stream_request.h", "rate_counter.cc", "rate_counter.h", "result.h", @@ -72,6 +84,7 @@ "//third_party/protobuf:protobuf_lite", ] deps = [ + ":protobuf_http_client_messages_proto", "//base/third_party/dynamic_annotations", "//google_apis", "//remoting/base/grpc_support", @@ -170,6 +183,7 @@ "leaky_bucket_unittest.cc", "oauth_token_getter_proxy_unittest.cc", "protobuf_http_client_unittest.cc", + "protobuf_http_stream_parser_unittest.cc", "rate_counter_unittest.cc", "result_unittest.cc", "rsa_key_pair_unittest.cc",
diff --git a/remoting/base/protobuf_http_client.cc b/remoting/base/protobuf_http_client.cc index 36d9900..9de3b4fc 100644 --- a/remoting/base/protobuf_http_client.cc +++ b/remoting/base/protobuf_http_client.cc
@@ -8,7 +8,8 @@ #include "net/base/load_flags.h" #include "net/base/net_errors.h" #include "remoting/base/oauth_token_getter.h" -#include "remoting/base/protobuf_http_request.h" +#include "remoting/base/protobuf_http_request_base.h" +#include "remoting/base/protobuf_http_request_config.h" #include "remoting/base/protobuf_http_status.h" #include "services/network/public/cpp/resource_request.h" #include "services/network/public/cpp/shared_url_loader_factory.h" @@ -19,7 +20,6 @@ namespace { constexpr char kAuthorizationHeaderFormat[] = "Authorization: Bearer %s"; -constexpr int kMaxResponseSizeKb = 512; } // namespace @@ -33,15 +33,15 @@ token_getter_(token_getter), url_loader_factory_(url_loader_factory) {} -ProtobufHttpClient::~ProtobufHttpClient() = default; +ProtobufHttpClient::~ProtobufHttpClient() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} void ProtobufHttpClient::ExecuteRequest( - std::unique_ptr<ProtobufHttpRequest> request) { - DCHECK(request->request_message); - DCHECK(!request->path.empty()); - DCHECK(request->response_callback_); + std::unique_ptr<ProtobufHttpRequestBase> request) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (!request->authenticated) { + if (!request->config().authenticated) { DoExecuteRequest(std::move(request), OAuthTokenGetter::Status::SUCCESS, {}, {}); return; @@ -54,23 +54,37 @@ } void ProtobufHttpClient::CancelPendingRequests() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + weak_factory_.InvalidateWeakPtrs(); + pending_requests_.clear(); +} + +bool ProtobufHttpClient::HasPendingRequests() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + return !pending_requests_.empty(); } void ProtobufHttpClient::DoExecuteRequest( - std::unique_ptr<ProtobufHttpRequest> request, + std::unique_ptr<ProtobufHttpRequestBase> request, OAuthTokenGetter::Status status, const std::string& user_email, const std::string& access_token) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (status != OAuthTokenGetter::Status::SUCCESS) { - LOG(ERROR) << "Failed to fetch access token. Status: " << status; - request->OnResponse( - ProtobufHttpStatus(net::HttpStatusCode::HTTP_UNAUTHORIZED), nullptr); + std::string error_message = + base::StringPrintf("Failed to fetch access token. Status: %d", status); + LOG(ERROR) << error_message; + request->OnAuthFailed(ProtobufHttpStatus( + ProtobufHttpStatus::Code::UNAUTHENTICATED, error_message)); return; } auto resource_request = std::make_unique<network::ResourceRequest>(); - resource_request->url = GURL("https://" + server_endpoint_ + request->path); + resource_request->url = + GURL("https://" + server_endpoint_ + request->config().path); resource_request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE; resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit; @@ -85,35 +99,28 @@ std::unique_ptr<network::SimpleURLLoader> send_url_loader = network::SimpleURLLoader::Create(std::move(resource_request), - request->traffic_annotation); - send_url_loader->SetTimeoutDuration(request->timeout_duration); + request->config().traffic_annotation); + base::TimeDelta timeout_duration = request->GetRequestTimeoutDuration(); + if (!timeout_duration.is_zero()) { + send_url_loader->SetTimeoutDuration(request->GetRequestTimeoutDuration()); + } send_url_loader->AttachStringForUpload( - request->request_message->SerializeAsString(), "application/x-protobuf"); - send_url_loader->DownloadToString( - url_loader_factory_.get(), - base::BindOnce(&ProtobufHttpClient::OnResponse, - weak_factory_.GetWeakPtr(), std::move(request), - std::move(send_url_loader)), - kMaxResponseSizeKb); + request->config().request_message->SerializeAsString(), + "application/x-protobuf"); + auto* unowned_request = request.get(); + base::OnceClosure invalidator = base::BindOnce( + &ProtobufHttpClient::CancelRequest, weak_factory_.GetWeakPtr(), + pending_requests_.insert(pending_requests_.end(), std::move(request))); + unowned_request->StartRequest(url_loader_factory_.get(), + std::move(send_url_loader), + std::move(invalidator)); } -void ProtobufHttpClient::OnResponse( - std::unique_ptr<ProtobufHttpRequest> request, - std::unique_ptr<network::SimpleURLLoader> url_loader, - std::unique_ptr<std::string> response_body) { - net::Error net_error = static_cast<net::Error>(url_loader->NetError()); - if (net_error == net::Error::ERR_HTTP_RESPONSE_CODE_FAILURE && - (!url_loader->ResponseInfo() || !url_loader->ResponseInfo()->headers)) { - LOG(ERROR) << "Can't find response header."; - net_error = net::Error::ERR_INVALID_RESPONSE; - } - ProtobufHttpStatus status = - (net_error == net::Error::ERR_HTTP_RESPONSE_CODE_FAILURE || - net_error == net::Error::OK) - ? ProtobufHttpStatus(static_cast<net::HttpStatusCode>( - url_loader->ResponseInfo()->headers->response_code())) - : ProtobufHttpStatus(net_error); - request->OnResponse(status, std::move(response_body)); +void ProtobufHttpClient::CancelRequest( + const PendingRequestListIterator& request_iterator) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + pending_requests_.erase(request_iterator); } } // namespace remoting
diff --git a/remoting/base/protobuf_http_client.h b/remoting/base/protobuf_http_client.h index c830ba4..d1683f4 100644 --- a/remoting/base/protobuf_http_client.h +++ b/remoting/base/protobuf_http_client.h
@@ -5,22 +5,23 @@ #ifndef REMOTING_BASE_PROTOBUF_HTTP_CLIENT_H_ #define REMOTING_BASE_PROTOBUF_HTTP_CLIENT_H_ +#include <list> #include <memory> #include <string> #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" +#include "base/sequence_checker.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "remoting/base/oauth_token_getter.h" namespace network { class SharedURLLoaderFactory; -class SimpleURLLoader; } // namespace network namespace remoting { -struct ProtobufHttpRequest; +class ProtobufHttpRequestBase; // Helper class for executing REST/Protobuf requests over HTTP. class ProtobufHttpClient final { @@ -38,26 +39,36 @@ // Executes a unary request. Caller will not be notified of the result if // CancelPendingRequests() is called or |this| is destroyed. - void ExecuteRequest(std::unique_ptr<ProtobufHttpRequest> request); + void ExecuteRequest(std::unique_ptr<ProtobufHttpRequestBase> request); - // Tries to cancel all pending requests. Note that this prevents request - // callbacks from being called but does not necessarily stop pending requests - // from being sent. + // Cancel all pending requests. void CancelPendingRequests(); + // Indicates whether the client has any pending requests. + bool HasPendingRequests() const; + private: - void DoExecuteRequest(std::unique_ptr<ProtobufHttpRequest> request, + using PendingRequestList = + std::list<std::unique_ptr<ProtobufHttpRequestBase>>; + + // std::list iterators are stable, so they survive list editing and only + // become invalidated when underlying element is deleted. + using PendingRequestListIterator = PendingRequestList::iterator; + + void DoExecuteRequest(std::unique_ptr<ProtobufHttpRequestBase> request, OAuthTokenGetter::Status status, const std::string& user_email, const std::string& access_token); - void OnResponse(std::unique_ptr<ProtobufHttpRequest> request, - std::unique_ptr<network::SimpleURLLoader> url_loader, - std::unique_ptr<std::string> response_body); + void CancelRequest(const PendingRequestListIterator& request_iterator); std::string server_endpoint_; OAuthTokenGetter* token_getter_; scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; + PendingRequestList pending_requests_; + + SEQUENCE_CHECKER(sequence_checker_); + base::WeakPtrFactory<ProtobufHttpClient> weak_factory_{this}; };
diff --git a/remoting/base/protobuf_http_client_messages.proto b/remoting/base/protobuf_http_client_messages.proto new file mode 100644 index 0000000..d511598a --- /dev/null +++ b/remoting/base/protobuf_http_client_messages.proto
@@ -0,0 +1,20 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +syntax = "proto3"; + +option optimize_for = LITE_RUNTIME; + +package remoting.protobufhttpclient; + +message Status { + int32 code = 1; + string message = 2; +} + +message StreamBody { + repeated bytes messages = 1; + Status status = 2; + repeated bytes noop = 15; +}
diff --git a/remoting/base/protobuf_http_client_unittest.cc b/remoting/base/protobuf_http_client_unittest.cc index ea1ca714..9992d80 100644 --- a/remoting/base/protobuf_http_client_unittest.cc +++ b/remoting/base/protobuf_http_client_unittest.cc
@@ -11,10 +11,14 @@ #include "base/test/gmock_callback_support.h" #include "base/test/mock_callback.h" #include "base/test/task_environment.h" +#include "net/http/http_status_code.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" +#include "remoting/base/protobuf_http_client_messages.pb.h" #include "remoting/base/protobuf_http_client_test_messages.pb.h" #include "remoting/base/protobuf_http_request.h" +#include "remoting/base/protobuf_http_request_config.h" #include "remoting/base/protobuf_http_status.h" +#include "remoting/base/protobuf_http_stream_request.h" #include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_url_loader_factory.h" @@ -25,15 +29,21 @@ namespace { +using protobufhttpclient::StreamBody; using protobufhttpclienttest::EchoRequest; using protobufhttpclienttest::EchoResponse; using ::base::test::RunOnceCallback; using ::testing::_; +using ::testing::InSequence; -using MockEchoResponseCallback = - base::MockCallback<base::OnceCallback<void(const ProtobufHttpStatus&, - std::unique_ptr<EchoResponse>)>>; +using EchoResponseCallback = + ProtobufHttpRequest::ResponseCallback<EchoResponse>; +using MockEchoResponseCallback = base::MockCallback<EchoResponseCallback>; +using MockEchoMessageCallback = base::MockCallback< + ProtobufHttpStreamRequest::MessageCallback<EchoResponse>>; +using MockStreamClosedCallback = + base::MockCallback<ProtobufHttpStreamRequest::StreamClosedCallback>; constexpr char kTestServerEndpoint[] = "test.com"; constexpr char kTestRpcPath[] = "/v1/echo:echo"; @@ -44,18 +54,18 @@ constexpr char kFakeAccessToken[] = "fake_access_token"; constexpr char kFakeAccessTokenHeaderValue[] = "Bearer fake_access_token"; -MATCHER_P(HasStatusCode, status_code, "") { - return arg.http_status_code() == status_code; +MATCHER_P(HasErrorCode, error_code, "") { + return arg.error_code() == error_code; } -MATCHER_P(HasNetError, net_error, "") { - return arg.net_error() == net_error; -} - -MATCHER(IsResponseText, "") { +MATCHER(IsDefaultResponseText, "") { return arg->text() == kResponseText; } +MATCHER_P(IsResponseText, response_text, "") { + return arg->text() == response_text; +} + MATCHER(IsNullResponse, "") { return arg.get() == nullptr; } @@ -66,30 +76,68 @@ MOCK_METHOD0(InvalidateCache, void()); }; -std::unique_ptr<ProtobufHttpRequest> CreateDefaultTestRequest() { - auto request = - std::make_unique<ProtobufHttpRequest>(TRAFFIC_ANNOTATION_FOR_TESTS); +EchoResponseCallback DoNothingResponse() { + return base::DoNothing::Once<const ProtobufHttpStatus&, + std::unique_ptr<EchoResponse>>(); +} + +std::unique_ptr<ProtobufHttpRequestConfig> CreateDefaultRequestConfig() { auto request_message = std::make_unique<EchoRequest>(); request_message->set_text(kRequestText); - request->request_message = std::move(request_message); - request->SetResponseCallback( - base::DoNothing::Once<const ProtobufHttpStatus&, - std::unique_ptr<EchoResponse>>()); - request->path = kTestRpcPath; + auto request_config = + std::make_unique<ProtobufHttpRequestConfig>(TRAFFIC_ANNOTATION_FOR_TESTS); + request_config->request_message = std::move(request_message); + request_config->path = kTestRpcPath; + return request_config; +} + +std::unique_ptr<ProtobufHttpRequest> CreateDefaultTestRequest() { + auto request = + std::make_unique<ProtobufHttpRequest>(CreateDefaultRequestConfig()); + request->SetResponseCallback(DoNothingResponse()); return request; } -std::string CreateDefaultResponseContent() { +std::unique_ptr<ProtobufHttpStreamRequest> CreateDefaultTestStreamRequest() { + auto request = + std::make_unique<ProtobufHttpStreamRequest>(CreateDefaultRequestConfig()); + request->SetStreamReadyCallback(base::DoNothing::Once()); + request->SetStreamClosedCallback( + base::DoNothing::Once<const ProtobufHttpStatus&>()); + request->SetMessageCallback( + base::DoNothing::Repeatedly<std::unique_ptr<EchoResponse>>()); + return request; +} + +std::string CreateSerializedEchoResponse( + const std::string& text = kResponseText) { EchoResponse response; - response.set_text(kResponseText); + response.set_text(text); return response.SerializeAsString(); } +std::string CreateSerializedStreamBodyWithText( + const std::string& text = kResponseText) { + StreamBody stream_body; + stream_body.add_messages(CreateSerializedEchoResponse(text)); + return stream_body.SerializeAsString(); +} + +std::string CreateSerializedStreamBodyWithStatusCode( + ProtobufHttpStatus::Code status_code) { + StreamBody stream_body; + stream_body.mutable_status()->set_code(static_cast<int32_t>(status_code)); + return stream_body.SerializeAsString(); +} + } // namespace class ProtobufHttpClientTest : public testing::Test { protected: - base::test::SingleThreadTaskEnvironment task_environment_; + void ExpectCallWithToken(bool success); + + base::test::SingleThreadTaskEnvironment task_environment_{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; MockOAuthTokenGetter mock_token_getter_; network::TestURLLoaderFactory test_url_loader_factory_; scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_ = @@ -99,16 +147,24 @@ test_shared_loader_factory_}; }; +void ProtobufHttpClientTest::ExpectCallWithToken(bool success) { + EXPECT_CALL(mock_token_getter_, CallWithToken(_)) + .WillOnce(RunOnceCallback<0>(success + ? OAuthTokenGetter::Status::SUCCESS + : OAuthTokenGetter::Status::AUTH_ERROR, + "", success ? kFakeAccessToken : "")); +} + +// Unary request tests. + TEST_F(ProtobufHttpClientTest, SendRequestAndDecodeResponse) { base::RunLoop run_loop; - EXPECT_CALL(mock_token_getter_, CallWithToken(_)) - .WillOnce(RunOnceCallback<0>(OAuthTokenGetter::Status::SUCCESS, "", - kFakeAccessToken)); + ExpectCallWithToken(/* success= */ true); MockEchoResponseCallback response_callback; - EXPECT_CALL(response_callback, - Run(HasStatusCode(net::HTTP_OK), IsResponseText())) + EXPECT_CALL(response_callback, Run(HasErrorCode(ProtobufHttpStatus::Code::OK), + IsDefaultResponseText())) .WillOnce([&]() { run_loop.Quit(); }); auto request = CreateDefaultTestRequest(); @@ -133,16 +189,20 @@ // Respond. test_url_loader_factory_.AddResponse(kTestFullUrl, - CreateDefaultResponseContent()); + CreateSerializedEchoResponse()); run_loop.Run(); + ASSERT_FALSE(client_.HasPendingRequests()); } TEST_F(ProtobufHttpClientTest, SendUnauthenticatedRequest_TokenGetterNotCalled) { EXPECT_CALL(mock_token_getter_, CallWithToken(_)).Times(0); - auto request = CreateDefaultTestRequest(); - request->authenticated = false; + auto request_config = CreateDefaultRequestConfig(); + request_config->authenticated = false; + auto request = + std::make_unique<ProtobufHttpRequest>(std::move(request_config)); + request->SetResponseCallback(DoNothingResponse()); client_.ExecuteRequest(std::move(request)); // Verify that the request is sent with no auth header. @@ -157,13 +217,12 @@ FailedToFetchAuthToken_RejectsWithUnauthorizedError) { base::RunLoop run_loop; - EXPECT_CALL(mock_token_getter_, CallWithToken(_)) - .WillOnce( - RunOnceCallback<0>(OAuthTokenGetter::Status::AUTH_ERROR, "", "")); + ExpectCallWithToken(/* success= */ false); MockEchoResponseCallback response_callback; EXPECT_CALL(response_callback, - Run(HasStatusCode(net::HTTP_UNAUTHORIZED), IsNullResponse())) + Run(HasErrorCode(ProtobufHttpStatus::Code::UNAUTHENTICATED), + IsNullResponse())) .WillOnce([&]() { run_loop.Quit(); }); auto request = CreateDefaultTestRequest(); @@ -171,19 +230,18 @@ client_.ExecuteRequest(std::move(request)); run_loop.Run(); + ASSERT_FALSE(client_.HasPendingRequests()); } TEST_F(ProtobufHttpClientTest, FailedToParseResponse_GetsInvalidResponseError) { base::RunLoop run_loop; - EXPECT_CALL(mock_token_getter_, CallWithToken(_)) - .WillOnce(RunOnceCallback<0>(OAuthTokenGetter::Status::SUCCESS, "", - kFakeAccessToken)); + ExpectCallWithToken(/* success= */ true); MockEchoResponseCallback response_callback; EXPECT_CALL( response_callback, - Run(HasNetError(net::Error::ERR_INVALID_RESPONSE), IsNullResponse())) + Run(HasErrorCode(ProtobufHttpStatus::Code::INTERNAL), IsNullResponse())) .WillOnce([&]() { run_loop.Quit(); }); auto request = CreateDefaultTestRequest(); @@ -193,17 +251,18 @@ // Respond. test_url_loader_factory_.AddResponse(kTestFullUrl, "Invalid content"); run_loop.Run(); + ASSERT_FALSE(client_.HasPendingRequests()); } TEST_F(ProtobufHttpClientTest, ServerRespondsWithError) { base::RunLoop run_loop; - EXPECT_CALL(mock_token_getter_, CallWithToken(_)) - .WillOnce(RunOnceCallback<0>(OAuthTokenGetter::Status::SUCCESS, "", "")); + ExpectCallWithToken(/* success= */ true); MockEchoResponseCallback response_callback; EXPECT_CALL(response_callback, - Run(HasStatusCode(net::HTTP_UNAUTHORIZED), IsNullResponse())) + Run(HasErrorCode(ProtobufHttpStatus::Code::UNAUTHENTICATED), + IsNullResponse())) .WillOnce([&]() { run_loop.Quit(); }); auto request = CreateDefaultTestRequest(); @@ -213,9 +272,11 @@ test_url_loader_factory_.AddResponse(kTestFullUrl, "", net::HttpStatusCode::HTTP_UNAUTHORIZED); run_loop.Run(); + ASSERT_FALSE(client_.HasPendingRequests()); } -TEST_F(ProtobufHttpClientTest, CancelPendingRequests_CallbackNotCalled) { +TEST_F(ProtobufHttpClientTest, + CancelPendingRequestsBeforeTokenCallback_CallbackNotCalled) { base::RunLoop run_loop; OAuthTokenGetter::TokenCallback token_callback; @@ -224,7 +285,10 @@ token_callback = std::move(callback); }); + MockEchoResponseCallback not_called_response_callback; + auto request = CreateDefaultTestRequest(); + request->SetResponseCallback(not_called_response_callback.Get()); client_.ExecuteRequest(std::move(request)); client_.CancelPendingRequests(); ASSERT_TRUE(token_callback); @@ -233,6 +297,179 @@ // Verify no request. ASSERT_FALSE(test_url_loader_factory_.IsPending(kTestFullUrl)); + ASSERT_FALSE(client_.HasPendingRequests()); +} + +TEST_F(ProtobufHttpClientTest, + CancelPendingRequestsAfterTokenCallback_CallbackNotCalled) { + base::RunLoop run_loop; + + ExpectCallWithToken(/* success= */ true); + + client_.ExecuteRequest(CreateDefaultTestRequest()); + + // Respond. + ASSERT_TRUE(test_url_loader_factory_.IsPending(kTestFullUrl)); + ASSERT_EQ(1, test_url_loader_factory_.NumPending()); + client_.CancelPendingRequests(); + test_url_loader_factory_.AddResponse(kTestFullUrl, + CreateSerializedEchoResponse()); + run_loop.RunUntilIdle(); + ASSERT_FALSE(client_.HasPendingRequests()); +} + +TEST_F(ProtobufHttpClientTest, RequestTimeout_ReturnsDeadlineExceeded) { + base::RunLoop run_loop; + + ExpectCallWithToken(/* success= */ true); + + MockEchoResponseCallback response_callback; + EXPECT_CALL(response_callback, + Run(HasErrorCode(ProtobufHttpStatus::Code::DEADLINE_EXCEEDED), + IsNullResponse())) + .WillOnce([&]() { run_loop.Quit(); }); + + auto request = CreateDefaultTestRequest(); + request->SetTimeoutDuration(base::TimeDelta::FromSeconds(15)); + request->SetResponseCallback(response_callback.Get()); + client_.ExecuteRequest(std::move(request)); + + ASSERT_TRUE(test_url_loader_factory_.IsPending(kTestFullUrl)); + ASSERT_EQ(1, test_url_loader_factory_.NumPending()); + + task_environment_.FastForwardBy(base::TimeDelta::FromSeconds(16)); + + run_loop.Run(); + ASSERT_FALSE(client_.HasPendingRequests()); +} + +// Stream request tests. + +TEST_F(ProtobufHttpClientTest, StartStreamRequestAndDecodeMessages) { + base::MockOnceClosure stream_ready_callback; + MockEchoMessageCallback message_callback; + MockStreamClosedCallback stream_closed_callback; + + { + InSequence s; + + ExpectCallWithToken(/* success= */ true); + EXPECT_CALL(stream_ready_callback, Run()); + EXPECT_CALL(message_callback, Run(IsResponseText("response text 1"))); + EXPECT_CALL(message_callback, Run(IsResponseText("response text 2"))); + EXPECT_CALL(stream_closed_callback, + Run(HasErrorCode(ProtobufHttpStatus::Code::CANCELLED))); + } + + auto request = CreateDefaultTestStreamRequest(); + request->SetStreamReadyCallback(stream_ready_callback.Get()); + request->SetMessageCallback(message_callback.Get()); + request->SetStreamClosedCallback(stream_closed_callback.Get()); + network::SimpleURLLoaderStreamConsumer* stream_consumer = request.get(); + client_.ExecuteRequest(std::move(request)); + + ASSERT_TRUE(test_url_loader_factory_.IsPending(kTestFullUrl)); + ASSERT_EQ(1, test_url_loader_factory_.NumPending()); + + // TestURLLoaderFactory can't simulate streaming, so we invoke the request + // directly. + stream_consumer->OnDataReceived( + CreateSerializedStreamBodyWithText("response text 1"), + base::DoNothing::Once()); + stream_consumer->OnDataReceived( + CreateSerializedStreamBodyWithText("response text 2"), + base::DoNothing::Once()); + stream_consumer->OnDataReceived(CreateSerializedStreamBodyWithStatusCode( + ProtobufHttpStatus::Code::CANCELLED), + base::DoNothing::Once()); + ASSERT_FALSE(client_.HasPendingRequests()); +} + +TEST_F(ProtobufHttpClientTest, InvalidStreamData_Ignored) { + base::RunLoop run_loop; + base::MockOnceClosure stream_ready_callback; + MockEchoMessageCallback not_called_message_callback; + MockStreamClosedCallback stream_closed_callback; + + { + InSequence s; + + ExpectCallWithToken(/* success= */ true); + EXPECT_CALL(stream_ready_callback, Run()); + EXPECT_CALL(stream_closed_callback, + Run(HasErrorCode(ProtobufHttpStatus::Code::OK))) + .WillOnce([&]() { run_loop.Quit(); }); + } + + auto request = CreateDefaultTestStreamRequest(); + request->SetStreamReadyCallback(stream_ready_callback.Get()); + request->SetMessageCallback(not_called_message_callback.Get()); + request->SetStreamClosedCallback(stream_closed_callback.Get()); + client_.ExecuteRequest(std::move(request)); + + ASSERT_TRUE(test_url_loader_factory_.IsPending(kTestFullUrl)); + ASSERT_EQ(1, test_url_loader_factory_.NumPending()); + test_url_loader_factory_.AddResponse(kTestFullUrl, "Invalid stream data", + net::HttpStatusCode::HTTP_OK); + run_loop.Run(); + ASSERT_FALSE(client_.HasPendingRequests()); +} + +TEST_F(ProtobufHttpClientTest, SendHttpStatusOnly_StreamClosesWithHttpStatus) { + base::RunLoop run_loop; + base::MockOnceClosure stream_ready_callback; + MockStreamClosedCallback stream_closed_callback; + + { + InSequence s; + + ExpectCallWithToken(/* success= */ true); + EXPECT_CALL(stream_closed_callback, + Run(HasErrorCode(ProtobufHttpStatus::Code::UNAUTHENTICATED))) + .WillOnce([&]() { run_loop.Quit(); }); + } + + auto request = CreateDefaultTestStreamRequest(); + request->SetStreamReadyCallback(stream_ready_callback.Get()); + request->SetStreamClosedCallback(stream_closed_callback.Get()); + client_.ExecuteRequest(std::move(request)); + + ASSERT_TRUE(test_url_loader_factory_.IsPending(kTestFullUrl)); + ASSERT_EQ(1, test_url_loader_factory_.NumPending()); + test_url_loader_factory_.AddResponse(kTestFullUrl, /* response_body= */ "", + net::HttpStatusCode::HTTP_UNAUTHORIZED); + run_loop.Run(); + ASSERT_FALSE(client_.HasPendingRequests()); +} + +TEST_F(ProtobufHttpClientTest, SendStreamStatusAndHttpStatus_StreamStatusWins) { + base::RunLoop run_loop; + base::MockOnceClosure stream_ready_callback; + MockStreamClosedCallback stream_closed_callback; + + { + InSequence s; + + ExpectCallWithToken(/* success= */ true); + EXPECT_CALL(stream_ready_callback, Run()); + EXPECT_CALL(stream_closed_callback, + Run(HasErrorCode(ProtobufHttpStatus::Code::CANCELLED))) + .WillOnce([&]() { run_loop.Quit(); }); + } + + auto request = CreateDefaultTestStreamRequest(); + request->SetStreamReadyCallback(stream_ready_callback.Get()); + request->SetStreamClosedCallback(stream_closed_callback.Get()); + client_.ExecuteRequest(std::move(request)); + + ASSERT_TRUE(test_url_loader_factory_.IsPending(kTestFullUrl)); + ASSERT_EQ(1, test_url_loader_factory_.NumPending()); + test_url_loader_factory_.AddResponse(kTestFullUrl, + CreateSerializedStreamBodyWithStatusCode( + ProtobufHttpStatus::Code::CANCELLED), + net::HttpStatusCode::HTTP_OK); + run_loop.Run(); + ASSERT_FALSE(client_.HasPendingRequests()); } } // namespace remoting
diff --git a/remoting/base/protobuf_http_request.cc b/remoting/base/protobuf_http_request.cc index 1862dc7b..1746702 100644 --- a/remoting/base/protobuf_http_request.cc +++ b/remoting/base/protobuf_http_request.cc
@@ -4,19 +4,52 @@ #include "remoting/base/protobuf_http_request.h" +#include "remoting/base/protobuf_http_request_config.h" +#include "services/network/public/cpp/simple_url_loader.h" +#include "third_party/protobuf/src/google/protobuf/message_lite.h" + namespace remoting { +namespace { +constexpr int kMaxResponseSizeKb = 512; +} // namespace + ProtobufHttpRequest::ProtobufHttpRequest( - const net::NetworkTrafficAnnotationTag& traffic_annotation) - : traffic_annotation(traffic_annotation) {} + std::unique_ptr<ProtobufHttpRequestConfig> config) + : ProtobufHttpRequestBase(std::move(config)) {} ProtobufHttpRequest::~ProtobufHttpRequest() = default; +void ProtobufHttpRequest::SetTimeoutDuration(base::TimeDelta timeout_duration) { + timeout_duration_ = timeout_duration; +} + +void ProtobufHttpRequest::OnAuthFailed(const ProtobufHttpStatus& status) { + std::move(response_callback_).Run(status); +} + +void ProtobufHttpRequest::StartRequestInternal( + network::mojom::URLLoaderFactory* loader_factory) { + DCHECK(response_callback_); + + // Safe to use unretained as callback will not be called once |url_loader_| is + // deleted. + url_loader_->DownloadToString( + loader_factory, + base::BindOnce(&ProtobufHttpRequest::OnResponse, base::Unretained(this)), + kMaxResponseSizeKb); +} + +base::TimeDelta ProtobufHttpRequest::GetRequestTimeoutDuration() const { + return timeout_duration_; +} + void ProtobufHttpRequest::OnResponse( - const ProtobufHttpStatus& status, std::unique_ptr<std::string> response_body) { + ProtobufHttpStatus status = GetUrlLoaderStatus(); std::move(response_callback_) .Run(status.ok() ? ParseResponse(std::move(response_body)) : status); + std::move(invalidator_).Run(); } ProtobufHttpStatus ProtobufHttpRequest::ParseResponse(
diff --git a/remoting/base/protobuf_http_request.h b/remoting/base/protobuf_http_request.h index 61b80bb..b517868 100644 --- a/remoting/base/protobuf_http_request.h +++ b/remoting/base/protobuf_http_request.h
@@ -5,35 +5,34 @@ #ifndef REMOTING_BASE_PROTOBUF_HTTP_REQUEST_H_ #define REMOTING_BASE_PROTOBUF_HTTP_REQUEST_H_ -#include <memory> -#include <string> - #include "base/bind.h" #include "base/callback.h" -#include "base/time/time.h" -#include "net/traffic_annotation/network_traffic_annotation.h" -#include "remoting/base/protobuf_http_status.h" -#include "third_party/protobuf/src/google/protobuf/message_lite.h" +#include "remoting/base/protobuf_http_request_base.h" + +namespace google { +namespace protobuf { +class MessageLite; +} // namespace protobuf +} // namespace google namespace remoting { -// A simple unary request. Caller needs to set all public members and call -// SetResponseCallback() before passing it to ProtobufHttpClient. -struct ProtobufHttpRequest final { +// A simple unary request. +class ProtobufHttpRequest final : public ProtobufHttpRequestBase { + public: template <typename ResponseType> using ResponseCallback = base::OnceCallback<void(const ProtobufHttpStatus& status, std::unique_ptr<ResponseType> response)>; explicit ProtobufHttpRequest( - const net::NetworkTrafficAnnotationTag& traffic_annotation); - ~ProtobufHttpRequest(); + std::unique_ptr<ProtobufHttpRequestConfig> config); + ~ProtobufHttpRequest() override; - const net::NetworkTrafficAnnotationTag traffic_annotation; - std::unique_ptr<google::protobuf::MessageLite> request_message; - std::string path; - bool authenticated = true; - base::TimeDelta timeout_duration = base::TimeDelta::FromSeconds(30); + // Sets the amount of time to wait before giving up on a given network request + // and considering it an error. The default value is 30s. Set it to zero to + // disable timeout. + void SetTimeoutDuration(base::TimeDelta timeout_duration); // Sets the response callback. |ResponseType| needs to be a protobuf message // type. @@ -54,15 +53,19 @@ } private: - friend class ProtobufHttpClient; + // ProtobufHttpRequestBase implementations. + void OnAuthFailed(const ProtobufHttpStatus& status) override; + void StartRequestInternal( + network::mojom::URLLoaderFactory* loader_factory) override; + base::TimeDelta GetRequestTimeoutDuration() const override; - // To be called by ProtobufHttpClient. - void OnResponse(const ProtobufHttpStatus& status, - std::unique_ptr<std::string> response_body); + void OnResponse(std::unique_ptr<std::string> response_body); // Parses |response_body| and writes it to |response_message_|. ProtobufHttpStatus ParseResponse(std::unique_ptr<std::string> response_body); + base::TimeDelta timeout_duration_ = base::TimeDelta::FromSeconds(30); + // This is owned by |response_callback_|. google::protobuf::MessageLite* response_message_; base::OnceCallback<void(const ProtobufHttpStatus&)> response_callback_;
diff --git a/remoting/base/protobuf_http_request_base.cc b/remoting/base/protobuf_http_request_base.cc new file mode 100644 index 0000000..b8129e5b --- /dev/null +++ b/remoting/base/protobuf_http_request_base.cc
@@ -0,0 +1,62 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "remoting/base/protobuf_http_request_base.h" + +#include "net/base/net_errors.h" +#include "remoting/base/protobuf_http_request_config.h" +#include "services/network/public/cpp/simple_url_loader.h" + +namespace remoting { + +ProtobufHttpRequestBase::ProtobufHttpRequestBase( + std::unique_ptr<ProtobufHttpRequestConfig> config) + : config_(std::move(config)) { + config_->Validate(); +} + +ProtobufHttpRequestBase::~ProtobufHttpRequestBase() { +#if DCHECK_IS_ON() + DCHECK(request_deadline_.is_null() || + request_deadline_ >= base::TimeTicks::Now()) + << "The request must have been deleted before the deadline."; +#endif // DCHECK_IS_ON() +} + +ProtobufHttpStatus ProtobufHttpRequestBase::GetUrlLoaderStatus() const { + net::Error net_error = static_cast<net::Error>(url_loader_->NetError()); + if (net_error == net::Error::ERR_HTTP_RESPONSE_CODE_FAILURE && + (!url_loader_->ResponseInfo() || !url_loader_->ResponseInfo()->headers)) { + LOG(ERROR) << "Can't find response header."; + net_error = net::Error::ERR_INVALID_RESPONSE; + } + return (net_error == net::Error::ERR_HTTP_RESPONSE_CODE_FAILURE || + net_error == net::Error::OK) + ? ProtobufHttpStatus(static_cast<net::HttpStatusCode>( + url_loader_->ResponseInfo()->headers->response_code())) + : ProtobufHttpStatus(net_error); +} + +void ProtobufHttpRequestBase::StartRequest( + network::mojom::URLLoaderFactory* loader_factory, + std::unique_ptr<network::SimpleURLLoader> url_loader, + base::OnceClosure invalidator) { + DCHECK(!url_loader_); + DCHECK(!invalidator_); + + url_loader_ = std::move(url_loader); + invalidator_ = std::move(invalidator); + StartRequestInternal(loader_factory); + +#if DCHECK_IS_ON() + base::TimeDelta timeout_duration = GetRequestTimeoutDuration(); + if (!timeout_duration.is_zero()) { + // Add a 500ms fuzz to account for task dispatching delay and other stuff. + request_deadline_ = base::TimeTicks::Now() + timeout_duration + + base::TimeDelta::FromMilliseconds(500); + } +#endif // DCHECK_IS_ON() +} + +} // namespace remoting
diff --git a/remoting/base/protobuf_http_request_base.h b/remoting/base/protobuf_http_request_base.h new file mode 100644 index 0000000..e520685 --- /dev/null +++ b/remoting/base/protobuf_http_request_base.h
@@ -0,0 +1,80 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef REMOTING_BASE_PROTOBUF_HTTP_REQUEST_BASE_H_ +#define REMOTING_BASE_PROTOBUF_HTTP_REQUEST_BASE_H_ + +#include <memory> +#include <string> + +#include "base/callback.h" +#include "base/dcheck_is_on.h" +#include "base/memory/weak_ptr.h" +#include "base/time/time.h" +#include "remoting/base/protobuf_http_status.h" + +namespace network { + +namespace mojom { +class URLLoaderFactory; +} // namespace mojom + +class SimpleURLLoader; + +} // namespace network + +namespace remoting { + +class ProtobufHttpClient; + +struct ProtobufHttpRequestConfig; + +// Base request class for unary and server streaming requests. +class ProtobufHttpRequestBase { + public: + explicit ProtobufHttpRequestBase( + std::unique_ptr<ProtobufHttpRequestConfig> config); + virtual ~ProtobufHttpRequestBase(); + + const ProtobufHttpRequestConfig& config() const { return *config_; } + + protected: + virtual void OnAuthFailed(const ProtobufHttpStatus& status) = 0; + virtual void StartRequestInternal( + network::mojom::URLLoaderFactory* loader_factory) = 0; + + // Returns a deadline for when the request has to be finished. Returns zero + // if the request doesn't timeout. This is generally only useful for unary + // requests. + virtual base::TimeDelta GetRequestTimeoutDuration() const = 0; + + // Returns the http status from |url_loader_|. Only useful when |url_loader_| + // informs that the request has been completed. + ProtobufHttpStatus GetUrlLoaderStatus() const; + + std::unique_ptr<network::SimpleURLLoader> url_loader_; + + // Subclass should run this closure whenever its lifetime ends, e.g. response + // is received or stream is closed. This will delete |this| from the parent + // ProtobufHttpClient. + base::OnceClosure invalidator_; + + private: + friend class ProtobufHttpClient; + + // Called by ProtobufHttpClient. + void StartRequest(network::mojom::URLLoaderFactory* loader_factory, + std::unique_ptr<network::SimpleURLLoader> url_loader, + base::OnceClosure invalidator); + + std::unique_ptr<ProtobufHttpRequestConfig> config_; + +#if DCHECK_IS_ON() + base::TimeTicks request_deadline_; +#endif // DCHECK_IS_ON() +}; + +} // namespace remoting + +#endif // REMOTING_BASE_PROTOBUF_HTTP_REQUEST_BASE_H_
diff --git a/remoting/base/protobuf_http_request_config.cc b/remoting/base/protobuf_http_request_config.cc new file mode 100644 index 0000000..0ad003e --- /dev/null +++ b/remoting/base/protobuf_http_request_config.cc
@@ -0,0 +1,22 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "remoting/base/protobuf_http_request_config.h" + +#include "third_party/protobuf/src/google/protobuf/message_lite.h" + +namespace remoting { + +ProtobufHttpRequestConfig::ProtobufHttpRequestConfig( + const net::NetworkTrafficAnnotationTag& traffic_annotation) + : traffic_annotation(traffic_annotation) {} + +ProtobufHttpRequestConfig::~ProtobufHttpRequestConfig() = default; + +void ProtobufHttpRequestConfig::Validate() const { + DCHECK(request_message); + DCHECK(!path.empty()); +} + +} // namespace remoting
diff --git a/remoting/base/protobuf_http_request_config.h b/remoting/base/protobuf_http_request_config.h new file mode 100644 index 0000000..d3df0fb --- /dev/null +++ b/remoting/base/protobuf_http_request_config.h
@@ -0,0 +1,39 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef REMOTING_BASE_PROTOBUF_HTTP_REQUEST_CONFIG_H_ +#define REMOTING_BASE_PROTOBUF_HTTP_REQUEST_CONFIG_H_ + +#include <memory> +#include <string> + +#include "net/traffic_annotation/network_traffic_annotation.h" + +namespace google { +namespace protobuf { +class MessageLite; +} // namespace protobuf +} // namespace google + +namespace remoting { + +// Common configurations for unary and stream protobuf http requests. Caller +// needs to set all fields in this struct. +struct ProtobufHttpRequestConfig { + explicit ProtobufHttpRequestConfig( + const net::NetworkTrafficAnnotationTag& traffic_annotation); + ~ProtobufHttpRequestConfig(); + + // Runs DCHECK's on the fields to make sure all fields have been set up. + void Validate() const; + + const net::NetworkTrafficAnnotationTag traffic_annotation; + std::unique_ptr<google::protobuf::MessageLite> request_message; + std::string path; + bool authenticated = true; +}; + +} // namespace remoting + +#endif // REMOTING_BASE_PROTOBUF_HTTP_REQUEST_CONFIG_H_
diff --git a/remoting/base/protobuf_http_status.cc b/remoting/base/protobuf_http_status.cc index 7ea57ee6..40e1532 100644 --- a/remoting/base/protobuf_http_status.cc +++ b/remoting/base/protobuf_http_status.cc
@@ -8,29 +8,88 @@ namespace remoting { -const ProtobufHttpStatus& ProtobufHttpStatus::OK = - ProtobufHttpStatus(net::HttpStatusCode::HTTP_OK); +namespace { -ProtobufHttpStatus::ProtobufHttpStatus(net::HttpStatusCode http_status_code) - : http_status_code_(http_status_code), - net_error_(net::Error::ERR_HTTP_RESPONSE_CODE_FAILURE), - error_message_(net::GetHttpReasonPhrase(http_status_code)) { - DCHECK_LE(0, http_status_code) << "Invalid http status code"; +ProtobufHttpStatus::Code HttpStatusCodeToClientCode( + net::HttpStatusCode http_status_code) { + DCHECK_LT(0, http_status_code); + switch (http_status_code) { + case net::HttpStatusCode::HTTP_OK: + return ProtobufHttpStatus::Code::OK; + case net::HttpStatusCode::HTTP_BAD_REQUEST: + return ProtobufHttpStatus::Code::INVALID_ARGUMENT; + case net::HttpStatusCode::HTTP_GATEWAY_TIMEOUT: + case net::HttpStatusCode::HTTP_REQUEST_TIMEOUT: + return ProtobufHttpStatus::Code::DEADLINE_EXCEEDED; + case net::HttpStatusCode::HTTP_NOT_FOUND: + return ProtobufHttpStatus::Code::NOT_FOUND; + case net::HttpStatusCode::HTTP_CONFLICT: + return ProtobufHttpStatus::Code::ALREADY_EXISTS; + case net::HttpStatusCode::HTTP_FORBIDDEN: + return ProtobufHttpStatus::Code::PERMISSION_DENIED; + case net::HttpStatusCode::HTTP_UNAUTHORIZED: + return ProtobufHttpStatus::Code::UNAUTHENTICATED; + case net::HttpStatusCode::HTTP_TOO_MANY_REQUESTS: + return ProtobufHttpStatus::Code::RESOURCE_EXHAUSTED; + case net::HttpStatusCode::HTTP_PRECONDITION_FAILED: + return ProtobufHttpStatus::Code::FAILED_PRECONDITION; + case net::HttpStatusCode::HTTP_NOT_IMPLEMENTED: + return ProtobufHttpStatus::Code::UNIMPLEMENTED; + case net::HttpStatusCode::HTTP_INTERNAL_SERVER_ERROR: + return ProtobufHttpStatus::Code::INTERNAL; + case net::HttpStatusCode::HTTP_SERVICE_UNAVAILABLE: + return ProtobufHttpStatus::Code::UNAVAILABLE; + default: + return ProtobufHttpStatus::Code::UNKNOWN; + } } -ProtobufHttpStatus::ProtobufHttpStatus(net::Error net_error) - : http_status_code_(-1), - net_error_(net_error), - error_message_(net::ErrorToString(net_error)) { - DCHECK_NE(net::Error::OK, net_error) << "Use the HttpStatusCode overload"; +ProtobufHttpStatus::Code NetErrorToClientCode(net::Error net_error) { + DCHECK_GT(0, net_error); DCHECK_NE(net::Error::ERR_HTTP_RESPONSE_CODE_FAILURE, net_error) << "Use the HttpStatusCode overload"; + switch (net_error) { + case net::Error::OK: + return ProtobufHttpStatus::Code::OK; + case net::Error::ERR_INVALID_ARGUMENT: + return ProtobufHttpStatus::Code::INVALID_ARGUMENT; + case net::Error::ERR_CONNECTION_TIMED_OUT: + case net::Error::ERR_TIMED_OUT: + return ProtobufHttpStatus::Code::DEADLINE_EXCEEDED; + case net::Error::ERR_INVALID_AUTH_CREDENTIALS: + return ProtobufHttpStatus::Code::PERMISSION_DENIED; + case net::Error::ERR_MISSING_AUTH_CREDENTIALS: + return ProtobufHttpStatus::Code::UNAUTHENTICATED; + case net::Error::ERR_NOT_IMPLEMENTED: + return ProtobufHttpStatus::Code::UNIMPLEMENTED; + case net::Error::ERR_INVALID_RESPONSE: + return ProtobufHttpStatus::Code::INTERNAL; + default: + return ProtobufHttpStatus::Code::UNKNOWN; + } } +} // namespace + +const ProtobufHttpStatus& ProtobufHttpStatus::OK = + ProtobufHttpStatus(Code::OK, "OK"); + +ProtobufHttpStatus::ProtobufHttpStatus(net::HttpStatusCode http_status_code) + : error_code_(HttpStatusCodeToClientCode(http_status_code)), + error_message_(net::GetHttpReasonPhrase(http_status_code)) {} + +ProtobufHttpStatus::ProtobufHttpStatus(net::Error net_error) + : error_code_(NetErrorToClientCode(net_error)), + error_message_(net::ErrorToString(net_error)) {} + +ProtobufHttpStatus::ProtobufHttpStatus(Code code, + const std::string& error_message) + : error_code_(code), error_message_(error_message) {} + ProtobufHttpStatus::~ProtobufHttpStatus() = default; bool ProtobufHttpStatus::ok() const { - return http_status_code_ == net::HttpStatusCode::HTTP_OK; + return error_code_ == Code::OK; } } // namespace remoting
diff --git a/remoting/base/protobuf_http_status.h b/remoting/base/protobuf_http_status.h index c75098a..f2399992 100644 --- a/remoting/base/protobuf_http_status.h +++ b/remoting/base/protobuf_http_status.h
@@ -14,30 +14,46 @@ class ProtobufHttpStatus { public: + // This is the same as the gRPC status code. + enum class Code : int { + OK = 0, + CANCELLED = 1, + UNKNOWN = 2, + INVALID_ARGUMENT = 3, + DEADLINE_EXCEEDED = 4, + NOT_FOUND = 5, + ALREADY_EXISTS = 6, + PERMISSION_DENIED = 7, + UNAUTHENTICATED = 16, + RESOURCE_EXHAUSTED = 8, + FAILED_PRECONDITION = 9, + ABORTED = 10, + OUT_OF_RANGE = 11, + UNIMPLEMENTED = 12, + INTERNAL = 13, + UNAVAILABLE = 14, + DATA_LOSS = 15, + }; + // An OK pre-defined instance. static const ProtobufHttpStatus& OK; explicit ProtobufHttpStatus(net::HttpStatusCode http_status_code); explicit ProtobufHttpStatus(net::Error net_error); + explicit ProtobufHttpStatus(Code code, const std::string& error_message); ~ProtobufHttpStatus(); // Indicates whether the http request was successful based on the status code. bool ok() const; - // The http status code, or -1 if the request fails to make, in which case - // the underlying error can be found by calling net_error(). - int http_status_code() const { return http_status_code_; } - - // The net error. If the error is ERR_HTTP_RESPONSE_CODE_FAILURE, the status - // code can be retrieved by calling http_status_code(). - net::Error net_error() const { return net_error_; } + // The instance's error code. + Code error_code() const { return error_code_; } // The message that describes the error. const std::string& error_message() const { return error_message_; } private: - int http_status_code_; - net::Error net_error_; + Code error_code_; std::string error_message_; };
diff --git a/remoting/base/protobuf_http_stream_parser.cc b/remoting/base/protobuf_http_stream_parser.cc new file mode 100644 index 0000000..a37ffc3 --- /dev/null +++ b/remoting/base/protobuf_http_stream_parser.cc
@@ -0,0 +1,163 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "remoting/base/protobuf_http_stream_parser.h" + +#include <string.h> + +#include "base/logging.h" +#include "net/base/io_buffer.h" +#include "remoting/base/protobuf_http_client_messages.pb.h" +#include "remoting/base/protobuf_http_status.h" +#include "third_party/protobuf/src/google/protobuf/io/coded_stream.h" +#include "third_party/protobuf/src/google/protobuf/wire_format_lite.h" + +namespace remoting { + +namespace { + +using ::google::protobuf::internal::WireFormatLite; + +constexpr int kReadBufferSpareCapacity = 512; + +} // namespace + +ProtobufHttpStreamParser::ProtobufHttpStreamParser( + const MessageCallback& message_callback, + StreamClosedCallback stream_closed_callback) + : message_callback_(message_callback), + stream_closed_callback_(std::move(stream_closed_callback)) { + DCHECK(message_callback_); + DCHECK(stream_closed_callback_); +} + +ProtobufHttpStreamParser::~ProtobufHttpStreamParser() = default; + +void ProtobufHttpStreamParser::Append(base::StringPiece data) { + int required_remaining_capacity = data.size() + kReadBufferSpareCapacity; + if (!read_buffer_) { + read_buffer_ = base::MakeRefCounted<net::GrowableIOBuffer>(); + read_buffer_->SetCapacity(required_remaining_capacity); + } else if (read_buffer_->RemainingCapacity() < required_remaining_capacity) { + read_buffer_->SetCapacity(read_buffer_->offset() + + required_remaining_capacity); + } + + DCHECK_GE(read_buffer_->RemainingCapacity(), static_cast<int>(data.size())); + memcpy(read_buffer_->data(), data.data(), data.size()); + read_buffer_->set_offset(read_buffer_->offset() + data.size()); + + ParseStreamIfAvailable(); +} + +bool ProtobufHttpStreamParser::HasPendingData() const { + return read_buffer_ && read_buffer_->offset() > 0; +} + +void ProtobufHttpStreamParser::ParseStreamIfAvailable() { + DCHECK(read_buffer_); + + google::protobuf::io::CodedInputStream input_stream( + reinterpret_cast<const uint8_t*>(read_buffer_->StartOfBuffer()), + read_buffer_->offset()); + int bytes_consumed = 0; + auto weak_this = weak_factory_.GetWeakPtr(); + // We can't use StreamBody::ParseFromString() here, as it can't do partial + // parsing, nor can it tell how many bytes are consumed. + while (bytes_consumed < read_buffer_->offset()) { + bool is_successful = ParseOneField(&input_stream); + if (!weak_this) { + // The callback might have deleted |this|, in which case we need to + // carefully return without touching any member of |this|. + return; + } + if (is_successful) { + // Only update |bytes_consumed| if the whole field is decoded. + // |input_stream| can still advance when the field is not decodable. + bytes_consumed = input_stream.CurrentPosition(); + } else { + // The stream data can't be fully decoded yet. + break; + } + } + + if (bytes_consumed == 0) { + return; + } + CHECK_LE(bytes_consumed, read_buffer_->offset()); + int bytes_not_consumed = read_buffer_->offset() - bytes_consumed; + memmove(read_buffer_->StartOfBuffer(), + read_buffer_->StartOfBuffer() + bytes_consumed, bytes_not_consumed); + read_buffer_->set_offset(bytes_not_consumed); +} + +bool ProtobufHttpStreamParser::ParseOneField( + google::protobuf::io::CodedInputStream* input_stream) { + // Note that the StreamBody definition is only significant in its tag ID + // allocations for "messages" and "status". There isn't any clear boundary + // between two StreamBody instances. + // + // A typical stream looks like: + // + // [message tag] <length> <message> [message tag] <length> <message> ... + // [status tag] <status> EOF + // + // Stream data failing to comply with this format usually means more data is + // needed. + + uint32_t message_tag = input_stream->ReadTag(); + if (message_tag == 0) { + VLOG(1) << "Can't read message tag yet."; + return false; + } + + WireFormatLite::WireType wire_type = + WireFormatLite::GetTagWireType(message_tag); + int field_number = WireFormatLite::GetTagFieldNumber(message_tag); + switch (field_number) { + case protobufhttpclient::StreamBody::kMessagesFieldNumber: { + DCHECK_EQ(WireFormatLite::WireType::WIRETYPE_LENGTH_DELIMITED, wire_type); + std::string message; + if (!WireFormatLite::ReadBytes(input_stream, &message)) { + VLOG(1) << "Can't read stream message yet."; + return false; + } + VLOG(1) << "Stream message decoded."; + message_callback_.Run(message); + break; + } + + case protobufhttpclient::StreamBody::kStatusFieldNumber: { + DCHECK_EQ(WireFormatLite::WireType::WIRETYPE_LENGTH_DELIMITED, wire_type); + protobufhttpclient::Status status; + if (!WireFormatLite::ReadMessage(input_stream, &status)) { + VLOG(1) << "Can't read status yet."; + return false; + } + VLOG(1) << "Client status decoded."; + ProtobufHttpStatus client_status( + static_cast<ProtobufHttpStatus::Code>(status.code()), + status.message()); + std::move(stream_closed_callback_).Run(client_status); + break; + } + + default: + if (field_number == protobufhttpclient::StreamBody::kNoopFieldNumber) { + VLOG(1) << "Found noop field."; + } else { + LOG(WARNING) << "Skipping unrecognized StreamBody field: " + << field_number + << ", wire type: " << static_cast<int>(wire_type); + } + if (!WireFormatLite::SkipField(input_stream, message_tag)) { + VLOG(1) << "Can't skip the field yet."; + return false; + } + break; + } + return true; +} + +} // namespace remoting
diff --git a/remoting/base/protobuf_http_stream_parser.h b/remoting/base/protobuf_http_stream_parser.h new file mode 100644 index 0000000..fb759a9 --- /dev/null +++ b/remoting/base/protobuf_http_stream_parser.h
@@ -0,0 +1,65 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef REMOTING_BASE_PROTOBUF_HTTP_STREAM_PARSER_H_ +#define REMOTING_BASE_PROTOBUF_HTTP_STREAM_PARSER_H_ + +#include "base/callback.h" +#include "base/memory/scoped_refptr.h" +#include "base/memory/weak_ptr.h" +#include "base/strings/string_piece_forward.h" + +namespace google { +namespace protobuf { +namespace io { +class CodedInputStream; +} // namespace io +} // namespace protobuf +} // namespace google + +namespace net { +class GrowableIOBuffer; +} // namespace net + +namespace remoting { + +class ProtobufHttpStatus; + +// Class to parse incoming stream data wrapped with a StreamBody protobuf +// message. +class ProtobufHttpStreamParser final { + public: + using MessageCallback = base::RepeatingCallback<void(const std::string&)>; + using StreamClosedCallback = + base::OnceCallback<void(const ProtobufHttpStatus&)>; + + ProtobufHttpStreamParser(const MessageCallback& message_callback, + StreamClosedCallback stream_closed_callback); + ~ProtobufHttpStreamParser(); + + ProtobufHttpStreamParser(const ProtobufHttpStreamParser&) = delete; + ProtobufHttpStreamParser& operator=(const ProtobufHttpStreamParser&) = delete; + + // Appends the stream data (which should be the partial or full serialized + // StreamBody) and runs callbacks if there is something decodable. + void Append(base::StringPiece data); + + // Indicates whether the parser has pending data that needs more input to + // complete a StreamBody message. + bool HasPendingData() const; + + private: + void ParseStreamIfAvailable(); + bool ParseOneField(google::protobuf::io::CodedInputStream* input_stream); + + MessageCallback message_callback_; + StreamClosedCallback stream_closed_callback_; + scoped_refptr<net::GrowableIOBuffer> read_buffer_; + + base::WeakPtrFactory<ProtobufHttpStreamParser> weak_factory_{this}; +}; + +} // namespace remoting + +#endif // REMOTING_BASE_PROTOBUF_HTTP_STREAM_PARSER_H_
diff --git a/remoting/base/protobuf_http_stream_parser_unittest.cc b/remoting/base/protobuf_http_stream_parser_unittest.cc new file mode 100644 index 0000000..35e1233 --- /dev/null +++ b/remoting/base/protobuf_http_stream_parser_unittest.cc
@@ -0,0 +1,129 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "remoting/base/protobuf_http_stream_parser.h" + +#include <memory> +#include <string> + +#include "base/test/mock_callback.h" +#include "remoting/base/protobuf_http_client_messages.pb.h" +#include "remoting/base/protobuf_http_status.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace remoting { + +namespace { + +using ::testing::_; + +constexpr char kFirstTestMessage[] = "This is the first message."; +constexpr char kSecondTestMessage[] = "This is the second message."; +constexpr char kThirdTestMessage[] = "This is the third message."; + +MATCHER(IsCancelStatus, "") { + return arg.error_code() == ProtobufHttpStatus::Code::CANCELLED && + arg.error_message() == "Cancelled"; +} + +protobufhttpclient::StreamBody CreateDefaultStream() { + protobufhttpclient::StreamBody stream_body; + stream_body.add_messages(kFirstTestMessage); + stream_body.add_messages(kSecondTestMessage); + stream_body.add_messages(kThirdTestMessage); + return stream_body; +} + +std::string CreateDefaultStreamData() { + return CreateDefaultStream().SerializeAsString(); +} + +void SplitStringInMiddle(const std::string& input, + std::string* str_1, + std::string* str_2) { + size_t message_split_pos = input.size() / 2; + *str_1 = input.substr(0, message_split_pos); + *str_2 = input.substr(message_split_pos); +} + +} // namespace + +class ProtobufHttpStreamParserTest : public testing::Test { + protected: + void ExpectReceiveDefaultStreamData(); + + base::MockCallback<ProtobufHttpStreamParser::MessageCallback> + message_callback_; + base::MockCallback<ProtobufHttpStreamParser::StreamClosedCallback> + stream_closed_callback_; + ProtobufHttpStreamParser stream_parser_{message_callback_.Get(), + stream_closed_callback_.Get()}; +}; + +void ProtobufHttpStreamParserTest::ExpectReceiveDefaultStreamData() { + EXPECT_CALL(message_callback_, Run(kFirstTestMessage)); + EXPECT_CALL(message_callback_, Run(kSecondTestMessage)); + EXPECT_CALL(message_callback_, Run(kThirdTestMessage)); +} + +TEST_F(ProtobufHttpStreamParserTest, ParseStreamBodyInOneShot) { + ExpectReceiveDefaultStreamData(); + + ASSERT_FALSE(stream_parser_.HasPendingData()); + stream_parser_.Append(CreateDefaultStreamData()); + ASSERT_FALSE(stream_parser_.HasPendingData()); +} + +TEST_F(ProtobufHttpStreamParserTest, ParseSplitStreamBody) { + ExpectReceiveDefaultStreamData(); + + std::string stream_data = CreateDefaultStreamData(); + std::string data_1, data_2; + SplitStringInMiddle(stream_data, &data_1, &data_2); + stream_parser_.Append(data_1); + ASSERT_TRUE(stream_parser_.HasPendingData()); + stream_parser_.Append(data_2); + ASSERT_FALSE(stream_parser_.HasPendingData()); +} + +TEST_F(ProtobufHttpStreamParserTest, CloseStreamWithCancelled) { + EXPECT_CALL(stream_closed_callback_, Run(IsCancelStatus())); + + protobufhttpclient::StreamBody stream_body; + stream_body.mutable_status()->set_code( + static_cast<int>(ProtobufHttpStatus::Code::CANCELLED)); + stream_body.mutable_status()->set_message("Cancelled"); + stream_parser_.Append(stream_body.SerializeAsString()); +} + +TEST_F(ProtobufHttpStreamParserTest, ParseStreamBodyWithNoops_NoopsIgnored) { + ExpectReceiveDefaultStreamData(); + + protobufhttpclient::StreamBody stream_body = CreateDefaultStream(); + stream_body.add_noop("111111111111111"); + stream_body.add_noop("111111111111111"); + stream_body.add_noop("111111111111111"); + + stream_parser_.Append(stream_body.SerializeAsString()); + ASSERT_FALSE(stream_parser_.HasPendingData()); +} + +TEST_F(ProtobufHttpStreamParserTest, + ParseSplitStreamBodyWithOnlyNoops_NoopsIgnored) { + protobufhttpclient::StreamBody stream_body; + stream_body.add_noop("111111111111111"); + stream_body.add_noop("111111111111111"); + stream_body.add_noop("111111111111111"); + std::string stream_data = stream_body.SerializeAsString(); + std::string data_1, data_2; + SplitStringInMiddle(stream_data, &data_1, &data_2); + + stream_parser_.Append(data_1); + ASSERT_TRUE(stream_parser_.HasPendingData()); + stream_parser_.Append(data_2); + ASSERT_FALSE(stream_parser_.HasPendingData()); +} + +} // namespace remoting
diff --git a/remoting/base/protobuf_http_stream_request.cc b/remoting/base/protobuf_http_stream_request.cc new file mode 100644 index 0000000..a206b19 --- /dev/null +++ b/remoting/base/protobuf_http_stream_request.cc
@@ -0,0 +1,97 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "remoting/base/protobuf_http_stream_request.h" + +#include "base/bind.h" +#include "base/logging.h" +#include "remoting/base/protobuf_http_client.h" +#include "remoting/base/protobuf_http_request_config.h" +#include "remoting/base/protobuf_http_status.h" +#include "remoting/base/protobuf_http_stream_parser.h" +#include "services/network/public/cpp/simple_url_loader.h" +#include "third_party/protobuf/src/google/protobuf/message_lite.h" + +namespace remoting { + +ProtobufHttpStreamRequest::ProtobufHttpStreamRequest( + std::unique_ptr<ProtobufHttpRequestConfig> config) + : ProtobufHttpRequestBase(std::move(config)) {} + +ProtobufHttpStreamRequest::~ProtobufHttpStreamRequest() = default; + +void ProtobufHttpStreamRequest::SetStreamReadyCallback( + base::OnceClosure callback) { + stream_ready_callback_ = std::move(callback); +} + +void ProtobufHttpStreamRequest::SetStreamClosedCallback( + StreamClosedCallback callback) { + stream_closed_callback_ = std::move(callback); +} + +void ProtobufHttpStreamRequest::OnMessage(const std::string& message) { + std::unique_ptr<google::protobuf::MessageLite> protobuf_message( + default_message_->New()); + if (protobuf_message->ParseFromString(message)) { + message_callback_.Run(std::move(protobuf_message)); + } else { + LOG(ERROR) << "Failed to parse a stream message."; + } +} + +void ProtobufHttpStreamRequest::OnStreamClosed( + const ProtobufHttpStatus& status) { + DCHECK(stream_closed_callback_); + DCHECK(invalidator_); + + std::move(stream_closed_callback_).Run(status); + std::move(invalidator_).Run(); +} + +void ProtobufHttpStreamRequest::OnAuthFailed(const ProtobufHttpStatus& status) { + OnStreamClosed(status); +} + +void ProtobufHttpStreamRequest::StartRequestInternal( + network::mojom::URLLoaderFactory* loader_factory) { + DCHECK(default_message_); + DCHECK(stream_ready_callback_); + DCHECK(stream_closed_callback_); + DCHECK(message_callback_); + + // Safe to use unretained, as callbacks won't be called after |stream_parser_| + // is deleted. + stream_parser_ = std::make_unique<ProtobufHttpStreamParser>( + base::BindRepeating(&ProtobufHttpStreamRequest::OnMessage, + base::Unretained(this)), + base::BindRepeating(&ProtobufHttpStreamRequest::OnStreamClosed, + base::Unretained(this))); + url_loader_->DownloadAsStream(loader_factory, this); +} + +base::TimeDelta ProtobufHttpStreamRequest::GetRequestTimeoutDuration() const { + return base::TimeDelta(); +} + +void ProtobufHttpStreamRequest::OnDataReceived(base::StringPiece string_piece, + base::OnceClosure resume) { + if (stream_ready_callback_) { + std::move(stream_ready_callback_).Run(); + } + + DCHECK(stream_parser_); + stream_parser_->Append(string_piece); + std::move(resume).Run(); +} + +void ProtobufHttpStreamRequest::OnComplete(bool success) { + OnStreamClosed(success ? ProtobufHttpStatus::OK : GetUrlLoaderStatus()); +} + +void ProtobufHttpStreamRequest::OnRetry(base::OnceClosure start_retry) { + NOTIMPLEMENTED(); +} + +} // namespace remoting
diff --git a/remoting/base/protobuf_http_stream_request.h b/remoting/base/protobuf_http_stream_request.h new file mode 100644 index 0000000..3049abd --- /dev/null +++ b/remoting/base/protobuf_http_stream_request.h
@@ -0,0 +1,96 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef REMOTING_BASE_PROTOBUF_HTTP_STREAM_REQUEST_H_ +#define REMOTING_BASE_PROTOBUF_HTTP_STREAM_REQUEST_H_ + +#include "base/bind.h" +#include "base/callback.h" +#include "base/memory/weak_ptr.h" +#include "remoting/base/protobuf_http_request_base.h" +#include "services/network/public/cpp/simple_url_loader_stream_consumer.h" + +namespace google { +namespace protobuf { +class MessageLite; +} // namespace protobuf +} // namespace google + +namespace remoting { + +class ProtobufHttpClient; +class ProtobufHttpStatus; +class ProtobufHttpStreamParser; + +// A server streaming request. +class ProtobufHttpStreamRequest final + : public ProtobufHttpRequestBase, + public network::SimpleURLLoaderStreamConsumer { + public: + template <typename MessageType> + using MessageCallback = + base::RepeatingCallback<void(std::unique_ptr<MessageType> message)>; + using StreamClosedCallback = + base::OnceCallback<void(const ProtobufHttpStatus& status)>; + + explicit ProtobufHttpStreamRequest( + std::unique_ptr<ProtobufHttpRequestConfig> config); + ~ProtobufHttpStreamRequest() override; + + // Sets a callback that gets called when the stream is ready to receive data. + void SetStreamReadyCallback(base::OnceClosure callback); + + // Sets a callback that gets called when the stream is closed. + void SetStreamClosedCallback(StreamClosedCallback callback); + + // Sets the callback to be called every time a new message is received. + // |MessageType| needs to be a protobuf message type. + template <typename MessageType> + void SetMessageCallback(const MessageCallback<MessageType>& callback) { + default_message_ = &MessageType::default_instance(); + message_callback_ = base::BindRepeating( + [](MessageCallback<MessageType> callback, + std::unique_ptr<google::protobuf::MessageLite> generic_message) { + std::move(callback).Run(std::unique_ptr<MessageType>( + static_cast<MessageType*>(generic_message.release()))); + }, + callback); + } + + // TODO(yuweih): Consider adding an option to set timeout for + // |stream_ready_callback_|. + + private: + friend class ProtobufHttpClient; + + // ProtobufHttpStreamParser callbacks. + void OnMessage(const std::string& message); + void OnStreamClosed(const ProtobufHttpStatus& status); + + // ProtobufHttpRequestBase implementations. + void OnAuthFailed(const ProtobufHttpStatus& status) override; + void StartRequestInternal( + network::mojom::URLLoaderFactory* loader_factory) override; + base::TimeDelta GetRequestTimeoutDuration() const override; + + // network::SimpleURLLoaderStreamConsumer implementations. + void OnDataReceived(base::StringPiece string_piece, + base::OnceClosure resume) override; + void OnComplete(bool success) override; + void OnRetry(base::OnceClosure start_retry) override; + + // Used to create new response message instances. + const google::protobuf::MessageLite* default_message_; + + std::unique_ptr<ProtobufHttpStreamParser> stream_parser_; + + base::OnceClosure stream_ready_callback_; + StreamClosedCallback stream_closed_callback_; + base::RepeatingCallback<void(std::unique_ptr<google::protobuf::MessageLite>)> + message_callback_; +}; + +} // namespace remoting + +#endif // REMOTING_BASE_PROTOBUF_HTTP_STREAM_REQUEST_H_
diff --git a/sandbox/policy/fuchsia/sandbox_policy_fuchsia.cc b/sandbox/policy/fuchsia/sandbox_policy_fuchsia.cc index d7c3c4f..d3d3949 100644 --- a/sandbox/policy/fuchsia/sandbox_policy_fuchsia.cc +++ b/sandbox/policy/fuchsia/sandbox_policy_fuchsia.cc
@@ -75,7 +75,7 @@ // and kCloneJob |features| themselves. However, they must be granted // all of the other features to delegate to child processes. kCloneJob | kProvideVulkanResources | kProvideSslConfig | - kAmbientMarkVmoAsExecutable | kUseServiceDirectoryOverride, + kUseServiceDirectoryOverride, }; constexpr SandboxConfig kGpuConfig = { @@ -269,15 +269,24 @@ ZX_CHECK(status == ZX_OK, status) << "zx_job_create"; options->job_handle = job_.get(); - // Do not allow ambient VMO mark-as-executable capability to be inherited - // by processes that do not need to JIT (i.e. do not run V8/WASM). - if (!(config->features & kAmbientMarkVmoAsExecutable)) { - zx_policy_basic_v2_t deny_ambient_mark_vmo_exec{ - ZX_POL_AMBIENT_MARK_VMO_EXEC, ZX_POL_ACTION_KILL, ZX_POL_OVERRIDE_DENY}; - status = job_.set_policy(ZX_JOB_POL_RELATIVE, ZX_JOB_POL_BASIC_V2, - &deny_ambient_mark_vmo_exec, 1); - ZX_CHECK(status == ZX_OK, status) << "zx_job_set_policy"; - } + // Only allow ambient VMO mark-as-executable capability to be granted + // to processes that which need to JIT (i.e. do not run V8/WASM). + zx_policy_basic_v2_t ambient_mark_vmo_exec{ + ZX_POL_AMBIENT_MARK_VMO_EXEC, + + // Kill processes which attempt to execute writable VMOs but lack the + // right to do so. + (config->features & kAmbientMarkVmoAsExecutable) ? ZX_POL_ACTION_ALLOW + : ZX_POL_ACTION_KILL, + + // Only grant spawn-capable processes, such as the browser process, the + // ability to override the execution policy. + (config->features & kCloneJob) ? ZX_POL_OVERRIDE_ALLOW + : ZX_POL_OVERRIDE_DENY}; + + status = job_.set_policy(ZX_JOB_POL_ABSOLUTE, ZX_JOB_POL_BASIC_V2, + &ambient_mark_vmo_exec, 1); + ZX_CHECK(status == ZX_OK, status) << "zx_job_set_policy"; } } // namespace policy
diff --git a/sandbox/win/BUILD.gn b/sandbox/win/BUILD.gn index 952e8b0..ba4adf2 100644 --- a/sandbox/win/BUILD.gn +++ b/sandbox/win/BUILD.gn
@@ -217,7 +217,6 @@ "tests/common/controller.h", "tests/common/test_utils.cc", "tests/common/test_utils.h", - "tests/integration_tests/cfi_unittest.cc", "tests/integration_tests/integration_tests.cc", "tests/integration_tests/integration_tests_common.h", "tests/integration_tests/integration_tests_test.cc", @@ -231,7 +230,6 @@ ] data_deps = [ - ":cfi_unittest_exe", ":sbox_integration_test_hijack_dll", ":sbox_integration_test_hijack_shim_dll", ":sbox_integration_test_hooking_dll", @@ -241,14 +239,6 @@ libs = [ "dxva2.lib" ] } -executable("cfi_unittest_exe") { - sources = [ "tests/integration_tests/cfi_unittest_exe.cc" ] - deps = [ - "//base", - "//build/win:default_exe_manifest", - ] -} - shared_library("sbox_integration_test_hijack_dll") { sources = [ "tests/integration_tests/hijack_dll.cc",
diff --git a/sandbox/win/src/sandbox_policy_diagnostic.cc b/sandbox/win/src/sandbox_policy_diagnostic.cc index d0c6c67..ddaccf7 100644 --- a/sandbox/win/src/sandbox_policy_diagnostic.cc +++ b/sandbox/win/src/sandbox_policy_diagnostic.cc
@@ -15,7 +15,9 @@ #include "base/check.h" #include "base/json/json_string_value_serializer.h" #include "base/numerics/safe_conversions.h" +#include "base/strings/string_util.h" #include "base/strings/stringprintf.h" +#include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "sandbox/win/src/ipc_tags.h" #include "sandbox/win/src/policy_engine_opcodes.h" @@ -98,8 +100,8 @@ } } -base::string16 GetSidAsString(const Sid* sid) { - base::string16 result; +std::wstring GetSidAsString(const Sid* sid) { + std::wstring result; if (!sid->ToSddlString(&result)) DCHECK(false) << "Failed to make sddl string"; return result; @@ -432,11 +434,14 @@ base::Value(GetPlatformMitigationsAsHex(desired_mitigations_))); if (app_container_sid_) - value.SetKey(kAppContainerSid, - base::Value(GetSidAsString(app_container_sid_.get()))); + value.SetStringKey( + kAppContainerSid, + base::AsStringPiece16(GetSidAsString(app_container_sid_.get()))); - if (lowbox_sid_) - value.SetKey(kLowboxSid, base::Value(GetSidAsString(lowbox_sid_.get()))); + if (lowbox_sid_) { + value.SetStringKey( + kLowboxSid, base::AsStringPiece16(GetSidAsString(lowbox_sid_.get()))); + } if (policy_rules_) value.SetKey(kPolicyRules, GetPolicyRules(policy_rules_.get()));
diff --git a/sandbox/win/tests/integration_tests/cfi_unittest.cc b/sandbox/win/tests/integration_tests/cfi_unittest.cc deleted file mode 100644 index 3dd6e59..0000000 --- a/sandbox/win/tests/integration_tests/cfi_unittest.cc +++ /dev/null
@@ -1,53 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -#include <windows.h> - -#include "base/command_line.h" -#include "base/files/file_util.h" -#include "base/process/launch.h" -#include "base/test/test_timeouts.h" -#include "base/win/windows_version.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace sandbox { -// ASLR must be enabled for CFG to be enabled. As ASLR is disabled in debug -// builds, so must be CFG. -#if defined(NDEBUG) - -// Make sure Microsoft binaries, that are compiled with CFG enabled, catch -// a hook and throw an exception. -// - If this test fails, the expected CFG exception did NOT happen. This -// indicates a build system change that has disabled Chrome process-wide CFG. -TEST(CFGSupportTests, DISABLED_MsIndirectFailure) { - // CFG is only supported on >= Win8.1 Update 3. - // Not checking for update, since test infra is updated and it would add - // a lot of complexity. - if (base::win::GetVersion() < base::win::Version::WIN8_1) - return; - - const wchar_t* exe_filename = L"cfi_unittest_exe.exe"; - const wchar_t* sys_dll_test = L"1"; - - base::CommandLine cmd_line = base::CommandLine::FromString(exe_filename); - cmd_line.AppendArgNative(sys_dll_test); - - base::Process proc = - base::LaunchProcess(cmd_line, base::LaunchOptionsForTest()); - ASSERT_TRUE(proc.IsValid()); - - int exit_code = 0; - if (!proc.WaitForExitWithTimeout(TestTimeouts::action_timeout(), - &exit_code)) { - // Timeout while waiting. Try to cleanup. - proc.Terminate(1, false); - ADD_FAILURE(); - return; - } - - // CFG security check failure. - ASSERT_EQ(STATUS_STACK_BUFFER_OVERRUN, static_cast<DWORD>(exit_code)); -} - -#endif // defined(NDEBUG) -} // namespace sandbox
diff --git a/sandbox/win/tests/integration_tests/cfi_unittest_exe.cc b/sandbox/win/tests/integration_tests/cfi_unittest_exe.cc deleted file mode 100644 index 3b9d6b8..0000000 --- a/sandbox/win/tests/integration_tests/cfi_unittest_exe.cc +++ /dev/null
@@ -1,299 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -#include <windows.h> - -#include "base/check.h" -#include "base/files/file_path.h" -#include "base/scoped_native_library.h" - -namespace { - -//------------------------------------------------------------------------------ -// PRIVATE: Control Flow Guard test things -// - MS binary indirect call tests. -//------------------------------------------------------------------------------ - -// These structures hold chunks of binary. No padding wanted. -#pragma pack(push, 1) - -#if defined(_WIN64) - -const USHORT kCmpRsi = 0x3B48; -const BYTE kRax = 0xF0; -const USHORT kJzLoc = 0x0074; -const ULONG kMovRcxRsiCall = 0xFFCE8B48; -const BYTE kPadding = 0x00; -const ULONG kMovEcxEbxCallRsi = 0xD6FFCB8B; - -const ULONG kMovRcxRsiAdd = 0x48CE8B48; -const ULONG kRcx10hNop = 0x9010C183; - -// Sequence of bytes in GetSystemMetrics. -struct Signature { - // This struct contains roughly the following code: - // cmp rsi, rax - // jz jmp_addr - // mov rcx, rsi - // call ULONG_addr <-- CFG check function - // mov ecx, ebx - // call rsi <-- Actual call to GetSystemMetrics - - // Patch will start here and be 8 bytes. - USHORT cmp_rsi; // = 48 3B - BYTE rax; // = F0 - USHORT jz_loc; // = 74 XX - ULONG mov_rcx_rsi_call; // = 48 8B CE FF - ULONG guard_check_icall_fptr; // = XX XX XX XX - BYTE padding; // = 00 - ULONG mov_ecx_ebx_call_rsi; // = 8B CB FF D6 -}; - -struct Patch { - // Just add 16 to the existing function address. - // This ensures a 16-byte aligned address that is - // definitely not a valid function address. - // mov rcx, rsi = 48 4B CE - // add rcx, 10h = 48 83 C1 10 - // nop = 90 - ULONG first_four_bytes; // = 48 4B CE 48 - ULONG second_four_bytes; // = 83 C1 10 90 -}; - -#else // x86 - -const USHORT kCmpEbx = 0x0081; -const USHORT kJzLoc = 0x0074; -const ULONG kMovEcxEbxCall = 0x15FFCB8B; -const USHORT kCallEbx = 0xD3FF; - -const ULONG kMovEcxEbxAddEcx = 0xC183CB8B; -const ULONG k16Nops = 0x90909010; -const USHORT kTwoNops = 0x9090; - -// Sequence of bytes in GetSystemMetrics, x86. -struct Signature { - // This struct contains roughly the following code: - // cmp ebx, offset - // jz jmp_addr - // mov ecx, ebx - // call ULONG_addr <-- CFG check function - // call ebx <-- Actual call to GetSystemMetrics - - // Patch will start here and be 10 bytes. - USHORT cmp_ebx; // = 81 XX - ULONG addr; // = XX XX XX XX - USHORT jz_loc; // = 74 XX - ULONG mov_ecx_ebx_call; // = 8B CB FF 15 - ULONG guard_check_icall_fptr; // = XX XX XX XX - USHORT call_ebx; // = FF D3 -}; - -struct Patch { - // Just add 16 to the existing function address. - // This ensures a 16-byte aligned address that is - // definitely not a valid function address. - // mov ecx, ebx = 8B CB - // add ecx, 10h = 83 C1 10 90 - // nop = 90 90 90 90 - ULONG first_four_bytes; // = 8B CB 83 C1 - ULONG second_four_bytes; // = 10 90 90 90 - USHORT last_two_bytes; // = 90 90 -}; - -#endif // _WIN64 - -#pragma pack(pop) -//------------------------------------------------------------------------------ - -// - Search binary starting at |address_start| for a matching chunk of -// |binary_to_find|, of size |size_to_match|. -// - A byte of value 0 in |binary_to_find|, is a wildcard for anything. -// - Give a |max_distance| to find the chunk within, before failing. -// - If return value is true, |out_offset| will hold the offset from -// |address_start| that the match starts. -bool FindBinary(BYTE* binary_to_find, - DWORD size_to_match, - BYTE* address_start, - DWORD max_distance, - intptr_t* out_offset) { - DCHECK(size_to_match <= max_distance); - DCHECK(size_to_match > 0); - - BYTE* max_byte = address_start + max_distance - size_to_match; - BYTE* temp_ptr = address_start; - // Yes, it's a double while loop. - while (temp_ptr <= max_byte) { - size_t i = 0; - // 0 is a wildcard match. - while (binary_to_find[i] == 0 || temp_ptr[i] == binary_to_find[i]) { - // Check if this is the last byte. - if (i == size_to_match - 1) { - *out_offset = temp_ptr - address_start; - return true; - } - ++i; - } - ++temp_ptr; - } - - return false; -} - -// - Will write patch starting at |start_addr| with the patch for x86 -// or x64. -// - This function is only for writes within this process. -bool DoPatch(BYTE* start_addr) { - Patch patch = {}; -#if defined(_WIN64) - patch.first_four_bytes = kMovRcxRsiAdd; - patch.second_four_bytes = kRcx10hNop; -#else // x86 - patch.first_four_bytes = kMovEcxEbxAddEcx; - patch.second_four_bytes = k16Nops; - patch.last_two_bytes = kTwoNops; -#endif // _WIN64 - - DWORD old_protection; - // PAGE_WRITECOPY explicitly allows "copy-on-write" behaviour for - // system DLL patches. - if (!::VirtualProtect(start_addr, sizeof(patch), PAGE_WRITECOPY, - &old_protection)) - return false; - - ::memcpy(start_addr, &patch, sizeof(patch)); - ::VirtualProtect(start_addr, sizeof(patch), old_protection, &old_protection); - - return true; -} - -// - Find the offset from |start| that the x86 or x64 signature starts. -bool FindSignature(BYTE* start, intptr_t* offset_found) { - Signature signature = {}; -#if defined(_WIN64) - signature.cmp_rsi = kCmpRsi; - signature.rax = kRax; - signature.jz_loc = kJzLoc; - signature.mov_rcx_rsi_call = kMovRcxRsiCall; - signature.padding = kPadding; - signature.mov_ecx_ebx_call_rsi = kMovEcxEbxCallRsi; - - // This is far enough into GetSystemMetrics that the signature should - // have been found. See disassembly. - DWORD max_area = 0xB0; -#else // x86 - signature.cmp_ebx = kCmpEbx; - signature.jz_loc = kJzLoc; - signature.mov_ecx_ebx_call = kMovEcxEbxCall; - signature.call_ebx = kCallEbx; - - // This is far enough into GetSystemMetrics x86 that the signature should - // have been found. See disassembly. - DWORD max_area = 0xD9; -#endif // _WIN64 - if (!FindBinary(reinterpret_cast<BYTE*>(&signature), sizeof(signature), start, - max_area, offset_found)) - return false; - - return true; -} - -// - This function tests for CFG in MS system binaries, in process. -// -// A few words about the patching for this test: -// -// - In both x86 and x64, the function FindSignature() will scan -// GetSystemMetrics in user32.dll, to find the ideal place chosen -// for this test. It's a spot where a CFG check was compiled into -// a Microsoft system DLL. For more visualization, open user32.dll -// in IDA to follow along (especially if planning to change this test). -// -// - The CFG security check basically calls __guard_check_icall_fptr, with -// the function address about to be called as the argument in EAX/RAX reg. -// If the address is not in the process' "valid indirect call bitmap", a -// CFG exception will be thrown. -// -// - The DoPatch() function then overwrites with a small, custom change. This -// change will simply add 16 (0x10) to the real function address in EAX/RAX -// about to be checked. This will maintain the 16-byte alignment required in -// a target address by CFG, but also ensure that it fails the check. -// -// The whole purpose of this unittest is to ensure that a failed CFG check in -// a Microsoft binary results in an exception. If CFG is not properly -// enabled for a process, no exception will be thrown. -// All Chromium projects should be linked with "common_linker_setup" config -// (build\config\win\BUILD.gn), which should result in CFG enabled on the -// process. -// -// - The patches (x86 or x64) were carefully constructed to be valid and not -// mess up the executing instructions. Need to ensure that the CFG check -// fully happens, and that nothing else goes wrong before OR AFTER that -// point. The only exception expected is a very intentional one. -// **The patches also allow the call to GetSystemMetrics to SUCCEED if CFG is -// NOT enabled for the process! This makes for very clear behaviour. -void TestMsIndirect() { - base::ScopedNativeLibrary user32(base::FilePath(L"user32.dll")); - if (!user32.is_valid()) - _exit(1); - - using GetSystemMetricsFunction = decltype(&::GetSystemMetrics); - GetSystemMetricsFunction get_system_metrics = - reinterpret_cast<GetSystemMetricsFunction>( - user32.GetFunctionPointer("GetSystemMetrics")); - if (!get_system_metrics) - _exit(2); - - // Sanity check the function works fine pre-patch. Tests should only be - // running from normal boot (0). - if (0 != get_system_metrics(SM_CLEANBOOT)) - _exit(3); - - BYTE* target = reinterpret_cast<BYTE*>(get_system_metrics); - intptr_t offset = 0; - if (!FindSignature(target, &offset)) - _exit(4); - - if (offset < 0) - _exit(6); - - // Now patch the function. Don't bother saving original code, - // as this process will end very soon. - if (!DoPatch(target + offset)) - _exit(5); - - // Call the patched function! - get_system_metrics(SM_CLEANBOOT); -} - -} // namespace - -//------------------------------------------------------------------------------ -// PUBLIC -//------------------------------------------------------------------------------ - -// Good ol' main. -// - Exe exits with non-zero return codes for unexpected errors. -// - Return code of zero indicates no issues at all. -// - Else, a CFG exception will result in the process being destroyed. -int main(int argc, char** argv) { - if (argc != 2) - _exit(-1); - - const char* arg = argv[1]; - - int iarg = ::atoi(arg); - if (!iarg) - _exit(-1); - - switch (iarg) { - // kSysDllTest - case 1: - TestMsIndirect(); - break; - // Unsupported argument. - default: - _exit(-1); - } - - return 0; -}
diff --git a/services/media_session/audio_focus_request.cc b/services/media_session/audio_focus_request.cc index a304a722..b334675 100644 --- a/services/media_session/audio_focus_request.cc +++ b/services/media_session/audio_focus_request.cc
@@ -125,13 +125,14 @@ return; was_suspended_ = false; - session_->Resume(mojom::MediaSession::SuspendType::kSystem); - if (!delayed_action_) + if (delayed_action_) { + PerformUIAction(*delayed_action_); + delayed_action_.reset(); return; + } - PerformUIAction(*delayed_action_); - delayed_action_.reset(); + session_->Resume(mojom::MediaSession::SuspendType::kSystem); } void AudioFocusRequest::PerformUIAction(mojom::MediaSessionAction action) {
diff --git a/services/viz/public/cpp/compositing/mojom_traits_perftest.cc b/services/viz/public/cpp/compositing/mojom_traits_perftest.cc index 1c4605b..06c11c0d 100644 --- a/services/viz/public/cpp/compositing/mojom_traits_perftest.cc +++ b/services/viz/public/cpp/compositing/mojom_traits_perftest.cc
@@ -199,7 +199,7 @@ SkScalar arbitrary_sigma = SkFloatToScalar(2.0f); gfx::ContentColorUsage arbitrary_content_color_usage = gfx::ContentColorUsage::kSRGB; - int root_id = 14; + RenderPassId root_id{14}; cc::FilterOperations arbitrary_filters1; arbitrary_filters1.Append( @@ -308,7 +308,8 @@ for (uint32_t i = 0; i < num_passes; ++i) { std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); - render_pass->SetNew(1, gfx::Rect(20, 20), gfx::Rect(), gfx::Transform()); + render_pass->SetNew(RenderPassId{1}, gfx::Rect(20, 20), gfx::Rect(), + gfx::Transform()); for (uint32_t j = 0; j < num_quads; ++j) { if (j == 0 || single_sqs == UseSingleSharedQuadState::NO) render_pass->CreateAndAppendSharedQuadState();
diff --git a/services/viz/public/cpp/compositing/mojom_traits_unittest.cc b/services/viz/public/cpp/compositing/mojom_traits_unittest.cc index 8398354..867733f0 100644 --- a/services/viz/public/cpp/compositing/mojom_traits_unittest.cc +++ b/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
@@ -448,7 +448,8 @@ // RenderPass, and QuadListBasic unit tests. TEST_F(StructTraitsTest, CompositorFrame) { std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); - render_pass->SetNew(1, gfx::Rect(5, 6), gfx::Rect(2, 3), gfx::Transform()); + render_pass->SetNew(RenderPassId{1}, gfx::Rect(5, 6), gfx::Rect(2, 3), + gfx::Transform()); // SharedQuadState. const gfx::Transform sqs_quad_to_target_transform( @@ -589,7 +590,7 @@ } TEST_F(StructTraitsTest, ReturnedResource) { - const RenderPassId id = 1337u; + const unsigned id = 1337u; const gpu::CommandBufferNamespace command_buffer_namespace = gpu::IN_PROCESS; const gpu::CommandBufferId command_buffer_id( gpu::CommandBufferId::FromUnsafeValue(0xdeadbeef)); @@ -698,7 +699,7 @@ // The CopyOutputRequest struct traits require a TaskRunner. base::test::TaskEnvironment task_environment; - const RenderPassId render_pass_id = 3u; + const RenderPassId render_pass_id{3u}; const gfx::Rect output_rect(45, 22, 120, 13); const gfx::Transform transform_to_root = gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); @@ -855,7 +856,7 @@ } TEST_F(StructTraitsTest, RenderPassWithEmptySharedQuadStateList) { - const RenderPassId render_pass_id = 3u; + const RenderPassId render_pass_id{3u}; const gfx::Rect output_rect(45, 22, 120, 13); const gfx::Rect damage_rect(56, 123, 19, 43); const gfx::Transform transform_to_root = @@ -892,7 +893,8 @@ TEST_F(StructTraitsTest, QuadListBasic) { std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); - render_pass->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); + render_pass->SetNew(RenderPassId{1}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState(); @@ -926,7 +928,7 @@ const gfx::Rect rect4(1234, 5678, 91012, 13141); const bool needs_blending = true; const ResourceId resource_id4(1337); - const RenderPassId render_pass_id = 1234u; + const RenderPassId render_pass_id{1234u}; const gfx::RectF mask_uv_rect(0, 0, 1337.1f, 1234.2f); const gfx::Size mask_texture_size(1234, 5678); gfx::Vector2dF filters_scale(1234.1f, 4321.2f); @@ -1120,7 +1122,8 @@ TEST_F(StructTraitsTest, YUVDrawQuad) { std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); - render_pass->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); + render_pass->SetNew(RenderPassId{1}, gfx::Rect(), gfx::Rect(), + gfx::Transform()); const DrawQuad::Material material = DrawQuad::Material::kYuvVideoContent; const gfx::Rect rect(1234, 4321, 1357, 7531);
diff --git a/services/viz/public/cpp/compositing/quads_mojom_traits.cc b/services/viz/public/cpp/compositing/quads_mojom_traits.cc index c99d11f..cf1305169 100644 --- a/services/viz/public/cpp/compositing/quads_mojom_traits.cc +++ b/services/viz/public/cpp/compositing/quads_mojom_traits.cc
@@ -4,6 +4,7 @@ #include "services/viz/public/cpp/compositing/quads_mojom_traits.h" +#include "services/viz/public/cpp/compositing/render_pass_id_mojom_traits.h" #include "services/viz/public/cpp/crash_keys.h" #include "ui/gfx/mojom/color_space_mojom_traits.h" #include "ui/gfx/mojom/transform_mojom_traits.h" @@ -73,17 +74,17 @@ quad->resources.ids[viz::RenderPassDrawQuad::kMaskResourceIdIndex] = data.mask_resource_id(); quad->resources.count = data.mask_resource_id() ? 1 : 0; - quad->render_pass_id = data.render_pass_id(); - // RenderPass ids are never zero. - if (!quad->render_pass_id) { - viz::SetDeserializationCrashKeyString("Draw quad invalid render pass ID"); - return false; - } if (!data.ReadMaskUvRect(&quad->mask_uv_rect) || !data.ReadMaskTextureSize(&quad->mask_texture_size) || !data.ReadFiltersScale(&quad->filters_scale) || !data.ReadFiltersOrigin(&quad->filters_origin) || - !data.ReadTexCoordRect(&quad->tex_coord_rect)) { + !data.ReadTexCoordRect(&quad->tex_coord_rect) || + !data.ReadRenderPassId(&quad->render_pass_id)) { + return false; + } + // RenderPass ids are never zero. + if (!quad->render_pass_id) { + viz::SetDeserializationCrashKeyString("Draw quad invalid render pass ID"); return false; } quad->force_anti_aliasing_off = data.force_anti_aliasing_off();
diff --git a/services/viz/public/cpp/compositing/quads_mojom_traits.h b/services/viz/public/cpp/compositing/quads_mojom_traits.h index a690016..94973fcc 100644 --- a/services/viz/public/cpp/compositing/quads_mojom_traits.h +++ b/services/viz/public/cpp/compositing/quads_mojom_traits.h
@@ -198,7 +198,7 @@ template <> struct StructTraits<viz::mojom::RenderPassQuadStateDataView, viz::DrawQuad> { - static uint64_t render_pass_id(const viz::DrawQuad& input) { + static viz::RenderPassId render_pass_id(const viz::DrawQuad& input) { const viz::RenderPassDrawQuad* quad = viz::RenderPassDrawQuad::MaterialCast(&input); DCHECK(quad->render_pass_id);
diff --git a/services/viz/public/cpp/compositing/render_pass_id_mojom_traits.cc b/services/viz/public/cpp/compositing/render_pass_id_mojom_traits.cc new file mode 100644 index 0000000..dd04b802 --- /dev/null +++ b/services/viz/public/cpp/compositing/render_pass_id_mojom_traits.cc
@@ -0,0 +1,25 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "services/viz/public/cpp/compositing/render_pass_id_mojom_traits.h" + +#include "components/viz/common/quads/render_pass.h" + +namespace mojo { + +// static +uint64_t StructTraits<viz::mojom::RenderPassIdDataView, + viz::RenderPassId>::value(const viz::RenderPassId& id) { + return static_cast<uint64_t>(id); +} + +// static +bool StructTraits<viz::mojom::RenderPassIdDataView, viz::RenderPassId>::Read( + viz::mojom::RenderPassIdDataView data, + viz::RenderPassId* out) { + *out = viz::RenderPassId{data.value()}; + return true; +} + +} // namespace mojo
diff --git a/services/viz/public/cpp/compositing/render_pass_id_mojom_traits.h b/services/viz/public/cpp/compositing/render_pass_id_mojom_traits.h new file mode 100644 index 0000000..fb87567 --- /dev/null +++ b/services/viz/public/cpp/compositing/render_pass_id_mojom_traits.h
@@ -0,0 +1,23 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SERVICES_VIZ_PUBLIC_CPP_COMPOSITING_RENDER_PASS_ID_MOJOM_TRAITS_H_ +#define SERVICES_VIZ_PUBLIC_CPP_COMPOSITING_RENDER_PASS_ID_MOJOM_TRAITS_H_ + +#include "components/viz/common/quads/render_pass.h" +#include "services/viz/public/mojom/compositing/render_pass_id.mojom-shared.h" + +namespace mojo { + +template <> +struct StructTraits<viz::mojom::RenderPassIdDataView, viz::RenderPassId> { + static uint64_t value(const viz::RenderPassId& id); + + static bool Read(viz::mojom::RenderPassIdDataView data, + viz::RenderPassId* out); +}; + +} // namespace mojo + +#endif // SERVICES_VIZ_PUBLIC_CPP_COMPOSITING_RENDER_PASS_ID_MOJOM_TRAITS_H_
diff --git a/services/viz/public/cpp/compositing/render_pass_mojom_traits.cc b/services/viz/public/cpp/compositing/render_pass_mojom_traits.cc index e704ba10..b56bb98 100644 --- a/services/viz/public/cpp/compositing/render_pass_mojom_traits.cc +++ b/services/viz/public/cpp/compositing/render_pass_mojom_traits.cc
@@ -5,6 +5,8 @@ #include "services/viz/public/cpp/compositing/render_pass_mojom_traits.h" #include "base/numerics/safe_conversions.h" +#include "components/viz/common/quads/render_pass.h" +#include "services/viz/public/cpp/compositing/render_pass_id_mojom_traits.h" #include "services/viz/public/cpp/crash_keys.h" #include "ui/gfx/mojom/display_color_spaces_mojom_traits.h" @@ -23,10 +25,10 @@ !data.ReadBackdropFilters(&(*out)->backdrop_filters) || !data.ReadBackdropFilterBounds(&(*out)->backdrop_filter_bounds) || !data.ReadContentColorUsage(&(*out)->content_color_usage) || - !data.ReadCopyRequests(&(*out)->copy_requests)) { + !data.ReadCopyRequests(&(*out)->copy_requests) || + !data.ReadId(&(*out)->id)) { return false; } - (*out)->id = data.id(); // RenderPass ids are never zero. if (!(*out)->id) { viz::SetDeserializationCrashKeyString("Invalid render pass ID");
diff --git a/services/viz/public/mojom/BUILD.gn b/services/viz/public/mojom/BUILD.gn index 0eb153d0..e988a837 100644 --- a/services/viz/public/mojom/BUILD.gn +++ b/services/viz/public/mojom/BUILD.gn
@@ -26,6 +26,7 @@ "compositing/paint_filter.mojom", "compositing/quads.mojom", "compositing/render_pass.mojom", + "compositing/render_pass_id.mojom", "compositing/resource_settings.mojom", "compositing/returned_resource.mojom", "compositing/selection.mojom", @@ -334,6 +335,21 @@ { types = [ { + mojom = "viz.mojom.RenderPassId" + cpp = "::viz::RenderPassId" + }, + ] + traits_sources = [ + "//services/viz/public/cpp/compositing/render_pass_id_mojom_traits.cc", + ] + traits_headers = [ + "//services/viz/public/cpp/compositing/render_pass_id_mojom_traits.h", + ] + traits_public_deps = [ "//components/viz/common" ] + }, + { + types = [ + { mojom = "viz.mojom.RenderPass" cpp = "::std::unique_ptr<::viz::RenderPass>" move_only = true @@ -509,6 +525,7 @@ "//services/viz/public/cpp/compositing/filter_operation_mojom_traits.h", "//services/viz/public/cpp/compositing/filter_operations_mojom_traits.h", "//services/viz/public/cpp/compositing/quads_mojom_traits.h", + "//services/viz/public/cpp/compositing/render_pass_id_mojom_traits.h", "//services/viz/public/cpp/compositing/render_pass_mojom_traits.h", "//services/viz/public/cpp/compositing/selection_mojom_traits.h", "//services/viz/public/cpp/compositing/shared_quad_state_mojom_traits.h",
diff --git a/services/viz/public/mojom/compositing/quads.mojom b/services/viz/public/mojom/compositing/quads.mojom index ba8bac8..053fcd9 100644 --- a/services/viz/public/mojom/compositing/quads.mojom +++ b/services/viz/public/mojom/compositing/quads.mojom
@@ -5,6 +5,7 @@ module viz.mojom; import "mojo/public/mojom/base/unguessable_token.mojom"; +import "services/viz/public/mojom/compositing/render_pass_id.mojom"; import "services/viz/public/mojom/compositing/shared_quad_state.mojom"; import "services/viz/public/mojom/compositing/surface_range.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; @@ -26,7 +27,7 @@ }; struct RenderPassQuadState { - uint64 render_pass_id; + RenderPassId render_pass_id; // If nonzero, resource id of mask to use when drawing this pass. uint32 mask_resource_id;
diff --git a/services/viz/public/mojom/compositing/render_pass.mojom b/services/viz/public/mojom/compositing/render_pass.mojom index ab38c639..3590a80 100644 --- a/services/viz/public/mojom/compositing/render_pass.mojom +++ b/services/viz/public/mojom/compositing/render_pass.mojom
@@ -7,6 +7,7 @@ import "services/viz/public/mojom/compositing/copy_output_request.mojom"; import "services/viz/public/mojom/compositing/filter_operations.mojom"; import "services/viz/public/mojom/compositing/quads.mojom"; +import "services/viz/public/mojom/compositing/render_pass_id.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; import "ui/gfx/mojom/display_color_spaces.mojom"; import "ui/gfx/mojom/rrect_f.mojom"; @@ -14,7 +15,7 @@ // See components/viz/common/quads/render_pass.h. struct RenderPass { - uint64 id; + RenderPassId id; gfx.mojom.Rect output_rect; gfx.mojom.Rect damage_rect; gfx.mojom.Transform transform_to_root_target;
diff --git a/services/viz/public/mojom/compositing/render_pass_id.mojom b/services/viz/public/mojom/compositing/render_pass_id.mojom new file mode 100644 index 0000000..b82f203 --- /dev/null +++ b/services/viz/public/mojom/compositing/render_pass_id.mojom
@@ -0,0 +1,9 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module viz.mojom; + +struct RenderPassId { + uint64 value; +};
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h index d010453..709d3f6e 100644 --- a/skia/config/SkUserConfig.h +++ b/skia/config/SkUserConfig.h
@@ -223,6 +223,9 @@ // Staging for https://review.skia.org/302643 #define SK_IMAGE_MAKE_TEXTURE_IMAGE_ALLOW_GR_CONTEXT +// Staging for https://review.skia.org/304003 +#define SK_IMAGE_MAKE_WITH_FILTER_LEGACY_API + ///////////////////////// Imported from BUILD.gn and skia_common.gypi /* In some places Skia can use static initializers for global initialization,
diff --git a/sql/database.cc b/sql/database.cc index 64c7e9ce..05831c9 100644 --- a/sql/database.cc +++ b/sql/database.cc
@@ -148,7 +148,7 @@ std::string AsUTF8ForSQL(const base::FilePath& path) { #if defined(OS_WIN) - return base::UTF16ToUTF8(path.value()); + return base::WideToUTF8(path.value()); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) return path.value(); #endif @@ -459,7 +459,7 @@ const char* path = sqlite3_db_filename(db_, "main"); const base::StringPiece db_path(path); #if defined(OS_WIN) - return base::FilePath(base::UTF8ToUTF16(db_path)); + return base::FilePath(base::UTF8ToWide(db_path)); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) return base::FilePath(db_path); #else @@ -1117,7 +1117,7 @@ Statement s(GetUniqueStatement("ATTACH DATABASE ? AS ?")); #if OS_WIN - s.BindString16(0, other_db_path.value()); + s.BindString16(0, base::AsStringPiece16(other_db_path.value())); #elif defined(OS_POSIX) || defined(OS_FUCHSIA) s.BindString(0, other_db_path.value()); #else
diff --git a/sql/statement.cc b/sql/statement.cc index b49e47b..aba466d 100644 --- a/sql/statement.cc +++ b/sql/statement.cc
@@ -9,6 +9,7 @@ #include "base/logging.h" #include "base/numerics/safe_conversions.h" +#include "base/strings/string_piece_forward.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "third_party/sqlite/sqlite3.h" @@ -145,7 +146,7 @@ SQLITE_TRANSIENT)); } -bool Statement::BindString16(int col, const base::string16& value) { +bool Statement::BindString16(int col, base::StringPiece16 value) { return BindString(col, base::UTF16ToUTF8(value)); }
diff --git a/sql/statement.h b/sql/statement.h index 6983e21..ba31163 100644 --- a/sql/statement.h +++ b/sql/statement.h
@@ -14,6 +14,7 @@ #include "base/memory/ref_counted.h" #include "base/sequence_checker.h" #include "base/strings/string16.h" +#include "base/strings/string_piece_forward.h" #include "sql/database.h" namespace sql { @@ -111,7 +112,7 @@ bool BindDouble(int col, double val); bool BindCString(int col, const char* val); bool BindString(int col, const std::string& val); - bool BindString16(int col, const base::string16& value); + bool BindString16(int col, base::StringPiece16 value); bool BindBlob(int col, const void* value, int value_len); // Retrieving ----------------------------------------------------------------
diff --git a/third_party/.gitignore b/third_party/.gitignore index 8cd46575..6aa0a82 100644 --- a/third_party/.gitignore +++ b/third_party/.gitignore
@@ -47,7 +47,6 @@ /breakpad/breakpad /byte_buddy/android_sdk_build_tools_25_0_2 /byte_buddy/lib/ -/cacheinvalidation/cacheinvalidation_unittests_run.xml /cardboard-java/src /catapult /ced/src
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom index b8fce51..abe3b68 100644 --- a/third_party/blink/public/mojom/frame/frame.mojom +++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -137,7 +137,7 @@ // Returns either true if fullscreen is allowed to be entered, or false if the // request to enter fullscreen was denied. Note that the actual transition to // fullscreen will occur on the next visual update, when the next - // WidgetMsg_UpdateVisualProperties is sent. + // Widget::UpdateVisualProperties is sent. EnterFullscreen(FullscreenOptions options) => (bool granted); // Request to the browser to exit fullscreen mode.
diff --git a/third_party/blink/public/mojom/page/widget.mojom b/third_party/blink/public/mojom/page/widget.mojom index 59deb9d..02d5f57 100644 --- a/third_party/blink/public/mojom/page/widget.mojom +++ b/third_party/blink/public/mojom/page/widget.mojom
@@ -7,9 +7,11 @@ import "cc/mojom/touch_action.mojom"; import "mojo/public/mojom/base/string16.mojom"; import "mojo/public/mojom/base/text_direction.mojom"; +import "services/viz/public/mojom/compositing/local_surface_id_allocation.mojom"; import "third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom"; import "third_party/blink/public/mojom/input/input_handler.mojom"; import "third_party/blink/public/mojom/page/drag.mojom"; +import "third_party/blink/public/mojom/widget/visual_properties.mojom"; import "ui/base/mojom/ui_base_types.mojom"; import "ui/base/ime/mojom/text_input_state.mojom"; import "ui/base/cursor/mojom/cursor.mojom"; @@ -82,9 +84,6 @@ // The parameter specifies the location in the render widget's coordinates. ShowContextMenu( ui.mojom.MenuSourceType source_type, gfx.mojom.Point location); - - // Binds an WidgetCompositor interface. - BindWidgetCompositor(pending_receiver<WidgetCompositor> host); }; // Implemented in Browser, this interface defines frame-widget-specific methods that @@ -147,6 +146,14 @@ pending_receiver<blink.mojom.WidgetInputHandler> request, pending_remote<blink.mojom.WidgetInputHandlerHost> host); + // Update the visual properties of the widget. + UpdateVisualProperties(VisualProperties visual_properties); + + // Informs the widget of its position on the user's screen, as well as + // the position of the native window holding the widget. + // TODO(danakj): These should be part of UpdateVisualProperties. + UpdateScreenRects(gfx.mojom.Rect widget_screen_rect, + gfx.mojom.Rect window_screen_rect) => (); }; // Implemented in Browser, this interface defines widget-specific methods that @@ -172,10 +179,3 @@ mojo_base.mojom.TextDirection focus_dir, bool is_anchor_first); }; - -// This interface is bound on the compositor thread. -interface WidgetCompositor { - // Requests that the RenderWidget sends back a response after the next main - // frame is generated and presented in the display compositor. - VisualStateRequest() => (); -};
diff --git a/third_party/blink/public/web/web_external_widget_client.h b/third_party/blink/public/web/web_external_widget_client.h index 4b3f023..073fb9b 100644 --- a/third_party/blink/public/web/web_external_widget_client.h +++ b/third_party/blink/public/web/web_external_widget_client.h
@@ -12,6 +12,7 @@ #include "ui/gfx/geometry/size.h" namespace blink { +struct VisualProperties; class WebCoalescedInputEvent; class WebGestureEvent; @@ -72,6 +73,14 @@ // The state of the focus has changed for the WebWidget. |enabled| // is the new state. virtual void FocusChanged(bool enabled) {} + + // Apply the visual properties to the widget. + virtual void UpdateVisualProperties( + const VisualProperties& visual_properties) {} + + // Apply the updated screen rects. + virtual void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) {} }; } // namespace blink
diff --git a/third_party/blink/public/web/web_widget_client.h b/third_party/blink/public/web/web_widget_client.h index 89f86a0..3a38525 100644 --- a/third_party/blink/public/web/web_widget_client.h +++ b/third_party/blink/public/web/web_widget_client.h
@@ -72,6 +72,7 @@ } namespace blink { +struct VisualProperties; class WebDragData; class WebMouseEvent; class WebGestureEvent; @@ -300,6 +301,14 @@ // Called to indicate a syntehtic event was queued. virtual void WillQueueSyntheticEvent(const WebCoalescedInputEvent& event) {} + + // Apply the visual properties to the widget. + virtual void UpdateVisualProperties( + const VisualProperties& visual_properties) {} + + // Apply the updated screen rects. + virtual void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) {} }; } // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc index ba3b0cf2..6f7c1f3 100644 --- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc +++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
@@ -57,6 +57,7 @@ #include "third_party/blink/renderer/core/css/resolver/selector_filter_parent_scope.h" #include "third_party/blink/renderer/core/css/resolver/style_adjuster.h" #include "third_party/blink/renderer/core/css/resolver/style_builder_converter.h" +#include "third_party/blink/renderer/core/css/resolver/style_cascade.h" #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h" #include "third_party/blink/renderer/core/css/resolver/style_resolver_stats.h" #include "third_party/blink/renderer/core/css/resolver/style_rule_usage_tracker.h" @@ -162,10 +163,9 @@ // is used. This is because we don't want the computation of the base to // populate the cascade, as they are supposed to be empty when the optimization // is in use. This is to match the behavior of non-DCHECK builds. -void MaybeResetCascade(StyleCascade* cascade) { +void MaybeResetCascade(StyleCascade& cascade) { #if DCHECK_IS_ON() - if (cascade) - cascade->Reset(); + cascade.Reset(); #endif // DCHECK_IS_ON() } @@ -785,7 +785,7 @@ } static void UpdateAnimationBaseComputedStyle(StyleResolverState& state, - StyleCascade* cascade, + StyleCascade& cascade, bool forced_update) { if (!state.GetAnimatingElement()) return; @@ -803,8 +803,7 @@ return; } - std::unique_ptr<CSSBitset> important_set = - (cascade ? cascade->GetImportantSet() : nullptr); + std::unique_ptr<CSSBitset> important_set = cascade.GetImportantSet(); element_animations->UpdateBaseComputedStyle(state.Style(), std::move(important_set)); } @@ -834,13 +833,11 @@ matching_behavior == kMatchAllRules; STACK_UNINITIALIZED StyleCascade cascade(state); - StyleCascade* cascade_ptr = &cascade; - ApplyBaseComputedStyle(element, state, cascade_ptr, - cascade.MutableMatchResult(), matching_behavior, - can_cache_animation_base_computed_style); + ApplyBaseStyle(element, state, cascade, cascade.MutableMatchResult(), + matching_behavior, can_cache_animation_base_computed_style); - if (ApplyAnimatedStandardProperties(state, cascade_ptr)) { + if (ApplyAnimatedStyle(state, cascade)) { INCREMENT_STYLE_STATS_COUNTER(GetDocument().GetStyleEngine(), styles_animated, 1); StyleAdjuster::AdjustComputedStyle(state, element); @@ -916,10 +913,10 @@ } } -void StyleResolver::ApplyBaseComputedStyle( +void StyleResolver::ApplyBaseStyle( Element* element, StyleResolverState& state, - StyleCascade* cascade, + StyleCascade& cascade, MatchResult& match_result, RuleMatchingBehavior matching_behavior, bool can_cache_animation_base_computed_style) { @@ -939,8 +936,8 @@ // get a higher priority. // // TODO(crbug.com/1046753): Remove this when canvastext is supported. - if (element == state.GetDocument().documentElement() && cascade) { - cascade->MutableMatchResult().AddMatchedProperties( + if (element == state.GetDocument().documentElement()) { + cascade.MutableMatchResult().AddMatchedProperties( DocumentElementUserAgentDeclarations()); } @@ -984,8 +981,7 @@ if (state.HasDirAutoAttribute()) state.Style()->SetSelfOrAncestorHasDirAutoAttribute(true); - DCHECK(cascade); - CascadeAndApplyMatchedProperties(state, *cascade); + CascadeAndApplyMatchedProperties(state, cascade); ApplyCallbackSelectors(state); @@ -1054,7 +1050,6 @@ // user agent rules, don't waste time walking those rules. STACK_UNINITIALIZED StyleCascade cascade(state); - StyleCascade* cascade_ptr = &cascade; if (ShouldComputeBaseComputedStyle(animation_base_computed_style)) { if (pseudo_style_request.AllowsInheritance(state.ParentStyle())) { @@ -1114,10 +1109,10 @@ if (animation_base_computed_style) { state.SetStyle(ComputedStyle::Clone(*animation_base_computed_style)); state.Style()->SetStyleType(pseudo_style_request.pseudo_id); - MaybeResetCascade(cascade_ptr); + MaybeResetCascade(cascade); } - if (ApplyAnimatedStandardProperties(state, cascade_ptr)) + if (ApplyAnimatedStyle(state, cascade)) StyleAdjuster::AdjustComputedStyle(state, nullptr); GetDocument().GetStyleEngine().IncStyleForElementCount(); @@ -1313,9 +1308,8 @@ } } -bool StyleResolver::ApplyAnimatedStandardProperties( - StyleResolverState& state, - StyleCascade* cascade) { +bool StyleResolver::ApplyAnimatedStyle(StyleResolverState& state, + StyleCascade& cascade) { Element& element = state.GetElement(); // The animating element may be this element, the pseudo element we are @@ -1361,11 +1355,10 @@ const ActiveInterpolationsMap& custom_transitions = state.AnimationUpdate().ActiveInterpolationsForCustomTransitions(); - DCHECK(cascade); - cascade->AddInterpolations(&standard_animations, CascadeOrigin::kAnimation); - cascade->AddInterpolations(&standard_transitions, CascadeOrigin::kTransition); - cascade->AddInterpolations(&custom_animations, CascadeOrigin::kAnimation); - cascade->AddInterpolations(&custom_transitions, CascadeOrigin::kTransition); + cascade.AddInterpolations(&standard_animations, CascadeOrigin::kAnimation); + cascade.AddInterpolations(&standard_transitions, CascadeOrigin::kTransition); + cascade.AddInterpolations(&custom_animations, CascadeOrigin::kAnimation); + cascade.AddInterpolations(&custom_transitions, CascadeOrigin::kTransition); CascadeFilter filter; if (IsForcedColorsModeEnabled(state)) @@ -1374,7 +1367,7 @@ filter = filter.Add(CSSProperty::kValidForMarker, false); filter = filter.Add(CSSProperty::kAnimation, true); - cascade->Apply(filter); + cascade.Apply(filter); // Start loading resources used by animations. state.LoadPendingResources(); @@ -1604,8 +1597,8 @@ StyleResolverState state(GetDocument(), element); STACK_UNINITIALIZED StyleCascade cascade(state); - ApplyBaseComputedStyle(&element, state, &cascade, - cascade.MutableMatchResult(), kMatchAllRules, true); + ApplyBaseStyle(&element, state, cascade, cascade.MutableMatchResult(), + kMatchAllRules, true); ApplyInterpolations(state, cascade, interpolations); return state.TakeStyle();
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.h b/third_party/blink/renderer/core/css/resolver/style_resolver.h index 057b1ecd..ea351d3 100644 --- a/third_party/blink/renderer/core/css/resolver/style_resolver.h +++ b/third_party/blink/renderer/core/css/resolver/style_resolver.h
@@ -33,7 +33,6 @@ #include "third_party/blink/renderer/core/css/resolver/css_property_priority.h" #include "third_party/blink/renderer/core/css/resolver/matched_properties_cache.h" #include "third_party/blink/renderer/core/css/resolver/style_builder.h" -#include "third_party/blink/renderer/core/css/resolver/style_cascade.h" #include "third_party/blink/renderer/core/css/selector_checker.h" #include "third_party/blink/renderer/core/css/selector_filter.h" #include "third_party/blink/renderer/platform/heap/handle.h" @@ -43,16 +42,17 @@ namespace blink { -class CSSValue; class CompositorKeyframeValue; +class CSSPropertyValueSet; +class CSSValue; class Document; class Element; class Interpolation; class MatchResult; -class RuleSet; -class CSSPropertyValueSet; -class StyleRuleUsageTracker; class PropertyHandle; +class RuleSet; +class StyleCascade; +class StyleRuleUsageTracker; enum RuleMatchingBehavior { kMatchAllRules, kMatchAllRulesExcludingSMIL }; enum ApplyMask { kApplyMaskRegular = 1 << 0, kApplyMaskVisited = 1 << 1 }; @@ -158,12 +158,12 @@ private: void InitStyleAndApplyInheritance(Element& element, StyleResolverState& state); - void ApplyBaseComputedStyle(Element* element, - StyleResolverState& state, - StyleCascade* cascade, - MatchResult& match_result, - RuleMatchingBehavior matching_behavior, - bool can_cache_animation_base_computed_style); + void ApplyBaseStyle(Element* element, + StyleResolverState& state, + StyleCascade& cascade, + MatchResult& match_result, + RuleMatchingBehavior matching_behavior, + bool can_cache_animation_base_computed_style); void ApplyInterpolations(StyleResolverState& state, StyleCascade& cascade, ActiveInterpolationsMap& interpolations); @@ -239,8 +239,7 @@ void CalculateAnimationUpdate(StyleResolverState&); - bool ApplyAnimatedStandardProperties(StyleResolverState&, - StyleCascade* cascade = nullptr); + bool ApplyAnimatedStyle(StyleResolverState&, StyleCascade&); void ApplyCallbackSelectors(StyleResolverState&);
diff --git a/third_party/blink/renderer/core/exported/web_external_widget_impl.cc b/third_party/blink/renderer/core/exported/web_external_widget_impl.cc index 7e59bae7..7740cc38 100644 --- a/third_party/blink/renderer/core/exported/web_external_widget_impl.cc +++ b/third_party/blink/renderer/core/exported/web_external_widget_impl.cc
@@ -224,4 +224,15 @@ client_->FocusChanged(enabled); } +void WebExternalWidgetImpl::UpdateVisualProperties( + const VisualProperties& visual_properties) { + client_->UpdateVisualProperties(visual_properties); +} + +void WebExternalWidgetImpl::UpdateScreenRects( + const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) { + client_->UpdateScreenRects(widget_screen_rect, window_screen_rect); +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/exported/web_external_widget_impl.h b/third_party/blink/renderer/core/exported/web_external_widget_impl.h index 1861ad90..1705ad7 100644 --- a/third_party/blink/renderer/core/exported/web_external_widget_impl.h +++ b/third_party/blink/renderer/core/exported/web_external_widget_impl.h
@@ -101,6 +101,10 @@ void FocusChanged(bool enabled) override; void FlushInputProcessedCallback() override; void CancelCompositionForPepper() override; + void UpdateVisualProperties( + const VisualProperties& visual_properties) override; + void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) override; private: WebExternalWidgetClient* const client_;
diff --git a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc index 295a9fe5..2e39ff6d 100644 --- a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc +++ b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
@@ -745,6 +745,16 @@ WidgetClient()->ScheduleAnimation(); } +void WebPagePopupImpl::UpdateVisualProperties( + const VisualProperties& visual_properties) { + WidgetClient()->UpdateVisualProperties(visual_properties); +} + +void WebPagePopupImpl::UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) { + WidgetClient()->UpdateScreenRects(widget_screen_rect, window_screen_rect); +} + WebURL WebPagePopupImpl::GetURLForDebugTrace() { if (!page_) return {};
diff --git a/third_party/blink/renderer/core/exported/web_page_popup_impl.h b/third_party/blink/renderer/core/exported/web_page_popup_impl.h index bc52cc4..209299b 100644 --- a/third_party/blink/renderer/core/exported/web_page_popup_impl.h +++ b/third_party/blink/renderer/core/exported/web_page_popup_impl.h
@@ -133,6 +133,10 @@ bool SupportsBufferedTouchEvents() override { return true; } void FocusChanged(bool enabled) override; void ScheduleAnimation() override; + void UpdateVisualProperties( + const VisualProperties& visual_properties) override; + void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) override; // WebWidget implementation. // NOTE: The WebWidget may still be used after requesting the popup to be
diff --git a/third_party/blink/renderer/core/fetch/body_stream_buffer.cc b/third_party/blink/renderer/core/fetch/body_stream_buffer.cc index b292b44..5206c79 100644 --- a/third_party/blink/renderer/core/fetch/body_stream_buffer.cc +++ b/third_party/blink/renderer/core/fetch/body_stream_buffer.cc
@@ -168,11 +168,10 @@ } scoped_refptr<BlobDataHandle> BodyStreamBuffer::DrainAsBlobDataHandle( - BytesConsumer::BlobSizePolicy policy, - ExceptionState& exception_state) { + BytesConsumer::BlobSizePolicy policy) { DCHECK(!IsStreamLocked()); DCHECK(!IsStreamDisturbed()); - if (IsStreamClosed() || IsStreamErrored()) + if (IsStreamClosed() || IsStreamErrored() || stream_broken_) return nullptr; if (made_from_readable_stream_) @@ -181,19 +180,16 @@ scoped_refptr<BlobDataHandle> blob_data_handle = consumer_->DrainAsBlobDataHandle(policy); if (blob_data_handle) { - CloseAndLockAndDisturb(exception_state); - if (exception_state.HadException()) - return nullptr; + CloseAndLockAndDisturb(); return blob_data_handle; } return nullptr; } -scoped_refptr<EncodedFormData> BodyStreamBuffer::DrainAsFormData( - ExceptionState& exception_state) { +scoped_refptr<EncodedFormData> BodyStreamBuffer::DrainAsFormData() { DCHECK(!IsStreamLocked()); DCHECK(!IsStreamDisturbed()); - if (IsStreamClosed() || IsStreamErrored()) + if (IsStreamClosed() || IsStreamErrored() || stream_broken_) return nullptr; if (made_from_readable_stream_) @@ -201,9 +197,7 @@ scoped_refptr<EncodedFormData> form_data = consumer_->DrainAsFormData(); if (form_data) { - CloseAndLockAndDisturb(exception_state); - if (exception_state.HadException()) - return nullptr; + CloseAndLockAndDisturb(); return form_data; } return nullptr; @@ -212,13 +206,10 @@ void BodyStreamBuffer::DrainAsChunkedDataPipeGetter( ScriptState* script_state, mojo::PendingReceiver<network::mojom::blink::ChunkedDataPipeGetter> - pending_receiver, - ExceptionState& exception_state) { + pending_receiver) { DCHECK(!IsStreamLocked()); - auto* consumer = MakeGarbageCollected<ReadableStreamBytesConsumer>( - script_state, stream_, exception_state); - if (exception_state.HadException()) - return; + auto* consumer = + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream_); stream_uploader_ = MakeGarbageCollected<BytesUploader>( consumer, std::move(pending_receiver), ExecutionContext::From(script_state) @@ -368,13 +359,8 @@ return stream_->IsDisturbed(); } -void BodyStreamBuffer::CloseAndLockAndDisturb(ExceptionState& exception_state) { - if (stream_broken_) { - exception_state.ThrowDOMException( - DOMExceptionCode::kInvalidStateError, - "Body stream has suffered a fatal error and cannot be disturbed"); - return; - } +void BodyStreamBuffer::CloseAndLockAndDisturb() { + DCHECK(!stream_broken_); if (IsStreamReadable()) { // Note that the stream cannot be "draining", because it doesn't have @@ -382,7 +368,7 @@ Close(); } - stream_->LockAndDisturb(script_state_, exception_state); + stream_->LockAndDisturb(script_state_); } bool BodyStreamBuffer::IsAborted() { @@ -524,14 +510,10 @@ side_data_blob_.reset(); if (made_from_readable_stream_) { + DCHECK(script_state_->ContextIsValid()); ScriptState::Scope scope(script_state_); - auto* consumer = MakeGarbageCollected<ReadableStreamBytesConsumer>( - script_state_, stream_, exception_state); - if (exception_state.HadException()) { - stream_broken_ = true; - return nullptr; - } - return consumer; + return MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state_, + stream_); } // We need to call these before calling CloseAndLockAndDisturb. const bool is_closed = IsStreamClosed(); @@ -539,9 +521,7 @@ BytesConsumer* consumer = consumer_.Release(); - CloseAndLockAndDisturb(exception_state); - if (exception_state.HadException()) - return nullptr; + CloseAndLockAndDisturb(); if (is_closed) { // Note that the stream cannot be "draining", because it doesn't have
diff --git a/third_party/blink/renderer/core/fetch/body_stream_buffer.h b/third_party/blink/renderer/core/fetch/body_stream_buffer.h index 38a4551..ff732d83 100644 --- a/third_party/blink/renderer/core/fetch/body_stream_buffer.h +++ b/third_party/blink/renderer/core/fetch/body_stream_buffer.h
@@ -61,13 +61,11 @@ // Callable only when neither locked nor disturbed. scoped_refptr<BlobDataHandle> DrainAsBlobDataHandle( - BytesConsumer::BlobSizePolicy, - ExceptionState&); - scoped_refptr<EncodedFormData> DrainAsFormData(ExceptionState&); + BytesConsumer::BlobSizePolicy); + scoped_refptr<EncodedFormData> DrainAsFormData(); void DrainAsChunkedDataPipeGetter( ScriptState*, - mojo::PendingReceiver<network::mojom::blink::ChunkedDataPipeGetter>, - ExceptionState&); + mojo::PendingReceiver<network::mojom::blink::ChunkedDataPipeGetter>); void StartLoading(FetchDataLoader*, FetchDataLoader::Client* /* client */, ExceptionState&); @@ -88,7 +86,11 @@ bool IsStreamErrored() const; bool IsStreamLocked() const; bool IsStreamDisturbed() const; - void CloseAndLockAndDisturb(ExceptionState&); + + // Closes the stream if necessary, and then locks and disturbs it. Should not + // be called if |stream_broken_| is true. + void CloseAndLockAndDisturb(); + ScriptState* GetScriptState() { return script_state_; } bool IsAborted();
diff --git a/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc b/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc index d198c1ca..c84f64da 100644 --- a/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc +++ b/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc
@@ -244,8 +244,7 @@ EXPECT_EQ(side_data_blob, buffer->GetSideDataBlobForTest()); scoped_refptr<BlobDataHandle> output_blob_data_handle = buffer->DrainAsBlobDataHandle( - BytesConsumer::BlobSizePolicy::kAllowBlobWithInvalidSize, - ASSERT_NO_EXCEPTION); + BytesConsumer::BlobSizePolicy::kAllowBlobWithInvalidSize); EXPECT_TRUE(buffer->IsStreamLocked()); EXPECT_TRUE(buffer->IsStreamDisturbed()); @@ -270,8 +269,7 @@ EXPECT_EQ(side_data_blob, buffer->GetSideDataBlobForTest()); EXPECT_FALSE(buffer->DrainAsBlobDataHandle( - BytesConsumer::BlobSizePolicy::kAllowBlobWithInvalidSize, - ASSERT_NO_EXCEPTION)); + BytesConsumer::BlobSizePolicy::kAllowBlobWithInvalidSize)); EXPECT_FALSE(buffer->IsStreamLocked()); EXPECT_FALSE(buffer->IsStreamDisturbed()); @@ -295,8 +293,7 @@ EXPECT_TRUE(buffer->IsStreamReadable()); EXPECT_FALSE(buffer->DrainAsBlobDataHandle( - BytesConsumer::BlobSizePolicy::kAllowBlobWithInvalidSize, - exception_state)); + BytesConsumer::BlobSizePolicy::kAllowBlobWithInvalidSize)); EXPECT_FALSE(buffer->HasPendingActivity()); EXPECT_FALSE(buffer->IsStreamLocked()); @@ -323,8 +320,7 @@ EXPECT_FALSE(buffer->IsStreamDisturbed()); EXPECT_FALSE(buffer->HasPendingActivity()); EXPECT_EQ(side_data_blob, buffer->GetSideDataBlobForTest()); - scoped_refptr<EncodedFormData> output_form_data = - buffer->DrainAsFormData(ASSERT_NO_EXCEPTION); + scoped_refptr<EncodedFormData> output_form_data = buffer->DrainAsFormData(); EXPECT_TRUE(buffer->IsStreamLocked()); EXPECT_TRUE(buffer->IsStreamDisturbed()); @@ -349,7 +345,7 @@ EXPECT_FALSE(buffer->HasPendingActivity()); EXPECT_EQ(side_data_blob, buffer->GetSideDataBlobForTest()); - EXPECT_FALSE(buffer->DrainAsFormData(ASSERT_NO_EXCEPTION)); + EXPECT_FALSE(buffer->DrainAsFormData()); EXPECT_FALSE(buffer->IsStreamLocked()); EXPECT_FALSE(buffer->IsStreamDisturbed()); @@ -371,7 +367,7 @@ EXPECT_FALSE(buffer->IsStreamDisturbed()); EXPECT_TRUE(buffer->IsStreamReadable()); - EXPECT_FALSE(buffer->DrainAsFormData(exception_state)); + EXPECT_FALSE(buffer->DrainAsFormData()); EXPECT_FALSE(buffer->HasPendingActivity()); EXPECT_FALSE(buffer->IsStreamLocked());
diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_party/blink/renderer/core/fetch/fetch_manager.cc index 2ced2b1..bd31c5e 100644 --- a/third_party/blink/renderer/core/fetch/fetch_manager.cc +++ b/third_party/blink/renderer/core/fetch/fetch_manager.cc
@@ -113,7 +113,7 @@ void DidFail(const ResourceError&) override; void DidFailRedirectCheck() override; - void Start(ExceptionState&); + void Start(); void Dispose(); void Abort(); @@ -226,9 +226,9 @@ }; private: - void PerformSchemeFetch(ExceptionState&); + void PerformSchemeFetch(); void PerformNetworkError(const String& message); - void PerformHTTPFetch(ExceptionState&); + void PerformHTTPFetch(); void PerformDataFetch(); // If |dom_exception| is provided, throws the specified DOMException instead // of the usual "Failed to fetch" TypeError. @@ -527,7 +527,7 @@ Failed(String(), nullptr); } -void FetchManager::Loader::Start(ExceptionState& exception_state) { +void FetchManager::Loader::Start() { // "1. If |request|'s url contains a Known HSTS Host, modify it per the // requirements of the 'URI [sic] Loading and Port Mapping' chapter of HTTP // Strict Transport Security." @@ -573,7 +573,7 @@ fetch_request_data_->IsolatedWorldOrigin()->CanReadContent(url)) || fetch_request_data_->Mode() == network::mojom::RequestMode::kNavigate) { // "The result of performing a scheme fetch using request." - PerformSchemeFetch(exception_state); + PerformSchemeFetch(); return; } @@ -603,7 +603,7 @@ // "Set |request|'s response tainting to |opaque|." fetch_request_data_->SetResponseTainting(FetchRequestData::kOpaqueTainting); // "The result of performing a scheme fetch using |request|." - PerformSchemeFetch(exception_state); + PerformSchemeFetch(); return; } @@ -624,7 +624,7 @@ // "The result of performing an HTTP fetch using |request| with the // |CORS flag| set." - PerformHTTPFetch(exception_state); + PerformHTTPFetch(); } void FetchManager::Loader::Dispose() { @@ -660,16 +660,14 @@ NotifyFinished(); } -void FetchManager::Loader::PerformSchemeFetch(ExceptionState& exception_state) { +void FetchManager::Loader::PerformSchemeFetch() { // "To perform a scheme fetch using |request|, switch on |request|'s url's // scheme, and run the associated steps:" if (SchemeRegistry::ShouldTreatURLSchemeAsSupportingFetchAPI( fetch_request_data_->Url().Protocol()) || fetch_request_data_->Url().ProtocolIs("blob")) { // "Return the result of performing an HTTP fetch using |request|." - PerformHTTPFetch(exception_state); - if (exception_state.HadException()) - return; + PerformHTTPFetch(); } else if (fetch_request_data_->Url().ProtocolIsData()) { PerformDataFetch(); } else { @@ -685,7 +683,7 @@ Failed(message, nullptr); } -void FetchManager::Loader::PerformHTTPFetch(ExceptionState& exception_state) { +void FetchManager::Loader::PerformHTTPFetch() { // CORS preflight fetch procedure is implemented inside ThreadableLoader. // "1. Let |HTTPRequest| be a copy of |request|, except that |HTTPRequest|'s @@ -732,10 +730,7 @@ fetch_request_data_->Method() != http_names::kHEAD) { if (fetch_request_data_->Buffer()) { scoped_refptr<EncodedFormData> form_data = - fetch_request_data_->Buffer()->DrainAsFormData(exception_state); - - if (exception_state.HadException()) - return; + fetch_request_data_->Buffer()->DrainAsFormData(); if (form_data) { request.SetHttpBody(form_data); } else if (RuntimeEnabledFeatures::OutOfBlinkCorsEnabled() && @@ -743,13 +738,12 @@ execution_context_)) { UseCounter::Count(execution_context_, WebFeature::kFetchUploadStreaming); + DCHECK(!fetch_request_data_->Buffer()->IsStreamLocked()); mojo::PendingRemote<network::mojom::blink::ChunkedDataPipeGetter> pending_remote; fetch_request_data_->Buffer()->DrainAsChunkedDataPipeGetter( resolver_->GetScriptState(), - pending_remote.InitWithNewPipeAndPassReceiver(), exception_state); - if (exception_state.HadException()) - return; + pending_remote.InitWithNewPipeAndPassReceiver()); request.MutableBody().SetStreamBody(std::move(pending_remote)); request.SetAllowHTTP1ForStreamingUpload( fetch_request_data_->AllowHTTP1ForStreamingUpload()); @@ -881,28 +875,26 @@ FetchRequestData* request, AbortSignal* signal, ExceptionState& exception_state) { - auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); - ScriptPromise promise = resolver->Promise(); - DCHECK(signal); if (signal->aborted()) { - resolver->Reject( - MakeGarbageCollected<DOMException>(DOMExceptionCode::kAbortError)); - return promise; + exception_state.ThrowDOMException(DOMExceptionCode::kAbortError, + "The user aborted a request."); + return ScriptPromise(); } request->SetContext(mojom::RequestContextType::FETCH); request->SetDestination(network::mojom::RequestDestination::kEmpty); + auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); + ScriptPromise promise = resolver->Promise(); + auto* loader = MakeGarbageCollected<Loader>(GetExecutionContext(), this, resolver, request, &script_state->World(), signal); loaders_.insert(loader); signal->AddAlgorithm(WTF::Bind(&Loader::Abort, WrapWeakPersistent(loader))); // TODO(ricea): Reject the Response body with AbortError, not TypeError. - loader->Start(exception_state); - if (exception_state.HadException()) - return ScriptPromise(); + loader->Start(); return promise; }
diff --git a/third_party/blink/renderer/core/fetch/fetch_request_data.cc b/third_party/blink/renderer/core/fetch/fetch_request_data.cc index ea2c33a3..13b45b3 100644 --- a/third_party/blink/renderer/core/fetch/fetch_request_data.cc +++ b/third_party/blink/renderer/core/fetch/fetch_request_data.cc
@@ -234,16 +234,13 @@ return request; } -FetchRequestData* FetchRequestData::Pass(ScriptState* script_state, - ExceptionState& exception_state) { +FetchRequestData* FetchRequestData::Pass(ScriptState* script_state) { FetchRequestData* request = FetchRequestData::CloneExceptBody(); if (buffer_) { request->buffer_ = buffer_; buffer_ = BodyStreamBuffer::Create( script_state, BytesConsumer::CreateClosed(), nullptr /* AbortSignal */); - buffer_->CloseAndLockAndDisturb(exception_state); - if (exception_state.HadException()) - return nullptr; + buffer_->CloseAndLockAndDisturb(); } request->url_loader_factory_ = std::move(url_loader_factory_); return request;
diff --git a/third_party/blink/renderer/core/fetch/fetch_request_data.h b/third_party/blink/renderer/core/fetch/fetch_request_data.h index 2bf540d..682cfdc 100644 --- a/third_party/blink/renderer/core/fetch/fetch_request_data.h +++ b/third_party/blink/renderer/core/fetch/fetch_request_data.h
@@ -43,7 +43,7 @@ mojom::blink::FetchAPIRequestPtr, ForServiceWorkerFetchEvent); FetchRequestData* Clone(ScriptState*, ExceptionState&); - FetchRequestData* Pass(ScriptState*, ExceptionState&); + FetchRequestData* Pass(ScriptState*); explicit FetchRequestData(ExecutionContext* execution_context); ~FetchRequestData();
diff --git a/third_party/blink/renderer/core/fetch/global_fetch.cc b/third_party/blink/renderer/core/fetch/global_fetch.cc index aed0c09..af7c4d14 100644 --- a/third_party/blink/renderer/core/fetch/global_fetch.cc +++ b/third_party/blink/renderer/core/fetch/global_fetch.cc
@@ -75,11 +75,8 @@ return ScriptPromise(); probe::WillSendXMLHttpOrFetchNetworkRequest(execution_context, r->url()); - FetchRequestData* request_data = - r->PassRequestData(script_state, exception_state); + FetchRequestData* request_data = r->PassRequestData(script_state); MeasureFetchProperties(execution_context, request_data); - if (exception_state.HadException()) - return ScriptPromise(); auto promise = fetch_manager_->Fetch(script_state, request_data, r->signal(), exception_state); if (exception_state.HadException())
diff --git a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc index 293826be..de82b367 100644 --- a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc +++ b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc
@@ -95,9 +95,8 @@ ReadableStreamBytesConsumer::ReadableStreamBytesConsumer( ScriptState* script_state, - ReadableStream* stream, - ExceptionState& exception_state) - : reader_(stream->GetReaderNotForAuthorCode(script_state, exception_state)), + ReadableStream* stream) + : reader_(stream->GetReaderNotForAuthorCode(script_state)), script_state_(script_state) {} ReadableStreamBytesConsumer::~ReadableStreamBytesConsumer() {}
diff --git a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.h b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.h index 246b4292..860933e7 100644 --- a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.h +++ b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.h
@@ -22,10 +22,10 @@ // This class is a BytesConsumer pulling bytes from a ReadableStream. // The stream will be immediately locked by the consumer and will never be -// released. +// released. The stream must not be locked before this object is created. class CORE_EXPORT ReadableStreamBytesConsumer final : public BytesConsumer { public: - ReadableStreamBytesConsumer(ScriptState*, ReadableStream*, ExceptionState&); + ReadableStreamBytesConsumer(ScriptState*, ReadableStream*); ~ReadableStreamBytesConsumer() override; Result BeginRead(const char** buffer, size_t* available) override;
diff --git a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc index eeeeae94..68380af 100644 --- a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc +++ b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer_test.cc
@@ -52,8 +52,7 @@ ASSERT_FALSE(exception_state.HadException()); Persistent<BytesConsumer> consumer = - MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream, - ASSERT_NO_EXCEPTION); + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream); EXPECT_EQ(PublicState::kReadableOrWaiting, consumer->GetPublicState()); } @@ -69,8 +68,7 @@ underlying_source->Close(); Persistent<BytesConsumer> consumer = - MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream, - ASSERT_NO_EXCEPTION); + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream); Persistent<MockClient> client = MakeGarbageCollected<MockClient>(); consumer->SetClient(client); @@ -109,8 +107,7 @@ script_state->GetIsolate(), v8::Undefined(script_state->GetIsolate()))); Persistent<BytesConsumer> consumer = - MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream, - ASSERT_NO_EXCEPTION); + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream); Persistent<MockClient> client = MakeGarbageCollected<MockClient>(); consumer->SetClient(client); Checkpoint checkpoint; @@ -166,8 +163,7 @@ } Persistent<BytesConsumer> consumer = - MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream, - ASSERT_NO_EXCEPTION); + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream); Persistent<MockClient> client = MakeGarbageCollected<MockClient>(); consumer->SetClient(client); Checkpoint checkpoint; @@ -258,8 +254,7 @@ underlying_source->Close(); Persistent<BytesConsumer> consumer = - MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream, - ASSERT_NO_EXCEPTION); + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream); Persistent<MockClient> client = MakeGarbageCollected<MockClient>(); consumer->SetClient(client); Checkpoint checkpoint; @@ -298,8 +293,7 @@ underlying_source->Close(); Persistent<BytesConsumer> consumer = - MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream, - ASSERT_NO_EXCEPTION); + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream); Persistent<MockClient> client = MakeGarbageCollected<MockClient>(); consumer->SetClient(client); Checkpoint checkpoint; @@ -339,8 +333,7 @@ underlying_source->Close(); Persistent<BytesConsumer> consumer = - MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream, - ASSERT_NO_EXCEPTION); + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, stream); Persistent<MockClient> client = MakeGarbageCollected<MockClient>(); consumer->SetClient(client); Checkpoint checkpoint;
diff --git a/third_party/blink/renderer/core/fetch/request.cc b/third_party/blink/renderer/core/fetch/request.cc index 82e0ac0..59f2d1c 100644 --- a/third_party/blink/renderer/core/fetch/request.cc +++ b/third_party/blink/renderer/core/fetch/request.cc
@@ -183,6 +183,20 @@ V8ReadableStream::HasInstance(body, isolate)) { ReadableStream* readable_stream = V8ReadableStream::ToImpl(body.As<v8::Object>()); + // This is implemented in Request::CreateRequestWithRequestOrString(): + // "If the |keepalive| flag is set, then throw a TypeError." + + // "If |object| is disturbed or locked, then throw a TypeError." + if (readable_stream->IsDisturbed()) { + exception_state.ThrowTypeError( + "The provided ReadableStream is disturbed"); + return nullptr; + } + if (readable_stream->IsLocked()) { + exception_state.ThrowTypeError("The provided ReadableStream is locked"); + return nullptr; + } + // "Set |stream| to |object|." return_buffer = MakeGarbageCollected<BodyStreamBuffer>(script_state, readable_stream); } else { @@ -688,9 +702,7 @@ input_request->request_->SetBuffer(dummy_stream); // "Let |reader| be the result of getting reader from |dummyStream|." // "Read all bytes from |dummyStream| with |reader|." - input_request->BodyBuffer()->CloseAndLockAndDisturb(exception_state); - if (exception_state.HadException()) - return nullptr; + input_request->BodyBuffer()->CloseAndLockAndDisturb(); } // "Return |r|." @@ -931,12 +943,9 @@ return MakeGarbageCollected<Request>(script_state, request, headers, signal); } -FetchRequestData* Request::PassRequestData(ScriptState* script_state, - ExceptionState& exception_state) { +FetchRequestData* Request::PassRequestData(ScriptState* script_state) { DCHECK(!IsBodyUsed()); - FetchRequestData* data = request_->Pass(script_state, exception_state); - if (exception_state.HadException()) - return nullptr; + FetchRequestData* data = request_->Pass(script_state); // |data|'s buffer('s js wrapper) has no retainer, but it's OK because // the only caller is the fetch function and it uses the body buffer // immediately.
diff --git a/third_party/blink/renderer/core/fetch/request.h b/third_party/blink/renderer/core/fetch/request.h index 6fa03882..1fff74b 100644 --- a/third_party/blink/renderer/core/fetch/request.h +++ b/third_party/blink/renderer/core/fetch/request.h
@@ -93,7 +93,7 @@ return Body::HasPendingActivity(); } - FetchRequestData* PassRequestData(ScriptState*, ExceptionState&); + FetchRequestData* PassRequestData(ScriptState*); mojom::blink::FetchAPIRequestPtr CreateFetchAPIRequest() const; bool HasBody() const; BodyStreamBuffer* BodyBuffer() override { return request_->Buffer(); }
diff --git a/third_party/blink/renderer/core/frame/overlay_interstitial_ad_detector.cc b/third_party/blink/renderer/core/frame/overlay_interstitial_ad_detector.cc index d2253eb..77f7b9c4 100644 --- a/third_party/blink/renderer/core/frame/overlay_interstitial_ad_detector.cc +++ b/third_party/blink/renderer/core/frame/overlay_interstitial_ad_detector.cc
@@ -18,6 +18,8 @@ namespace { +static bool g_frequency_capping_enabled = true; + constexpr base::TimeDelta kFireInterval = base::TimeDelta::FromSeconds(1); constexpr double kLargeAdSizeToViewportSizeThreshold = 0.1; @@ -73,7 +75,8 @@ } base::Time current_time = base::Time::Now(); - if (started_detection_ && current_time < last_detection_time_ + kFireInterval) + if (started_detection_ && g_frequency_capping_enabled && + current_time < last_detection_time_ + kFireInterval) return; TRACE_EVENT0("blink,benchmark", @@ -83,7 +86,6 @@ last_detection_time_ = current_time; IntSize main_frame_size = main_frame->GetMainFrameViewportSize(); - last_detection_main_frame_size_ = main_frame_size; if (main_frame_size != last_detection_main_frame_size_) { // Reset the candidate when the the viewport size has changed. Changing @@ -92,6 +94,14 @@ // could have happened is that the element no longer covers the center, // but still exists (e.g. a sticky ad at the top). candidate_id_ = kInvalidDOMNodeId; + + // Reset |content_has_been_stable_| to so that the current hit-test element + // will be marked unqualified. We don't want to consider an overlay as a + // popup if it wasn't counted before and only satisfies the conditions later + // due to viewport size change. + content_has_been_stable_ = false; + + last_detection_main_frame_size_ = main_frame_size; } // We want to explicitly prevent mid-roll ads from being categorized as @@ -111,14 +121,14 @@ DOMNodeId element_id = DOMNodeIds::IdForNode(element); // Skip considering the overlay for a pop-up candidate if we haven't seen or - // have just seen the first meaningful paint. If we have just seen the first - // meaningful paint, however, we would consider future overlays for pop-up - // candidates. - if (!main_content_has_loaded_) { + // have just seen the first meaningful paint, or if the viewport size has just + // changed. If we have just seen the first meaningful paint, however, we + // would consider future overlays for pop-up candidates. + if (!content_has_been_stable_) { if (!PaintTiming::From(*main_frame->GetDocument()) .FirstMeaningfulPaint() .is_null()) { - main_content_has_loaded_ = true; + content_has_been_stable_ = true; } last_unqualified_element_id_ = element_id; @@ -145,12 +155,19 @@ candidate_is_ad_ = false; } - if (!is_new_element) - return; - if (element_id == last_unqualified_element_id_) return; + if (!is_new_element) { + // Potentially update the ad status of the candidate from non-ad to ad. + // Ad tagging could occur after the initial painting (e.g. at loading time), + // and we are making the best effort to catch it. + if (element->IsAdRelated()) + candidate_is_ad_ = true; + + return; + } + if (!element->GetLayoutObject()) return; @@ -184,6 +201,11 @@ } } +// static +void OverlayInterstitialAdDetector::DisableFrequencyCappingForTesting() { + g_frequency_capping_enabled = false; +} + void OverlayInterstitialAdDetector::OnPopupDetected(LocalFrame* main_frame, bool is_ad) { if (!popup_detected_) {
diff --git a/third_party/blink/renderer/core/frame/overlay_interstitial_ad_detector.h b/third_party/blink/renderer/core/frame/overlay_interstitial_ad_detector.h index 095a8b6..542dbea 100644 --- a/third_party/blink/renderer/core/frame/overlay_interstitial_ad_detector.h +++ b/third_party/blink/renderer/core/frame/overlay_interstitial_ad_detector.h
@@ -53,11 +53,13 @@ void MaybeFireDetection(LocalFrame* main_frame); + static void DisableFrequencyCappingForTesting(); + private: void OnPopupDetected(LocalFrame* main_frame, bool is_ad); bool started_detection_ = false; - bool main_content_has_loaded_ = false; + bool content_has_been_stable_ = false; // The following members are valid only when |started_detection_| is true. base::Time last_detection_time_;
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_base.cc b/third_party/blink/renderer/core/frame/web_frame_widget_base.cc index d13cda4..2a2048e0 100644 --- a/third_party/blink/renderer/core/frame/web_frame_widget_base.cc +++ b/third_party/blink/renderer/core/frame/web_frame_widget_base.cc
@@ -318,11 +318,6 @@ } #endif -void WebFrameWidgetBase::BindWidgetCompositor( - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver) { - widget_base_->BindWidgetCompositor(std::move(receiver)); -} - void WebFrameWidgetBase::CancelDrag() { // It's possible for this to be called while we're not doing a drag if // it's from a previous page that got unloaded. @@ -555,6 +550,17 @@ return false; } +void WebFrameWidgetBase::UpdateVisualProperties( + const VisualProperties& visual_properties) { + Client()->UpdateVisualProperties(visual_properties); +} + +void WebFrameWidgetBase::UpdateScreenRects( + const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) { + Client()->UpdateScreenRects(widget_screen_rect, window_screen_rect); +} + void WebFrameWidgetBase::ScheduleAnimationForWebTests() { Client()->ScheduleAnimationForWebTests(); }
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_base.h b/third_party/blink/renderer/core/frame/web_frame_widget_base.h index f3b324e..acade8a 100644 --- a/third_party/blink/renderer/core/frame/web_frame_widget_base.h +++ b/third_party/blink/renderer/core/frame/web_frame_widget_base.h
@@ -331,6 +331,10 @@ blink::FrameWidget* FrameWidget() override { return this; } void ScheduleAnimation() override; bool ShouldAckSyntheticInputImmediately() override; + void UpdateVisualProperties( + const VisualProperties& visual_properties) override; + void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) override; void ScheduleAnimationForWebTests() override; // mojom::blink::FrameWidget methods. @@ -376,9 +380,6 @@ base::Optional<gfx::Point> GetAndResetContextMenuLocation(); - void BindWidgetCompositor( - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver) override; - // Called when the FrameView for this Widget's local root is created. virtual void DidCreateLocalRootView() {}
diff --git a/third_party/blink/renderer/core/input/event_handler.cc b/third_party/blink/renderer/core/input/event_handler.cc index c22b03b..c1a44b0 100644 --- a/third_party/blink/renderer/core/input/event_handler.cc +++ b/third_party/blink/renderer/core/input/event_handler.cc
@@ -588,14 +588,27 @@ continue; // For large cursors below the max size, limit their ability to cover UI - // elements by removing them when they intersect with the visual viewport. + // elements by removing them when they are not fully contained by the + // visual viewport. Careful, we need to make sure to translate coordinate + // spaces if we are in an OOPIF. + // // TODO(csharrison): Consider sending a fallback cursor in the IPC to the - // browser process so we can do that calculation there instead. + // browser process so we can do that calculation there instead, this would + // ensure even a compromised renderer could not obscure browser UI with a + // large cursor. Also, consider augmenting the intervention to drop the + // cursor for iframes if the cursor image obscures content in the parent + // frame. if (size.Width() > kMaximumCursorSizeWithoutFallback || size.Height() > kMaximumCursorSizeWithoutFallback) { - IntRect cursor_rect(IntPoint(location.RoundedPoint() - hot_spot), size); - IntRect visible_rect = page->GetVisualViewport().VisibleContentRect(); - if (!visible_rect.Contains(cursor_rect)) { + PhysicalOffset cursor_offset = + frame_->ContentLayoutObject()->LocalToAncestorPoint( + location.Point(), + nullptr, // no ancestor maps all the way up the hierarchy + kTraverseDocumentBoundaries | kApplyMainFrameTransform) - + PhysicalOffset(hot_spot); + PhysicalRect cursor_rect(cursor_offset, LayoutSize(size)); + if (!PhysicalRect(page->GetVisualViewport().VisibleContentRect()) + .Contains(cursor_rect)) { Deprecation::CountDeprecation( node->GetExecutionContext(), WebFeature::kCustomCursorIntersectsViewport);
diff --git a/third_party/blink/renderer/core/layout/api/line_layout_item.h b/third_party/blink/renderer/core/layout/api/line_layout_item.h index 54d5aea..beace42 100644 --- a/third_party/blink/renderer/core/layout/api/line_layout_item.h +++ b/third_party/blink/renderer/core/layout/api/line_layout_item.h
@@ -286,9 +286,6 @@ return layout_object_->DocumentBeingDestroyed(); } - IntRect VisualRectForInlineBox() const { - return layout_object_->VisualRectForInlineBox(); - } IntRect PartialInvalidationVisualRectForInlineBox() const { return layout_object_->PartialInvalidationVisualRectForInlineBox(); }
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h index bff3a4e..9fae1b0 100644 --- a/third_party/blink/renderer/core/layout/layout_object.h +++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -299,10 +299,6 @@ return FirstFragment().PartialInvalidationVisualRect(); } - IntRect VisualRectForInlineBox() const { - return AdjustVisualRectForInlineBox(VisualRect()); - } - IntRect PartialInvalidationVisualRectForInlineBox() const { return AdjustVisualRectForInlineBox(PartialInvalidationVisualRect()); }
diff --git a/third_party/blink/renderer/core/layout/line/inline_box.cc b/third_party/blink/renderer/core/layout/line/inline_box.cc index c373985..05d41f4 100644 --- a/third_party/blink/renderer/core/layout/line/inline_box.cc +++ b/third_party/blink/renderer/core/layout/line/inline_box.cc
@@ -93,10 +93,6 @@ return BoxName(); } -IntRect InlineBox::VisualRect() const { - return GetLineLayoutItem().VisualRectForInlineBox(); -} - IntRect InlineBox::PartialInvalidationVisualRect() const { return GetLineLayoutItem().PartialInvalidationVisualRectForInlineBox(); }
diff --git a/third_party/blink/renderer/core/layout/line/inline_box.h b/third_party/blink/renderer/core/layout/line/inline_box.h index 404f02f..b528d79 100644 --- a/third_party/blink/renderer/core/layout/line/inline_box.h +++ b/third_party/blink/renderer/core/layout/line/inline_box.h
@@ -129,7 +129,6 @@ // DisplayItemClient methods String DebugName() const override; - IntRect VisualRect() const override; IntRect PartialInvalidationVisualRect() const override; DOMNodeId OwnerNodeId() const override;
diff --git a/third_party/blink/renderer/core/layout/line/inline_text_box.cc b/third_party/blink/renderer/core/layout/line/inline_text_box.cc index ce5323e..8f673ca 100644 --- a/third_party/blink/renderer/core/layout/line/inline_text_box.cc +++ b/third_party/blink/renderer/core/layout/line/inline_text_box.cc
@@ -95,6 +95,14 @@ g_text_boxes_with_overflow->Set(this, rect); } +PhysicalRect InlineTextBox::PhysicalOverflowRect() const { + LayoutRect overflow_rect = LogicalOverflowRect(); + if (!IsHorizontal()) + overflow_rect = overflow_rect.TransposedRect(); + FlipForWritingMode(overflow_rect); + return PhysicalRectToBeNoop(overflow_rect); +} + void InlineTextBox::Move(const LayoutSize& delta) { InlineBox::Move(delta);
diff --git a/third_party/blink/renderer/core/layout/line/inline_text_box.h b/third_party/blink/renderer/core/layout/line/inline_text_box.h index 127cc1a..1b9b264 100644 --- a/third_party/blink/renderer/core/layout/line/inline_text_box.h +++ b/third_party/blink/renderer/core/layout/line/inline_text_box.h
@@ -102,6 +102,7 @@ LayoutUnit LogicalBottomVisualOverflow() const { return LogicalOverflowRect().MaxY(); } + PhysicalRect PhysicalOverflowRect() const; // charactersWithHyphen, if provided, must not be destroyed before the // TextRun.
diff --git a/third_party/blink/renderer/core/paint/ellipsis_box_painter.cc b/third_party/blink/renderer/core/paint/ellipsis_box_painter.cc index 9ee178b..5f26ca31 100644 --- a/third_party/blink/renderer/core/paint/ellipsis_box_painter.cc +++ b/third_party/blink/renderer/core/paint/ellipsis_box_painter.cc
@@ -42,13 +42,17 @@ paint_info.phase)) return; - DrawingRecorder recorder(context, ellipsis_box_, paint_info.phase); - // If vertical, |box_rect| is in the physical coordinates space under the // rotation transform. PhysicalRect box_rect(box_origin, PhysicalSize(ellipsis_box_.LogicalWidth(), ellipsis_box_.VirtualLogicalHeight())); + DCHECK(ellipsis_box_.KnownToHaveNoOverflow()); + IntRect visual_rect = EnclosingIntRect(box_rect); + if (!ellipsis_box_.IsHorizontal()) + visual_rect.SetSize(visual_rect.Size().TransposedSize()); + DrawingRecorder recorder(context, ellipsis_box_, paint_info.phase, + visual_rect); GraphicsContextStateSaver state_saver(context); if (!ellipsis_box_.IsHorizontal()) @@ -76,7 +80,7 @@ context.GetPaintController().SetTextPainted(); if (!font.ShouldSkipDrawing()) - PaintTimingDetector::NotifyTextPaint(ellipsis_box_.VisualRect()); + PaintTimingDetector::NotifyTextPaint(visual_rect); } } // namespace blink
diff --git a/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc b/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc index 7f11509..3130b76 100644 --- a/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc +++ b/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc
@@ -210,10 +210,10 @@ DisplayItem::kBoxDecorationBackground)) return; + PhysicalRect paint_rect = AdjustedFrameRect(paint_offset); DrawingRecorder recorder(paint_info.context, inline_flow_box_, - DisplayItem::kBoxDecorationBackground); - - PhysicalRect paint_rect = AdjustedPaintRect(paint_offset); + DisplayItem::kBoxDecorationBackground, + VisualRect(paint_rect)); bool object_has_multiple_boxes = inline_flow_box_.PrevForSameLayoutObject() || inline_flow_box_.NextForSameLayoutObject(); @@ -239,10 +239,10 @@ if (DrawingRecorder::UseCachedDrawingIfPossible( paint_info.context, inline_flow_box_, paint_info.phase)) return; - DrawingRecorder recorder(paint_info.context, inline_flow_box_, - paint_info.phase); - PhysicalRect paint_rect = AdjustedPaintRect(paint_offset); + PhysicalRect paint_rect = AdjustedFrameRect(paint_offset); + DrawingRecorder recorder(paint_info.context, inline_flow_box_, + paint_info.phase, VisualRect(paint_rect)); const auto& mask_nine_piece_image = box_model.StyleRef().MaskBoxImage(); const auto* mask_box_image = mask_nine_piece_image.GetImage(); @@ -321,7 +321,7 @@ return rect; } -PhysicalRect InlineFlowBoxPainter::AdjustedPaintRect( +PhysicalRect InlineFlowBoxPainter::AdjustedFrameRect( const PhysicalOffset& paint_offset) const { LayoutRect frame_rect = FrameRectClampedToLineTopAndBottomIfNeeded(); LayoutRect local_rect = frame_rect; @@ -331,6 +331,15 @@ return PhysicalRect(adjusted_paint_offset, frame_rect.Size()); } +IntRect InlineFlowBoxPainter::VisualRect( + const PhysicalRect& adjusted_frame_rect) const { + PhysicalRect visual_rect = adjusted_frame_rect; + const auto& style = inline_flow_box_.GetLineLayoutItem().StyleRef(); + if (style.HasVisualOverflowingEffect()) + visual_rect.Expand(style.BoxDecorationOutsets()); + return EnclosingIntRect(visual_rect); +} + void InlineFlowBoxPainter::RecordHitTestData( const PaintInfo& paint_info, const PhysicalOffset& paint_offset) { @@ -340,7 +349,7 @@ DCHECK_EQ(layout_object->StyleRef().Visibility(), EVisibility::kVisible); paint_info.context.GetPaintController().RecordHitTestData( - inline_flow_box_, PixelSnappedIntRect(AdjustedPaintRect(paint_offset)), + inline_flow_box_, PixelSnappedIntRect(AdjustedFrameRect(paint_offset)), layout_object->EffectiveAllowedTouchAction()); }
diff --git a/third_party/blink/renderer/core/paint/inline_flow_box_painter.h b/third_party/blink/renderer/core/paint/inline_flow_box_painter.h index b471079..817fc4b4 100644 --- a/third_party/blink/renderer/core/paint/inline_flow_box_painter.h +++ b/third_party/blink/renderer/core/paint/inline_flow_box_painter.h
@@ -53,7 +53,8 @@ const PhysicalOffset& paint_offset); void PaintMask(const PaintInfo&, const PhysicalOffset& paint_offset); - PhysicalRect AdjustedPaintRect(const PhysicalOffset& paint_offset) const; + PhysicalRect AdjustedFrameRect(const PhysicalOffset& paint_offset) const; + IntRect VisualRect(const PhysicalRect& adjusted_frame_rect) const; // Expands the bounds of the current paint chunk for hit test, and records // special touch action if any. This should be called in the background paint
diff --git a/third_party/blink/renderer/core/paint/inline_text_box_painter.cc b/third_party/blink/renderer/core/paint/inline_text_box_painter.cc index e97e1bc3..f404a91 100644 --- a/third_party/blink/renderer/core/paint/inline_text_box_painter.cc +++ b/third_party/blink/renderer/core/paint/inline_text_box_painter.cc
@@ -120,28 +120,19 @@ void InlineTextBoxPainter::Paint(const PaintInfo& paint_info, const PhysicalOffset& paint_offset) { - if (!ShouldPaintTextBox(paint_info)) + // We can skip painting if the text box is empty and has no selection. + if (inline_text_box_.Truncation() == kCFullTruncation || + !inline_text_box_.Len()) + return; + + const auto& style_to_use = inline_text_box_.GetLineLayoutItem().StyleRef( + inline_text_box_.IsFirstLineStyle()); + if (style_to_use.Visibility() != EVisibility::kVisible) return; DCHECK(!ShouldPaintSelfOutline(paint_info.phase) && !ShouldPaintDescendantOutlines(paint_info.phase)); - LayoutRect logical_visual_overflow = inline_text_box_.LogicalOverflowRect(); - LayoutUnit logical_start = - logical_visual_overflow.X() + - (inline_text_box_.IsHorizontal() ? paint_offset.left : paint_offset.top); - LayoutUnit logical_extent = logical_visual_overflow.Width(); - - if (inline_text_box_.IsHorizontal()) { - if (!paint_info.GetCullRect().IntersectsHorizontalRange( - logical_start, logical_start + logical_extent)) - return; - } else { - if (!paint_info.GetCullRect().IntersectsVerticalRange( - logical_start, logical_start + logical_extent)) - return; - } - bool is_printing = paint_info.IsPrinting(); // Determine whether or not we're selected. @@ -153,6 +144,14 @@ return; } + PhysicalRect physical_overflow = inline_text_box_.PhysicalOverflowRect(); + if (!paint_info.IntersectsCullRect(physical_overflow, paint_offset) && + !have_selection) + return; + + physical_overflow.Move(paint_offset); + IntRect visual_rect = EnclosingIntRect(physical_overflow); + // The text clip phase already has a DrawingRecorder. Text clips are initiated // only in BoxPainter::PaintFillLayer, which is already within a // DrawingRecorder. @@ -161,14 +160,11 @@ if (DrawingRecorder::UseCachedDrawingIfPossible( paint_info.context, inline_text_box_, paint_info.phase)) return; - recorder.emplace(paint_info.context, inline_text_box_, paint_info.phase); + recorder.emplace(paint_info.context, inline_text_box_, paint_info.phase, + visual_rect); } GraphicsContext& context = paint_info.context; - const ComputedStyle& style_to_use = - inline_text_box_.GetLineLayoutItem().StyleRef( - inline_text_box_.IsFirstLineStyle()); - PhysicalOffset box_origin = inline_text_box_.PhysicalLocation() + paint_offset; @@ -288,13 +284,30 @@ PaintDocumentMarkers(markers_to_paint, paint_info, box_origin, style_to_use, font, DocumentMarkerPaintPhase::kBackground); if (have_selection) { - if (combined_text) - PaintSelection<InlineTextBoxPainter::PaintOptions::kCombinedText>( - context, box_rect, style_to_use, font, selection_style.fill_color, - combined_text); - else - PaintSelection<InlineTextBoxPainter::PaintOptions::kNormal>( - context, box_rect, style_to_use, font, selection_style.fill_color); + PhysicalRect selection_rect; + if (combined_text) { + selection_rect = + PaintSelection<InlineTextBoxPainter::PaintOptions::kCombinedText>( + context, box_rect, style_to_use, font, + selection_style.fill_color, combined_text); + } else { + selection_rect = + PaintSelection<InlineTextBoxPainter::PaintOptions::kNormal>( + context, box_rect, style_to_use, font, + selection_style.fill_color); + } + + if (recorder && !box_rect.Contains(selection_rect)) { + if (should_rotate) { + // selection_rect is in the coordinates space of the rotation + // transform. Convert it to the non-rotated space for visual rect. + selection_rect.Move(-box_rect.offset); + std::swap(selection_rect.offset.left, selection_rect.offset.top); + std::swap(selection_rect.size.width, selection_rect.size.height); + selection_rect.Move(box_rect.offset); + } + recorder->UniteVisualRect(EnclosingIntRect(selection_rect)); + } } } @@ -437,16 +450,7 @@ } if (!font.ShouldSkipDrawing()) - PaintTimingDetector::NotifyTextPaint(inline_text_box_.VisualRect()); -} - -bool InlineTextBoxPainter::ShouldPaintTextBox(const PaintInfo& paint_info) { - // We can skip painting if the text box (including selection) is invisible. - if (inline_text_box_.Truncation() == kCFullTruncation || - !inline_text_box_.Len() || inline_text_box_.VisualRect().IsEmpty()) - return false; - - return true; + PaintTimingDetector::NotifyTextPaint(visual_rect); } InlineTextBoxPainter::PaintOffsets @@ -778,17 +782,18 @@ } template <InlineTextBoxPainter::PaintOptions options> -void InlineTextBoxPainter::PaintSelection(GraphicsContext& context, - const PhysicalRect& box_rect, - const ComputedStyle& style, - const Font& font, - Color text_color, - LayoutTextCombine* combined_text) { +PhysicalRect InlineTextBoxPainter::PaintSelection( + GraphicsContext& context, + const PhysicalRect& box_rect, + const ComputedStyle& style, + const Font& font, + Color text_color, + LayoutTextCombine* combined_text) { auto layout_item = inline_text_box_.GetLineLayoutItem(); Color c = SelectionPaintingUtils::SelectionBackgroundColor( layout_item.GetDocument(), layout_item.StyleRef(), layout_item.GetNode()); if (!c.Alpha()) - return; + return PhysicalRect(); PhysicalRect selection_rect = GetSelectionRect<options>(context, box_rect, style, font, combined_text); @@ -801,6 +806,7 @@ GraphicsContextStateSaver state_saver(context); context.FillRect(FloatRect(selection_rect), c); + return selection_rect; } void InlineTextBoxPainter::ExpandToIncludeNewlineForSelection(
diff --git a/third_party/blink/renderer/core/paint/inline_text_box_painter.h b/third_party/blink/renderer/core/paint/inline_text_box_painter.h index 5585dfa..b00dc521 100644 --- a/third_party/blink/renderer/core/paint/inline_text_box_painter.h +++ b/third_party/blink/renderer/core/paint/inline_text_box_painter.h
@@ -76,13 +76,15 @@ Color background_color, int start_pos, int end_pos); + + // Returns the selection rect. template <PaintOptions> - void PaintSelection(GraphicsContext&, - const PhysicalRect& box_rect, - const ComputedStyle&, - const Font&, - Color text_color, - LayoutTextCombine* = nullptr); + PhysicalRect PaintSelection(GraphicsContext&, + const PhysicalRect& box_rect, + const ComputedStyle&, + const Font&, + Color text_color, + LayoutTextCombine* = nullptr); template <PaintOptions> PhysicalRect GetSelectionRect(GraphicsContext&, @@ -105,7 +107,6 @@ // text match markers, which do draw over said ellipsis) PaintOffsets MarkerPaintStartAndEnd(const DocumentMarker&); - bool ShouldPaintTextBox(const PaintInfo&); void ExpandToIncludeNewlineForSelection(PhysicalRect&); LayoutObject& InlineLayoutObject() const;
diff --git a/third_party/blink/renderer/core/paint/line_box_list_painter.cc b/third_party/blink/renderer/core/paint/line_box_list_painter.cc index e02ed061..87d3efb 100644 --- a/third_party/blink/renderer/core/paint/line_box_list_painter.cc +++ b/third_party/blink/renderer/core/paint/line_box_list_painter.cc
@@ -160,11 +160,13 @@ DisplayItem::kForcedColorsModeBackplate)) return; + const auto& backplates = GetBackplates(paint_offset); + IntRect visual_rect = EnclosingIntRect(UnionRect(backplates)); DrawingRecorder recorder(paint_info.context, layout_object, - DisplayItem::kForcedColorsModeBackplate); + DisplayItem::kForcedColorsModeBackplate, + visual_rect); Color backplate_color = layout_object.GetDocument().GetStyleEngine().ForcedBackgroundColor(); - const auto& backplates = GetBackplates(paint_offset); for (const auto backplate : backplates) paint_info.context.FillRect(FloatRect(backplate), backplate_color); }
diff --git a/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.cc index c27547d..cb665b1 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.cc
@@ -36,8 +36,11 @@ paint_info.context, display_item_client, paint_info.phase)) return; + IntRect visual_rect = + PixelSnappedIntRect(UnionRectEvenIfEmpty(outline_rects)); + visual_rect.Inflate(fragment.Style().OutlineOutsetExtent()); DrawingRecorder recorder(paint_info.context, display_item_client, - paint_info.phase); + paint_info.phase, visual_rect); PaintOutlineRects(paint_info, outline_rects, fragment.Style()); } @@ -59,11 +62,13 @@ if (!url.IsValid()) return; - const DisplayItemClient& display_item_client = GetDisplayItemClient(); - IntRect rect = display_item_client.VisualRect(); + auto outline_rects = fragment.GetLayoutObject()->OutlineRects( + paint_offset, NGOutlineType::kIncludeBlockVisualOverflow); + IntRect rect = PixelSnappedIntRect(UnionRect(outline_rects)); if (rect.IsEmpty()) return; + const DisplayItemClient& display_item_client = GetDisplayItemClient(); if (DrawingRecorder::UseCachedDrawingIfPossible( paint_info.context, display_item_client, DisplayItem::kPrintedContentPDFURLRect))
diff --git a/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc index 278e40cc..c47a7af 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc
@@ -111,13 +111,12 @@ DisplayItem::kBoxDecorationBackground)) return; - DrawingRecorder recorder(paint_info.context, display_item_client, - DisplayItem::kBoxDecorationBackground); - PhysicalRect frame_rect = inline_box_fragment_.LocalRect(); - PhysicalOffset adjusted_paint_offset = paint_offset; + PhysicalRect adjusted_frame_rect(paint_offset, frame_rect.size); - PhysicalRect adjusted_frame_rect(adjusted_paint_offset, frame_rect.size); + DrawingRecorder recorder(paint_info.context, display_item_client, + DisplayItem::kBoxDecorationBackground, + VisualRect(paint_offset)); DCHECK(inline_box_fragment_.GetLayoutObject()); const LayoutObject& layout_object = *inline_box_fragment_.GetLayoutObject(); @@ -151,6 +150,19 @@ border_edges.line_left, border_edges.line_right); } +IntRect NGInlineBoxFragmentPainterBase::VisualRect( + const PhysicalOffset& paint_offset) { + PhysicalRect overflow_rect; + if (inline_box_paint_fragment_) { + overflow_rect = inline_box_paint_fragment_->SelfInkOverflow(); + } else { + DCHECK(inline_box_item_); + overflow_rect = inline_box_item_->SelfInkOverflow(); + } + overflow_rect.Move(paint_offset); + return EnclosingIntRect(overflow_rect); +} + void NGLineBoxFragmentPainter::PaintBackgroundBorderShadow( const PaintInfo& paint_info, const PhysicalOffset& paint_offset) { @@ -176,9 +188,6 @@ DisplayItem::kBoxDecorationBackground)) return; - DrawingRecorder recorder(paint_info.context, display_item_client, - DisplayItem::kBoxDecorationBackground); - // Compute the content box for the `::first-line` box. It's different from // fragment size because the height of line box includes `line-height` while // the height of inline box does not. The box "behaves similar to that of an @@ -199,6 +208,10 @@ } rect.offset += paint_offset; + DrawingRecorder recorder(paint_info.context, display_item_client, + DisplayItem::kBoxDecorationBackground, + VisualRect(paint_offset)); + const LayoutBlockFlow& layout_block_flow = *To<LayoutBlockFlow>(block_fragment_.GetLayoutObject()); BackgroundImageGeometry geometry(layout_block_flow);
diff --git a/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.h b/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.h index 960628c..ef404a5 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.h +++ b/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.h
@@ -121,6 +121,8 @@ void PaintBackgroundBorderShadow(const PaintInfo&, const PhysicalOffset& paint_offset); + IntRect VisualRect(const PhysicalOffset& paint_offset); + const NGPhysicalFragment& inline_box_fragment_; const NGPaintFragment* inline_box_paint_fragment_ = nullptr; const NGFragmentItem* inline_box_item_ = nullptr;
diff --git a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc index ee640bfb..6646a95e 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc
@@ -646,8 +646,8 @@ // pre-paint. Use the stored value in the LayoutObject. bool this_as_inline_box; const auto& layout_object = VisualRectLayoutObject(this_as_inline_box); - return this_as_inline_box ? layout_object.VisualRectForInlineBox() - : layout_object.FragmentsVisualRectBoundingBox(); + DCHECK(!this_as_inline_box); + return layout_object.FragmentsVisualRectBoundingBox(); } IntRect NGPaintFragment::PartialInvalidationVisualRect() const {
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc index 35106c338..0723b58 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc
@@ -381,11 +381,12 @@ !paint_selected_text_only_ && text_style != selection_style_; } - void ComputeSelectionRect(const PhysicalOffset& box_offset) { + PhysicalRect ComputeSelectionRect(const PhysicalOffset& box_offset) { DCHECK(!selection_rect_); selection_rect_ = ComputeLocalSelectionRectForText(containing_block_, selection_status_); selection_rect_->offset += box_offset; + return *selection_rect_; } // Logic is copied from InlineTextBoxPainter::PaintSelection. @@ -511,19 +512,19 @@ // We can skip painting if the fragment (including selection) is invisible. if (!text_item.TextLength()) return; - const IntRect visual_rect = AsDisplayItemClient(cursor_).VisualRect(); - if (visual_rect.IsEmpty()) - return; if (!text_item.TextShapeResult() && // A line break's selection tint is still visible. !text_item.IsLineBreak()) return; + const ComputedStyle& style = text_item.Style(); + if (style.Visibility() != EVisibility::kVisible) + return; + const NGTextFragmentPaintInfo& fragment_paint_info = GetTextFragmentPaintInfo(cursor_); const LayoutObject* layout_object = text_item.GetLayoutObject(); - const ComputedStyle& style = text_item.Style(); const Document& document = layout_object->GetDocument(); const bool is_printing = paint_info.IsPrinting(); @@ -548,6 +549,11 @@ return; } + PhysicalRect box_rect = ComputeBoxRect(cursor_, paint_offset, parent_offset_); + PhysicalRect ink_overflow = text_item.SelfInkOverflow(); + ink_overflow.Move(box_rect.offset); + IntRect visual_rect = EnclosingIntRect(ink_overflow); + // The text clip phase already has a DrawingRecorder. Text clips are initiated // only in BoxPainterBase::PaintFillLayer, which is already within a // DrawingRecorder. @@ -557,11 +563,9 @@ paint_info.context, AsDisplayItemClient(cursor_), paint_info.phase)) return; recorder.emplace(paint_info.context, AsDisplayItemClient(cursor_), - paint_info.phase); + paint_info.phase, visual_rect); } - PhysicalRect box_rect = ComputeBoxRect(cursor_, paint_offset, parent_offset_); - if (UNLIKELY(text_item.IsSymbolMarker())) { // The NGInlineItem of marker might be Split(). To avoid calling PaintSymbol // multiple times, only call it the first time. For an outside marker, this @@ -608,8 +612,10 @@ markers_to_paint, box_rect.offset, style, DocumentMarkerPaintPhase::kBackground, nullptr); if (UNLIKELY(selection)) { - selection->ComputeSelectionRect(box_rect.offset); + auto selection_rect = selection->ComputeSelectionRect(box_rect.offset); selection->PaintSelectionBackground(context, node, document, style); + if (recorder) + recorder->UniteVisualRect(EnclosingIntRect(selection_rect)); } }
diff --git a/third_party/blink/renderer/core/paint/object_paint_invalidator.cc b/third_party/blink/renderer/core/paint/object_paint_invalidator.cc index ade95ab..71e0921 100644 --- a/third_party/blink/renderer/core/paint/object_paint_invalidator.cc +++ b/third_party/blink/renderer/core/paint/object_paint_invalidator.cc
@@ -148,26 +148,6 @@ }); } -void ObjectPaintInvalidator:: - InvalidatePaintIncludingNonSelfPaintingLayerDescendants() { - SlowSetPaintingLayerNeedsRepaint(); - // This method may be used to invalidate paint of objects changing paint - // invalidation container. - struct Helper { - static void Traverse(const LayoutObject& object) { - object.GetMutableForPainting().SetShouldDoFullPaintInvalidation( - PaintInvalidationReason::kCompositing); - for (LayoutObject* child = object.SlowFirstChild(); child; - child = child->NextSibling()) { - if (!child->HasLayer() || - !ToLayoutBoxModelObject(child)->Layer()->IsSelfPaintingLayer()) - Traverse(*child); - } - } - }; - Helper::Traverse(object_); -} - #if DCHECK_IS_ON() void ObjectPaintInvalidator::CheckPaintLayerNeedsRepaint() { DCHECK(!object_.PaintingLayer() ||
diff --git a/third_party/blink/renderer/core/paint/object_paint_invalidator.h b/third_party/blink/renderer/core/paint/object_paint_invalidator.h index acf8e16..1f8d0c8 100644 --- a/third_party/blink/renderer/core/paint/object_paint_invalidator.h +++ b/third_party/blink/renderer/core/paint/object_paint_invalidator.h
@@ -56,7 +56,6 @@ } void InvalidatePaintIncludingNonCompositingDescendants(); - void InvalidatePaintIncludingNonSelfPaintingLayerDescendants(); protected: #if DCHECK_IS_ON()
diff --git a/third_party/blink/renderer/core/paint/object_painter.cc b/third_party/blink/renderer/core/paint/object_painter.cc index 633e651..6a0775d 100644 --- a/third_party/blink/renderer/core/paint/object_painter.cc +++ b/third_party/blink/renderer/core/paint/object_painter.cc
@@ -45,8 +45,11 @@ paint_info.context, layout_object_, paint_info.phase)) return; - DrawingRecorder recorder(paint_info.context, layout_object_, - paint_info.phase); + IntRect visual_rect = + PixelSnappedIntRect(UnionRectEvenIfEmpty(outline_rects)); + visual_rect.Inflate(style_to_use.OutlineOutsetExtent()); + DrawingRecorder recorder(paint_info.context, layout_object_, paint_info.phase, + visual_rect); PaintOutlineRects(paint_info, outline_rects, style_to_use); } @@ -86,7 +89,7 @@ return; DrawingRecorder recorder(paint_info.context, layout_object_, - DisplayItem::kPrintedContentPDFURLRect); + DisplayItem::kPrintedContentPDFURLRect, rect); if (url.HasFragmentIdentifier() && EqualIgnoringFragmentIdentifier(url, layout_object_.GetDocument().BaseURL())) {
diff --git a/third_party/blink/renderer/core/paint/paint_layer.cc b/third_party/blink/renderer/core/paint/paint_layer.cc index cd48054..6c1cf2e 100644 --- a/third_party/blink/renderer/core/paint/paint_layer.cc +++ b/third_party/blink/renderer/core/paint/paint_layer.cc
@@ -1392,25 +1392,7 @@ curr = curr->NextSibling()) curr->MoveLayers(parent_, this); - // If the previous directly composited container is not a stacking context and - // this object is stacked content, creating this layer may cause this object - // and its descendants to change paint invalidation container. - bool did_set_paint_invalidation = false; - if (!RuntimeEnabledFeatures::CompositeAfterPaintEnabled() && - !IsA<LayoutView>(GetLayoutObject()) && GetLayoutObject().IsRooted() && - GetLayoutObject().IsStacked()) { - const LayoutBoxModelObject& previous_directly_compositable_container = - GetLayoutObject().Parent()->DirectlyCompositableContainer(); - if (!previous_directly_compositable_container.IsStackingContext()) { - ObjectPaintInvalidator(GetLayoutObject()) - .InvalidatePaintIncludingNonSelfPaintingLayerDescendants(); - // Set needsRepaint along the original compositingContainer chain. - GetLayoutObject().Parent()->EnclosingLayer()->SetNeedsRepaint(); - did_set_paint_invalidation = true; - } - } - - if (!did_set_paint_invalidation && IsSelfPaintingLayer() && parent_) { + if (IsSelfPaintingLayer() && parent_) { if (PaintLayer* enclosing_self_painting_layer = parent_->EnclosingSelfPaintingLayer()) MergeNeedsPaintPhaseFlagsFrom(*enclosing_self_painting_layer);
diff --git a/third_party/blink/renderer/core/paint/svg_inline_text_box_painter.cc b/third_party/blink/renderer/core/paint/svg_inline_text_box_painter.cc index 5a9cb84..9733eeb8 100644 --- a/third_party/blink/renderer/core/paint/svg_inline_text_box_painter.cc +++ b/third_party/blink/renderer/core/paint/svg_inline_text_box_painter.cc
@@ -100,8 +100,10 @@ LayoutObject& parent_layout_object = ParentInlineLayoutObject(); const ComputedStyle& style = parent_layout_object.StyleRef(); - DrawingRecorder recorder(paint_info.context, svg_inline_text_box_, - paint_info.phase); + DrawingRecorder recorder( + paint_info.context, svg_inline_text_box_, paint_info.phase, + EnclosingIntRect( + parent_layout_object.VisualRectInLocalSVGCoordinates())); InlineTextBoxPainter text_painter(svg_inline_text_box_); const DocumentMarkerVector& markers_to_paint = text_painter.ComputeMarkersToPaint();
diff --git a/third_party/blink/renderer/core/streams/readable_stream.cc b/third_party/blink/renderer/core/streams/readable_stream.cc index 87b6e39d..1f73e42 100644 --- a/third_party/blink/renderer/core/streams/readable_stream.cc +++ b/third_party/blink/renderer/core/streams/readable_stream.cc
@@ -1581,19 +1581,13 @@ *branch2 = engine->Branch2(); } -void ReadableStream::LockAndDisturb(ScriptState* script_state, - ExceptionState& exception_state) { - ScriptState::Scope scope(script_state); - +void ReadableStream::LockAndDisturb(ScriptState* script_state) { if (reader_) { return; } - ReadableStreamReader* reader = - AcquireDefaultReader(script_state, this, false, exception_state); - if (!reader) { - return; - } + ReadableStreamReader* reader = GetReaderNotForAuthorCode(script_state); + DCHECK(reader); is_disturbed_ = true; } @@ -1633,8 +1627,11 @@ } ReadableStreamDefaultReader* ReadableStream::GetReaderNotForAuthorCode( - ScriptState* script_state, - ExceptionState& exception_state) { + ScriptState* script_state) { + DCHECK(!IsLocked(this)); + + // Since the stream is not locked, AcquireDefaultReader cannot fail. + NonThrowableExceptionState exception_state(__FILE__, __LINE__); return AcquireDefaultReader(script_state, this, false, exception_state); }
diff --git a/third_party/blink/renderer/core/streams/readable_stream.h b/third_party/blink/renderer/core/streams/readable_stream.h index c12ac7ec..c4424338 100644 --- a/third_party/blink/renderer/core/streams/readable_stream.h +++ b/third_party/blink/renderer/core/streams/readable_stream.h
@@ -153,7 +153,7 @@ bool IsErrored() const { return IsErrored(this); } - void LockAndDisturb(ScriptState*, ExceptionState&); + void LockAndDisturb(ScriptState*); void Serialize(ScriptState*, MessagePort* port, ExceptionState&); @@ -164,9 +164,9 @@ // Returns a reader that doesn't have the |for_author_code_| flag set. This is // used in contexts where reads should not be interceptable by user code. This // corresponds to calling AcquireReadableStreamDefaultReader(stream, false) in - // specification language. - ReadableStreamDefaultReader* GetReaderNotForAuthorCode(ScriptState*, - ExceptionState&); + // specification language. The caller must ensure that the stream is not + // locked. + ReadableStreamDefaultReader* GetReaderNotForAuthorCode(ScriptState*); // // Readable stream abstract operations
diff --git a/third_party/blink/renderer/core/streams/readable_stream_test.cc b/third_party/blink/renderer/core/streams/readable_stream_test.cc index f1f144c..fe5038d 100644 --- a/third_party/blink/renderer/core/streams/readable_stream_test.cc +++ b/third_party/blink/renderer/core/streams/readable_stream_test.cc
@@ -336,7 +336,6 @@ TEST_F(ReadableStreamTest, LockAndDisturb) { V8TestingScope scope; ScriptState* script_state = scope.GetScriptState(); - ExceptionState& exception_state = scope.GetExceptionState(); auto* underlying_source = MakeGarbageCollected<TestUnderlyingSource>(script_state); @@ -348,8 +347,7 @@ EXPECT_FALSE(stream->IsLocked()); EXPECT_FALSE(stream->IsDisturbed()); - stream->LockAndDisturb(script_state, exception_state); - ASSERT_FALSE(exception_state.HadException()); + stream->LockAndDisturb(script_state); EXPECT_TRUE(stream->IsLocked()); EXPECT_TRUE(stream->IsDisturbed());
diff --git a/third_party/blink/renderer/core/style/computed_style_test.cc b/third_party/blink/renderer/core/style/computed_style_test.cc index bdd2834..6de81f9 100644 --- a/third_party/blink/renderer/core/style/computed_style_test.cc +++ b/third_party/blink/renderer/core/style/computed_style_test.cc
@@ -17,6 +17,7 @@ #include "third_party/blink/renderer/core/css/parser/css_parser.h" #include "third_party/blink/renderer/core/css/properties/css_property_ref.h" #include "third_party/blink/renderer/core/css/property_registry.h" +#include "third_party/blink/renderer/core/css/resolver/style_cascade.h" #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h" #include "third_party/blink/renderer/core/css/style_engine.h" #include "third_party/blink/renderer/core/dom/document.h"
diff --git a/third_party/blink/renderer/core/testing/internals.cc b/third_party/blink/renderer/core/testing/internals.cc index 9419319..e6d423d8 100644 --- a/third_party/blink/renderer/core/testing/internals.cc +++ b/third_party/blink/renderer/core/testing/internals.cc
@@ -3381,6 +3381,10 @@ return remote_frame->View()->NeedsOcclusionTracking(); } +void Internals::DisableFrequencyCappingForOverlayPopupDetection() const { + OverlayInterstitialAdDetector::DisableFrequencyCappingForTesting(); +} + void Internals::addEmbedderCustomElementName(const AtomicString& name, ExceptionState& exception_state) { CustomElement::AddEmbedderCustomElementNameForTesting(name, exception_state);
diff --git a/third_party/blink/renderer/core/testing/internals.h b/third_party/blink/renderer/core/testing/internals.h index 4882009..38ef73e 100644 --- a/third_party/blink/renderer/core/testing/internals.h +++ b/third_party/blink/renderer/core/testing/internals.h
@@ -582,6 +582,8 @@ bool isSiteIsolated(HTMLIFrameElement* iframe) const; bool isTrackingOcclusionForIFrame(HTMLIFrameElement* iframe) const; + void DisableFrequencyCappingForOverlayPopupDetection() const; + void addEmbedderCustomElementName(const AtomicString& name, ExceptionState&); LocalFrame* GetFrame() const;
diff --git a/third_party/blink/renderer/core/testing/internals.idl b/third_party/blink/renderer/core/testing/internals.idl index 4cf44df..85713d41 100644 --- a/third_party/blink/renderer/core/testing/internals.idl +++ b/third_party/blink/renderer/core/testing/internals.idl
@@ -406,6 +406,11 @@ // instances that track visibility. boolean isTrackingOcclusionForIFrame(HTMLIFrameElement iframe); + // Disable the frequency capping for overlay popup detection. This + // eliminates the need to for waitings in web tests to trigger a detection + // event. + void DisableFrequencyCappingForOverlayPopupDetection(); + // Declare that the given |name| is in use by the embedder via the custom // element mechanism. [RaisesException] void addEmbedderCustomElementName(DOMString name);
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc index ac5be29..d9012d97 100644 --- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc +++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
@@ -143,10 +143,7 @@ return nullptr; auto blob_handle = buffer->DrainAsBlobDataHandle( - BytesConsumer::BlobSizePolicy::kDisallowBlobWithInvalidSize, - exception_state); - if (exception_state.HadException()) - return nullptr; + BytesConsumer::BlobSizePolicy::kDisallowBlobWithInvalidSize); return blob_handle; }
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_stream_unittest.cc b/third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_stream_unittest.cc index 538dc937..c6e370c2 100644 --- a/third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_stream_unittest.cc +++ b/third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_stream_unittest.cc
@@ -102,7 +102,7 @@ TEST_F(P2PQuicStreamTest, StreamResetSendsRst) { InitializeStream(); - EXPECT_CALL(*session_, SendRstStream(kStreamId, _, _)); + EXPECT_CALL(*session_, SendRstStream(kStreamId, _, _, _)); stream_->Reset(); EXPECT_TRUE(stream_->rst_sent()); } @@ -216,7 +216,7 @@ // Google RST_STREAM closes the stream in both directions. A RST_STREAM // is then sent to the peer to communicate the final byte offset. EXPECT_CALL(*session_, - SendRstStream(kStreamId, quic::QUIC_RST_ACKNOWLEDGEMENT, 0)); + SendRstStream(kStreamId, quic::QUIC_RST_ACKNOWLEDGEMENT, 0, _)); } stream_->OnStreamReset(rst_frame); if (VersionHasIetfQuicFrames(connection_->version().transport_version)) {
diff --git a/third_party/blink/renderer/modules/service_worker/fetch_respond_with_observer.cc b/third_party/blink/renderer/modules/service_worker/fetch_respond_with_observer.cc index f1e28214..88f4396 100644 --- a/third_party/blink/renderer/modules/service_worker/fetch_respond_with_observer.cc +++ b/third_party/blink/renderer/modules/service_worker/fetch_respond_with_observer.cc
@@ -327,12 +327,8 @@ scoped_refptr<BlobDataHandle> blob_data_handle = buffer->DrainAsBlobDataHandle( - BytesConsumer::BlobSizePolicy::kAllowBlobWithInvalidSize, - exception_state); - if (exception_state.HadException()) { - OnResponseRejected(ServiceWorkerResponseError::kResponseBodyBroken); - return; - } + BytesConsumer::BlobSizePolicy::kAllowBlobWithInvalidSize); + if (blob_data_handle) { // Handle the blob response body. fetch_api_response->blob = blob_data_handle;
diff --git a/third_party/blink/renderer/modules/webaudio/cpu/arm/oscillator_kernel_neon.cc b/third_party/blink/renderer/modules/webaudio/cpu/arm/oscillator_kernel_neon.cc index 238bcb36..e5ecb66 100644 --- a/third_party/blink/renderer/modules/webaudio/cpu/arm/oscillator_kernel_neon.cc +++ b/third_party/blink/renderer/modules/webaudio/cpu/arm/oscillator_kernel_neon.cc
@@ -6,14 +6,16 @@ #include "third_party/blink/renderer/modules/webaudio/periodic_wave.h" +#if defined(CPU_ARM_NEON) #include <arm_neon.h> +#endif namespace blink { #if defined(CPU_ARM_NEON) -static float32x4_t v_wrap_virtual_index(float32x4_t x, - float32x4_t wave_size, - float32x4_t inv_wave_size) { +static float32x4_t WrapVirtualIndexVector(float32x4_t x, + float32x4_t wave_size, + float32x4_t inv_wave_size) { // r = x/wave_size, f = truncate(r), truncating towards 0 const float32x4_t r = vmulq_f32(x, inv_wave_size); int32x4_t f = vcvtq_s32_f32(r); @@ -74,7 +76,7 @@ // It's possible that adding the incr above exceeded the bounds, so wrap them // if needed. v_virt_index = - v_wrap_virtual_index(v_virt_index, v_wave_size, v_inv_wave_size); + WrapVirtualIndexVector(v_virt_index, v_wave_size, v_inv_wave_size); int k = 0; int n_loops = n / 4; @@ -119,17 +121,125 @@ // 0 -> periodicWaveSize. v_virt_index = vaddq_f32(v_virt_index, v_incr); v_virt_index = - v_wrap_virtual_index(v_virt_index, v_wave_size, v_inv_wave_size); + WrapVirtualIndexVector(v_virt_index, v_wave_size, v_inv_wave_size); } // There's a bit of round-off above, so update the index more accurately so at // least the next render starts over with a more accurate value. virtual_read_index += k * incr; virtual_read_index -= - floor(virtual_read_index * inv_periodic_wave_size) * periodic_wave_size; + std::floor(virtual_read_index * inv_periodic_wave_size) * + periodic_wave_size; return std::make_tuple(k, virtual_read_index); } + +static ALWAYS_INLINE double WrapVirtualIndex(double virtual_index, + unsigned periodic_wave_size, + double inv_periodic_wave_size) { + return virtual_index - + floor(virtual_index * inv_periodic_wave_size) * periodic_wave_size; +} + +double OscillatorHandler::ProcessARateVectorKernel( + float* destination, + double virtual_read_index, + const float* phase_increments, + unsigned periodic_wave_size, + const float* const lower_wave_data[4], + const float* const higher_wave_data[4], + const float table_interpolation_factor[4]) const { + // See the scalar version in oscillator_node.cc for the basic algorithm. + double inv_periodic_wave_size = 1.0 / periodic_wave_size; + unsigned read_index_mask = periodic_wave_size - 1; + + // Accumulate the phase increments so we can set up the virtual read index + // vector appropriately. This must be a double to preserve accuracy and + // to match the scalar version. + double incr_sum[4]; + incr_sum[0] = phase_increments[0]; + for (int m = 1; m < 4; ++m) { + incr_sum[m] = incr_sum[m - 1] + phase_increments[m]; + } + + // It's really important for accuracy that we use doubles instead of + // floats for the virtual_read_index. Without this, we can only get some + // 30-50 dB in the sweep tests instead of 100+ dB. + // + // Arm NEON doesn't have float64x2_t so we have to do this. (Aarch64 has + // float64x2_t.) + double virt_index[4]; + virt_index[0] = virtual_read_index; + virt_index[1] = WrapVirtualIndex(virtual_read_index + incr_sum[0], + periodic_wave_size, inv_periodic_wave_size); + virt_index[2] = WrapVirtualIndex(virtual_read_index + incr_sum[1], + periodic_wave_size, inv_periodic_wave_size); + virt_index[3] = WrapVirtualIndex(virtual_read_index + incr_sum[2], + periodic_wave_size, inv_periodic_wave_size); + + // The virtual indices we're working with now. + const float32x4_t v_virt_index = { + static_cast<float>(virt_index[0]), static_cast<float>(virt_index[1]), + static_cast<float>(virt_index[2]), static_cast<float>(virt_index[3])}; + + // Convert virtual index to actual index into wave data. + const uint32x4_t v_read0 = vcvtq_u32_f32(v_virt_index); + + // v_read1 = v_read0 + 1, but wrap the index around, if needed. + const uint32x4_t v_read1 = vandq_s32(vaddq_s32(v_read0, vdupq_n_u32(1)), + vdupq_n_u32(read_index_mask)); + + float sample1_lower[4] __attribute__((aligned(16))); + float sample2_lower[4] __attribute__((aligned(16))); + float sample1_higher[4] __attribute__((aligned(16))); + float sample2_higher[4] __attribute__((aligned(16))); + + uint32_t read0[4] __attribute__((aligned(16))); + uint32_t read1[4] __attribute__((aligned(16))); + + vst1q_u32(read0, v_read0); + vst1q_u32(read1, v_read1); + + // Read the samples from the wave tables + for (int m = 0; m < 4; ++m) { + DCHECK_LT(read0[m], periodic_wave_size); + DCHECK_LT(read1[m], periodic_wave_size); + + sample1_lower[m] = lower_wave_data[m][read0[m]]; + sample2_lower[m] = lower_wave_data[m][read1[m]]; + sample1_higher[m] = higher_wave_data[m][read0[m]]; + sample2_higher[m] = higher_wave_data[m][read1[m]]; + } + + // Compute factor for linear interpolation within a wave table. + const float32x4_t v_factor = vsubq_f32(v_virt_index, vcvtq_f32_u32(v_read0)); + + // Linearly interpolate between samples from the higher wave table. + const float32x4_t sample_higher = vmlaq_f32( + vld1q_f32(sample1_higher), v_factor, + vsubq_f32(vld1q_f32(sample2_higher), vld1q_f32(sample1_higher))); + + // Linearly interpolate between samples from the lower wave table. + const float32x4_t sample_lower = + vmlaq_f32(vld1q_f32(sample1_lower), v_factor, + vsubq_f32(vld1q_f32(sample2_lower), vld1q_f32(sample1_lower))); + + // Linearly interpolate between wave tables to get the desired + // output samples. + const float32x4_t sample = + vmlaq_f32(sample_higher, vld1q_f32(table_interpolation_factor), + vsubq_f32(sample_lower, sample_higher)); + + vst1q_f32(destination, sample); + + // Update the virtual_read_index appropriately and return it for the + // next call. + virtual_read_index = + WrapVirtualIndex(virtual_read_index + incr_sum[3], periodic_wave_size, + inv_periodic_wave_size); + + return virtual_read_index; +} #endif } // namespace blink
diff --git a/third_party/blink/renderer/modules/webaudio/oscillator_node.cc b/third_party/blink/renderer/modules/webaudio/oscillator_node.cc index 49465e0..2d27b51 100644 --- a/third_party/blink/renderer/modules/webaudio/oscillator_node.cc +++ b/third_party/blink/renderer/modules/webaudio/oscillator_node.cc
@@ -371,7 +371,7 @@ } #endif -#if !defined(ARCH_CPU_X86_FAMILY) +#if !(defined(ARCH_CPU_X86_FAMILY) || defined(CPU_ARM_NEON)) double OscillatorHandler::ProcessARateVectorKernel( float* dest_p, double virtual_read_index,
diff --git a/third_party/blink/renderer/modules/webaudio/periodic_wave.cc b/third_party/blink/renderer/modules/webaudio/periodic_wave.cc index 610cf1a..2ea0d53 100644 --- a/third_party/blink/renderer/modules/webaudio/periodic_wave.cc +++ b/third_party/blink/renderer/modules/webaudio/periodic_wave.cc
@@ -38,6 +38,10 @@ #include "third_party/blink/renderer/platform/audio/vector_math.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" +#if defined(CPU_ARM_NEON) +#include <arm_neon.h> +#endif + namespace blink { // The number of bands per octave. Each octave will have this many entries in @@ -270,6 +274,64 @@ higher_wave_data[k] = band_limited_tables_[range_index1[k]]->Data(); } } +#elif defined(CPU_ARM_NEON) +void PeriodicWave::WaveDataForFundamentalFrequency( + const float fundamental_frequency[4], + float* lower_wave_data[4], + float* higher_wave_data[4], + float table_interpolation_factor[4]) { + // Negative frequencies are allowed, in which case we alias to the positive + // frequency. + float32x4_t frequency = vabsq_f32(vld1q_f32(fundamental_frequency)); + + // pos = 0xffffffff if frequency > 0; otherwise 0. + uint32x4_t pos = vcgtq_f32(frequency, vdupq_n_f32(0)); + + // v_ratio = frequency / lowest_fundamental_frequency_. But NEON + // doesn't have a division instruction, so multiply by reciprocal. + // (Aarch64 does, though). + float32x4_t v_ratio = + vmulq_f32(frequency, vdupq_n_f32(1 / lowest_fundamental_frequency_)); + + // Select v_ratio or 0.5 depending on whether pos is all ones or all + // zeroes. + v_ratio = vbslq_f32(pos, v_ratio, vdupq_n_f32(0.5)); + + float ratio[4] __attribute__((aligned(16))); + vst1q_f32(ratio, v_ratio); + + float cents_above_lowest_frequency[4] __attribute__((aligned(16))); + + for (int k = 0; k < 4; ++k) { + cents_above_lowest_frequency[k] = log2f(ratio[k]) * 1200; + } + + float32x4_t v_pitch_range = vaddq_f32( + vdupq_n_f32(1.0), vmulq_f32(vld1q_f32(cents_above_lowest_frequency), + vdupq_n_f32(1 / cents_per_range_))); + + v_pitch_range = vmaxq_f32(v_pitch_range, vdupq_n_f32(0)); + v_pitch_range = vminq_f32(v_pitch_range, vdupq_n_f32(NumberOfRanges() - 1)); + + const uint32x4_t v_index1 = vcvtq_u32_f32(v_pitch_range); + uint32x4_t v_index2 = vaddq_u32(v_index1, vdupq_n_u32(1)); + v_index2 = vminq_u32(v_index2, vdupq_n_f32(NumberOfRanges() - 1)); + + uint32_t range_index1[4] __attribute__((aligned(16))); + uint32_t range_index2[4] __attribute__((aligned(16))); + + vst1q_u32(range_index1, v_index1); + vst1q_u32(range_index2, v_index2); + + const float32x4_t table_factor = + vsubq_f32(v_pitch_range, vcvtq_f32_u32(v_index1)); + vst1q_f32(table_interpolation_factor, table_factor); + + for (int k = 0; k < 4; ++k) { + lower_wave_data[k] = band_limited_tables_[range_index2[k]]->Data(); + higher_wave_data[k] = band_limited_tables_[range_index1[k]]->Data(); + } +} #else void PeriodicWave::WaveDataForFundamentalFrequency( const float fundamental_frequency[4],
diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc b/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc index 039f05a7..8d25564e 100644 --- a/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc +++ b/third_party/blink/renderer/modules/webcodecs/image_decoder_external.cc
@@ -75,10 +75,14 @@ prefer_animation_ = init->preferAnimation(); if (init->data().IsReadableStream()) { - consumer_ = MakeGarbageCollected<ReadableStreamBytesConsumer>( - script_state, init->data().GetAsReadableStream(), exception_state); - if (exception_state.HadException()) + if (init->data().GetAsReadableStream()->IsLocked()) { + exception_state.ThrowTypeError( + "ImageDecoder can only accept readable streams that are not yet " + "locked to a reader"); return; + } + consumer_ = MakeGarbageCollected<ReadableStreamBytesConsumer>( + script_state, init->data().GetAsReadableStream()); stream_buffer_ = WTF::SharedBuffer::Create(); CreateImageDecoder();
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn index 5f85046..984e5cc 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -1469,12 +1469,6 @@ "widget/compositing/layer_tree_view.cc", "widget/compositing/layer_tree_view.h", "widget/compositing/layer_tree_view_delegate.h", - "widget/compositing/queue_report_time_swap_promise.cc", - "widget/compositing/queue_report_time_swap_promise.h", - "widget/compositing/widget_compositor.cc", - "widget/compositing/widget_compositor.h", - "widget/compositing/widget_swap_queue.cc", - "widget/compositing/widget_swap_queue.h", "widget/frame_widget.cc", "widget/frame_widget.h", "widget/input/compositor_thread_event_queue.cc", @@ -2052,7 +2046,6 @@ "widget/compositing/layer_tree_settings_unittest.cc", "widget/compositing/layer_tree_view_unittest.cc", "widget/compositing/test/stub_layer_tree_view_delegate.h", - "widget/compositing/widget_compositor_unittest.cc", "widget/input/input_event_prediction_unittest.cc", "widget/input/input_handler_proxy_unittest.cc", "widget/input/input_scroll_elasticity_controller_unittest.cc",
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc index 89dcc51..dec0d38 100644 --- a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc +++ b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc
@@ -228,7 +228,7 @@ frame->metadata.frame_token = ++next_frame_token_; const gfx::Rect bounds(size_.Width(), size_.Height()); - constexpr int kRenderPassId = 1; + constexpr viz::RenderPassId kRenderPassId{1}; constexpr bool is_clipped = false; auto pass = viz::RenderPass::Create(/*shared_quad_state_list_size=*/1u, /*quad_list_size=*/1u);
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc b/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc index 8182c62d..79bc2fb 100644 --- a/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc +++ b/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc
@@ -608,8 +608,8 @@ // allocate using the defaults of 32 and 128 since we only append one quad. auto render_pass = viz::RenderPass::Create(/*shared_quad_state_list_size=*/1u, /*quad_list_size*/ 1u); - render_pass->SetNew(1, gfx::Rect(frame_size_), gfx::Rect(frame_size_), - gfx::Transform()); + render_pass->SetNew(viz::RenderPassId{1}, gfx::Rect(frame_size_), + gfx::Rect(frame_size_), gfx::Transform()); if (video_frame) { compositor_frame.metadata.content_color_usage =
diff --git a/third_party/blink/renderer/platform/widget/compositing/queue_report_time_swap_promise.cc b/third_party/blink/renderer/platform/widget/compositing/queue_report_time_swap_promise.cc deleted file mode 100644 index 14f77cc..0000000 --- a/third_party/blink/renderer/platform/widget/compositing/queue_report_time_swap_promise.cc +++ /dev/null
@@ -1,55 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -#include "third_party/blink/renderer/platform/widget/compositing/queue_report_time_swap_promise.h" - -namespace blink { - -QueueReportTimeSwapPromise::QueueReportTimeSwapPromise( - int source_frame_number, - DrainCallback drain_callback, - base::OnceClosure swap_callback, - scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner) - : source_frame_number_(source_frame_number), - drain_callback_(std::move(drain_callback)), - swap_callback_(std::move(swap_callback)), - compositor_task_runner_(std::move(compositor_task_runner)) {} - -QueueReportTimeSwapPromise::~QueueReportTimeSwapPromise() { - if (compositor_task_runner_ && (drain_callback_ || swap_callback_)) { - DCHECK(!compositor_task_runner_->BelongsToCurrentThread()); - compositor_task_runner_->PostTask( - FROM_HERE, - base::BindOnce([](DrainCallback, base::OnceClosure) {}, - std::move(drain_callback_), std::move(swap_callback_))); - } -} - -void QueueReportTimeSwapPromise::WillSwap( - viz::CompositorFrameMetadata* metadata) { - DCHECK_GT(metadata->frame_token, 0u); -} - -void QueueReportTimeSwapPromise::DidSwap() { - if (swap_callback_) - std::move(swap_callback_).Run(); -} - -cc::SwapPromise::DidNotSwapAction QueueReportTimeSwapPromise::DidNotSwap( - DidNotSwapReason reason) { - if (reason == cc::SwapPromise::SWAP_FAILS || - reason == cc::SwapPromise::COMMIT_NO_UPDATE) { - if (drain_callback_) - std::move(drain_callback_).Run(source_frame_number_); - if (swap_callback_) - std::move(swap_callback_).Run(); - } - return DidNotSwapAction::BREAK_PROMISE; -} - -void QueueReportTimeSwapPromise::DidActivate() { - if (drain_callback_) - std::move(drain_callback_).Run(source_frame_number_); -} - -} // namespace blink
diff --git a/third_party/blink/renderer/platform/widget/compositing/queue_report_time_swap_promise.h b/third_party/blink/renderer/platform/widget/compositing/queue_report_time_swap_promise.h deleted file mode 100644 index b0ef8ad..0000000 --- a/third_party/blink/renderer/platform/widget/compositing/queue_report_time_swap_promise.h +++ /dev/null
@@ -1,48 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_QUEUE_REPORT_TIME_SWAP_PROMISE_H_ -#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_QUEUE_REPORT_TIME_SWAP_PROMISE_H_ - -#include "base/memory/scoped_refptr.h" -#include "base/single_thread_task_runner.h" -#include "cc/trees/swap_promise.h" - -namespace blink { - -// This class invokes DrainCallback to drain queued callbacks for frame numbers -// lower or equal to |source_frame_number| when the commit results in a -// successful activation of the pending layer tree in swap promise. -// -// This class doesn't have the reporting callback of the swap time. -class QueueReportTimeSwapPromise : public cc::SwapPromise { - public: - using DrainCallback = base::OnceCallback<void(int)>; - QueueReportTimeSwapPromise( - int source_frame_number, - DrainCallback drain_callback, - base::OnceClosure swap_callback, - scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner); - ~QueueReportTimeSwapPromise() override; - QueueReportTimeSwapPromise(const QueueReportTimeSwapPromise&) = delete; - QueueReportTimeSwapPromise& operator=(const QueueReportTimeSwapPromise&) = - delete; - - void WillSwap(viz::CompositorFrameMetadata* metadata) override; - void DidSwap() override; - cc::SwapPromise::DidNotSwapAction DidNotSwap( - DidNotSwapReason reason) override; - void DidActivate() override; - int64_t TraceId() const override { return 0; } - - private: - int source_frame_number_; - DrainCallback drain_callback_; - base::OnceClosure swap_callback_; - scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_QUEUE_REPORT_TIME_SWAP_PROMISE_H_
diff --git a/third_party/blink/renderer/platform/widget/compositing/widget_compositor.cc b/third_party/blink/renderer/platform/widget/compositing/widget_compositor.cc deleted file mode 100644 index 88d33c7..0000000 --- a/third_party/blink/renderer/platform/widget/compositing/widget_compositor.cc +++ /dev/null
@@ -1,126 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "third_party/blink/renderer/platform/widget/compositing/widget_compositor.h" - -#include "cc/trees/layer_tree_host.h" -#include "third_party/blink/renderer/platform/widget/compositing/queue_report_time_swap_promise.h" -#include "third_party/blink/renderer/platform/widget/widget_base.h" - -namespace blink { - -WidgetCompositor::WidgetCompositor( - base::WeakPtr<WidgetBase> widget_base, - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, - scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver) - : widget_base_(widget_base), - main_task_runner_(std::move(main_task_runner)), - compositor_task_runner_(std::move(compositor_task_runner)), - swap_queue_(std::make_unique<WidgetSwapQueue>()) { - if (!compositor_task_runner_) { - BindOnThread(std::move(receiver)); - } else { - compositor_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&WidgetCompositor::BindOnThread, - base::Unretained(this), std::move(receiver))); - } -} - -void WidgetCompositor::Shutdown() { - if (!compositor_task_runner_) { - ResetOnThread(); - } else { - compositor_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&WidgetCompositor::ResetOnThread, - scoped_refptr<WidgetCompositor>(this))); - } -} - -void WidgetCompositor::BindOnThread( - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver) { - DCHECK(CalledOnValidCompositorThread()); - receiver_.Bind(std::move(receiver), compositor_task_runner_); -} - -void WidgetCompositor::ResetOnThread() { - DCHECK(CalledOnValidCompositorThread()); - receiver_.reset(); -} - -void WidgetCompositor::VisualStateRequest(VisualStateRequestCallback callback) { - DCHECK(CalledOnValidCompositorThread()); - - auto drain_callback = - WTF::Bind(&WidgetCompositor::DrainQueue, base::RetainedRef(this)); - auto swap_callback = WTF::Bind(&WidgetCompositor::VisualStateResponse, - base::RetainedRef(this)); - if (!compositor_task_runner_) { - CreateQueueSwapPromise(std::move(drain_callback), std::move(swap_callback), - std::move(callback)); - } else { - main_task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&WidgetCompositor::CreateQueueSwapPromise, - base::RetainedRef(this), std::move(drain_callback), - std::move(swap_callback), std::move(callback))); - } -} - -cc::LayerTreeHost* WidgetCompositor::LayerTreeHost() const { - return widget_base_->LayerTreeHost(); -} - -void WidgetCompositor::CreateQueueSwapPromise( - base::OnceCallback<void(int)> drain_callback, - base::OnceClosure swap_callback, - VisualStateRequestCallback callback) { - DCHECK(main_task_runner_->BelongsToCurrentThread()); - - if (!widget_base_) - return; - - bool first_message_for_frame = false; - int source_frame_number = LayerTreeHost()->SourceFrameNumber(); - swap_queue_->Queue(source_frame_number, std::move(callback), - &first_message_for_frame); - if (first_message_for_frame) { - LayerTreeHost()->QueueSwapPromise( - std::make_unique<QueueReportTimeSwapPromise>( - source_frame_number, std::move(drain_callback), - std::move(swap_callback), compositor_task_runner_)); - // Request a main frame if one is not already in progress. This might either - // A) request a commit ahead of time or B) request a commit which is not - // needed because there are not pending updates. If B) then the frame will - // be aborted early and the swap promises will be broken (see - // EarlyOut_NoUpdates). - LayerTreeHost()->SetNeedsAnimateIfNotInsideMainFrame(); - } else if (compositor_task_runner_) { - // Delete callbacks on the compositor thread. - compositor_task_runner_->PostTask( - FROM_HERE, - base::BindOnce([](base::OnceCallback<void(int)>, base::OnceClosure) {}, - std::move(drain_callback), std::move(swap_callback))); - } -} - -void WidgetCompositor::VisualStateResponse() { - DCHECK(CalledOnValidCompositorThread()); - Vector<VisualStateRequestCallback> callbacks; - swap_queue_->GetCallbacks(&callbacks); - for (auto& callback : callbacks) - std::move(callback).Run(); -} - -void WidgetCompositor::DrainQueue(int source_frame_number) { - DCHECK(CalledOnValidCompositorThread()); - swap_queue_->Drain(source_frame_number); -} - -bool WidgetCompositor::CalledOnValidCompositorThread() { - return !compositor_task_runner_ || - compositor_task_runner_->BelongsToCurrentThread(); -} - -} // namespace blink
diff --git a/third_party/blink/renderer/platform/widget/compositing/widget_compositor.h b/third_party/blink/renderer/platform/widget/compositing/widget_compositor.h deleted file mode 100644 index dd8832f..0000000 --- a/third_party/blink/renderer/platform/widget/compositing/widget_compositor.h +++ /dev/null
@@ -1,63 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_WIDGET_COMPOSITOR_H_ -#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_WIDGET_COMPOSITOR_H_ - -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/receiver.h" -#include "third_party/blink/public/mojom/page/widget.mojom-blink.h" -#include "third_party/blink/renderer/platform/platform_export.h" -#include "third_party/blink/renderer/platform/widget/compositing/widget_swap_queue.h" - -namespace cc { -class LayerTreeHost; -} - -namespace blink { - -class WidgetBase; - -class PLATFORM_EXPORT WidgetCompositor - : public base::RefCountedThreadSafe<WidgetCompositor>, - public mojom::blink::WidgetCompositor { - public: - WidgetCompositor( - base::WeakPtr<WidgetBase> widget_base, - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, - scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver); - ~WidgetCompositor() override = default; - WidgetCompositor(const WidgetCompositor&) = delete; - WidgetCompositor& operator=(const WidgetCompositor&) = delete; - - void Shutdown(); - - // mojom::WidgetCompositor: - void VisualStateRequest(VisualStateRequestCallback callback) override; - - virtual cc::LayerTreeHost* LayerTreeHost() const; - - private: - void BindOnThread( - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver); - void ResetOnThread(); - void CreateQueueSwapPromise(base::OnceCallback<void(int)> drain_callback, - base::OnceClosure swap_callback, - VisualStateRequestCallback callback); - void VisualStateResponse(); - void DrainQueue(int source_frame_number); - bool CalledOnValidCompositorThread(); - - // Note that |widget_base_| is safe to be accessed on the main thread. - base::WeakPtr<WidgetBase> widget_base_; - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; - scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; - mojo::Receiver<mojom::blink::WidgetCompositor> receiver_{this}; - std::unique_ptr<WidgetSwapQueue> swap_queue_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_WIDGET_COMPOSITOR_H_
diff --git a/third_party/blink/renderer/platform/widget/compositing/widget_compositor_unittest.cc b/third_party/blink/renderer/platform/widget/compositing/widget_compositor_unittest.cc deleted file mode 100644 index e3c44549..0000000 --- a/third_party/blink/renderer/platform/widget/compositing/widget_compositor_unittest.cc +++ /dev/null
@@ -1,99 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "third_party/blink/renderer/platform/widget/compositing/widget_compositor.h" - -#include "base/test/task_environment.h" -#include "cc/test/layer_tree_test.h" -#include "cc/trees/layer_tree_host.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "third_party/blink/renderer/platform/widget/widget_base.h" -#include "third_party/blink/renderer/platform/widget/widget_base_client.h" - -namespace blink { - -class StubWidgetBaseClient : public WidgetBaseClient { - public: - void BeginMainFrame(base::TimeTicks) override {} - void RecordTimeToFirstActivePaint(base::TimeDelta) override {} - void UpdateLifecycle(WebLifecycleUpdate, DocumentUpdateReason) override {} - void RequestNewLayerTreeFrameSink(LayerTreeFrameSinkCallback) override {} - WebInputEventResult DispatchBufferedTouchEvents() override { - return WebInputEventResult::kNotHandled; - } - WebInputEventResult HandleInputEvent(const WebCoalescedInputEvent&) override { - return WebInputEventResult::kNotHandled; - } - bool SupportsBufferedTouchEvents() override { return false; } - bool WillHandleGestureEvent(const WebGestureEvent&) override { return false; } - bool WillHandleMouseEvent(const WebMouseEvent&) override { return false; } - void ObserveGestureEventAndResult(const WebGestureEvent&, - const gfx::Vector2dF&, - const cc::OverscrollBehavior&, - bool) override {} - void FocusChanged(bool) override {} -}; - -class FakeWidgetCompositor : public WidgetCompositor { - public: - FakeWidgetCompositor( - cc::LayerTreeHost* layer_tree_host, - base::WeakPtr<WidgetBase> widget_base, - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, - scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver) - : WidgetCompositor(widget_base, - std::move(main_task_runner), - std::move(compositor_task_runner), - std::move(receiver)), - layer_tree_host_(layer_tree_host) {} - - cc::LayerTreeHost* LayerTreeHost() const override { return layer_tree_host_; } - - cc::LayerTreeHost* layer_tree_host_; -}; - -class WidgetCompositorTest : public cc::LayerTreeTest { - public: - using CompositorMode = cc::CompositorMode; - - void BeginTest() override { - widget_base_ = std::make_unique<WidgetBase>( - &client_, - blink::CrossVariantMojoAssociatedRemote< - blink::mojom::WidgetHostInterfaceBase>(), - blink::CrossVariantMojoAssociatedReceiver< - blink::mojom::WidgetInterfaceBase>()); - - widget_compositor_ = base::MakeRefCounted<FakeWidgetCompositor>( - layer_tree_host(), widget_base_->GetWeakPtr(), - layer_tree_host()->GetTaskRunnerProvider()->MainThreadTaskRunner(), - layer_tree_host()->GetTaskRunnerProvider()->ImplThreadTaskRunner(), - remote_.BindNewPipeAndPassReceiver()); - - remote_->VisualStateRequest(base::BindOnce( - &WidgetCompositorTest::VisualStateResponse, base::Unretained(this))); - PostSetNeedsCommitToMainThread(); - } - - void VisualStateResponse() { - is_callback_run_ = true; - widget_compositor_->Shutdown(); - widget_compositor_ = nullptr; - EndTest(); - } - - void AfterTest() override { EXPECT_TRUE(is_callback_run_); } - - mojo::Remote<mojom::blink::WidgetCompositor> remote_; - StubWidgetBaseClient client_; - std::unique_ptr<WidgetBase> widget_base_; - scoped_refptr<FakeWidgetCompositor> widget_compositor_; - bool is_callback_run_ = false; - base::test::SingleThreadTaskEnvironment task_environment_; -}; - -SINGLE_AND_MULTI_THREAD_TEST_F(WidgetCompositorTest); - -} // namespace blink
diff --git a/third_party/blink/renderer/platform/widget/compositing/widget_swap_queue.cc b/third_party/blink/renderer/platform/widget/compositing/widget_swap_queue.cc deleted file mode 100644 index bcb37940..0000000 --- a/third_party/blink/renderer/platform/widget/compositing/widget_swap_queue.cc +++ /dev/null
@@ -1,37 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "third_party/blink/renderer/platform/widget/compositing/widget_swap_queue.h" - -namespace blink { - -void WidgetSwapQueue::Queue(int source_frame_number, - VisualStateRequestCallback callback, - bool* is_first) { - base::AutoLock lock(lock_); - if (is_first) - *is_first = (queue_.count(source_frame_number) == 0); - - queue_[source_frame_number].push_back(std::move(callback)); -} - -void WidgetSwapQueue::Drain(int source_frame_number) { - base::AutoLock lock(lock_); - auto end = queue_.upper_bound(source_frame_number); - for (auto i = queue_.begin(); i != end; i++) { - DCHECK(i->first <= source_frame_number); - std::move(i->second.begin(), i->second.end(), - std::back_inserter(next_callbacks_)); - } - queue_.erase(queue_.begin(), end); -} - -void WidgetSwapQueue::GetCallbacks( - Vector<VisualStateRequestCallback>* callbacks) { - std::move(next_callbacks_.begin(), next_callbacks_.end(), - std::back_inserter(*callbacks)); - next_callbacks_.clear(); -} - -} // namespace blink
diff --git a/third_party/blink/renderer/platform/widget/compositing/widget_swap_queue.h b/third_party/blink/renderer/platform/widget/compositing/widget_swap_queue.h deleted file mode 100644 index 8f73484a..0000000 --- a/third_party/blink/renderer/platform/widget/compositing/widget_swap_queue.h +++ /dev/null
@@ -1,61 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_WIDGET_SWAP_QUEUE_H_ -#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_WIDGET_SWAP_QUEUE_H_ - -#include <map> -#include "base/synchronization/lock.h" -#include "third_party/blink/public/mojom/page/widget.mojom-blink.h" -#include "third_party/blink/renderer/platform/wtf/vector.h" - -namespace blink { - -// Queue used to keep track of which VisualStateRequestCallback should be -// invoked after a particular compositor frame swap. The callbacks are -// guaranteed to be processed after the frame is processed, but there is no -// guarantee that nothing else happens between processing the frame and -// processing the callback. -class WidgetSwapQueue { - public: - using VisualStateRequestCallback = - mojom::blink::WidgetCompositor::VisualStateRequestCallback; - WidgetSwapQueue() = default; - ~WidgetSwapQueue() = default; - WidgetSwapQueue(const WidgetSwapQueue&) = delete; - WidgetSwapQueue& operator=(const WidgetSwapQueue&) = delete; - - // Returns true if there are no callback in the queue. - bool Empty() const { return queue_.empty(); } - - // Queues the callback to be returned on a matching Drain call. - // - // |source_frame_number| - frame number to queue |callback| for. - // |callback| - callback to queue. The method takes ownership of |callback|. - // |is_first| - output parameter. Set to true if this was the first message - // enqueued for the given source_frame_number. - void Queue(int source_frame_number, - VisualStateRequestCallback callback, - bool* is_first); - - // The method will append cllbacks queued for frame numbers lower or equal to - // |source_frame_number| - // - // |source_frame_number| - swapped frame number. - void Drain(int source_frame_number); - - // The method will clear |next_callbacks_| after copying to |callbacks|. - // - // |callbacks| - vector to store callbacks. - void GetCallbacks(Vector<VisualStateRequestCallback>* callbacks); - - private: - base::Lock lock_; - std::map<int, Vector<VisualStateRequestCallback>> queue_; - Vector<VisualStateRequestCallback> next_callbacks_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_COMPOSITING_WIDGET_SWAP_QUEUE_H_
diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_party/blink/renderer/platform/widget/widget_base.cc index 951c02f8..25bb9fd9 100644 --- a/third_party/blink/renderer/platform/widget/widget_base.cc +++ b/third_party/blink/renderer/platform/widget/widget_base.cc
@@ -24,7 +24,6 @@ #include "third_party/blink/renderer/platform/scheduler/public/thread.h" #include "third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.h" #include "third_party/blink/renderer/platform/widget/compositing/layer_tree_view.h" -#include "third_party/blink/renderer/platform/widget/compositing/widget_compositor.h" #include "third_party/blink/renderer/platform/widget/frame_widget.h" #include "third_party/blink/renderer/platform/widget/input/ime_event_guard.h" #include "third_party/blink/renderer/platform/widget/input/main_thread_event_queue.h" @@ -190,11 +189,6 @@ FROM_HERE, base::BindOnce([](scoped_refptr<WidgetInputHandlerManager> manager) {}, std::move(widget_input_handler_manager_))); - - if (widget_compositor_) { - widget_compositor_->Shutdown(); - widget_compositor_ = nullptr; - } } cc::LayerTreeHost* WidgetBase::LayerTreeHost() const { @@ -229,6 +223,18 @@ std::move(host)); } +void WidgetBase::UpdateVisualProperties( + const VisualProperties& visual_properties) { + client_->UpdateVisualProperties(visual_properties); +} + +void WidgetBase::UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect, + UpdateScreenRectsCallback callback) { + client_->UpdateScreenRects(widget_screen_rect, window_screen_rect); + std::move(callback).Run(); +} + void WidgetBase::ApplyViewportChanges( const cc::ApplyViewportChangesArgs& args) { client_->ApplyViewportChanges(args); @@ -581,18 +587,6 @@ client_->FocusChanged(enable); } -void WidgetBase::BindWidgetCompositor( - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver) { - if (widget_compositor_) - widget_compositor_->Shutdown(); - - widget_compositor_ = base::MakeRefCounted<WidgetCompositor>( - weak_ptr_factory_.GetWeakPtr(), - LayerTreeHost()->GetTaskRunnerProvider()->MainThreadTaskRunner(), - LayerTreeHost()->GetTaskRunnerProvider()->ImplThreadTaskRunner(), - std::move(receiver)); -} - void WidgetBase::UpdateCompositionInfo(bool immediate_request) { if (!monitor_composition_info_ && !immediate_request) return; // Do not calculate composition info if not requested.
diff --git a/third_party/blink/renderer/platform/widget/widget_base.h b/third_party/blink/renderer/platform/widget/widget_base.h index b59af4cb..2d9e2e8 100644 --- a/third_party/blink/renderer/platform/widget/widget_base.h +++ b/third_party/blink/renderer/platform/widget/widget_base.h
@@ -39,7 +39,6 @@ class LayerTreeView; class WidgetBaseClient; class WidgetInputHandlerManager; -class WidgetCompositor; namespace scheduler { class WebRenderWidgetSchedulingState; @@ -91,6 +90,11 @@ void GetWidgetInputHandler( mojo::PendingReceiver<mojom::blink::WidgetInputHandler> request, mojo::PendingRemote<mojom::blink::WidgetInputHandlerHost> host) override; + void UpdateVisualProperties( + const VisualProperties& visual_properties) override; + void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect, + UpdateScreenRectsCallback callback) override; // LayerTreeDelegate overrides: // Applies viewport related properties during a commit from the compositor @@ -211,13 +215,6 @@ CrossVariantMojoRemote< mojom::blink::PointerLockContextInterfaceBase>)> callback); - void BindWidgetCompositor( - mojo::PendingReceiver<mojom::blink::WidgetCompositor> receiver); - - base::WeakPtr<WidgetBase> GetWeakPtr() { - return weak_ptr_factory_.GetWeakPtr(); - } - private: bool CanComposeInline(); void UpdateTextInputStateInternal(bool show_virtual_keyboard, @@ -245,7 +242,6 @@ base::TimeTicks was_shown_time_ = base::TimeTicks::Now(); bool has_focus_ = false; WidgetBaseInputHandler input_handler_{this}; - scoped_refptr<WidgetCompositor> widget_compositor_; // Stores the current selection bounds. gfx::Rect selection_focus_rect_;
diff --git a/third_party/blink/renderer/platform/widget/widget_base_client.h b/third_party/blink/renderer/platform/widget/widget_base_client.h index 530360b..c7990f6 100644 --- a/third_party/blink/renderer/platform/widget/widget_base_client.h +++ b/third_party/blink/renderer/platform/widget/widget_base_client.h
@@ -160,6 +160,14 @@ // VR. https://crbug.com/940063 virtual bool ShouldAckSyntheticInputImmediately() { return false; } + // Apply the visual properties. + virtual void UpdateVisualProperties( + const VisualProperties& visual_properties) = 0; + + // Apply the updated screen rects. + virtual void UpdateScreenRects(const gfx::Rect& widget_screen_rect, + const gfx::Rect& window_screen_rect) = 0; + // Test-specific methods below this point. virtual void ScheduleAnimationForWebTests() {} };
diff --git a/third_party/blink/tools/blinkpy/third_party/README.chromium b/third_party/blink/tools/blinkpy/third_party/README.chromium index 55ce0a81..520ea754 100644 --- a/third_party/blink/tools/blinkpy/third_party/README.chromium +++ b/third_party/blink/tools/blinkpy/third_party/README.chromium
@@ -22,7 +22,7 @@ Name: web-platform-tests - Test Suites for Web Platform specifications Short Name: wpt URL: https://github.com/web-platform-tests/wpt/ -Version: 149ce86ecb408e9df28e1f55c236ae4388e77cc0 +Version: 635bf0a5f8fd80f4bbc8b6bef0046a64c9a55cf7 License: LICENSES FOR W3C TEST SUITES (https://www.w3.org/Consortium/Legal/2008/03-bsd-license.html) License File: wpt/wpt/LICENSE.md Security Critical: no
diff --git a/third_party/blink/tools/blinkpy/third_party/wpt/checkout.sh b/third_party/blink/tools/blinkpy/third_party/wpt/checkout.sh index b9e124e..cf77bc90 100755 --- a/third_party/blink/tools/blinkpy/third_party/wpt/checkout.sh +++ b/third_party/blink/tools/blinkpy/third_party/wpt/checkout.sh
@@ -9,7 +9,7 @@ TARGET_DIR=$DIR/wpt REMOTE_REPO="https://github.com/web-platform-tests/wpt.git" -WPT_HEAD=149ce86ecb408e9df28e1f55c236ae4388e77cc0 +WPT_HEAD=635bf0a5f8fd80f4bbc8b6bef0046a64c9a55cf7 function clone { # Remove existing repo if already exists.
diff --git a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/lint/lint.py b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/lint/lint.py index 14052e7..ad053dcc 100644 --- a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/lint/lint.py +++ b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/lint/lint.py
@@ -48,6 +48,11 @@ # ignores the error. Ignorelist = Dict[Text, Dict[Text, Set[Optional[int]]]] + try: + from xml.etree import cElementTree as ElementTree + except ImportError: + from xml.etree import ElementTree as ElementTree # type: ignore + logger = None # type: Optional[logging.Logger] @@ -521,6 +526,9 @@ if timeout_value != "long": errors.append(rules.InvalidTimeout.error(path, (timeout_value,))) + required_elements = [] # type: List[Text] + + testharnessreport_nodes = [] # type: List[ElementTree.Element] if source_file.testharness_nodes: test_type = source_file.manifest_items()[0] if test_type not in ("testharness", "manual"): @@ -543,31 +551,12 @@ if variant != "" and variant[0] not in ("?", "#"): errors.append(rules.MalformedVariant.error(path, (path,))) - seen_elements = {"timeout": False, - "testharness": False, - "testharnessreport": False} - required_elements = [key for key, value in {"testharness": True, - "testharnessreport": len(testharnessreport_nodes) > 0, - "timeout": len(source_file.timeout_nodes) > 0}.items() - if value] + required_elements.extend(key for key, value in {"testharness": True, + "testharnessreport": len(testharnessreport_nodes) > 0, + "timeout": len(source_file.timeout_nodes) > 0}.items() + if value) - for elem in source_file.root.iter(): - if source_file.timeout_nodes and elem == source_file.timeout_nodes[0]: - seen_elements["timeout"] = True - if seen_elements["testharness"]: - errors.append(rules.LateTimeout.error(path)) - - elif elem == source_file.testharness_nodes[0]: - seen_elements["testharness"] = True - - elif testharnessreport_nodes and elem == testharnessreport_nodes[0]: - seen_elements["testharnessreport"] = True - if not seen_elements["testharness"]: - errors.append(rules.EarlyTestharnessReport.error(path)) - - if all(seen_elements[name] for name in required_elements): - break - + testdriver_vendor_nodes = [] # type: List[ElementTree.Element] if source_file.testdriver_nodes: if len(source_file.testdriver_nodes) > 1: errors.append(rules.MultipleTestdriver.error(path)) @@ -579,6 +568,38 @@ if len(testdriver_vendor_nodes) > 1: errors.append(rules.MultipleTestdriverVendor.error(path)) + required_elements.append("testdriver") + if len(testdriver_vendor_nodes) > 0: + required_elements.append("testdriver-vendor") + + if required_elements: + seen_elements = defaultdict(bool) + + for elem in source_file.root.iter(): + if source_file.timeout_nodes and elem == source_file.timeout_nodes[0]: + seen_elements["timeout"] = True + if seen_elements["testharness"]: + errors.append(rules.LateTimeout.error(path)) + + elif source_file.testharness_nodes and elem == source_file.testharness_nodes[0]: + seen_elements["testharness"] = True + + elif testharnessreport_nodes and elem == testharnessreport_nodes[0]: + seen_elements["testharnessreport"] = True + if not seen_elements["testharness"]: + errors.append(rules.EarlyTestharnessReport.error(path)) + + elif source_file.testdriver_nodes and elem == source_file.testdriver_nodes[0]: + seen_elements["testdriver"] = True + + elif testdriver_vendor_nodes and elem == testdriver_vendor_nodes[0]: + seen_elements["testdriver-vendor"] = True + if not seen_elements["testdriver"]: + errors.append(rules.EarlyTestdriverVendor.error(path)) + + if all(seen_elements[name] for name in required_elements): + break + for element in source_file.root.findall(".//{http://www.w3.org/1999/xhtml}script[@src]"): src = element.attrib["src"]
diff --git a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/lint/rules.py b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/lint/rules.py index 6ffd749..c6774579 100644 --- a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/lint/rules.py +++ b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/lint/rules.py
@@ -242,6 +242,16 @@ to_fix = "flip the order" +class EarlyTestdriverVendor(Rule): + name = "EARLY-TESTDRIVER-VENDOR" + description = collapse(""" + Test file has an instance of + `<script src='/resources/testdriver-vendor.js'>` prior to + `<script src='/resources/testdriver.js'>` + """) + to_fix = "flip the order" + + class MultipleTestdriver(Rule): name = "MULTIPLE-TESTDRIVER" description = "More than one `<script src='/resources/testdriver.js'>`"
diff --git a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wpt/run.py b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wpt/run.py index 95d9369..e977b9a 100644 --- a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wpt/run.py +++ b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wpt/run.py
@@ -309,8 +309,8 @@ os.environ["ADB_PATH"] = adb_path adb_path = os.environ["ADB_PATH"] - device = mozdevice.ADBDevice(adb=adb_path, - device=kwargs["device_serial"]) + device = mozdevice.ADBDeviceFactory(adb=adb_path, + device=kwargs["device_serial"]) if install: device.uninstall_app(app)
diff --git a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/request.py b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/request.py index 541ac04..28f407c 100644 --- a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/request.py +++ b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/request.py
@@ -560,6 +560,17 @@ return default raise KeyError(key) + # We need to explicitly override dict.get; otherwise, it won't call + # __getitem__ and would return a list instead. + def get(self, key, default=None): + """Get the first value with a given key + + :param key: The key to lookup + :param default: The default to return if key is + not found (None by default) + """ + return self.first(key, default) + def get_list(self, key): """Get all values with a given key as a list
diff --git a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/response.py b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/response.py index b24f0cd..895f174 100644 --- a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/response.py +++ b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/response.py
@@ -762,9 +762,10 @@ self.content_written = True try: self._wfile.write(self.encode(data)) + return True except socket.error: # This can happen if the socket got closed by the remote end - pass + return False def write_content_file(self, data): """Write a file-like object directly to the response in chunks.
diff --git a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/server.py b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/server.py index c2498c4e..56342ed2 100644 --- a/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/server.py +++ b/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/wptserve/server.py
@@ -29,6 +29,16 @@ from .utils import HTTPException from .constants import h2_headers +# We need to stress test that browsers can send/receive many headers (there is +# no specified limit), but the Python stdlib has an arbitrary limit of 100 +# headers. Hitting the limit would produce an exception that is silently caught +# in Python 2 but leads to HTTP 431 in Python 3, so we monkey patch it higher. +# https://bugs.python.org/issue26586 +# https://github.com/web-platform-tests/wpt/pull/24451 +from six.moves import http_client +assert isinstance(getattr(http_client, '_MAXHEADERS'), int) +setattr(http_client, '_MAXHEADERS', 512) + """ HTTP server designed for testing purposes.
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests index abb1cec..1764a22 100644 --- a/third_party/blink/web_tests/SlowTests +++ b/third_party/blink/web_tests/SlowTests
@@ -539,9 +539,6 @@ crbug.com/1042205 virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/paint2d-filter.https.html [ Slow ] -# Slow is the intended behavior -crbug.com/1048136 http/tests/subresource_filter/overlay-popup-non-ad-followed-by-ad.html [ Slow ] - crbug.com/1093849 external/wpt/dom/nodes/Element-classlist.html [ Slow ] crbug.com/1093853 external/wpt/dom/ranges/Range-surroundContents.html [ Slow ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 1e04fcc7..c7c678b 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -220,6 +220,8 @@ crbug.com/1074482 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html [ Pass Failure ] crbug.com/1074482 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html [ Pass Failure ] crbug.com/1074482 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html [ Pass Failure ] +crbug.com/1105278 [ Mac ] external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html [ Pass Failure ] +crbug.com/1104125 [ Mac ] external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html [ Pass Failure ] # This test has a bug in it that prevents it from being able to deal with order # differences it claims to support. @@ -2759,148 +2761,6 @@ crbug.com/626703 [ Mac10.10 ] virtual/omt-worker-fetch/external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/iframe-tag.http.html [ Timeout ] crbug.com/626703 [ Mac10.10 ] virtual/omt-worker-fetch/external/wpt/xhr/event-load.any.html [ Timeout ] crbug.com/626703 [ Mac10.10 ] virtual/omt-worker-fetch/external/wpt/xhr/access-control-basic-non-cors-safelisted-content-type.htm [ Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win7 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win7 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win ] external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win ] virtual/cors/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win10 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Win7 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win10 ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win7 ] virtual/cors/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win10 ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win7 ] virtual/cors/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.14 ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.11 ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Win7 ] external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/serviceworker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Linux ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/cache-storage-eager-reading/external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win7 ] virtual/cache-storage-sequence/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.14 ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Win10 ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win7 ] external/wpt/service-workers/cache-storage/window/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.12 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Linux ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Win ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] virtual/omt-worker-fetch/external/wpt/service-workers/cache-storage/worker/cache-abort.https.html [ Failure Timeout ] crbug.com/626703 [ Linux ] external/wpt/wasm/jsapi/functions/incumbent.html [ Crash ] crbug.com/626703 [ Mac ] external/wpt/wasm/jsapi/functions/incumbent.html [ Crash ] crbug.com/626703 [ Win ] external/wpt/wasm/jsapi/functions/incumbent.html [ Crash ] @@ -5869,8 +5729,6 @@ crbug.com/943969 [ Mac10.10 ] inspector-protocol/css/css-get-media-queries.js [ Pass Failure ] crbug.com/943969 [ Mac10.11 ] inspector-protocol/css/css-get-media-queries.js [ Pass Failure ] -crbug.com/945085 [ Mac10.13 ] printing/composited-thead-tfoot-repeat.html [ Failure Pass ] - # Sheriff 2019-03-25 crbug.com/945665 http/tests/devtools/elements/styles-3/styles-add-new-rule-tab.js [ Pass Failure ] crbug.com/945665 http/tests/devtools/elements/styles-3/styles-add-new-rule.js [ Pass Failure Timeout ] @@ -7029,7 +6887,6 @@ # Sheriff 2020-07-10 crbug.com/1104118 [ Win ] fast/forms/color/color-suggestion-picker-appearance-value-attribute.html [ Pass Failure ] -crbug.com/1104125 [ Mac ] external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html [ Pass Failure ] crbug.com/1104134 [ Mac10.14 ] virtual/controls-refresh-hc/fast/forms/color-scheme/range/range-pressed-state.html [ Pass Failure ] crbug.com/1102167 external/wpt/fetch/redirect-navigate/preserve-fragment.html [ Timeout Pass ] @@ -7055,7 +6912,6 @@ crbug.com/1105275 [ Mac ] fast/dom/Window/window-onFocus.html [ Pass Failure ] crbug.com/1105276 [ Mac ] virtual/threaded/fast/scroll-snap/snaps-after-keyboard-scrolling-rtl.html [ Pass Failure ] -crbug.com/1105278 [ Mac ] external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html [ Pass Failure ] crbug.com/1105279 [ Mac ] virtual/threaded/fast/scroll-snap/snaps-for-different-key-granularity.html [ Pass Timeout Failure ] # Sheriff 2020-07-15 @@ -7067,15 +6923,3 @@ crbug.com/1094436 http/tests/devtools/persistence/automapping-urlencoded-paths.js [ Pass Failure ] crbug.com/1094436 http/tests/devtools/sources/debugger-ui/snippet-edit-breakpoint.js [ Pass Timeout ] crbug.com/1094436 http/tests/devtools/sources/debugger/navigator-view.js [ Pass Failure Crash ] - -# Sheriff 2020-07-17 -crbug.com/1106861 virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker.html [ Skip ] -crbug.com/1106861 virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.html [ Skip ] -crbug.com/1106861 virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker.html [ Skip ] -crbug.com/1106861 external/wpt/fetch/api/abort/general.any.worker.html [ Skip ] -crbug.com/1106861 virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker.html [ Skip ] -crbug.com/1106861 virtual/cors/external/wpt/fetch/api/abort/general.any.worker.html [ Skip ] -crbug.com/1106861 virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker.html [ Skip ] -crbug.com/1106861 external/wpt/fetch/api/abort/general.any.html [ Skip ] -crbug.com/1106861 virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker.html [ Skip ] -crbug.com/1106861 external/wpt/fetch/api/abort/general.any.sharedworker.html [ Skip ]
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any-expected.txt index 47a8c8da..99afa96 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any-expected.txt
@@ -34,13 +34,13 @@ PASS Already aborted signal does not make request PASS Already aborted signal can be used for many fetches PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" +PASS Underlying connection is closed when aborting after receiving response +PASS Underlying connection is closed when aborting after receiving response - no-cors +PASS Fetch aborted & connection closed when aborted after calling response.arrayBuffer() +PASS Fetch aborted & connection closed when aborted after calling response.blob() +PASS Fetch aborted & connection closed when aborted after calling response.formData() +PASS Fetch aborted & connection closed when aborted after calling response.json() +PASS Fetch aborted & connection closed when aborted after calling response.text() PASS Stream errors once aborted. Underlying connection closed. PASS Stream errors once aborted, after reading. Underlying connection closed. PASS Stream will not error if body is empty. It's closed with an empty queue before it errors.
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt index 5392aa4..99afa96 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt
@@ -34,15 +34,15 @@ PASS Already aborted signal does not make request PASS Already aborted signal can be used for many fetches PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" +PASS Underlying connection is closed when aborting after receiving response +PASS Underlying connection is closed when aborting after receiving response - no-cors +PASS Fetch aborted & connection closed when aborted after calling response.arrayBuffer() +PASS Fetch aborted & connection closed when aborted after calling response.blob() +PASS Fetch aborted & connection closed when aborted after calling response.formData() +PASS Fetch aborted & connection closed when aborted after calling response.json() +PASS Fetch aborted & connection closed when aborted after calling response.text() PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code +PASS Stream errors once aborted, after reading. Underlying connection closed. PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false PASS Signal state is cloned
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt index 47a8c8da..99afa96 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt
@@ -34,13 +34,13 @@ PASS Already aborted signal does not make request PASS Already aborted signal can be used for many fetches PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" +PASS Underlying connection is closed when aborting after receiving response +PASS Underlying connection is closed when aborting after receiving response - no-cors +PASS Fetch aborted & connection closed when aborted after calling response.arrayBuffer() +PASS Fetch aborted & connection closed when aborted after calling response.blob() +PASS Fetch aborted & connection closed when aborted after calling response.formData() +PASS Fetch aborted & connection closed when aborted after calling response.json() +PASS Fetch aborted & connection closed when aborted after calling response.text() PASS Stream errors once aborted. Underlying connection closed. PASS Stream errors once aborted, after reading. Underlying connection closed. PASS Stream will not error if body is empty. It's closed with an empty queue before it errors.
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.worker-expected.txt new file mode 100644 index 0000000..99afa96 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.worker-expected.txt
@@ -0,0 +1,51 @@ +This is a testharness.js-based test. +PASS Aborting rejects with AbortError +PASS Aborting rejects with AbortError - no-cors +PASS TypeError from request constructor takes priority - RequestInit's window is not null +PASS TypeError from request constructor takes priority - Input URL is not valid +PASS TypeError from request constructor takes priority - Input URL has credentials +PASS TypeError from request constructor takes priority - RequestInit's mode is navigate +PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is forbidden +PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple +PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value +PASS TypeError from request constructor takes priority - Bad mode init parameter value +PASS TypeError from request constructor takes priority - Bad credentials init parameter value +PASS TypeError from request constructor takes priority - Bad cache init parameter value +PASS TypeError from request constructor takes priority - Bad redirect init parameter value +PASS Request objects have a signal property +PASS Signal on request object +PASS Signal on request object created from request object +PASS Signal on request object created from request object, with signal on second request +PASS Signal on request object created from request object, with signal on second request overriding another +PASS Signal retained after unrelated properties are overridden by fetch +PASS Signal removed by setting to null +PASS Already aborted signal rejects immediately +PASS Request is still 'used' if signal is aborted before fetching +PASS response.arrayBuffer() rejects if already aborted +PASS response.blob() rejects if already aborted +PASS response.formData() rejects if already aborted +PASS response.json() rejects if already aborted +PASS response.text() rejects if already aborted +PASS Already aborted signal does not make request +PASS Already aborted signal can be used for many fetches +PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting +PASS Underlying connection is closed when aborting after receiving response +PASS Underlying connection is closed when aborting after receiving response - no-cors +PASS Fetch aborted & connection closed when aborted after calling response.arrayBuffer() +PASS Fetch aborted & connection closed when aborted after calling response.blob() +PASS Fetch aborted & connection closed when aborted after calling response.formData() +PASS Fetch aborted & connection closed when aborted after calling response.json() +PASS Fetch aborted & connection closed when aborted after calling response.text() +PASS Stream errors once aborted. Underlying connection closed. +PASS Stream errors once aborted, after reading. Underlying connection closed. +PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. +FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false +PASS Signal state is cloned +PASS Clone aborts with original controller +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/abort/keepalive-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/abort/keepalive-expected.txt deleted file mode 100644 index af3cbab..0000000 --- a/third_party/blink/web_tests/external/wpt/fetch/api/abort/keepalive-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL aborting a keepalive fetch should work assert_equals: connection should be open expected "open" but got "closed" -PASS aborting a detached keepalive fetch should not do anything -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any-expected.txt index 43ad8c1..099610119 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any-expected.txt
@@ -1,8 +1,8 @@ This is a testharness.js-based test. PASS Constructing a Request with a stream holds the original object. -FAIL Constructing a Request with a stream on which getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw -FAIL Constructing a Request with a stream on which read() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw -FAIL Constructing a Request with a stream on which read() and releaseLock() are called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +PASS Constructing a Request with a stream on which getReader() is called +PASS Constructing a Request with a stream on which read() is called +PASS Constructing a Request with a stream on which read() and releaseLock() are called FAIL Constructing a Request with a Request on which body.getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw FAIL Constructing a Request with a Request on which body.getReader().read() is called promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used." FAIL Constructing a Request with a Request on which read() and releaseLock() are called promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used."
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.serviceworker-expected.txt index 43ad8c1..099610119 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.serviceworker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.serviceworker-expected.txt
@@ -1,8 +1,8 @@ This is a testharness.js-based test. PASS Constructing a Request with a stream holds the original object. -FAIL Constructing a Request with a stream on which getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw -FAIL Constructing a Request with a stream on which read() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw -FAIL Constructing a Request with a stream on which read() and releaseLock() are called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +PASS Constructing a Request with a stream on which getReader() is called +PASS Constructing a Request with a stream on which read() is called +PASS Constructing a Request with a stream on which read() and releaseLock() are called FAIL Constructing a Request with a Request on which body.getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw FAIL Constructing a Request with a Request on which body.getReader().read() is called promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used." FAIL Constructing a Request with a Request on which read() and releaseLock() are called promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used."
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.sharedworker-expected.txt index 43ad8c1..099610119 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.sharedworker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.sharedworker-expected.txt
@@ -1,8 +1,8 @@ This is a testharness.js-based test. PASS Constructing a Request with a stream holds the original object. -FAIL Constructing a Request with a stream on which getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw -FAIL Constructing a Request with a stream on which read() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw -FAIL Constructing a Request with a stream on which read() and releaseLock() are called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +PASS Constructing a Request with a stream on which getReader() is called +PASS Constructing a Request with a stream on which read() is called +PASS Constructing a Request with a stream on which read() and releaseLock() are called FAIL Constructing a Request with a Request on which body.getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw FAIL Constructing a Request with a Request on which body.getReader().read() is called promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used." FAIL Constructing a Request with a Request on which read() and releaseLock() are called promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used."
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.worker-expected.txt index 43ad8c1..099610119 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.worker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-init-stream.any.worker-expected.txt
@@ -1,8 +1,8 @@ This is a testharness.js-based test. PASS Constructing a Request with a stream holds the original object. -FAIL Constructing a Request with a stream on which getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw -FAIL Constructing a Request with a stream on which read() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw -FAIL Constructing a Request with a stream on which read() and releaseLock() are called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +PASS Constructing a Request with a stream on which getReader() is called +PASS Constructing a Request with a stream on which read() is called +PASS Constructing a Request with a stream on which read() and releaseLock() are called FAIL Constructing a Request with a Request on which body.getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw FAIL Constructing a Request with a Request on which body.getReader().read() is called promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used." FAIL Constructing a Request with a Request on which read() and releaseLock() are called promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used."
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property.https.html index 994b73d..dfa7380 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property.https.html +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property.https.html
@@ -7,7 +7,7 @@ <script src="../resources/dispatcher.js"></script> <script> -const directory = "/html/cross-origin-opener-policy/access-reporting"; +const directory = "/html/cross-origin-opener-policy/reporting"; const executor_path = directory + "/resources/executor.html?pipe="; const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/delete-into-nested-block-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/delete-into-nested-block-expected.txt index 1a0f8cd0..cb09ef3c 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/delete-into-nested-block-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/delete-into-nested-block-expected.txt
@@ -6,10 +6,10 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [8, 167, 31, 20], - [8, 127, 31, 20], - [8, 127, 27, 21], - [8, 147, 24, 21] + [8, 167, 31, 19], + [8, 127, 31, 19], + [8, 127, 27, 20], + [8, 147, 24, 20] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-1-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-1-expected.txt index 2245152..9f6898b 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-1-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-1-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [14, 80, 406, 119],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-10-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-10-expected.txt index a26d74e7..00576589f 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-10-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-10-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [65, 360, 356, 39],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-3-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-3-expected.txt index b1bf737..e54a5f0 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-3-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-3-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [14, 400, 406, 59],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-4-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-4-expected.txt index 4ee46a3..6aebc83 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-4-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-4-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [14, 460, 407, 59],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-5-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-5-expected.txt index b62bd15..596b0ca8 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-5-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-5-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [49, 360, 372, 39],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-6-expected.txt index 96a31e8..57225f2 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-6-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-6-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [65, 360, 356, 39], @@ -14,7 +14,7 @@ [14, 460, 355, 59], [14, 420, 355, 39], [65, 400, 304, 19], - [27, 363, 22, 20] + [27, 363, 22, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-7-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-7-expected.txt index 1cfe9176..4f1473ba 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-7-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-7-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [65, 360, 356, 39],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-8-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-8-expected.txt index ed13ab1..22b01304 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-8-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-8-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [14, 360, 407, 39],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-9-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-9-expected.txt index 8797145..c0828c55 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-9-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/line-flow-with-floats-9-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [65, 360, 356, 39],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/multicol/multicol-as-paint-container-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/multicol/multicol-as-paint-container-expected.txt index df27eb02..ca080b3c 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/multicol/multicol-as-paint-container-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
@@ -8,12 +8,26 @@ }, { "name": "LayoutBlockFlow DIV id='target'", - "position": [0, -180], - "bounds": [630, 520], + "bounds": [630, 180], "backfaceVisibility": "hidden", "invalidations": [ - [0, 0, 625, 360], - [0, 180, 625, 340] + [325, 140, 300, 20], + [325, 100, 300, 20], + [325, 20, 300, 20], + [325, 0, 300, 20], + [0, 140, 300, 20], + [0, 20, 300, 20], + [325, 60, 280, 20], + [325, 120, 260, 20], + [0, 100, 260, 20], + [0, 120, 240, 20], + [325, 40, 220, 20], + [0, 80, 220, 20], + [0, 40, 220, 20], + [0, 0, 220, 20], + [0, 60, 200, 20], + [325, 80, 140, 20], + [0, 160, 120, 20] ], "transform": 1 }
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt index 1cc90ca..fe523cb 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [8, 230, 302, 104], + [206, 230, 104, 104], [6, 230, 104, 104] ] }
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt index 86a7c1fd..1fe21ce 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt
@@ -6,8 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [6, 8, 104, 182], - [6, 6, 104, 108] + [6, 6, 104, 108], + [6, 86, 104, 104] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/overflow/float-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/overflow/float-overflow-expected.txt index 0bdd6922..8bd88df 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/overflow/float-overflow-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/overflow/float-overflow-expected.txt
@@ -50,10 +50,6 @@ [59, 171, 40, 10], [59, 99, 40, 10], [59, 93, 40, 10], - [59, 257, 16, 17], - [59, 251, 16, 17], - [59, 218, 16, 17], - [59, 212, 16, 17], [63, 23, 16, 16], [59, 545, 16, 16], [59, 539, 16, 16], @@ -63,6 +59,10 @@ [59, 461, 16, 16], [59, 428, 16, 16], [59, 422, 16, 16], + [59, 257, 16, 16], + [59, 251, 16, 16], + [59, 218, 16, 16], + [59, 212, 16, 16], [59, 179, 16, 16], [59, 173, 16, 16], [59, 140, 16, 16],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/overflow/float-overflow-right-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/overflow/float-overflow-right-expected.txt index c3c9841..a0bbf6e 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/overflow/float-overflow-right-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/overflow/float-overflow-right-expected.txt
@@ -50,10 +50,6 @@ [701, 171, 40, 10], [701, 99, 40, 10], [701, 93, 40, 10], - [725, 257, 16, 17], - [725, 251, 16, 17], - [725, 218, 16, 17], - [725, 212, 16, 17], [727, 101, 16, 16], [727, 95, 16, 16], [727, 62, 16, 16], @@ -70,6 +66,10 @@ [725, 461, 16, 16], [725, 428, 16, 16], [725, 422, 16, 16], + [725, 257, 16, 16], + [725, 251, 16, 16], + [725, 218, 16, 16], + [725, 212, 16, 16], [725, 179, 16, 16], [725, 173, 16, 16], [725, 140, 16, 16],
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/push-block-with-first-line-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/push-block-with-first-line-expected.txt index 98e9ad73..b086586d 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/push-block-with-first-line-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/push-block-with-first-line-expected.txt
@@ -6,8 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [8, 68, 784, 20], - [8, 8, 784, 20] + [8, 68, 140, 20], + [8, 8, 140, 20] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt index 49ab14f..2ee24c8b 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
@@ -6,11 +6,11 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [208, 972, 173, 19], - [427, 972, 150, 19], - [381, 969, 46, 25], - [423, 972, 5, 19], - [380, 972, 5, 19] + [208, 973, 173, 18], + [427, 973, 150, 18], + [382, 970, 45, 24], + [423, 973, 5, 18], + [380, 973, 5, 18] ], "transform": 1 },
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt index 9b1d7f5..0b547d7 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
@@ -6,7 +6,10 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [10, 74, 836, 19] + [809, 74, 37, 19], + [543, 74, 37, 19], + [276, 74, 37, 19], + [10, 74, 36, 19] ] }, {
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selection-linebreaks-rtl-writing-modes-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selection-linebreaks-rtl-writing-modes-expected.png index 8b75edab6..953a7c552 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selection-linebreaks-rtl-writing-modes-expected.png +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selection-linebreaks-rtl-writing-modes-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/inline-mask-overlay-image-outset-expected.png index 0c2047d..826d515 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/inline-mask-overlay-image-outset-expected.png +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/inline-mask-overlay-image-outset-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt deleted file mode 100644 index dcf8bc3..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [8, 8, 29, 24] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/text-color-change-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/text-color-change-expected.txt new file mode 100644 index 0000000..cfa6dd5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/text-color-change-expected.txt
@@ -0,0 +1,25 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [8, 221, 48, 16], + [8, 205, 48, 16], + [8, 189, 48, 16], + [8, 173, 48, 16], + [8, 157, 48, 16], + [8, 141, 48, 16], + [8, 125, 48, 16], + [8, 109, 48, 16], + [8, 93, 48, 16], + [8, 77, 48, 16], + [8, 61, 48, 16], + [8, 237, 48, 9] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/inline-reflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/inline-reflow-expected.txt new file mode 100644 index 0000000..23474f1e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/inline-reflow-expected.txt
@@ -0,0 +1,29 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 120, 300, 20], + [0, 0, 300, 20], + [0, 160, 280, 20], + [0, 140, 280, 20], + [0, 80, 280, 20], + [0, 40, 260, 20], + [0, 20, 260, 20], + [0, 100, 240, 20], + [0, 60, 220, 20], + [0, 260, 200, 20], + [0, 240, 200, 20], + [0, 200, 200, 20], + [0, 300, 180, 20], + [0, 220, 160, 20], + [0, 280, 140, 20], + [0, 180, 100, 20] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt new file mode 100644 index 0000000..85850a6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
@@ -0,0 +1,35 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 2350], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [8, 2046, 774, 57], + [8, 2196, 655, 57], + [8, 2096, 543, 57], + [8, 2246, 141, 57] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -1750, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-1-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-1-expected.txt index 1fbe98e..d007709 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-1-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-1-expected.txt
@@ -6,8 +6,18 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 80, 406, 119], - [378, 138, 70, 30] + [14, 80, 354, 19], + [39, 100, 329, 19], + [55, 120, 313, 19], + [120, 140, 248, 19], + [190, 160, 230, 19], + [14, 180, 224, 19], + [172, 160, 196, 19], + [14, 160, 176, 19], + [14, 140, 106, 19], + [378, 138, 70, 30], + [14, 120, 41, 19], + [14, 100, 25, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-10-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-10-expected.txt index 956d103..10abddc 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-10-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-10-expected.txt
@@ -6,15 +6,42 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 407, 80], - [14, 240, 406, 139], - [65, 360, 356, 39], - [14, 440, 355, 39], - [14, 420, 355, 39], - [14, 460, 354, 59], + [14, 540, 407, 19], + [14, 560, 406, 19], + [14, 520, 387, 19], + [14, 480, 354, 19], + [89, 580, 331, 19], + [65, 360, 306, 19], [65, 400, 304, 19], + [14, 340, 292, 19], + [14, 320, 264, 19], + [14, 260, 259, 19], + [14, 300, 256, 19], + [56, 460, 255, 19], + [14, 280, 252, 19], + [128, 420, 241, 19], + [14, 460, 226, 19], + [14, 500, 219, 19], + [243, 240, 177, 19], + [14, 440, 172, 19], + [65, 440, 171, 19], + [266, 280, 154, 19], + [270, 300, 150, 19], + [273, 260, 147, 19], + [278, 320, 142, 19], + [240, 460, 128, 19], + [186, 440, 116, 19], + [235, 440, 115, 19], + [306, 340, 114, 19], + [65, 380, 89, 19], + [14, 580, 75, 19], + [302, 440, 66, 19], + [65, 420, 64, 19], + [370, 360, 51, 19], [14, 363, 48, 65], - [14, 374, 48, 64] + [14, 374, 48, 64], + [401, 520, 20, 19], + [349, 440, 20, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-3-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-3-expected.txt index 9944fdc..639b2001 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-3-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-3-expected.txt
@@ -6,14 +6,44 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 407, 80], - [14, 240, 406, 139], - [14, 400, 406, 59], - [65, 360, 356, 39], - [14, 460, 354, 59], - [14, 440, 338, 79], + [14, 540, 407, 19], + [14, 560, 406, 19], + [14, 520, 387, 19], + [89, 580, 331, 19], + [65, 360, 306, 19], + [65, 400, 304, 19], + [14, 340, 292, 19], + [65, 420, 288, 19], + [14, 480, 288, 19], + [14, 320, 264, 19], + [14, 260, 259, 19], + [14, 300, 256, 19], + [14, 280, 252, 19], + [128, 420, 241, 19], + [14, 460, 226, 19], + [243, 240, 177, 19], + [14, 440, 172, 19], + [266, 280, 154, 19], + [14, 500, 151, 19], + [270, 300, 150, 19], + [273, 260, 147, 19], + [278, 320, 142, 19], + [215, 460, 137, 19], + [240, 460, 128, 19], + [186, 440, 116, 19], + [306, 340, 114, 19], + [133, 440, 109, 19], + [65, 380, 89, 19], + [14, 580, 75, 19], + [302, 480, 66, 19], + [302, 440, 66, 19], + [287, 480, 65, 19], + [242, 440, 65, 19], [356, 423, 64, 81], - [372, 403, 48, 81] + [362, 400, 58, 19], + [370, 360, 51, 19], + [372, 403, 48, 81], + [401, 520, 20, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-4-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-4-expected.txt index cb06202..e4befe587b 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-4-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-4-expected.txt
@@ -6,13 +6,38 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 407, 80], - [14, 240, 406, 139], - [14, 460, 406, 59], - [65, 360, 356, 39], - [14, 420, 355, 39], + [14, 540, 407, 19], + [14, 560, 406, 19], + [14, 520, 387, 19], + [89, 580, 331, 19], + [65, 360, 306, 19], [65, 400, 304, 19], - [372, 403, 48, 81] + [14, 340, 292, 19], + [14, 480, 288, 19], + [14, 320, 264, 19], + [14, 260, 259, 19], + [14, 300, 256, 19], + [14, 280, 252, 19], + [128, 420, 241, 19], + [14, 460, 226, 19], + [243, 240, 177, 19], + [14, 440, 172, 19], + [266, 280, 154, 19], + [14, 500, 151, 19], + [270, 300, 150, 19], + [273, 260, 147, 19], + [278, 320, 142, 19], + [282, 480, 138, 19], + [240, 460, 128, 19], + [186, 440, 116, 19], + [306, 340, 114, 19], + [65, 380, 89, 19], + [14, 580, 75, 19], + [302, 440, 66, 19], + [65, 420, 64, 19], + [370, 360, 51, 19], + [372, 403, 48, 81], + [401, 520, 20, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-5-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-5-expected.txt index 3e81077..cd6d78f 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-5-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-5-expected.txt
@@ -6,12 +6,44 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 407, 80], - [14, 240, 406, 139], - [49, 360, 372, 39], - [14, 400, 356, 59], - [14, 440, 354, 79], - [14, 363, 48, 65] + [14, 540, 407, 19], + [14, 560, 406, 19], + [14, 520, 387, 19], + [89, 580, 331, 19], + [49, 360, 322, 19], + [65, 400, 304, 19], + [49, 400, 302, 19], + [14, 340, 292, 19], + [14, 480, 288, 19], + [88, 420, 281, 19], + [14, 320, 264, 19], + [14, 260, 259, 19], + [14, 300, 256, 19], + [14, 280, 252, 19], + [14, 460, 226, 19], + [181, 460, 187, 19], + [243, 240, 177, 19], + [14, 440, 172, 19], + [266, 280, 154, 19], + [14, 500, 151, 19], + [270, 300, 150, 19], + [273, 260, 147, 19], + [278, 320, 142, 19], + [229, 480, 139, 19], + [186, 440, 116, 19], + [306, 340, 114, 19], + [134, 440, 111, 19], + [65, 380, 89, 19], + [49, 380, 89, 19], + [14, 580, 75, 19], + [302, 440, 66, 19], + [245, 440, 65, 19], + [65, 420, 64, 19], + [370, 360, 51, 19], + [14, 363, 48, 65], + [49, 420, 40, 19], + [401, 520, 20, 19], + [350, 400, 20, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-6-expected.txt index ddff78fc..ad807638 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-6-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-6-expected.txt
@@ -6,9 +6,21 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 240, 406, 139], - [65, 360, 356, 39], + [65, 360, 306, 19], [65, 400, 304, 19], + [14, 340, 292, 19], + [14, 320, 264, 19], + [14, 260, 259, 19], + [14, 300, 256, 19], + [14, 280, 252, 19], + [243, 240, 177, 19], + [266, 280, 154, 19], + [270, 300, 150, 19], + [273, 260, 147, 19], + [278, 320, 142, 19], + [306, 340, 114, 19], + [65, 380, 89, 19], + [370, 360, 51, 19], [14, 363, 48, 65] ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-7-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-7-expected.txt index 4560f0f2..31e89c6 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-7-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-7-expected.txt
@@ -6,7 +6,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 420, 355, 39] + [128, 420, 241, 19], + [14, 440, 172, 19], + [186, 440, 116, 19], + [184, 440, 114, 19], + [298, 440, 70, 19], + [65, 420, 64, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-9-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-9-expected.txt index d578b59..e0fa9bc8 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-9-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/line-flow-with-floats-9-expected.txt
@@ -6,16 +6,50 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 407, 80], - [14, 240, 406, 139], - [14, 180, 406, 79], - [65, 360, 356, 39], - [14, 440, 355, 39], - [14, 420, 355, 39], - [14, 460, 354, 59], + [14, 540, 407, 19], + [14, 560, 406, 19], + [14, 360, 406, 19], + [14, 520, 387, 19], + [14, 340, 387, 19], + [14, 300, 385, 19], + [14, 320, 358, 19], + [14, 480, 354, 19], + [89, 580, 331, 19], + [14, 280, 328, 19], [65, 400, 304, 19], + [14, 260, 263, 19], + [56, 460, 255, 19], + [128, 420, 241, 19], + [189, 200, 231, 19], + [14, 240, 229, 19], + [193, 220, 227, 19], + [14, 460, 226, 19], + [14, 500, 219, 19], + [14, 220, 179, 19], + [243, 240, 177, 19], + [14, 200, 175, 19], + [14, 440, 172, 19], + [65, 440, 171, 19], + [212, 240, 156, 19], + [266, 280, 154, 19], + [270, 300, 150, 19], + [273, 260, 147, 19], + [277, 180, 143, 19], + [278, 320, 142, 19], + [65, 380, 142, 19], + [240, 460, 128, 19], + [186, 440, 116, 19], + [235, 440, 115, 19], + [306, 340, 114, 19], + [14, 580, 75, 19], + [302, 440, 66, 19], + [65, 420, 64, 19], + [370, 360, 51, 19], [14, 383, 48, 65], - [14, 363, 48, 65] + [14, 363, 48, 65], + [372, 243, 48, 49], + [401, 520, 20, 19], + [349, 440, 20, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/line-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/line-overflow-expected.txt new file mode 100644 index 0000000..9ce993ee --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/line-overflow-expected.txt
@@ -0,0 +1,24 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [8, 182, 195, 19], + [8, 102, 192, 19], + [8, 162, 168, 19], + [8, 142, 151, 19], + [8, 202, 139, 19], + [8, 82, 129, 19], + [103, 142, 94, 19], + [8, 122, 64, 19], + [149, 122, 54, 19], + [72, 122, 42, 19], + [114, 92, 35, 49] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/reflection/reflection-redraw-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/reflection/reflection-redraw-expected.txt new file mode 100644 index 0000000..8f682478 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/reflection/reflection-redraw-expected.txt
@@ -0,0 +1,23 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [380, 287, 286, 19], + [70, 287, 286, 19], + [391, 267, 264, 19], + [81, 267, 264, 19], + [393, 307, 260, 19], + [83, 307, 260, 19], + [305, 54, 126, 142], + [305, 397, 126, 116], + [316, 377, 104, 156], + [318, 34, 100, 182] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt deleted file mode 100644 index 95da955e..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [8, 8, 48, 32], - [40, 8, 16, 33] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt index 29aa934e..7652e98 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt
@@ -6,7 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [0, 8, 40, 33] + [0, 8, 40, 16], + [8, 24, 32, 16] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt deleted file mode 100644 index 291a6fb1..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [8, 40, 33, 16], - [8, 8, 32, 48] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt deleted file mode 100644 index cdb3cf2..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [7, 40, 33, 16], - [8, 8, 32, 48] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt index 1f01ada..5e7590ac 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt
@@ -7,7 +7,6 @@ "backgroundColor": "#FFFFFF", "invalidations": [ [8, 24, 32, 16], - [24, 24, 16, 17], [24, 8, 16, 16], [8, 8, 16, 16] ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt index 1c1ffb1..18d3362 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt
@@ -6,8 +6,9 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [334, 523, 441, 4], - [398, 123, 375, 404] + [398, 123, 375, 404], + [389, 123, 34, 399], + [750, 522, 25, 5] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-delete-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-delete-expected.png index f42d68e..d1f77fc 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-delete-expected.png +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-delete-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-delete-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-delete-expected.txt index 74bed83..1dad7971 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-delete-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-delete-expected.txt
@@ -6,310 +6,11 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [39, 79, 154, 99], - [38, 78, 152, 102] - ], - "underInvalidations": [ - { - "x": 194, - "y": 79, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 80, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 81, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 82, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 83, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 84, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 85, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 86, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 87, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 88, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 89, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 90, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 91, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 92, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 93, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 94, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 95, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 96, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 97, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 98, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 99, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 100, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 101, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 102, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 103, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 104, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 105, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 106, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 107, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 108, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 109, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 110, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 111, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 112, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 113, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 114, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 115, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 116, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 117, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 118, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 119, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 120, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 121, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 122, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 123, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 124, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 125, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 126, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 127, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 128, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - } + [38, 78, 152, 102], + [187, 138, 8, 20], + [187, 118, 8, 20], + [187, 98, 8, 20], + [187, 79, 8, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-remove-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-remove-expected.png index b3b8b754..bc7d6a8 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-remove-expected.png +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-remove-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-remove-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-remove-expected.txt index 74bed83..1dad7971 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-remove-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-after-remove-expected.txt
@@ -6,310 +6,11 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [39, 79, 154, 99], - [38, 78, 152, 102] - ], - "underInvalidations": [ - { - "x": 194, - "y": 79, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 80, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 81, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 82, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 83, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 84, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 85, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 86, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 87, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 88, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 89, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 90, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 91, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 92, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 93, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 94, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 95, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 96, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 97, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 98, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 99, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 100, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 101, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 102, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 103, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 104, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 105, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 106, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 107, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 108, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 109, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 110, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 111, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 112, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 113, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 114, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 115, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 116, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 117, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 118, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 119, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 120, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 121, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 122, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 123, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 124, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 125, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 126, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 127, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - }, - { - "x": 194, - "y": 128, - "oldPixel": "#338FFF", - "newPixel": "#FFFFFF" - } + [38, 78, 152, 102], + [187, 138, 8, 20], + [187, 118, 8, 20], + [187, 98, 8, 20], + [187, 79, 8, 19] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/append-text-node-to-tspan-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/append-text-node-to-tspan-expected.txt new file mode 100644 index 0000000..ed2d3071 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/append-text-node-to-tspan-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 60, 310, 380] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt new file mode 100644 index 0000000..f99e43d79 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 15, 757, 365] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt new file mode 100644 index 0000000..6b7a30c2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 15, 682, 365] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt new file mode 100644 index 0000000..ed2d3071 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 60, 310, 380] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt new file mode 100644 index 0000000..ff6e290 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [23, 8, 85, 23], + [58, 45, 50, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt new file mode 100644 index 0000000..ed2d3071 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 60, 310, 380] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/remove-tspan-from-text-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/remove-tspan-from-text-expected.txt new file mode 100644 index 0000000..50a49ce --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/remove-tspan-from-text-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 60, 310, 260] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/text-pattern-update-2-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/text-pattern-update-2-expected.txt new file mode 100644 index 0000000..56d07a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/text-pattern-update-2-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [8, 8, 300, 100] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/text-repaint-including-stroke-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/text-repaint-including-stroke-expected.txt new file mode 100644 index 0000000..ca65aa49 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/text-repaint-including-stroke-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [80, 0, 553, 117], + [30, 0, 404, 59] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/use-detach-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/use-detach-expected.txt new file mode 100644 index 0000000..694d00ea --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/svg/use-detach-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [207, 57, 50, 66] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-append-dirty-lines-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-append-dirty-lines-expected.txt new file mode 100644 index 0000000..19a80d10 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-append-dirty-lines-expected.txt
@@ -0,0 +1,20 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [8, 144, 756, 19], + [8, 84, 751, 19], + [8, 64, 749, 19], + [8, 44, 744, 19], + [8, 124, 740, 19], + [8, 104, 713, 19], + [8, 164, 106, 19] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-line-clamp-truncation-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-line-clamp-truncation-expected.txt deleted file mode 100644 index b463169..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-line-clamp-truncation-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [8, 8, 285, 24], - [8, 10, 284, 43] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-match-document-change-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-match-document-change-expected.txt new file mode 100644 index 0000000..a9c064c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/text-match-document-change-expected.txt
@@ -0,0 +1,16 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [800, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [18, 130, 251, 19], + [18, 150, 240, 19], + [295, 102, 15, 400] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/transform/transform-inline-layered-child-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/transform/transform-inline-layered-child-expected.txt index 5758dba..978b7eb 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/transform/transform-inline-layered-child-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/transform/transform-inline-layered-child-expected.txt
@@ -6,8 +6,16 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [135, 361, 159, 195], - [300, 302, 80, 177] + [135, 361, 159, 194], + [300, 442, 80, 16], + [300, 422, 80, 16], + [300, 402, 80, 16], + [300, 382, 80, 16], + [300, 362, 80, 16], + [300, 342, 80, 16], + [300, 322, 80, 16], + [300, 302, 80, 16], + [300, 462, 48, 16] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/vertical-rl-as-paint-container-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/vertical-rl-as-paint-container-expected.txt index 0212eda..70655649 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/vertical-rl-as-paint-container-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/vertical-rl-as-paint-container-expected.txt
@@ -11,7 +11,10 @@ "bounds": [600, 400], "backfaceVisibility": "hidden", "invalidations": [ - [520, 0, 80, 340] + [580, 0, 20, 340], + [520, 0, 20, 320], + [540, 0, 20, 220], + [560, 0, 20, 180] ], "transform": 1 }
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt index cd03c667..5b208bf 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
@@ -82,7 +82,11 @@ "backgroundColor": "#FFFFFF", "invalidations": [ [400, 0, 400, 600], - [39, 8, 352, 562] + [110, 8, 68, 562], + [181, 8, 68, 561], + [323, 8, 68, 522], + [252, 8, 68, 482], + [39, 8, 68, 172] ] } ]
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-anonymous-section-bug-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-anonymous-section-bug-expected.png new file mode 100644 index 0000000..673d7079 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-anonymous-section-bug-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-before-child-in-table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-before-child-in-table-expected.png new file mode 100644 index 0000000..f7ff070 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-before-child-in-table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-before-child-style-update-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-before-child-style-update-expected.png new file mode 100644 index 0000000..f64fb25c8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-before-child-style-update-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-after-child-in-block-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-after-child-in-block-expected.png new file mode 100644 index 0000000..7d3bbbf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-after-child-in-block-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-after-child-in-table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-after-child-in-table-expected.png new file mode 100644 index 0000000..11c87bd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-after-child-in-table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-block-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-block-expected.png new file mode 100644 index 0000000..e68a5a2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-block-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-expected.png new file mode 100644 index 0000000..e68a5a2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-row-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-row-expected.png new file mode 100644 index 0000000..e68a5a2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-after-content-around-table-row-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-child-in-block-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-child-in-block-expected.png new file mode 100644 index 0000000..c579b20 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-child-in-block-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-child-in-table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-child-in-table-expected.png new file mode 100644 index 0000000..6e7e90e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-before-child-in-table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-split-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-split-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-cell-split-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-continuation-outline-paint-crash-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-continuation-outline-paint-crash-expected.png new file mode 100644 index 0000000..8da8cbc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-continuation-outline-paint-crash-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-expected.png new file mode 100644 index 0000000..b9756fb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-strict-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-strict-expected.png new file mode 100644 index 0000000..ccc7fcb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-strict-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-vertical-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-vertical-expected.png new file mode 100644 index 0000000..0a8ef82e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-display-types-vertical-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-collapsing-border-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-collapsing-border-expected.png new file mode 100644 index 0000000..1679d9a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-collapsing-border-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-collapsing-border-quirks-mode-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-collapsing-border-quirks-mode-expected.png new file mode 100644 index 0000000..1679d9a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-collapsing-border-quirks-mode-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-expected.png new file mode 100644 index 0000000..44d8bed7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-quirks-mode-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-quirks-mode-expected.png new file mode 100644 index 0000000..44d8bed7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-in-table-percent-width-quirks-mode-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-insert-before-non-anonymous-block-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-insert-before-non-anonymous-block-expected.png new file mode 100644 index 0000000..d3bce21 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-insert-before-non-anonymous-block-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-after-child-in-block-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-after-child-in-block-expected.png new file mode 100644 index 0000000..50113344 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-after-child-in-block-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-after-child-in-table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-after-child-in-table-expected.png new file mode 100644 index 0000000..b3c8a3c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-after-child-in-table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-block-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-block-expected.png new file mode 100644 index 0000000..e68a5a2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-block-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-table-cell-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-table-cell-expected.png new file mode 100644 index 0000000..78e6956 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-table-cell-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-table-expected.png new file mode 100644 index 0000000..e68a5a2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-after-content-around-table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-in-block-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-in-block-expected.png new file mode 100644 index 0000000..b7586fd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-in-block-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-in-table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-in-table-expected.png new file mode 100644 index 0000000..4ed081d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-in-table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-style-update-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-style-update-expected.png new file mode 100644 index 0000000..f64fb25c8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-before-child-style-update-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-focus-ring-paint-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-focus-ring-paint-expected.png new file mode 100644 index 0000000..45d4d9d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-focus-ring-paint-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-outline-paint-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-outline-paint-expected.png new file mode 100644 index 0000000..7f7eebfc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-outline-paint-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-split-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-split-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-split-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-split2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-split2-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-split2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-expected.png new file mode 100644 index 0000000..64270d41 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-with-after-content-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-with-after-content-expected.png new file mode 100644 index 0000000..5bbfb71 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-with-after-content-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-with-before-content-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-with-before-content-expected.png new file mode 100644 index 0000000..b5b5068 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-row-style-not-updated-with-before-content-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split-with-after-content-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split-with-after-content-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split-with-after-content-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split2-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-section-split2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-split-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-split-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-split-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-split2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-split2-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-split2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-style-not-updated-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-style-not-updated-expected.png new file mode 100644 index 0000000..64270d41 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-style-not-updated-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-with-border-radius-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-with-border-radius-expected.png new file mode 100644 index 0000000..1c0fb84 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/table-with-border-radius-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tableInsideCaption-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tableInsideCaption-expected.png new file mode 100644 index 0000000..f5bb9e96 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tableInsideCaption-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tbody-background-image-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tbody-background-image-expected.png new file mode 100644 index 0000000..44e749cb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tbody-background-image-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tbody-background-image-repeat-x-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tbody-background-image-repeat-x-expected.png new file mode 100644 index 0000000..b7f5fa9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/tbody-background-image-repeat-x-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/text-field-baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/text-field-baseline-expected.png new file mode 100644 index 0000000..7e42ac0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/text-field-baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/unbreakable-images-quirk-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/unbreakable-images-quirk-expected.png new file mode 100644 index 0000000..12ac1ec5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/unbreakable-images-quirk-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/unused-percent-heights-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/unused-percent-heights-expected.png new file mode 100644 index 0000000..353c067 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/unused-percent-heights-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/vertical-align-baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/vertical-align-baseline-expected.png new file mode 100644 index 0000000..5cc003f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/vertical-align-baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/vertical-align-baseline-readjust-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/vertical-align-baseline-readjust-expected.png new file mode 100644 index 0000000..599a86b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/vertical-align-baseline-readjust-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/wide-colspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/wide-colspan-expected.png new file mode 100644 index 0000000..6672be52 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/wide-colspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/wide-column-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/wide-column-expected.png new file mode 100644 index 0000000..0b462b5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/table/wide-column-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/css-table-lots-of-text-many-cells-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/css-table-lots-of-text-many-cells-expected.png new file mode 100644 index 0000000..a2a84ce --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/css-table-lots-of-text-many-cells-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/fixed-table-lots-of-text-many-cells-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/fixed-table-lots-of-text-many-cells-expected.png new file mode 100644 index 0000000..a3bee08 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/fixed-table-lots-of-text-many-cells-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/lots-of-text-many-cells-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/lots-of-text-many-cells-expected.png new file mode 100644 index 0000000..5811eb5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/lots-of-text-many-cells-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/narrow-percentage-width-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/narrow-percentage-width-expected.png new file mode 100644 index 0000000..cf75658f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/narrow-percentage-width-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/narrow-specified-width-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/narrow-specified-width-expected.png new file mode 100644 index 0000000..c4b37e01 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/fast/text-autosizing/tables/narrow-specified-width-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/repaint-opacity-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/repaint-opacity-change-expected.txt new file mode 100644 index 0000000..27c49781 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/repaint-opacity-change-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [27, 27, 1146, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/repaint-rtl-column-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/repaint-rtl-column-expected.txt new file mode 100644 index 0000000..217f370 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/repaint-rtl-column-expected.txt
@@ -0,0 +1,18 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 174, 300, 378], + [12, 102, 300, 218], + [19, 187, 286, 526], + [19, 327, 286, 525], + [19, 182, 286, 525] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/scrollbars-changed-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/scrollbars-changed-expected.txt new file mode 100644 index 0000000..029f98f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/flexbox/scrollbars-changed-expected.txt
@@ -0,0 +1,28 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='scroller'", + "bounds": [300, 150] + }, + { + "name": "Scrolling Contents Layer", + "bounds": [278, 315], + "backgroundColor": "#80808080", + "invalidations": [ + [0, 7, 23, 23] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [278, 0], + "bounds": [22, 150] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt new file mode 100644 index 0000000..9f783e51 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 162, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-move-during-layout-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-move-during-layout-expected.txt new file mode 100644 index 0000000..acfc905 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-move-during-layout-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 306, 150, 150], + [12, 156, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-new-in-block-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-new-in-block-expected.txt new file mode 100644 index 0000000..6b6ffa9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-new-in-block-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 1176, 30], + [12, 12, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-offscreen-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-offscreen-expected.txt new file mode 100644 index 0000000..cb0ffed3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/float-offscreen-expected.txt
@@ -0,0 +1,44 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='target'", + "bounds": [1176, 450], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "bounds": [1176, 1540], + "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 450], + "bounds": [1176, 0], + "transform": 1 + }, + { + "name": "Vertical Scrollbar Layer", + "position": [1176, 0], + "bounds": [0, 450], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt new file mode 100644 index 0000000..27e2f79f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [18, 91, 45, 46] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt new file mode 100644 index 0000000..c003423 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 10, 80, 36] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt new file mode 100644 index 0000000..06d44021 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [13, 11, 29, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/details-marker-color-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/details-marker-color-change-expected.txt new file mode 100644 index 0000000..82c18342 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/details-marker-color-change-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [37, 12, 70, 26], + [12, 17, 16, 16] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt new file mode 100644 index 0000000..3fd889d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [14, 11, 30, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt new file mode 100644 index 0000000..4c58d7e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [13, 13, 198, 28] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/select-option-background-color-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/select-option-background-color-expected.txt new file mode 100644 index 0000000..1095f85 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/select-option-background-color-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [21, 52, 22, 102], + [1, 52, 20, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt new file mode 100644 index 0000000..be8bad5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 10, 90, 36] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt new file mode 100644 index 0000000..0bae7b66 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 75, 159, 309] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-caret-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-caret-expected.txt new file mode 100644 index 0000000..4f6d298a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-caret-expected.txt
@@ -0,0 +1,78 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 264, 53] + ] + }, + { + "name": "LayoutTextControl TEXTAREA id='editor'", + "position": [-2, -2], + "bounds": [268, 57], + "invalidations": [ + [0, 0, 268, 57] + ], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "position": [2, 2], + "bounds": [723, 28], + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 0, 723, 28] + ], + "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 30], + "bounds": [239, 22], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [240, 29], + "bounds": [22, 22], + "invalidations": [ + [0, 0, 22, 22] + ], + "transform": 1 + }, + { + "name": "Decoration Layer", + "position": [-2, -2], + "bounds": [268, 57], + "invalidations": [ + [0, 0, 268, 57] + ], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [-462, 0, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-resize-property-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-resize-property-change-expected.txt new file mode 100644 index 0000000..ed2e6369 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-resize-property-change-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 75, 159, 159] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-set-disabled-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-set-disabled-expected.txt new file mode 100644 index 0000000..9ea1919 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/forms/textarea-set-disabled-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 159, 159] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/gradients-em-stops-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/gradients-em-stops-repaint-expected.txt new file mode 100644 index 0000000..ac352c169 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/gradients-em-stops-repaint-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [516, 27, 453, 183], + [495, 204, 6, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-display-block-to-display-none-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-display-block-to-display-none-expected.txt new file mode 100644 index 0000000..db27bc70 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-display-block-to-display-none-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 102, 1098, 141] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-display-none-to-display-block-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-display-none-to-display-block-expected.txt new file mode 100644 index 0000000..db27bc70 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-display-none-to-display-block-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 102, 1098, 141] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-rounding-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-rounding-expected.txt new file mode 100644 index 0000000..b5f6b05 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/iframe-rounding-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [28, 27, 151, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt new file mode 100644 index 0000000..eded3be --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
@@ -0,0 +1,96 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 1397], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [853, 771, 122, 61], + [853, 621, 122, 61], + [853, 471, 122, 61], + [853, 246, 122, 61], + [853, 171, 122, 61], + [640, 771, 122, 61], + [640, 621, 122, 61], + [640, 471, 122, 61], + [640, 246, 122, 61], + [640, 171, 122, 61], + [427, 771, 122, 61], + [427, 621, 122, 61], + [427, 471, 122, 61], + [427, 246, 122, 61], + [427, 171, 122, 61], + [214, 771, 122, 61], + [214, 621, 122, 61], + [214, 471, 122, 61], + [214, 246, 122, 61], + [214, 171, 122, 61], + [897, 846, 78, 61], + [897, 696, 78, 61], + [897, 546, 78, 61], + [897, 396, 78, 61], + [897, 321, 78, 61], + [897, 96, 78, 61], + [684, 846, 78, 61], + [684, 696, 78, 61], + [684, 546, 78, 61], + [684, 396, 78, 61], + [684, 321, 78, 61], + [684, 96, 78, 61], + [471, 846, 78, 61], + [471, 696, 78, 61], + [471, 546, 78, 61], + [471, 396, 78, 61], + [471, 321, 78, 61], + [471, 96, 78, 61], + [258, 846, 78, 61], + [258, 696, 78, 61], + [258, 546, 78, 61], + [258, 396, 78, 61], + [258, 321, 78, 61], + [258, 96, 78, 61] + ] + }, + { + "name": "LayoutVideo VIDEO id='video'", + "bounds": [225, 90], + "drawsContent": false, + "transform": 1 + }, + { + "name": "ContentsLayer for LayoutVideo VIDEO id='video'", + "bounds": [225, 90], + "transform": 1 + }, + { + "name": "LayoutNGFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'", + "bounds": [225, 90], + "transform": 1 + }, + { + "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (positioned) DIV)", + "position": [-1, 0], + "bounds": [226, 90], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [23, 1286, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt new file mode 100644 index 0000000..51b65d7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [75, 75, 389, 291] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/image-resize-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/image-resize-expected.txt new file mode 100644 index 0000000..efdcfcc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/image-resize-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 75, 225, 225], + [0, 75, 150, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/percent-size-image-resize-container-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/percent-size-image-resize-container-expected.txt new file mode 100644 index 0000000..efdcfcc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/image/percent-size-image-resize-container-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 75, 225, 225], + [0, 75, 150, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/in-scaled-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/in-scaled-iframe-expected.txt new file mode 100644 index 0000000..ae7995a5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/in-scaled-iframe-expected.txt
@@ -0,0 +1,20 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 1236], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [313, 313, 151, 151] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-block-resize-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-block-resize-expected.txt new file mode 100644 index 0000000..d9f3e56d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-block-resize-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-color-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-color-change-expected.txt new file mode 100644 index 0000000..041ba302 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-color-change-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 102, 54, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-reflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-reflow-expected.txt new file mode 100644 index 0000000..0f54422c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/inline-reflow-expected.txt
@@ -0,0 +1,16 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 0, 450, 300], + [0, 0, 300, 450], + [0, 450, 270, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/insert-frame-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/insert-frame-expected.txt new file mode 100644 index 0000000..284b071 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/insert-frame-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 0, 156, 156] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt new file mode 100644 index 0000000..864277d7b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 10, 1180, 31] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt new file mode 100644 index 0000000..e9aa2d6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
@@ -0,0 +1,31 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [13, 13, 151, 151] + ] + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV", + "contentsOpaque": true, + "drawsContent": false, + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-invisible-element-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-invisible-element-expected.txt new file mode 100644 index 0000000..aa68496 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidate-invisible-element-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [300, 450, 300, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt new file mode 100644 index 0000000..0a11d2e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
@@ -0,0 +1,33 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3525], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 3071, 1165, 158], + [12, 3296, 986, 158] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -2625, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt new file mode 100644 index 0000000..6f45946 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
@@ -0,0 +1,67 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV", + "bounds": [300, 300], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "bounds": [450, 450], + "contentsOpaque": true, + "backgroundColor": "#D3D3D3", + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow (relative positioned) DIV", + "bounds": [300, 300], + "contentsOpaque": true, + "backgroundColor": "#ADD8E6", + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow DIV (foreground) Layer", + "bounds": [450, 450], + "invalidations": [ + [150, 150, 300, 300] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 278], + "bounds": [278, 22], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [278, 0], + "bounds": [22, 278], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [278, 278], + "bounds": [22, 22], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-with-zero-size-object-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-with-zero-size-object-expected.txt new file mode 100644 index 0000000..022b1e6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invalidation-with-zero-size-object-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 300, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invisible-objects-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invisible-objects-expected.txt new file mode 100644 index 0000000..7f87abd0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/invisible-objects-expected.txt
@@ -0,0 +1,11 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-full-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-full-repaint-expected.txt new file mode 100644 index 0000000..d9f3e56d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-full-repaint-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-hide-when-needs-layout-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-hide-when-needs-layout-expected.txt new file mode 100644 index 0000000..d9f3e56d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-hide-when-needs-layout-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-visibility-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-visibility-expected.txt new file mode 100644 index 0000000..b5823b4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/layer-visibility-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [150, 0, 150, 150], + [0, 0, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-1-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-1-expected.txt new file mode 100644 index 0000000..7a1bdc8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-1-expected.txt
@@ -0,0 +1,25 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [19, 361, 611, 190], + [19, 334, 611, 190], + [19, 118, 610, 163], + [19, 712, 610, 136], + [19, 253, 610, 109], + [19, 280, 610, 108], + [19, 631, 534, 81], + [19, 577, 534, 81], + [96, 550, 457, 28], + [567, 207, 105, 45], + [19, 528, 73, 97], + [19, 501, 73, 97] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-10-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-10-expected.txt new file mode 100644 index 0000000..dc14f528 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-10-expected.txt
@@ -0,0 +1,22 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [19, 361, 611, 190], + [19, 712, 610, 136], + [19, 280, 610, 108], + [19, 118, 534, 163], + [19, 631, 534, 81], + [19, 577, 534, 81], + [96, 550, 457, 28], + [19, 544, 73, 97], + [19, 528, 73, 97] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-2-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-2-expected.txt new file mode 100644 index 0000000..5ffb4ee8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-2-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 111, 624, 748] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-3-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-3-expected.txt new file mode 100644 index 0000000..52c3118e1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-3-expected.txt
@@ -0,0 +1,22 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [19, 361, 611, 190], + [19, 712, 610, 136], + [19, 280, 610, 108], + [19, 118, 534, 163], + [19, 631, 534, 81], + [19, 577, 534, 81], + [96, 550, 533, 82], + [532, 582, 97, 121], + [556, 555, 73, 121] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-4-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-4-expected.txt new file mode 100644 index 0000000..14af114 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-4-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [19, 361, 611, 190], + [19, 712, 610, 136], + [19, 280, 610, 108], + [19, 631, 610, 81], + [19, 118, 534, 163], + [19, 577, 534, 81], + [96, 550, 457, 28], + [556, 555, 73, 121] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-5-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-5-expected.txt new file mode 100644 index 0000000..004bf175 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-5-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [19, 361, 611, 190], + [19, 712, 610, 136], + [19, 280, 610, 108], + [19, 118, 534, 163], + [19, 631, 534, 81], + [19, 577, 534, 81], + [72, 550, 481, 28], + [19, 528, 73, 97] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-6-expected.txt new file mode 100644 index 0000000..e74405eba --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-6-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [19, 361, 611, 190], + [19, 712, 610, 136], + [19, 280, 610, 108], + [19, 118, 534, 163], + [19, 631, 534, 81], + [19, 577, 534, 81], + [96, 550, 457, 28], + [19, 528, 73, 97] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-7-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-7-expected.txt new file mode 100644 index 0000000..3c7d991 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-7-expected.txt
@@ -0,0 +1,20 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [19, 361, 611, 190], + [19, 712, 610, 136], + [19, 280, 610, 108], + [19, 118, 534, 163], + [19, 631, 534, 81], + [19, 577, 534, 81], + [96, 550, 457, 28] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-8-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-8-expected.txt new file mode 100644 index 0000000..4c1fa16 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-8-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [19, 361, 611, 190], + [19, 712, 610, 136], + [19, 280, 610, 108], + [19, 118, 534, 163], + [19, 604, 534, 108], + [19, 550, 534, 82], + [19, 577, 534, 81], + [19, 528, 73, 97] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-9-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-9-expected.txt new file mode 100644 index 0000000..a695702 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/line-flow-with-floats-9-expected.txt
@@ -0,0 +1,27 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 27, 660, 828] + ] + }, + { + "name": "LayoutIFrame IFRAME id='iframe'", + "bounds": [750, 900] + }, + { + "name": "Scrolling Contents Layer", + "bounds": [728, 906] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [728, 0], + "bounds": [22, 900] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/lines-with-layout-delta-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/lines-with-layout-delta-expected.txt new file mode 100644 index 0000000..ff094db9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/lines-with-layout-delta-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 87, 54, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/list-marker-2-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/list-marker-2-expected.txt new file mode 100644 index 0000000..73a2485 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/list-marker-2-expected.txt
@@ -0,0 +1,16 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [72, 141, 150, 150], + [50, 270, 9, 26], + [50, 195, 9, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/make-children-non-inline-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/make-children-non-inline-expected.txt new file mode 100644 index 0000000..308e0b5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/make-children-non-inline-expected.txt
@@ -0,0 +1,27 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 375, 171, 26], + [12, 225, 171, 26], + [12, 198, 121, 26], + [12, 144, 120, 26], + [12, 402, 105, 26], + [12, 252, 105, 26], + [12, 456, 96, 26], + [12, 306, 96, 26], + [12, 171, 68, 26], + [12, 117, 64, 26], + [12, 90, 59, 26], + [12, 429, 45, 26], + [12, 279, 45, 26], + [12, 225, 15, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/mix-blend-mode-separate-stacking-context-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/mix-blend-mode-separate-stacking-context-expected.txt new file mode 100644 index 0000000..f29b2b9d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/mix-blend-mode-separate-stacking-context-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 0, 1200, 900] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multi-layout-one-frame-expected.txt new file mode 100644 index 0000000..5ad984f8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multi-layout-one-frame-expected.txt
@@ -0,0 +1,16 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [282, 15, 78, 25], + [18, 15, 78, 25], + [270, 13, 6, 27] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/column-rules-fixed-height-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/column-rules-fixed-height-expected.txt new file mode 100644 index 0000000..b569b7a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/column-rules-fixed-height-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 75, 788, 473] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-as-paint-container-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-as-paint-container-expected.txt new file mode 100644 index 0000000..0304893 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
@@ -0,0 +1,31 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutBlockFlow DIV id='target'", + "bounds": [945, 270], + "backfaceVisibility": "hidden", + "invalidations": [ + [0, 0, 938, 270] + ], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt new file mode 100644 index 0000000..f31a44e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [927, 42, 30, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-repaint-expected.txt new file mode 100644 index 0000000..6ff30fc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-repaint-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [351, 21, 450, 76], + [13, 14, 20, 85] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt new file mode 100644 index 0000000..d6a02e1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 900, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-abspos-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-abspos-expected.txt new file mode 100644 index 0000000..d20a3cbf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-abspos-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 870, 120, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt new file mode 100644 index 0000000..15bfcad --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [762, 42, 120, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-block-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-block-expected.txt new file mode 100644 index 0000000..52f6cde --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-block-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [732, 12, 120, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-inline-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-inline-expected.txt new file mode 100644 index 0000000..52f6cde --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-inline-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [732, 12, 120, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt new file mode 100644 index 0000000..70e379b7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 1188, 750], + [0, 12, 762, 750] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-relpos-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-relpos-expected.txt new file mode 100644 index 0000000..15392ed --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-relpos-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [762, 42, 225, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-text-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-text-expected.txt new file mode 100644 index 0000000..52f6cde --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/multicol/multicol-with-text-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [732, 12, 120, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/non-text-link-invalidation-optimization-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/non-text-link-invalidation-optimization-expected.txt new file mode 100644 index 0000000..c914811 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
@@ -0,0 +1,19 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [253, 12, 227, 26], + [116, 12, 94, 27], + [12, 12, 89, 26], + [546, 12, 81, 27], + [210, 12, 43, 27], + [495, 12, 36, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt new file mode 100644 index 0000000..9538fce --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt
@@ -0,0 +1,31 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [72, 138, 60, 27] + ] + }, + { + "name": "LayoutInline (relative positioned) SPAN id='placeholder'", + "drawsContent": false, + "backfaceVisibility": "hidden", + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [72, 63, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt new file mode 100644 index 0000000..d9f3e56d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/border-outline-0-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/border-outline-0-expected.txt new file mode 100644 index 0000000..647cfcaf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/border-outline-0-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [15, 15, 300, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/border-radius-with-outline-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/border-radius-with-outline-expected.txt new file mode 100644 index 0000000..b6ab7b25 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/border-radius-with-outline-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [68, 68, 464, 464] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-continuations-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-continuations-expected.txt new file mode 100644 index 0000000..87694d3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-continuations-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 130, 129, 34] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-enable-continuations-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-enable-continuations-expected.txt new file mode 100644 index 0000000..87694d3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-enable-continuations-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 130, 129, 34] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-child-move-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-child-move-expected.txt new file mode 100644 index 0000000..9a6c199 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-child-move-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [450, 75, 30, 450], + [225, 75, 30, 450] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt new file mode 100644 index 0000000..3347213e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [310, 346, 154, 154], + [10, 346, 154, 154] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt new file mode 100644 index 0000000..0329a59 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 10, 154, 159], + [10, 130, 154, 154] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/inline-outline-repaint-2-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/inline-outline-repaint-2-expected.txt new file mode 100644 index 0000000..7969b21c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/inline-outline-repaint-2-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [315, 0, 75, 22] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/inline-outline-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/inline-outline-repaint-expected.txt new file mode 100644 index 0000000..a76783a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/inline-outline-repaint-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [9, 246, 146, 59] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-add-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-add-repaint-expected.txt new file mode 100644 index 0000000..5c4ce87 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-add-repaint-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 0, 165, 165] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt new file mode 100644 index 0000000..0deee3b2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 10, 229, 154] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt new file mode 100644 index 0000000..0deee3b2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [10, 10, 229, 154] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-continuations-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-continuations-expected.txt new file mode 100644 index 0000000..7f87abd0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-continuations-expected.txt
@@ -0,0 +1,11 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-invalidation-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-invalidation-expected.txt new file mode 100644 index 0000000..66b282c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-invalidation-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [65, 119, 1130, 41] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-offset-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-offset-expected.txt new file mode 100644 index 0000000..5ae9df9a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-offset-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [53, 53, 194, 194] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-repaint-expected.txt new file mode 100644 index 0000000..5c4ce87 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-repaint-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 0, 165, 165] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-vertical-rl-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-vertical-rl-expected.txt new file mode 100644 index 0000000..30721b0d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-change-vertical-rl-expected.txt
@@ -0,0 +1,32 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1524, 878], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 0, 1524, 192] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 878], + "bounds": [1200, 22], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [-324, 0, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-child-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-child-repaint-expected.txt new file mode 100644 index 0000000..e62762a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-child-repaint-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 360, 330, 75], + [0, 210, 330, 75] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt new file mode 100644 index 0000000..5caff05 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [9, 9, 306, 86] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-continuations-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-continuations-expected.txt new file mode 100644 index 0000000..1867576 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-continuations-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [24, 162, 131, 89] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-current-color-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-current-color-expected.txt new file mode 100644 index 0000000..de53b4e2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-current-color-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [72, 285, 180, 180] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-inset-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-inset-expected.txt new file mode 100644 index 0000000..1cc5ec2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-inset-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [28, 283, 301, 91], + [28, 43, 301, 91] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt new file mode 100644 index 0000000..b3faa90 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 75, 75] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-repaint-glitch-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-repaint-glitch-expected.txt new file mode 100644 index 0000000..0573a852 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-repaint-glitch-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [22, 565, 313, 103], + [22, 325, 313, 103] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-shrinking-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-shrinking-expected.txt new file mode 100644 index 0000000..ecb0614e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/outline/outline-shrinking-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [6, 162, 162, 162] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/align-items-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/align-items-overflow-change-expected.txt new file mode 100644 index 0000000..d5efef62 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/align-items-overflow-change-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 78, 300, 300], + [0, 3, 300, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/align-self-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/align-self-overflow-change-expected.txt new file mode 100644 index 0000000..d5efef62 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/align-self-overflow-change-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 78, 300, 300], + [0, 3, 300, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt new file mode 100644 index 0000000..2d5681d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [462, 12, 150, 150], + [12, 12, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt new file mode 100644 index 0000000..f4c6d31 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt
@@ -0,0 +1,53 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='scroller'", + "bounds": [300, 300], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "bounds": [278, 525], + "invalidations": [ + [0, 0, 278, 525] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 278], + "bounds": [278, 22], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [278, 0], + "bounds": [22, 278], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [278, 278], + "bounds": [22, 22], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt new file mode 100644 index 0000000..0c66aab --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
@@ -0,0 +1,61 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='scroller'", + "bounds": [330, 330], + "contentsOpaque": true, + "backgroundColor": "#008000", + "invalidations": [ + [0, 0, 330, 330] + ], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "position": [15, 15], + "bounds": [278, 450], + "contentsOpaque": true, + "backgroundColor": "#008000", + "invalidations": [ + [0, 0, 278, 450] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 293], + "bounds": [278, 22], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [293, 15], + "bounds": [22, 278], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [293, 293], + "bounds": [22, 22], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt new file mode 100644 index 0000000..bea73cd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
@@ -0,0 +1,55 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='scroller'", + "bounds": [300, 300], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "bounds": [278, 450], + "contentsOpaque": true, + "backgroundColor": "#008000", + "invalidations": [ + [0, 0, 278, 450] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 278], + "bounds": [278, 22], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [278, 0], + "bounds": [22, 278], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [278, 278], + "bounds": [22, 22], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt new file mode 100644 index 0000000..57f310a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt
@@ -0,0 +1,58 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='scroller'", + "bounds": [300, 300], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "bounds": [278, 450], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 278], + "bounds": [278, 22], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [278, 0], + "bounds": [22, 278], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [278, 278], + "bounds": [22, 22], + "transform": 1 + }, + { + "name": "Decoration Layer", + "bounds": [300, 300], + "invalidations": [ + [0, 0, 300, 300] + ], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt new file mode 100644 index 0000000..f1bfcbc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt
@@ -0,0 +1,32 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV id='div'", + "position": [-75, 0], + "bounds": [225, 150], + "backgroundColor": "#0000FF", + "invalidations": [ + [0, 0, 225, 150] + ], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [150, 150, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/content-into-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/content-into-overflow-expected.txt new file mode 100644 index 0000000..cda141c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/content-into-overflow-expected.txt
@@ -0,0 +1,16 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 237, 159, 159], + [12, 12, 159, 159], + [12, 462, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/erase-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/erase-overflow-expected.txt new file mode 100644 index 0000000..8350b9e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/erase-overflow-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 162, 150, 150], + [12, 12, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt new file mode 100644 index 0000000..39211462 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [162, 462, 150, 150], + [12, 312, 150, 150] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/float-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/float-overflow-expected.txt new file mode 100644 index 0000000..ba5d4923 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/float-overflow-expected.txt
@@ -0,0 +1,82 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [91, 805, 94, 55], + [91, 796, 94, 55], + [91, 688, 94, 34], + [91, 679, 94, 34], + [91, 373, 94, 34], + [91, 364, 94, 34], + [91, 256, 94, 34], + [91, 247, 94, 34], + [91, 139, 94, 34], + [91, 130, 94, 34], + [91, 22, 94, 34], + [91, 13, 94, 34], + [91, 747, 94, 33], + [91, 738, 94, 33], + [91, 630, 94, 33], + [91, 621, 94, 33], + [91, 315, 94, 33], + [91, 306, 94, 33], + [91, 198, 94, 33], + [91, 189, 94, 33], + [91, 81, 94, 33], + [91, 72, 94, 33], + [91, 490, 86, 41], + [91, 481, 86, 41], + [91, 549, 86, 40], + [91, 540, 86, 40], + [91, 432, 86, 40], + [91, 423, 86, 40], + [88, 814, 61, 16], + [88, 805, 61, 16], + [88, 697, 61, 16], + [88, 688, 61, 16], + [88, 382, 61, 16], + [88, 373, 61, 16], + [88, 265, 61, 16], + [88, 256, 61, 16], + [88, 148, 61, 16], + [88, 139, 61, 16], + [88, 756, 61, 15], + [88, 747, 61, 15], + [88, 639, 61, 15], + [88, 630, 61, 15], + [88, 324, 61, 15], + [88, 315, 61, 15], + [88, 383, 25, 26], + [88, 374, 25, 26], + [94, 33, 25, 25], + [88, 816, 25, 25], + [88, 807, 25, 25], + [88, 699, 25, 25], + [88, 690, 25, 25], + [88, 325, 25, 25], + [88, 316, 25, 25], + [88, 267, 25, 25], + [88, 258, 25, 25], + [85, 150, 25, 25], + [85, 141, 25, 25], + [88, 758, 25, 24], + [88, 749, 25, 24], + [88, 641, 25, 24], + [88, 632, 25, 24], + [88, 209, 25, 24], + [88, 200, 25, 24], + [85, 92, 25, 24], + [85, 83, 25, 24], + [86, 504, 24, 25], + [86, 495, 24, 25], + [86, 563, 24, 24], + [86, 554, 24, 24] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/float-overflow-right-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/float-overflow-right-expected.txt new file mode 100644 index 0000000..a0e2f42 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/float-overflow-right-expected.txt
@@ -0,0 +1,82 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [1015, 805, 94, 55], + [1015, 796, 94, 55], + [1015, 688, 94, 34], + [1015, 679, 94, 34], + [1015, 373, 94, 34], + [1015, 364, 94, 34], + [1015, 256, 94, 34], + [1015, 247, 94, 34], + [1015, 139, 94, 34], + [1015, 130, 94, 34], + [1015, 22, 94, 34], + [1015, 13, 94, 34], + [1015, 747, 94, 33], + [1015, 738, 94, 33], + [1015, 630, 94, 33], + [1015, 621, 94, 33], + [1015, 315, 94, 33], + [1015, 306, 94, 33], + [1015, 198, 94, 33], + [1015, 189, 94, 33], + [1015, 81, 94, 33], + [1015, 72, 94, 33], + [1023, 490, 86, 41], + [1023, 481, 86, 41], + [1023, 549, 86, 40], + [1023, 540, 86, 40], + [1023, 432, 86, 40], + [1023, 423, 86, 40], + [1051, 814, 61, 16], + [1051, 805, 61, 16], + [1051, 697, 61, 16], + [1051, 688, 61, 16], + [1051, 382, 61, 16], + [1051, 373, 61, 16], + [1051, 265, 61, 16], + [1051, 256, 61, 16], + [1051, 148, 61, 16], + [1051, 139, 61, 16], + [1051, 756, 61, 15], + [1051, 747, 61, 15], + [1051, 639, 61, 15], + [1051, 630, 61, 15], + [1051, 324, 61, 15], + [1051, 315, 61, 15], + [1087, 383, 25, 26], + [1087, 374, 25, 26], + [1090, 150, 25, 25], + [1090, 141, 25, 25], + [1087, 816, 25, 25], + [1087, 807, 25, 25], + [1087, 699, 25, 25], + [1087, 690, 25, 25], + [1087, 325, 25, 25], + [1087, 316, 25, 25], + [1087, 267, 25, 25], + [1087, 258, 25, 25], + [1081, 33, 25, 25], + [1090, 92, 25, 24], + [1090, 83, 25, 24], + [1087, 758, 25, 24], + [1087, 749, 25, 24], + [1087, 641, 25, 24], + [1087, 632, 25, 24], + [1087, 209, 25, 24], + [1087, 200, 25, 24], + [1090, 504, 24, 25], + [1090, 495, 24, 25], + [1090, 563, 24, 24], + [1090, 554, 24, 24] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-overflow-expected.txt new file mode 100644 index 0000000..2400ec45 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-overflow-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [49, 49, 376, 151] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt new file mode 100644 index 0000000..aacd46bb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [49, 49, 151, 376] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt new file mode 100644 index 0000000..d8565d4c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [1000, 49, 151, 376] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/justify-items-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/justify-items-overflow-change-expected.txt new file mode 100644 index 0000000..d1a5d14 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/justify-items-overflow-change-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 78, 240, 450] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/justify-self-overflow-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/justify-self-overflow-change-expected.txt new file mode 100644 index 0000000..8253fef --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/justify-self-overflow-change-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 78, 225, 450] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/line-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/line-overflow-expected.txt new file mode 100644 index 0000000..419b6b3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/line-overflow-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 117, 300, 81], + [12, 198, 299, 107] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt new file mode 100644 index 0000000..d275e89 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [825, 12, 300, 75] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt new file mode 100644 index 0000000..bee16de --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 1125, 81], + [12, 117, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-changed-on-child-of-composited-layer-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-changed-on-child-of-composited-layer-expected.txt new file mode 100644 index 0000000..88167a8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-changed-on-child-of-composited-layer-expected.txt
@@ -0,0 +1,31 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='parent'", + "position": [-1, -1], + "bounds": [1117, 152], + "invalidations": [ + [0, 0, 1117, 152] + ], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [42, 30, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt new file mode 100644 index 0000000..7f87abd0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt
@@ -0,0 +1,11 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-delete-line-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-delete-line-expected.txt new file mode 100644 index 0000000..90cf661 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-delete-line-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 104, 111, 29], + [12, 104, 71, 56] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-hide-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-hide-expected.txt new file mode 100644 index 0000000..3d67a265 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-hide-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [162, 162, 150, 150], + [12, 12, 150, 150] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-into-content-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-into-content-expected.txt new file mode 100644 index 0000000..cda141c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-into-content-expected.txt
@@ -0,0 +1,16 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 237, 159, 159], + [12, 12, 159, 159], + [12, 462, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-show-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-show-expected.txt new file mode 100644 index 0000000..3d67a265 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/overflow-show-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [162, 162, 150, 150], + [12, 12, 150, 150] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt new file mode 100644 index 0000000..25380e3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 138, 150, 75] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/repaint-resized-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/repaint-resized-overflow-expected.txt new file mode 100644 index 0000000..53070e1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/repaint-resized-overflow-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 222, 162, 162] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/resize-child-within-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/resize-child-within-overflow-expected.txt new file mode 100644 index 0000000..af5beb9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/resize-child-within-overflow-expected.txt
@@ -0,0 +1,31 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 1500], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [600, 0, 300, 1500] + ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 878], + "bounds": [1178, 22], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 878], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [1178, 878], + "bounds": [22, 22] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt new file mode 100644 index 0000000..cadacf2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 87, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-child-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-child-expected.txt new file mode 100644 index 0000000..25fad0ad --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-child-expected.txt
@@ -0,0 +1,64 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV class='container'", + "bounds": [453, 303], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "position": [2, 2], + "bounds": [3150, 278], + "invalidations": [ + [2999, 0, 151, 150] + ], + "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 280], + "bounds": [428, 22], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [430, 1], + "bounds": [22, 278], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [429, 279], + "bounds": [22, 22], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [42, 30, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [-2722, 0, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-parent-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-parent-expected.txt new file mode 100644 index 0000000..c0c1ad6a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-parent-expected.txt
@@ -0,0 +1,54 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV class='container'", + "bounds": [453, 303], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "position": [2, 2], + "bounds": [3150, 278], + "invalidations": [ + [0, 0, 150, 150] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 280], + "bounds": [428, 22], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [430, 1], + "bounds": [22, 278], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [429, 279], + "bounds": [22, 22], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [42, 42, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-same-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-same-expected.txt new file mode 100644 index 0000000..1eb5df3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-overflow-same-expected.txt
@@ -0,0 +1,54 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV class='vertical-rl container'", + "bounds": [453, 303], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "position": [2, 2], + "bounds": [3150, 278], + "invalidations": [ + [0, 0, 150, 150] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 280], + "bounds": [428, 22], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [430, 1], + "bounds": [22, 278], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [429, 279], + "bounds": [22, 22], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [42, 30, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-rl-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-rl-overflow-expected.txt new file mode 100644 index 0000000..414c75b8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overflow/vertical-rl-overflow-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [75, 150, 225, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overhanging-float-detach-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overhanging-float-detach-repaint-expected.txt new file mode 100644 index 0000000..3840fda --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/overhanging-float-detach-repaint-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 93, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt new file mode 100644 index 0000000..c020ca3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [537, 300, 2, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-invalidation-with-opacity-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-invalidation-with-opacity-expected.txt new file mode 100644 index 0000000..d9f3e56d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-invalidation-with-opacity-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt new file mode 100644 index 0000000..2c5fa4a4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [27, 27, 34, 26], + [12, 303, 34, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-display-block-to-none-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-display-block-to-none-expected.txt new file mode 100644 index 0000000..fbf578d4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-display-block-to-none-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 959, 27], + [150, 150, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-margin-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-margin-change-repaint-expected.txt new file mode 100644 index 0000000..1587279 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-margin-change-repaint-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 90, 150, 150], + [0, 60, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-change-containing-block-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-change-containing-block-expected.txt new file mode 100644 index 0000000..aeb9c3d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-change-containing-block-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [150, 150, 150, 150], + [12, 12, 150, 150] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-changed-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-changed-expected.txt new file mode 100644 index 0000000..f99f17a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-changed-expected.txt
@@ -0,0 +1,63 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [150, 750, 150, 150] + ], + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV class='fixed red'", + "bounds": [150, 150], + "contentsOpaque": true, + "backgroundColor": "#FF0000", + "transform": 2 + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'", + "position": [150, 1050], + "bounds": [150, 150], + "contentsOpaque": true, + "backgroundColor": "#008000", + "invalidations": [ + [0, 0, 150, 150] + ], + "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 900], + "bounds": [1200, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [1200, 0], + "bounds": [0, 900] + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -750, 0, 1] + ] + }, + { + "id": 2, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [150, 300, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-moved-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-moved-expected.txt new file mode 100644 index 0000000..9a7f456 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/absolute-position-moved-expected.txt
@@ -0,0 +1,42 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [150, 150, 150, 150] + ] + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV class='fixed red'", + "bounds": [150, 150], + "contentsOpaque": true, + "backgroundColor": "#FF0000", + "invalidations": [ + [150, 150, 150, 150], + [0, 0, 150, 150] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 1500, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt new file mode 100644 index 0000000..852e8f0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
@@ -0,0 +1,24 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1875, 878], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [1056, 0, 321, 348], + [681, 0, 321, 348], + [0, 0, 321, 348], + [1050, 327, 6, 26], + [675, 327, 6, 26] + ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 878], + "bounds": [1200, 22], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/align-content-position-change-grid-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/align-content-position-change-grid-expected.txt new file mode 100644 index 0000000..5caa3df --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/align-content-position-change-grid-expected.txt
@@ -0,0 +1,19 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 453, 300, 75], + [0, 378, 300, 75], + [0, 303, 300, 75], + [0, 228, 300, 75], + [0, 153, 300, 75], + [0, 78, 300, 75] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/background-position-no-image-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/background-position-no-image-expected.txt new file mode 100644 index 0000000..7f87abd0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/background-position-no-image-expected.txt
@@ -0,0 +1,11 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt new file mode 100644 index 0000000..59968a5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 51, 903, 153] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/containing-block-position-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/containing-block-position-change-expected.txt new file mode 100644 index 0000000..533713f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/containing-block-position-change-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [237, 105, 75, 75], + [150, 105, 75, 75] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-element-repaint-after-compositing-update-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-element-repaint-after-compositing-update-expected.txt new file mode 100644 index 0000000..3b9f418 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-element-repaint-after-compositing-update-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [225, 225, 150, 150], + [12, 153, 150, 150] + ] + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV id='fixedTransformed'", + "position": [12, 153], + "contentsOpaque": true, + "drawsContent": false + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-expected.txt new file mode 100644 index 0000000..9fb73c9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-expected.txt
@@ -0,0 +1,48 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV id='t'", + "bounds": [150, 150], + "contentsOpaque": true, + "backgroundColor": "#008000", + "invalidations": [ + [0, 0, 150, 150] + ], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -30, 0, 1] + ] + }, + { + "id": 2, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 90, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-margin-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-margin-change-repaint-expected.txt new file mode 100644 index 0000000..1587279 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-margin-change-repaint-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 90, 150, 150], + [0, 60, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt new file mode 100644 index 0000000..39211462 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt
@@ -0,0 +1,21 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [162, 462, 150, 150], + [12, 312, 150, 150] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-tranformed-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-tranformed-expected.txt new file mode 100644 index 0000000..fb320c2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/fixed-tranformed-expected.txt
@@ -0,0 +1,49 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 1500], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV id='test'", + "position": [75, 75], + "bounds": [150, 150], + "contentsOpaque": true, + "backgroundColor": "#008000", + "invalidations": [ + [0, 0, 150, 150] + ], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -75, 0, 1] + ] + }, + { + "id": 2, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [15, 15, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/inline-relative-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/inline-relative-positioned-expected.txt new file mode 100644 index 0000000..ae47a95 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/inline-relative-positioned-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 132, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/intermediate-layout-position-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/intermediate-layout-position-expected.txt new file mode 100644 index 0000000..53e6b39 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/intermediate-layout-position-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 258, 69, 30], + [12, 111, 69, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt new file mode 100644 index 0000000..247fd67 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [27, 627, 75, 75] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/justify-content-position-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/justify-content-position-change-expected.txt new file mode 100644 index 0000000..5ff18e38 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/justify-content-position-change-expected.txt
@@ -0,0 +1,17 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [150, 78, 78, 450], + [78, 78, 78, 450], + [72, 78, 78, 450], + [0, 78, 78, 450] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/justify-content-position-change-grid-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/justify-content-position-change-grid-expected.txt new file mode 100644 index 0000000..a27542d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/justify-content-position-change-grid-expected.txt
@@ -0,0 +1,19 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [375, 78, 75, 300], + [300, 78, 75, 300], + [225, 78, 75, 300], + [150, 78, 75, 300], + [75, 78, 75, 300], + [0, 78, 75, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layout-state-only-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layout-state-only-positioned-expected.txt new file mode 100644 index 0000000..a7ffcb23 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layout-state-only-positioned-expected.txt
@@ -0,0 +1,45 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 75, 156, 156] + ] + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV", + "bounds": [156, 156], + "invalidations": [ + [0, 0, 156, 156] + ], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "position": [3, 3], + "bounds": [150, 300], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [131, 3], + "bounds": [22, 150], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, 75, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layout-state-relative-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layout-state-relative-expected.txt new file mode 100644 index 0000000..d741152 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layout-state-relative-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 225, 54, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt new file mode 100644 index 0000000..898c818 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 330, 150, 150], + [12, 300, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/position-change-keeping-geometry-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/position-change-keeping-geometry-expected.txt new file mode 100644 index 0000000..7f87abd0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/position-change-keeping-geometry-expected.txt
@@ -0,0 +1,11 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-document-element-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-document-element-expected.txt new file mode 100644 index 0000000..be99d63 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-document-element-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#008000", + "invalidations": [ + [0, 0, 1200, 900] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt new file mode 100644 index 0000000..d5ac7d1e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [150, 300, 150, 150], + [150, 150, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt new file mode 100644 index 0000000..eedb89ed --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 90, 321, 348] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt new file mode 100644 index 0000000..a3c3d11 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt
@@ -0,0 +1,20 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutInline (relative positioned) DIV id='block'", + "position": [102, 11], + "bounds": [568, 29], + "backfaceVisibility": "hidden", + "invalidations": [ + [0, 0, 568, 29] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-margin-change-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-margin-change-repaint-expected.txt new file mode 100644 index 0000000..1587279 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-margin-change-repaint-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 90, 150, 150], + [0, 60, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-positioned-movement-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-positioned-movement-repaint-expected.txt new file mode 100644 index 0000000..6a661571 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/relative-positioned-movement-repaint-expected.txt
@@ -0,0 +1,28 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow (relative positioned) DIV id='block'", + "bounds": [603, 93], + "backfaceVisibility": "hidden", + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [102, 15, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt new file mode 100644 index 0000000..ab98b53 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
@@ -0,0 +1,23 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 1244], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 1103, 1178, 141], + [12, 129, 1098, 141], + [87, 345, 734, 806], + [87, 204, 734, 806] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt new file mode 100644 index 0000000..eb525de --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt
@@ -0,0 +1,22 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 1103], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 129, 1098, 141], + [87, 351, 734, 806], + [87, 204, 734, 806] + ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/static-to-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/static-to-positioned-expected.txt new file mode 100644 index 0000000..55d6b1f8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/static-to-positioned-expected.txt
@@ -0,0 +1,17 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 492, 150, 150], + [12, 417, 150, 150], + [12, 192, 150, 150], + [12, 117, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt new file mode 100644 index 0000000..8b2970679 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 12, 300, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-absolute-child-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-absolute-child-expected.txt new file mode 100644 index 0000000..81a3a42 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-absolute-child-expected.txt
@@ -0,0 +1,16 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [202, 190, 601, 76], + [186, 174, 510, 445], + [24, 12, 432, 432] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt new file mode 100644 index 0000000..86425c53 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
@@ -0,0 +1,20 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1203, 878], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [114, 279, 429, 429] + ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 878], + "bounds": [1200, 22], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-relative-position-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-relative-position-expected.txt new file mode 100644 index 0000000..2f2cb58 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/position/transform-relative-position-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [99, 162, 429, 429] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/push-block-with-first-line-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/push-block-with-first-line-expected.txt new file mode 100644 index 0000000..ccfe57a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/push-block-with-first-line-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 102, 1176, 30], + [12, 12, 1176, 30] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/quotes-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/quotes-expected.txt new file mode 100644 index 0000000..0fd2467 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/quotes-expected.txt
@@ -0,0 +1,18 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [26, 39, 72, 27], + [24, 39, 72, 27], + [98, 39, 14, 26], + [12, 39, 14, 26], + [96, 39, 12, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/raster-under-invalidation-checking-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/raster-under-invalidation-checking-expected.txt new file mode 100644 index 0000000..c2e1a33 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/raster-under-invalidation-checking-expected.txt
@@ -0,0 +1,1312 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [27, 15, 90, 60] + ], + "underInvalidations": [ + { + "x": 27, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 28, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 29, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 30, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 31, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 32, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 33, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 34, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 35, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 36, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 37, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 38, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 39, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 40, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 41, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 42, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 43, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 44, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 45, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 46, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 47, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 48, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 49, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 50, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 51, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 52, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 53, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 54, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 55, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 56, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 57, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 58, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 59, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 60, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 61, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 62, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 63, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 64, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 65, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 66, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 67, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 68, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 69, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 70, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 71, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 72, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 73, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 74, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 75, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 76, + "y": 15, + "oldPixel": "#0000FF", + "newPixel": "#008000" + } + ] + }, + { + "name": "LayoutNGBlockFlow DIV id='target2'", + "bounds": [90, 60], + "contentsOpaque": true, + "backgroundColor": "#008000", + "invalidations": [ + [0, 0, 90, 60] + ], + "underInvalidations": [ + { + "x": 0, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 1, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 2, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 3, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 4, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 5, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 6, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 7, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 8, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 9, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 10, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 11, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 12, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 13, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 14, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 15, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 16, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 17, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 18, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 19, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 20, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 21, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 22, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 23, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 24, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 25, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 26, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 27, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 28, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 29, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 30, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 31, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 32, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 33, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 34, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 35, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 36, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 37, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 38, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 39, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 40, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 41, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 42, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 43, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 44, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 45, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 46, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 47, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 48, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 49, + "y": 0, + "oldPixel": "#0000FF", + "newPixel": "#008000" + } + ], + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow DIV", + "bounds": [225, 225], + "contentsOpaque": true, + "backgroundColor": "#FFFF00", + "invalidations": [ + [60, 105, 90, 60] + ], + "underInvalidations": [ + { + "x": 60, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 61, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 62, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 63, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 64, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 65, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 66, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 67, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 68, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 69, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 70, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 71, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 72, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 73, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 74, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 75, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 76, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 77, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 78, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 79, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 80, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 81, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 82, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 83, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 84, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 85, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 86, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 87, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 88, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 89, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 90, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 91, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 92, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 93, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 94, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 95, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 96, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 97, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 98, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 99, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 100, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 101, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 102, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 103, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 104, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 105, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 106, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 107, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 108, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 109, + "y": 105, + "oldPixel": "#0000FF", + "newPixel": "#008000" + } + ], + "transform": 2 + }, + { + "name": "LayoutNGBlockFlow DIV id='scroller'", + "bounds": [225, 225], + "transform": 3 + }, + { + "name": "Scrolling Contents Layer", + "bounds": [6000, 30090], + "invalidations": [ + [60, 15015, 90, 60] + ], + "underInvalidations": [ + { + "x": 60, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 61, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 62, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 63, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 64, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 65, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 66, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 67, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 68, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 69, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 70, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 71, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 72, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 73, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 74, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 75, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 76, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 77, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 78, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 79, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 80, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 81, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 82, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 83, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 84, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 85, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 86, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 87, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 88, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 89, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 90, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 91, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 92, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 93, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 94, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 95, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 96, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 97, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 98, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 99, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 100, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 101, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 102, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 103, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 104, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 105, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 106, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 107, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 108, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + }, + { + "x": 109, + "y": 15015, + "oldPixel": "#0000FF", + "newPixel": "#008000" + } + ], + "transform": 4 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 203], + "bounds": [203, 22], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [203, 0], + "bounds": [22, 203], + "transform": 3 + }, + { + "name": "Scroll Corner Layer", + "position": [203, 203], + "bounds": [22, 22], + "transform": 3 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [27, 90, 0, 1] + ] + }, + { + "id": 2, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 165, 0, 1] + ] + }, + { + "id": 3, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 390, 0, 1] + ] + }, + { + "id": 4, + "parent": 3, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [-75, -14925, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt new file mode 100644 index 0000000..3ba4e8b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [450, 12, 675, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt new file mode 100644 index 0000000..68d2732 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 0, 150, 330], + [600, 15, 75, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-redraw-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-redraw-expected.txt new file mode 100644 index 0000000..90c4bc45 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-redraw-expected.txt
@@ -0,0 +1,17 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [582, 400, 405, 109], + [117, 400, 405, 109], + [469, 31, 166, 313], + [469, 565, 166, 235] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-with-rotation-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-with-rotation-expected.txt new file mode 100644 index 0000000..7e67153a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/reflection-with-rotation-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [34, 76, 106, 164] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt new file mode 100644 index 0000000..449dbf03 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt
@@ -0,0 +1,32 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [375, 345, 150, 150] + ], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -270, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt new file mode 100644 index 0000000..6b20b2a5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt
@@ -0,0 +1,46 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'", + "bounds": [150, 150], + "invalidations": [ + [0, 0, 150, 150] + ], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -270, 0, 1] + ] + }, + { + "id": 2, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [375, 150, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt new file mode 100644 index 0000000..87df24d4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt
@@ -0,0 +1,47 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1178, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV class='reflected fixed'", + "bounds": [150, 150], + "contentsOpaque": true, + "invalidations": [ + [0, 0, 150, 150] + ], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1178, 0], + "bounds": [22, 900], + "contentsOpaque": true + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -270, 0, 1] + ] + }, + { + "id": 2, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [375, 150, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-block-after-layout-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-block-after-layout-expected.txt new file mode 100644 index 0000000..9f783e51 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-block-after-layout-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 162, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-inline-after-layout-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-inline-after-layout-expected.txt new file mode 100644 index 0000000..28040889 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-inline-after-layout-expected.txt
@@ -0,0 +1,17 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [168, 291, 273, 27], + [441, 162, 150, 150], + [168, 162, 150, 150], + [162, 291, 6, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-inline-layer-after-layout-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-inline-layer-after-layout-expected.txt new file mode 100644 index 0000000..28040889 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/remove-inline-layer-after-layout-expected.txt
@@ -0,0 +1,17 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [168, 291, 273, 27], + [441, 162, 150, 150], + [168, 162, 150, 150], + [162, 291, 6, 26] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt new file mode 100644 index 0000000..78dfc5e8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [823, 286, 34, 52] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt new file mode 100644 index 0000000..097b950 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [642, 57, 450, 27], + [42, 57, 450, 27] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-in-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-in-iframe-expected.txt new file mode 100644 index 0000000..247fd67 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-in-iframe-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [27, 627, 75, 75] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-on-style-change-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-on-style-change-expected.txt new file mode 100644 index 0000000..56edcf3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-on-style-change-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [390, 390, 150, 150] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-overlay/layers-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-overlay/layers-expected.txt new file mode 100644 index 0000000..c269e5b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-overlay/layers-expected.txt
@@ -0,0 +1,115 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 3024], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "transform": 1 + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV id='container'", + "bounds": [150, 150], + "backgroundColor": "#0000FF80", + "invalidations": [ + [30, 30, 15, 15] + ], + "transform": 2 + }, + { + "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrollable'", + "bounds": [453, 453], + "transform": 3 + }, + { + "name": "LayoutNGBlockFlow (relative positioned) DIV id='transform'", + "bounds": [300, 300], + "contentsOpaque": true, + "backgroundColor": "#FFFF00", + "invalidations": [ + [30, 30, 15, 15] + ], + "transform": 6 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [1, 452], + "bounds": [450, 0], + "transform": 3 + }, + { + "name": "Vertical Scrollbar Layer", + "position": [452, 1], + "bounds": [0, 450], + "transform": 3 + }, + { + "name": "Vertical Scrollbar Layer", + "position": [1200, 0], + "bounds": [0, 900] + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -30, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [60, 75, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [96, 80, 0, 1] + ] + }, + { + "id": 4, + "parent": 3, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -45, 0, 1] + ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [134, 117, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [3.53553390593274, 3.53553390593274, 0, 0], + [-3.53553390593274, 3.53553390593274, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-subrect-grid-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-subrect-grid-expected.txt new file mode 100644 index 0000000..e84b1a7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/repaint-subrect-grid-expected.txt
@@ -0,0 +1,23 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [68, 27, 29, 28], + [13, 27, 29, 28], + [55, 55, 28, 28], + [55, 0, 28, 28], + [41, 27, 28, 28], + [27, 55, 28, 28], + [27, 0, 28, 28], + [0, 55, 28, 28], + [0, 0, 28, 28], + [0, 27, 14, 28] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt new file mode 100644 index 0000000..0755738 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt
@@ -0,0 +1,25 @@ +This test checks that changing the transform on an element triggers a correct invalidation. +The paint invalidations below should match the transformed element's coordinates. +Tested locations: 1200,1500 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [2400, 878], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [1950, 0, 450, 878], + [1500, 0, 450, 878], + [1350, 0, 150, 150] + ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 878], + "bounds": [1200, 22], + "contentsOpaque": true + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/resize-iframe-text-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/resize-iframe-text-expected.txt new file mode 100644 index 0000000..5486379 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/resize-iframe-text-expected.txt
@@ -0,0 +1,14 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [750, 600], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [0, 300, 750, 300] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/ruby-flipped-blocks-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/ruby-flipped-blocks-expected.txt new file mode 100644 index 0000000..ce72f33 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/ruby-flipped-blocks-expected.txt
@@ -0,0 +1,16 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [12, 42, 30, 30], + [12, 12, 30, 30], + [42, 49, 15, 16] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.txt new file mode 100644 index 0000000..96c30da2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.txt
@@ -0,0 +1,15 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "invalidations": [ + [621, 16, 1, 23], + [615, 16, 1, 23] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/caret-with-composited-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/caret-with-composited-scroll-expected.txt new file mode 100644 index 0000000..d55121dc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/caret-with-composited-scroll-expected.txt
@@ -0,0 +1,57 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='scroller'", + "bounds": [150, 150], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "bounds": [308, 1532], + "invalidations": [ + [0, 1498, 308, 34] + ], + "transform": 2 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 150], + "bounds": [150, 0], + "transform": 1 + }, + { + "name": "Vertical Scrollbar Layer", + "position": [150, 0], + "bounds": [0, 150], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 66, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -1382, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/composited-add-resizer-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/composited-add-resizer-expected.txt new file mode 100644 index 0000000..15a03215 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/composited-add-resizer-expected.txt
@@ -0,0 +1,48 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow DIV id='target'", + "bounds": [150, 150], + "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 128], + "bounds": [128, 22], + "transform": 1 + }, + { + "name": "Vertical Scrollbar Layer", + "position": [128, 0], + "bounds": [22, 128], + "transform": 1 + }, + { + "name": "Scroll Corner Layer", + "position": [128, 128], + "bounds": [22, 22], + "invalidations": [ + [0, 0, 22, 22] + ], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/composited-iframe-scroll-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/composited-iframe-scroll-repaint-expected.txt new file mode 100644 index 0000000..82e39ee --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/composited-iframe-scroll-repaint-expected.txt
@@ -0,0 +1,81 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutIFrame IFRAME", + "bounds": [456, 231], + "transform": 1 + }, + { + "name": "Scrolling Contents Layer", + "bounds": [450, 774], + "contentsOpaqueForText": true, + "backgroundColor": "#EEEEEE", + "transform": 3 + }, + { + "name": "LayoutNGBlockFlow BODY", + "bounds": [426, 750], + "transform": 4 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 225], + "bounds": [450, 0], + "transform": 2 + }, + { + "name": "Vertical Scrollbar Layer", + "position": [450, 0], + "bounds": [0, 225], + "transform": 2 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [3, 3, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, -30, 0, 1] + ] + }, + { + "id": 4, + "parent": 3, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [12, 12, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt new file mode 100644 index 0000000..3c37159c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt
@@ -0,0 +1,32 @@ +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1200, 900], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "LayoutNGBlockFlow (positioned) DIV", + "bounds": [300, 300], + "contentsOpaque": true, + "backgroundColor": "#0000FF", + "invalidations": [ + [0, 0, 300, 300] + ], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, 150, 0, 1] + ] + } + ] +} +
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/layering/paint-test-layering-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/layering/paint-test-layering-1-expected.png new file mode 100644 index 0000000..c1f407f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/layering/paint-test-layering-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/layering/paint-test-layering-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/layering/paint-test-layering-2-expected.png new file mode 100644 index 0000000..e774dc9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/layering/paint-test-layering-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/45621-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/45621-expected.png new file mode 100644 index 0000000..5f139ade --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/45621-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/adforce_imgis_com-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/adforce_imgis_com-expected.png new file mode 100644 index 0000000..0c0ceec --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/adforce_imgis_com-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10009-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10009-expected.png new file mode 100644 index 0000000..eb23d05 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10009-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug100334-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug100334-expected.png new file mode 100644 index 0000000..579995dc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug100334-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10036-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10036-expected.png new file mode 100644 index 0000000..bfbc954 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10036-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10039-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10039-expected.png new file mode 100644 index 0000000..7b584890 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10039-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug101201-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug101201-expected.png new file mode 100644 index 0000000..641b339 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug101201-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug101674-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug101674-expected.png new file mode 100644 index 0000000..029132b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug101674-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-1-expected.png new file mode 100644 index 0000000..35ed03a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-2-expected.png new file mode 100644 index 0000000..35ed03a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-3-expected.png new file mode 100644 index 0000000..35ed03a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-4-expected.png new file mode 100644 index 0000000..35ed03a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug102145-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10269-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10269-1-expected.png new file mode 100644 index 0000000..2f2a42a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10269-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10269-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10269-2-expected.png new file mode 100644 index 0000000..ccb0726 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10269-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10296-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10296-1-expected.png new file mode 100644 index 0000000..915d4628 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10296-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10296-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10296-2-expected.png new file mode 100644 index 0000000..cc600e1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10296-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug103533-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug103533-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug103533-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1055-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1055-1-expected.png new file mode 100644 index 0000000..1c46132c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1055-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10565-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10565-expected.png new file mode 100644 index 0000000..04a2b53 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10565-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106158-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106158-1-expected.png new file mode 100644 index 0000000..36368c6a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106158-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106158-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106158-2-expected.png new file mode 100644 index 0000000..571d4af --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106158-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10633-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10633-expected.png new file mode 100644 index 0000000..0f47345 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug10633-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1067-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1067-1-expected.png new file mode 100644 index 0000000..fe830fb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1067-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1067-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1067-2-expected.png new file mode 100644 index 0000000..723154a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1067-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106795-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106795-expected.png new file mode 100644 index 0000000..3300f04 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106795-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106816-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106816-expected.png new file mode 100644 index 0000000..8795edb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug106816-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug108340-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug108340-expected.png new file mode 100644 index 0000000..f05ada79 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug108340-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug109043-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug109043-expected.png new file mode 100644 index 0000000..031b728 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug109043-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11026-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11026-expected.png new file mode 100644 index 0000000..ee6b642 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11026-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug110566-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug110566-expected.png new file mode 100644 index 0000000..481c894e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug110566-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11321-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11321-expected.png new file mode 100644 index 0000000..31592a80 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11321-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-1-expected.png new file mode 100644 index 0000000..786ad5a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-2-expected.png new file mode 100644 index 0000000..3094c44 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-3-expected.png new file mode 100644 index 0000000..0c88958a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113235-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113424-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113424-expected.png new file mode 100644 index 0000000..a17bb04 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug113424-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11384q-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11384q-expected.png new file mode 100644 index 0000000..5532a29 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11384q-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11384s-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11384s-expected.png new file mode 100644 index 0000000..1e0c7fe5e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11384s-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1163-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1163-1-expected.png new file mode 100644 index 0000000..8e2cb692 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1163-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1188-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1188-expected.png new file mode 100644 index 0000000..b080b98 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1188-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11944-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11944-expected.png new file mode 100644 index 0000000..6ba3ef3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug11944-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug119786-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug119786-expected.png new file mode 100644 index 0000000..59509e18 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug119786-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12008-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12008-expected.png new file mode 100644 index 0000000..d7c78d3d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12008-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug120107-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug120107-expected.png new file mode 100644 index 0000000..176dd31 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug120107-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug120364-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug120364-expected.png new file mode 100644 index 0000000..1f38b69 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug120364-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1220-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1220-expected.png new file mode 100644 index 0000000..79022e9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1220-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1224-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1224-expected.png new file mode 100644 index 0000000..f8c935eb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1224-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12268-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12268-expected.png new file mode 100644 index 0000000..60a208b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12268-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug123862-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug123862-expected.png new file mode 100644 index 0000000..58671d9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug123862-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1261-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1261-expected.png new file mode 100644 index 0000000..15896a1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1261-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug126742-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug126742-expected.png new file mode 100644 index 0000000..bbd581ac --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug126742-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12709-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12709-expected.png new file mode 100644 index 0000000..7b68afef --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12709-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1271-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1271-expected.png new file mode 100644 index 0000000..51d3d3b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1271-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug127267-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug127267-expected.png new file mode 100644 index 0000000..8fef9c7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug127267-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug128229-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug128229-expected.png new file mode 100644 index 0000000..aec6563 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug128229-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12908-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12908-1-expected.png new file mode 100644 index 0000000..7b54f55 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12908-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12908-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12908-2-expected.png new file mode 100644 index 0000000..c985f9c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12908-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12910-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12910-expected.png new file mode 100644 index 0000000..b89a667 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug12910-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1296-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1296-expected.png new file mode 100644 index 0000000..f43014c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1296-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1302-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1302-expected.png new file mode 100644 index 0000000..dc579e9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1302-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020-2-expected.png new file mode 100644 index 0000000..71b6aa6f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020-expected.png new file mode 100644 index 0000000..8f388779 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020_iframe-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020_iframe-expected.png new file mode 100644 index 0000000..8763357 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug131020_iframe-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13105-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13105-expected.png new file mode 100644 index 0000000..ec38025f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13105-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13118-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13118-expected.png new file mode 100644 index 0000000..80b157b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13118-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13169-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13169-expected.png new file mode 100644 index 0000000..b26ab60 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13169-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1318-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1318-expected.png new file mode 100644 index 0000000..1b6f227 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1318-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13196-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13196-expected.png new file mode 100644 index 0000000..569440c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13196-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133756-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133756-1-expected.png new file mode 100644 index 0000000..4ef799f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133756-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133756-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133756-2-expected.png new file mode 100644 index 0000000..e9658641 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133756-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133948-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133948-expected.png new file mode 100644 index 0000000..8b5827a1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug133948-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13484-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13484-expected.png new file mode 100644 index 0000000..1940f4e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13484-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13526-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13526-expected.png new file mode 100644 index 0000000..ca2b930 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug13526-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-1-expected.png new file mode 100644 index 0000000..4b25dde4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-2-expected.png new file mode 100644 index 0000000..5940a2b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-3-expected.png new file mode 100644 index 0000000..66bd910 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug137388-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug138725-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug138725-expected.png new file mode 100644 index 0000000..4b668c7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug138725-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-1-expected.png new file mode 100644 index 0000000..51c4c60 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-2-expected.png new file mode 100644 index 0000000..715fa0d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-3-expected.png new file mode 100644 index 0000000..51c4c60 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-4-expected.png new file mode 100644 index 0000000..353d03e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug139524-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14159-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14159-1-expected.png new file mode 100644 index 0000000..b97a2ff2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14159-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14159-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14159-3-expected.png new file mode 100644 index 0000000..7c58b13 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14159-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1430-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1430-expected.png new file mode 100644 index 0000000..b2b46ad7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1430-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14323-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14323-expected.png new file mode 100644 index 0000000..d69f6b87 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14323-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug145572-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug145572-expected.png new file mode 100644 index 0000000..6ffeca7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug145572-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1474-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1474-expected.png new file mode 100644 index 0000000..541d57d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1474-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug149275-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug149275-1-expected.png new file mode 100644 index 0000000..59e29d9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug149275-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug149275-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug149275-2-expected.png new file mode 100644 index 0000000..9fa7a90 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug149275-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14929-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14929-expected.png new file mode 100644 index 0000000..5bbf8f7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug14929-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15247-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15247-expected.png new file mode 100644 index 0000000..59a1b0d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15247-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug154780-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug154780-expected.png new file mode 100644 index 0000000..b86b0ab --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug154780-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15544-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15544-expected.png new file mode 100644 index 0000000..8d4661b1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15544-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug159108-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug159108-expected.png new file mode 100644 index 0000000..44941449 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug159108-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15933-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15933-expected.png new file mode 100644 index 0000000..f48e6cee --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug15933-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug16012-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug16012-expected.png new file mode 100644 index 0000000..f262831 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug16012-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug16252-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug16252-expected.png new file mode 100644 index 0000000..e4827de9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug16252-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17130-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17130-1-expected.png new file mode 100644 index 0000000..0ec14ee9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17130-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17130-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17130-2-expected.png new file mode 100644 index 0000000..76e5a9a6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17130-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17138-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17138-expected.png new file mode 100644 index 0000000..805b7b0d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17138-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17168-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17168-expected.png new file mode 100644 index 0000000..16ef9bc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17168-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug175455-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug175455-4-expected.png new file mode 100644 index 0000000..3cf95f8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug175455-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17548-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17548-expected.png new file mode 100644 index 0000000..d65cfb6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17548-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17587-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17587-expected.png new file mode 100644 index 0000000..7c33a31 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug17587-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1800-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1800-expected.png new file mode 100644 index 0000000..3c99657 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1800-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1802-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1802-expected.png new file mode 100644 index 0000000..4cc772e5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1802-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1802s-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1802s-expected.png new file mode 100644 index 0000000..4cc772e5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1802s-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1809-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1809-expected.png new file mode 100644 index 0000000..eb23d05 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1809-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-1-expected.png new file mode 100644 index 0000000..6a9ea637 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-2-expected.png new file mode 100644 index 0000000..6a9ea637 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-3-expected.png new file mode 100644 index 0000000..6a9ea637 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-4-expected.png new file mode 100644 index 0000000..6a9ea637 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-5-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-5-expected.png new file mode 100644 index 0000000..f69f5c0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-5-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-6-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-6-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1818-6-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1828-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1828-expected.png new file mode 100644 index 0000000..d6429b0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug1828-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18359-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18359-expected.png new file mode 100644 index 0000000..86c1fd1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18359-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18440-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18440-expected.png new file mode 100644 index 0000000..be86e94 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18440-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18558-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18558-expected.png new file mode 100644 index 0000000..747c026 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18558-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18664-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18664-expected.png new file mode 100644 index 0000000..1c06b34 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18664-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18955-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18955-expected.png new file mode 100644 index 0000000..c13701d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug18955-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19061-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19061-1-expected.png new file mode 100644 index 0000000..579c0254 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19061-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19061-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19061-2-expected.png new file mode 100644 index 0000000..3b384b9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19061-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19356-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19356-expected.png new file mode 100644 index 0000000..d72b2cfd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19356-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug194024-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug194024-expected.png new file mode 100644 index 0000000..b5040d5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug194024-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19599-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19599-expected.png new file mode 100644 index 0000000..69885b8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug19599-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug196870-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug196870-expected.png new file mode 100644 index 0000000..93099a4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug196870-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2050-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2050-expected.png new file mode 100644 index 0000000..2bdaeff --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2050-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug20579-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug20579-expected.png new file mode 100644 index 0000000..2207c5c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug20579-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2065-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2065-expected.png new file mode 100644 index 0000000..c45cd55 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2065-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug20804-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug20804-expected.png new file mode 100644 index 0000000..d5031df --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug20804-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2123-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2123-expected.png new file mode 100644 index 0000000..dd8caa7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2123-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug21299-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug21299-expected.png new file mode 100644 index 0000000..ad3ea59 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug21299-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug215629-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug215629-expected.png new file mode 100644 index 0000000..565d01c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug215629-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug21918-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug21918-expected.png new file mode 100644 index 0000000..629e65e0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug21918-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug219693-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug219693-1-expected.png new file mode 100644 index 0000000..509ab3f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug219693-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug219693-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug219693-2-expected.png new file mode 100644 index 0000000..509ab3f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug219693-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22019-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22019-expected.png new file mode 100644 index 0000000..2952226 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22019-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug220536-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug220536-expected.png new file mode 100644 index 0000000..b935b64cb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug220536-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug221784-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug221784-1-expected.png new file mode 100644 index 0000000..6bdbab2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug221784-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug221784-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug221784-2-expected.png new file mode 100644 index 0000000..f7ddd5de --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug221784-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222336-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222336-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222336-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-2-expected.png new file mode 100644 index 0000000..0c76cc5a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-2a-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-2a-expected.png new file mode 100644 index 0000000..0c76cc5a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-2a-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-3-expected.png new file mode 100644 index 0000000..5be22fc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-3a-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-3a-expected.png new file mode 100644 index 0000000..5be22fc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22246-3a-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222467-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222467-expected.png new file mode 100644 index 0000000..449c5407f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222467-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222846-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222846-expected.png new file mode 100644 index 0000000..aca7cd6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug222846-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22513-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22513-expected.png new file mode 100644 index 0000000..60bf91d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug22513-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2267-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2267-expected.png new file mode 100644 index 0000000..b0b07714 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2267-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug227123-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug227123-expected.png new file mode 100644 index 0000000..2b2aafab --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug227123-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2296-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2296-expected.png new file mode 100644 index 0000000..ea985885 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2296-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23072-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23072-expected.png new file mode 100644 index 0000000..0386896 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23072-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23151-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23151-expected.png new file mode 100644 index 0000000..53f4344e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23151-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23235-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23235-expected.png new file mode 100644 index 0000000..5f82502 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23235-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23299-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23299-expected.png new file mode 100644 index 0000000..66651bd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23299-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23994-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23994-expected.png new file mode 100644 index 0000000..4f620b4b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug23994-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24200-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24200-expected.png new file mode 100644 index 0000000..125e5d55 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24200-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24503-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24503-expected.png new file mode 100644 index 0000000..f30a6159 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24503-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24627-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24627-expected.png new file mode 100644 index 0000000..28ce0f6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24627-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24661-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24661-expected.png new file mode 100644 index 0000000..cf8b8eaa --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24661-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2469-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2469-expected.png new file mode 100644 index 0000000..d0121b3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2469-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-1-expected.png new file mode 100644 index 0000000..e62acca --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-2-expected.png new file mode 100644 index 0000000..521c9621 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-3-expected.png new file mode 100644 index 0000000..8f4feb9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-4-expected.png new file mode 100644 index 0000000..cce422f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2479-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24880-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24880-expected.png new file mode 100644 index 0000000..0696ecfa --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug24880-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25004-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25004-expected.png new file mode 100644 index 0000000..eb23d05 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25004-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25074-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25074-expected.png new file mode 100644 index 0000000..b91e4df --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25074-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25086-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25086-expected.png new file mode 100644 index 0000000..9ebcded --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25086-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2509-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2509-expected.png new file mode 100644 index 0000000..d72a16a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2509-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2516-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2516-expected.png new file mode 100644 index 0000000..57e5596 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2516-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25367-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25367-expected.png new file mode 100644 index 0000000..5e98cb3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25367-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25663-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25663-expected.png new file mode 100644 index 0000000..ab9f6a6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug25663-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2585-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2585-expected.png new file mode 100644 index 0000000..c0f2921 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2585-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug26178-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug26178-expected.png new file mode 100644 index 0000000..4ebe7d3e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug26178-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug26553-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug26553-expected.png new file mode 100644 index 0000000..dca58838 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug26553-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2684-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2684-expected.png new file mode 100644 index 0000000..798e2a8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2684-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug269566-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug269566-expected.png new file mode 100644 index 0000000..58c0af33 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug269566-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-1-expected.png new file mode 100644 index 0000000..de8db45 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-2-expected.png new file mode 100644 index 0000000..bf3a9b7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-3-expected.png new file mode 100644 index 0000000..9cfac61 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27038-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug275625-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug275625-expected.png new file mode 100644 index 0000000..51369d0b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug275625-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2757-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2757-expected.png new file mode 100644 index 0000000..d61d0c3f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2757-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2763-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2763-expected.png new file mode 100644 index 0000000..f8c10cec --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2763-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug277062-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug277062-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug277062-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2773-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2773-expected.png new file mode 100644 index 0000000..798e2a8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2773-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug278266-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug278266-expected.png new file mode 100644 index 0000000..ff4d690 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug278266-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug278385-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug278385-expected.png new file mode 100644 index 0000000..984b046 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug278385-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27993-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27993-1-expected.png new file mode 100644 index 0000000..23c03b8d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug27993-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28341-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28341-expected.png new file mode 100644 index 0000000..88a440d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28341-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2886-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2886-expected.png new file mode 100644 index 0000000..14c1205 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2886-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28928-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28928-expected.png new file mode 100644 index 0000000..04fadf2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28928-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28933-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28933-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug28933-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29058-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29058-3-expected.png new file mode 100644 index 0000000..52dbfb80 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29058-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29157-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29157-expected.png new file mode 100644 index 0000000..2328f36 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29157-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29314-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29314-expected.png new file mode 100644 index 0000000..6e088709 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29314-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29326-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29326-expected.png new file mode 100644 index 0000000..0f9a2ec --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29326-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29429-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29429-expected.png new file mode 100644 index 0000000..5ab03da4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug29429-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2947-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2947-expected.png new file mode 100644 index 0000000..75c02a7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2947-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2954-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2954-expected.png new file mode 100644 index 0000000..f7b939f7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2954-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2962-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2962-expected.png new file mode 100644 index 0000000..a3bcde4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2962-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2973-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2973-expected.png new file mode 100644 index 0000000..1188fb78 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2973-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2981-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2981-1-expected.png new file mode 100644 index 0000000..85e20f4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2981-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2981-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2981-2-expected.png new file mode 100644 index 0000000..2077105d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2981-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2997-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2997-expected.png new file mode 100644 index 0000000..e6eef150 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug2997-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30273-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30273-expected.png new file mode 100644 index 0000000..8f104b57 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30273-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30332-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30332-1-expected.png new file mode 100644 index 0000000..7abfcbb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30332-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30332-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30332-2-expected.png new file mode 100644 index 0000000..7abfcbb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30332-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3037-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3037-1-expected.png new file mode 100644 index 0000000..c5c8c35 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3037-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3037-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3037-2-expected.png new file mode 100644 index 0000000..fa91a0b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3037-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30418-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30418-expected.png new file mode 100644 index 0000000..3b9c7117 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30418-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30559-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30559-expected.png new file mode 100644 index 0000000..2870ed9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30559-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30692-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30692-expected.png new file mode 100644 index 0000000..ceb3b65 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30692-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30985-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30985-expected.png new file mode 100644 index 0000000..ac5c284 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug30985-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3103-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3103-expected.png new file mode 100644 index 0000000..2f788f01 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3103-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3191-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3191-expected.png new file mode 100644 index 0000000..df5c676d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3191-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-2-expected.png new file mode 100644 index 0000000..011f9745 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-3-expected.png new file mode 100644 index 0000000..e194d1a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-5-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-5-expected.png new file mode 100644 index 0000000..8fc7c2b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32205-5-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32447-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32447-expected.png new file mode 100644 index 0000000..b2c49d7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32447-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3260-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3260-expected.png new file mode 100644 index 0000000..c59e408 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3260-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3263-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3263-expected.png new file mode 100644 index 0000000..fddae130 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3263-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32841-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32841-expected.png new file mode 100644 index 0000000..b1374a83 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug32841-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3309-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3309-1-expected.png new file mode 100644 index 0000000..3f42e0f3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3309-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3309-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3309-2-expected.png new file mode 100644 index 0000000..4bbde13 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3309-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug33137-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug33137-expected.png new file mode 100644 index 0000000..def24586 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug33137-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug33855-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug33855-expected.png new file mode 100644 index 0000000..1e08d07 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug33855-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug34176-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug34176-expected.png new file mode 100644 index 0000000..07535d63 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug34176-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug34538-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug34538-expected.png new file mode 100644 index 0000000..b2c49d7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug34538-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3454-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3454-expected.png new file mode 100644 index 0000000..49153b2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3454-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug35662-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug35662-expected.png new file mode 100644 index 0000000..4ade3a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug35662-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3681-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3681-1-expected.png new file mode 100644 index 0000000..830b448 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3681-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3681-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3681-2-expected.png new file mode 100644 index 0000000..c07b0f7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3681-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3718-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3718-expected.png new file mode 100644 index 0000000..4835644 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3718-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug38916-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug38916-expected.png new file mode 100644 index 0000000..fca6af08 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug38916-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug39209-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug39209-expected.png new file mode 100644 index 0000000..bdf8b45b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug39209-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3977-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3977-expected.png new file mode 100644 index 0000000..c6a82425 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug3977-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug40828-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug40828-expected.png new file mode 100644 index 0000000..0b391b35 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug40828-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4093-expected.png new file mode 100644 index 0000000..cf5e268 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4093-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug41890-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug41890-expected.png new file mode 100644 index 0000000..8480fa0d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug41890-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug42187-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug42187-expected.png new file mode 100644 index 0000000..4b57b64 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug42187-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug42443-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug42443-expected.png new file mode 100644 index 0000000..a7c86d0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug42443-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4284-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4284-expected.png new file mode 100644 index 0000000..9d92527 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4284-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43039-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43039-expected.png new file mode 100644 index 0000000..c9e9b3e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43039-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43204-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43204-expected.png new file mode 100644 index 0000000..72fc6f2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43204-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4382-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4382-expected.png new file mode 100644 index 0000000..7872668f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4382-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4385-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4385-expected.png new file mode 100644 index 0000000..c4eef8a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4385-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43854-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43854-1-expected.png new file mode 100644 index 0000000..e3eb70c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43854-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43854-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43854-2-expected.png new file mode 100644 index 0000000..4dc9ee72 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug43854-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4429-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4429-expected.png new file mode 100644 index 0000000..ee3ca54f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4429-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug44505-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug44505-expected.png new file mode 100644 index 0000000..b96a7c7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug44505-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug44523-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug44523-expected.png new file mode 100644 index 0000000..c73fe3f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug44523-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4501-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4501-expected.png new file mode 100644 index 0000000..9592d03 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4501-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45055-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45055-2-expected.png new file mode 100644 index 0000000..c6dfb42 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45055-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45055-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45055-expected.png new file mode 100644 index 0000000..73283992 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45055-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4520-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4520-expected.png new file mode 100644 index 0000000..da4a956 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4520-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4523-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4523-expected.png new file mode 100644 index 0000000..8f4ad74 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4523-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45350-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45350-expected.png new file mode 100644 index 0000000..42a0e12 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45350-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45486-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45486-expected.png new file mode 100644 index 0000000..ce724b46 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug45486-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4576-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4576-expected.png new file mode 100644 index 0000000..0b441443 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4576-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-1-expected.png new file mode 100644 index 0000000..e2780c0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-2-expected.png new file mode 100644 index 0000000..e2780c0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-3-expected.png new file mode 100644 index 0000000..fee7f6f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-5-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-5-expected.png new file mode 100644 index 0000000..5a657d9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-5-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-expected.png new file mode 100644 index 0000000..5a657d9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46268-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46368-1-expected.png new file mode 100644 index 0000000..23e2aa5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46368-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46368-2-expected.png new file mode 100644 index 0000000..ff93aca0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46368-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46480-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46480-1-expected.png new file mode 100644 index 0000000..fa633698 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46480-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46480-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46480-2-expected.png new file mode 100644 index 0000000..de9ca23 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46480-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46623-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46623-1-expected.png new file mode 100644 index 0000000..df2596f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46623-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46623-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46623-2-expected.png new file mode 100644 index 0000000..b5206f44 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46623-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46924-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46924-expected.png new file mode 100644 index 0000000..0c56133 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46924-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46944-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46944-expected.png new file mode 100644 index 0000000..ff37e45 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug46944-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4739-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4739-expected.png new file mode 100644 index 0000000..f6433f6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4739-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug47432-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug47432-expected.png new file mode 100644 index 0000000..88b7c78 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug47432-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48028-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48028-1-expected.png new file mode 100644 index 0000000..57fd6d9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48028-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48028-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48028-2-expected.png new file mode 100644 index 0000000..5854263 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48028-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4803-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4803-expected.png new file mode 100644 index 0000000..3632241b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4803-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4849-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4849-2-expected.png new file mode 100644 index 0000000..58a346e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4849-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4849-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4849-expected.png new file mode 100644 index 0000000..92e6a43 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug4849-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48827-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48827-expected.png new file mode 100644 index 0000000..6128c0a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug48827-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug50695-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug50695-1-expected.png new file mode 100644 index 0000000..733ece8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug50695-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug50695-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug50695-2-expected.png new file mode 100644 index 0000000..4992fc3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug50695-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51037-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51037-expected.png new file mode 100644 index 0000000..64fe169 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51037-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51140-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51140-expected.png new file mode 100644 index 0000000..414be8ab --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51140-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51727-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51727-expected.png new file mode 100644 index 0000000..8ed1702 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug51727-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5188-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5188-expected.png new file mode 100644 index 0000000..95beeeb8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5188-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug52505-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug52505-expected.png new file mode 100644 index 0000000..666ba62 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug52505-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug52506-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug52506-expected.png new file mode 100644 index 0000000..dab2cf7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug52506-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53690-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53690-1-expected.png new file mode 100644 index 0000000..3fe0f29 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53690-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53690-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53690-2-expected.png new file mode 100644 index 0000000..786c09bb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53690-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53891-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53891-expected.png new file mode 100644 index 0000000..73ced9f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug53891-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug54450-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug54450-expected.png new file mode 100644 index 0000000..d85fdcf5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug54450-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5538-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5538-expected.png new file mode 100644 index 0000000..b0da008c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5538-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55527-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55527-expected.png new file mode 100644 index 0000000..0c0d677 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55527-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55545-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55545-expected.png new file mode 100644 index 0000000..a83035dc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55545-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55694-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55694-expected.png new file mode 100644 index 0000000..b5fa10a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55694-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55789-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55789-expected.png new file mode 100644 index 0000000..bcdcce0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug55789-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56201-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56201-expected.png new file mode 100644 index 0000000..a8891608 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56201-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56405-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56405-expected.png new file mode 100644 index 0000000..dcefa27 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56405-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56563-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56563-expected.png new file mode 100644 index 0000000..080b5ed --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug56563-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57300-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57300-expected.png new file mode 100644 index 0000000..42bc670 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57300-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57378-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57378-expected.png new file mode 100644 index 0000000..c41f4b0d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57378-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57828-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57828-2-expected.png new file mode 100644 index 0000000..ae02980e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57828-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57828-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57828-expected.png new file mode 100644 index 0000000..550e376 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug57828-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5797-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5797-expected.png new file mode 100644 index 0000000..23d96e1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5797-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5798-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5798-expected.png new file mode 100644 index 0000000..12cb89d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5798-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5799-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5799-expected.png new file mode 100644 index 0000000..0e5ebd41 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5799-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5835-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5835-expected.png new file mode 100644 index 0000000..b3e8c9c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5835-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5838-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5838-expected.png new file mode 100644 index 0000000..46886dd8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug5838-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug58402-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug58402-1-expected.png new file mode 100644 index 0000000..f616ec9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug58402-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug59354-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug59354-expected.png new file mode 100644 index 0000000..fa22b4e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug59354-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60013-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60013-expected.png new file mode 100644 index 0000000..8a20ce4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60013-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60749-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60749-expected.png new file mode 100644 index 0000000..b34e3e29 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60749-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60804-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60804-expected.png new file mode 100644 index 0000000..ea8dd0db --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60804-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60807-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60807-expected.png new file mode 100644 index 0000000..ea8dd0db --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60807-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60992-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60992-expected.png new file mode 100644 index 0000000..a9bf9e99 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug60992-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6184-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6184-expected.png new file mode 100644 index 0000000..89cd247 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6184-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug625-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug625-expected.png new file mode 100644 index 0000000..8cbf95c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug625-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6304-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6304-expected.png new file mode 100644 index 0000000..558f9cb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6304-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug63785-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug63785-expected.png new file mode 100644 index 0000000..26a18693 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug63785-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6404-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6404-expected.png new file mode 100644 index 0000000..b5db48f6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6404-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug641-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug641-1-expected.png new file mode 100644 index 0000000..b5db03c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug641-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug641-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug641-2-expected.png new file mode 100644 index 0000000..9127751 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug641-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug647-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug647-expected.png new file mode 100644 index 0000000..936207c2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug647-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug650-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug650-expected.png new file mode 100644 index 0000000..2200f06 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug650-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6674-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6674-expected.png new file mode 100644 index 0000000..6da3ee3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug6674-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug67864-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug67864-expected.png new file mode 100644 index 0000000..197d619 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug67864-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug67915-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug67915-1-expected.png new file mode 100644 index 0000000..75c4fa5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug67915-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug68912-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug68912-expected.png new file mode 100644 index 0000000..f0fcab1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug68912-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug68998-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug68998-expected.png new file mode 100644 index 0000000..3dbe7c06 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug68998-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69187-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69187-expected.png new file mode 100644 index 0000000..cd22954 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69187-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69382-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69382-1-expected.png new file mode 100644 index 0000000..bc7138db --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69382-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69382-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69382-2-expected.png new file mode 100644 index 0000000..cbd4b98 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug69382-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug709-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug709-expected.png new file mode 100644 index 0000000..2768df54 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug709-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7112-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7112-1-expected.png new file mode 100644 index 0000000..de69806 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7112-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7112-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7112-2-expected.png new file mode 100644 index 0000000..54e5485 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7112-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7121-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7121-1-expected.png new file mode 100644 index 0000000..62d82db --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7121-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug72359-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug72359-expected.png new file mode 100644 index 0000000..08497e4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug72359-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug727-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug727-expected.png new file mode 100644 index 0000000..71931ef4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug727-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug73321-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug73321-expected.png new file mode 100644 index 0000000..fdbf5e7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug73321-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7342-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7342-expected.png new file mode 100644 index 0000000..97bdfb7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7342-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7471-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7471-expected.png new file mode 100644 index 0000000..02eb5e1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7471-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug75250-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug75250-expected.png new file mode 100644 index 0000000..cf283f0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug75250-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7714-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7714-expected.png new file mode 100644 index 0000000..7432610 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug7714-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug78162-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug78162-expected.png new file mode 100644 index 0000000..8d4a3ba8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug78162-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8032-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8032-1-expected.png new file mode 100644 index 0000000..53240f34 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8032-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8032-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8032-2-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8032-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug80762-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug80762-1-expected.png new file mode 100644 index 0000000..87e99e22 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug80762-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug81934-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug81934-expected.png new file mode 100644 index 0000000..bb11a31 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug81934-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug82946-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug82946-1-expected.png new file mode 100644 index 0000000..ac4b82f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug82946-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug82946-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug82946-2-expected.png new file mode 100644 index 0000000..d5b68c99 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug82946-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8361-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8361-expected.png new file mode 100644 index 0000000..7ad1571 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8361-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug83786-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug83786-expected.png new file mode 100644 index 0000000..3febb58b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug83786-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8381-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8381-expected.png new file mode 100644 index 0000000..3e74c95 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8381-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8411-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8411-expected.png new file mode 100644 index 0000000..538d877 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8411-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug86220-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug86220-expected.png new file mode 100644 index 0000000..86b1c92 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug86220-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug86708-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug86708-expected.png new file mode 100644 index 0000000..c5f63888 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug86708-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88035-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88035-1-expected.png new file mode 100644 index 0000000..1eef3ae --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88035-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88035-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88035-2-expected.png new file mode 100644 index 0000000..0274c7f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88035-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88524-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88524-expected.png new file mode 100644 index 0000000..c83beaa --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug88524-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8858-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8858-expected.png new file mode 100644 index 0000000..f6f8d23 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8858-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8950-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8950-expected.png new file mode 100644 index 0000000..eb03fa78 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug8950-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9024-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9024-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9024-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9072-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9072-expected.png new file mode 100644 index 0000000..72eb506 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9072-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9123-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9123-1-expected.png new file mode 100644 index 0000000..0bd9bec --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9123-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9123-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9123-2-expected.png new file mode 100644 index 0000000..5b081a5f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9123-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92143-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92143-expected.png new file mode 100644 index 0000000..7595c4e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92143-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92647-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92647-2-expected.png new file mode 100644 index 0000000..84fe976f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92647-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9271-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9271-1-expected.png new file mode 100644 index 0000000..0965adf4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9271-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9271-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9271-2-expected.png new file mode 100644 index 0000000..f380a58 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9271-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92868-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92868-expected.png new file mode 100644 index 0000000..a90c629 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug92868-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug93363-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug93363-expected.png new file mode 100644 index 0000000..a15ab43f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug93363-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug963-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug963-expected.png new file mode 100644 index 0000000..a11089f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug963-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug96334-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug96334-expected.png new file mode 100644 index 0000000..166fea9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug96334-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug96343-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug96343-expected.png new file mode 100644 index 0000000..62e551e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug96343-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug965-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug965-expected.png new file mode 100644 index 0000000..daf8b6bf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug965-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug97138-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug97138-expected.png new file mode 100644 index 0000000..24873cc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug97138-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug97383-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug97383-expected.png new file mode 100644 index 0000000..8687bcda --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug97383-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug98196-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug98196-expected.png new file mode 100644 index 0000000..d0f1c3d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug98196-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9879-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9879-1-expected.png new file mode 100644 index 0000000..2e297c7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug9879-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug99923-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug99923-expected.png new file mode 100644 index 0000000..43581467 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug99923-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug99948-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug99948-expected.png new file mode 100644 index 0000000..31a041b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/bugs/bug99948-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug127040-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug127040-expected.png new file mode 100644 index 0000000..913258f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug127040-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug41262-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug41262-3-expected.png new file mode 100644 index 0000000..118f573 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug41262-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug41262-4-expected.png new file mode 100644 index 0000000..bba2349 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/collapsing_borders/bug41262-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/bloomberg-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/bloomberg-expected.png new file mode 100644 index 0000000..ebd399a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/bloomberg-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/borders-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/borders-expected.png new file mode 100644 index 0000000..b2a2c1be --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/borders-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/box_sizing-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/box_sizing-expected.png new file mode 100644 index 0000000..d24f407 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/box_sizing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/captions-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/captions-expected.png new file mode 100644 index 0000000..cdac2981 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/captions-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/cell_heights-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/cell_heights-expected.png new file mode 100644 index 0000000..2a14ea8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/cell_heights-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_span-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_span-expected.png new file mode 100644 index 0000000..9e23829e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_span-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_auto-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_auto-expected.png new file mode 100644 index 0000000..e20dbfa --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_auto-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoFix-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoFix-expected.png new file mode 100644 index 0000000..48db067 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoFix-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoFixPer-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoFixPer-expected.png new file mode 100644 index 0000000..ff664c7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoFixPer-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoPer-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoPer-expected.png new file mode 100644 index 0000000..88576d0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_autoPer-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_fix-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_fix-expected.png new file mode 100644 index 0000000..94affaa --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_fix-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_fixPer-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_fixPer-expected.png new file mode 100644 index 0000000..908f794 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_fixPer-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_per-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_per-expected.png new file mode 100644 index 0000000..e1bfcfec --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_auto_per-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_auto-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_auto-expected.png new file mode 100644 index 0000000..e41ab56 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_auto-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoFix-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoFix-expected.png new file mode 100644 index 0000000..bb22a0c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoFix-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoFixPer-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoFixPer-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoFixPer-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoPer-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoPer-expected.png new file mode 100644 index 0000000..65a0e9bb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_autoPer-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_fix-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_fix-expected.png new file mode 100644 index 0000000..71474f41 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_fix-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_fixPer-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_fixPer-expected.png new file mode 100644 index 0000000..1cb53ff --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_fixPer-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_per-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_per-expected.png new file mode 100644 index 0000000..1572abe --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/col_widths_fix_per-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/margins-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/margins-expected.png new file mode 100644 index 0000000..25bdf0b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/margins-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/misc-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/misc-expected.png new file mode 100644 index 0000000..e6a3553c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/misc-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/nested1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/nested1-expected.png new file mode 100644 index 0000000..a40bf5ec --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/nested1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/one_row-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/one_row-expected.png new file mode 100644 index 0000000..75c79d9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/one_row-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/row_span-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/row_span-expected.png new file mode 100644 index 0000000..f5c341f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/row_span-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_frame-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_frame-expected.png new file mode 100644 index 0000000..54465a5f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_frame-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_heights-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_heights-expected.png new file mode 100644 index 0000000..27da152 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_heights-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_rules-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_rules-expected.png new file mode 100644 index 0000000..1befbb1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_rules-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_widths-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_widths-expected.png new file mode 100644 index 0000000..49710be0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/core/table_widths-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendCol2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendCol2-expected.png new file mode 100644 index 0000000..d8ffc75 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendCol2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendRowsExpand1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendRowsExpand1-expected.png new file mode 100644 index 0000000..b7f8792 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendRowsExpand1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendTbodyExpand1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendTbodyExpand1-expected.png new file mode 100644 index 0000000..21bf96b2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/appendTbodyExpand1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsRebuild1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsRebuild1-expected.png new file mode 100644 index 0000000..5311af9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsRebuild1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsShrink1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsShrink1-expected.png new file mode 100644 index 0000000..0fb9275 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsShrink1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsShrink2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsShrink2-expected.png new file mode 100644 index 0000000..309fb0a9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCellsShrink2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol1-expected.png new file mode 100644 index 0000000..da23042 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol2-expected.png new file mode 100644 index 0000000..ab588c3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol3-expected.png new file mode 100644 index 0000000..b304cdd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteCol3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteColGroup1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteColGroup1-expected.png new file mode 100644 index 0000000..d8b1e08f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteColGroup1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteColGroup2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteColGroup2-expected.png new file mode 100644 index 0000000..dc36059 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteColGroup2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteRowsRebuild1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteRowsRebuild1-expected.png new file mode 100644 index 0000000..fee311c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteRowsRebuild1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteRowsShrink1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteRowsShrink1-expected.png new file mode 100644 index 0000000..fee311c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteRowsShrink1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteTbodyExpand1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteTbodyExpand1-expected.png new file mode 100644 index 0000000..c1a78bf8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteTbodyExpand1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteTbodyRebuild1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteTbodyRebuild1-expected.png new file mode 100644 index 0000000..579db8c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/deleteTbodyRebuild1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsExpand1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsExpand1-expected.png new file mode 100644 index 0000000..4aa4a35 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsExpand1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsExpand2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsExpand2-expected.png new file mode 100644 index 0000000..fdb16d6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsExpand2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsRebuild1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsRebuild1-expected.png new file mode 100644 index 0000000..8a5cd4e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsRebuild1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsRebuild2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsRebuild2-expected.png new file mode 100644 index 0000000..0abe755 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCellsRebuild2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertColGroups1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertColGroups1-expected.png new file mode 100644 index 0000000..38f83a51 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertColGroups1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertColGroups2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertColGroups2-expected.png new file mode 100644 index 0000000..d66a92b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertColGroups2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols1-expected.png new file mode 100644 index 0000000..38f83a51 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols2-expected.png new file mode 100644 index 0000000..38f83a51 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols3-expected.png new file mode 100644 index 0000000..d66a92b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols4-expected.png new file mode 100644 index 0000000..38f83a51 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols5-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols5-expected.png new file mode 100644 index 0000000..38f83a51 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertCols5-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertRowsExpand1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertRowsExpand1-expected.png new file mode 100644 index 0000000..a8b260b4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertRowsExpand1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertRowsRebuild1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertRowsRebuild1-expected.png new file mode 100644 index 0000000..bdef49ba --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/insertRowsRebuild1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/tableDom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/tableDom-expected.png new file mode 100644 index 0000000..5c0c807f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/dom/tableDom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_col-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_col-expected.png new file mode 100644 index 0000000..5107b5b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_col-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_tbody-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_tbody-expected.png new file mode 100644 index 0000000..f18adf9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_tbody-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_tfoot-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_tfoot-expected.png new file mode 100644 index 0000000..66566f8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_tfoot-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_thead-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_thead-expected.png new file mode 100644 index 0000000..f256547 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/body_thead-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/col_span-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/col_span-expected.png new file mode 100644 index 0000000..0daf9ae --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/col_span-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_center-expected.png new file mode 100644 index 0000000..233c125 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_justify-expected.png new file mode 100644 index 0000000..7328ee6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_left-expected.png new file mode 100644 index 0000000..566108e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_right-expected.png new file mode 100644 index 0000000..9e0b807 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_span-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_span-expected.png new file mode 100644 index 0000000..822574d4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_span-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_baseline-expected.png new file mode 100644 index 0000000..b3d9f38 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_bottom-expected.png new file mode 100644 index 0000000..c1ba578 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_middle-expected.png new file mode 100644 index 0000000..77ddae4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_top-expected.png new file mode 100644 index 0000000..6eec2d1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_width_pct-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_width_pct-expected.png new file mode 100644 index 0000000..268b19d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_width_pct-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_width_px-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_width_px-expected.png new file mode 100644 index 0000000..9f4f044c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/colgroup_width_px-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_frame_border-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_frame_border-expected.png new file mode 100644 index 0000000..829fe7f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_frame_border-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_frame_box-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_frame_box-expected.png new file mode 100644 index 0000000..829fe7f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_frame_box-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_overflow_hidden_td-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_overflow_hidden_td-expected.png new file mode 100644 index 0000000..c74bb703 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_overflow_hidden_td-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_overflow_td_dynamic_deactivate-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_overflow_td_dynamic_deactivate-expected.png new file mode 100644 index 0000000..b79c131 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_overflow_td_dynamic_deactivate-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_center-expected.png new file mode 100644 index 0000000..e517754 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_left-expected.png new file mode 100644 index 0000000..1397873 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_right-expected.png new file mode 100644 index 0000000..2c219012 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_row_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_all-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_all-expected.png new file mode 100644 index 0000000..c7f0d50b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_all-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_groups-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_groups-expected.png new file mode 100644 index 0000000..c168d1f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_groups-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_none-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_none-expected.png new file mode 100644 index 0000000..34d3c3f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/table_rules_none-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_center-expected.png new file mode 100644 index 0000000..8c731cb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_left-expected.png new file mode 100644 index 0000000..058a8d86 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_right-expected.png new file mode 100644 index 0000000..29c95030 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_aqua-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_aqua-expected.png new file mode 100644 index 0000000..acd2aa5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_aqua-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_aqua_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_aqua_rgb-expected.png new file mode 100644 index 0000000..acd2aa5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_aqua_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_black-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_black-expected.png new file mode 100644 index 0000000..b13a53c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_black-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_black_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_black_rgb-expected.png new file mode 100644 index 0000000..b13a53c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_black_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_blue-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_blue-expected.png new file mode 100644 index 0000000..bf27ef1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_blue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_blue_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_blue_rgb-expected.png new file mode 100644 index 0000000..bf27ef1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_blue_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_fuchsia-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_fuchsia-expected.png new file mode 100644 index 0000000..d8aa2dc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_fuchsia-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_fuchsia_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_fuchsia_rgb-expected.png new file mode 100644 index 0000000..d8aa2dc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_fuchsia_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_gray-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_gray-expected.png new file mode 100644 index 0000000..1bc7eb6a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_gray-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_gray_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_gray_rgb-expected.png new file mode 100644 index 0000000..1bc7eb6a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_gray_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_green-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_green-expected.png new file mode 100644 index 0000000..6e456f9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_green-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_green_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_green_rgb-expected.png new file mode 100644 index 0000000..6e456f9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_green_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_lime-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_lime-expected.png new file mode 100644 index 0000000..0116991c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_lime-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_lime_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_lime_rgb-expected.png new file mode 100644 index 0000000..0116991c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_lime_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_maroon-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_maroon-expected.png new file mode 100644 index 0000000..8c2e373 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_maroon-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_maroon_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_maroon_rgb-expected.png new file mode 100644 index 0000000..8c2e373 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_maroon_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_navy-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_navy-expected.png new file mode 100644 index 0000000..8e290530 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_navy-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_navy_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_navy_rgb-expected.png new file mode 100644 index 0000000..8e290530 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_navy_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_olive-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_olive-expected.png new file mode 100644 index 0000000..f60d50b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_olive-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_olive_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_olive_rgb-expected.png new file mode 100644 index 0000000..f60d50b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_olive_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_purple-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_purple-expected.png new file mode 100644 index 0000000..884a20e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_purple-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_purple_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_purple_rgb-expected.png new file mode 100644 index 0000000..884a20e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_purple_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_red-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_red-expected.png new file mode 100644 index 0000000..344e462 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_red-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_red_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_red_rgb-expected.png new file mode 100644 index 0000000..344e462 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_red_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_silver-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_silver-expected.png new file mode 100644 index 0000000..1098786 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_silver-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_silver_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_silver_rgb-expected.png new file mode 100644 index 0000000..1098786 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_silver_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_teal-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_teal-expected.png new file mode 100644 index 0000000..f444e483 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_teal-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_teal_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_teal_rgb-expected.png new file mode 100644 index 0000000..f444e483 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_teal_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_white-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_white-expected.png new file mode 100644 index 0000000..271ef54 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_white-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_white_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_white_rgb-expected.png new file mode 100644 index 0000000..271ef54 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_white_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_yellow-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_yellow-expected.png new file mode 100644 index 0000000..da632c0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_yellow-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_yellow_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_yellow_rgb-expected.png new file mode 100644 index 0000000..da632c0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_bgcolor_yellow_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_0-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_0-expected.png new file mode 100644 index 0000000..09c35e0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_0-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_1-expected.png new file mode 100644 index 0000000..6f6d7c21 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_2-expected.png new file mode 100644 index 0000000..81d9180 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_3-expected.png new file mode 100644 index 0000000..4e92546 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_border_3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_caption_align_bot-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_caption_align_bot-expected.png new file mode 100644 index 0000000..22d4ea0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_caption_align_bot-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_caption_align_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_caption_align_top-expected.png new file mode 100644 index 0000000..a10028b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_caption_align_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellpadding-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellpadding-expected.png new file mode 100644 index 0000000..25ce658 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellpadding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellpadding_pct-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellpadding_pct-expected.png new file mode 100644 index 0000000..7bfc9fe --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellpadding_pct-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellspacing-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellspacing-expected.png new file mode 100644 index 0000000..727c0e0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_cellspacing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_class-expected.png new file mode 100644 index 0000000..b46c38fdb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_default-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_default-expected.png new file mode 100644 index 0000000..4bb42349 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_default-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_id-expected.png new file mode 100644 index 0000000..1e02f3f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_row_th_nowrap-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_row_th_nowrap-expected.png new file mode 100644 index 0000000..7fd3cad --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_row_th_nowrap-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_style-expected.png new file mode 100644 index 0000000..231fbbbb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_center-expected.png new file mode 100644 index 0000000..2bda762b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_left-expected.png new file mode 100644 index 0000000..800cd74d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_right-expected.png new file mode 100644 index 0000000..5b18854 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_colspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_colspan-expected.png new file mode 100644 index 0000000..fccbe31a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_colspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_height-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_height-expected.png new file mode 100644 index 0000000..725cedd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_nowrap-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_nowrap-expected.png new file mode 100644 index 0000000..e32dace --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_nowrap-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_rowspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_rowspan-expected.png new file mode 100644 index 0000000..9cebd5a5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_rowspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_width-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_width-expected.png new file mode 100644 index 0000000..c37abf72 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_td_width-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_center-expected.png new file mode 100644 index 0000000..a87a14d1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_left-expected.png new file mode 100644 index 0000000..e7b9810 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_right-expected.png new file mode 100644 index 0000000..a3925d5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_colspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_colspan-expected.png new file mode 100644 index 0000000..d694424 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_colspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_height-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_height-expected.png new file mode 100644 index 0000000..4e6bd8f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_rowspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_rowspan-expected.png new file mode 100644 index 0000000..7dafd53 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_rowspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_width-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_width-expected.png new file mode 100644 index 0000000..f650d60a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_th_width-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_width_percent-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_width_percent-expected.png new file mode 100644 index 0000000..c8e5d12 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_width_percent-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_width_px-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_width_px-expected.png new file mode 100644 index 0000000..c5911505 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tables_width_px-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_center-expected.png new file mode 100644 index 0000000..466be2b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_char-expected.png new file mode 100644 index 0000000..fa00c8f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_justify-expected.png new file mode 100644 index 0000000..bc56100 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_left-expected.png new file mode 100644 index 0000000..366d36c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_right-expected.png new file mode 100644 index 0000000..a4c38e9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_char-expected.png new file mode 100644 index 0000000..22fe649 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_baseline-expected.png new file mode 100644 index 0000000..5648378 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_bottom-expected.png new file mode 100644 index 0000000..36c0a30e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_middle-expected.png new file mode 100644 index 0000000..50ce2de --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_top-expected.png new file mode 100644 index 0000000..41206660 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tbody_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_baseline-expected.png new file mode 100644 index 0000000..53ce6d5c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_bottom-expected.png new file mode 100644 index 0000000..1578df0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_middle-expected.png new file mode 100644 index 0000000..38f007d5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_top-expected.png new file mode 100644 index 0000000..03371961 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/td_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_center-expected.png new file mode 100644 index 0000000..73e4d33 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_char-expected.png new file mode 100644 index 0000000..f013b5d8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_justify-expected.png new file mode 100644 index 0000000..709e4a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_left-expected.png new file mode 100644 index 0000000..08265cd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_right-expected.png new file mode 100644 index 0000000..95f2d81 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_char-expected.png new file mode 100644 index 0000000..b5f3d52 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_baseline-expected.png new file mode 100644 index 0000000..b23090d5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_bottom-expected.png new file mode 100644 index 0000000..530c16f9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_middle-expected.png new file mode 100644 index 0000000..e6ef5938 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_top-expected.png new file mode 100644 index 0000000..7dc8b20 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tfoot_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_baseline-expected.png new file mode 100644 index 0000000..919fc37 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_bottom-expected.png new file mode 100644 index 0000000..a47d205 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_middle-expected.png new file mode 100644 index 0000000..d57cb7ca --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_top-expected.png new file mode 100644 index 0000000..af937fe --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/th_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_center-expected.png new file mode 100644 index 0000000..92b1cab --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_char-expected.png new file mode 100644 index 0000000..d07a8db --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_justify-expected.png new file mode 100644 index 0000000..f353b48 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_left-expected.png new file mode 100644 index 0000000..26f6b243 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_right-expected.png new file mode 100644 index 0000000..2fbd345 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_char-expected.png new file mode 100644 index 0000000..afe0827b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_baseline-expected.png new file mode 100644 index 0000000..5ee2a973 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_bottom-expected.png new file mode 100644 index 0000000..80619d08 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_middle-expected.png new file mode 100644 index 0000000..f1b857e2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_top-expected.png new file mode 100644 index 0000000..b405813 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/thead_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_aqua_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_aqua_rgb-expected.png new file mode 100644 index 0000000..e4fc42c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_aqua_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_black-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_black-expected.png new file mode 100644 index 0000000..2b26529f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_black-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_black_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_black_rgb-expected.png new file mode 100644 index 0000000..2b26529f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_black_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_blue-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_blue-expected.png new file mode 100644 index 0000000..4d09f5a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_blue-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_blue_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_blue_rgb-expected.png new file mode 100644 index 0000000..4d09f5a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_blue_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_fuchsia-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_fuchsia-expected.png new file mode 100644 index 0000000..1e926b5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_fuchsia-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_fuchsia_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_fuchsia_rgb-expected.png new file mode 100644 index 0000000..1e926b5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_fuchsia_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_gray-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_gray-expected.png new file mode 100644 index 0000000..2dc4abb3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_gray-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_gray_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_gray_rgb-expected.png new file mode 100644 index 0000000..2dc4abb3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_gray_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_green-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_green-expected.png new file mode 100644 index 0000000..b96a6af --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_green-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_green_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_green_rgb-expected.png new file mode 100644 index 0000000..b96a6af --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_green_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_lime-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_lime-expected.png new file mode 100644 index 0000000..74fa9af --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_lime-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_lime_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_lime_rgb-expected.png new file mode 100644 index 0000000..74fa9af --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_lime_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_maroon-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_maroon-expected.png new file mode 100644 index 0000000..32c4f26e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_maroon-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_maroon_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_maroon_rgb-expected.png new file mode 100644 index 0000000..32c4f26e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_maroon_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_navy-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_navy-expected.png new file mode 100644 index 0000000..5834c9b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_navy-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_navy_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_navy_rgb-expected.png new file mode 100644 index 0000000..5834c9b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_navy_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_olive-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_olive-expected.png new file mode 100644 index 0000000..05d0cdf9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_olive-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_olive_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_olive_rgb-expected.png new file mode 100644 index 0000000..05d0cdf9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_olive_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_purple-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_purple-expected.png new file mode 100644 index 0000000..46b8a066 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_purple-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_purple_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_purple_rgb-expected.png new file mode 100644 index 0000000..46b8a066 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_purple_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_red-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_red-expected.png new file mode 100644 index 0000000..29a775a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_red-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_red_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_red_rgb-expected.png new file mode 100644 index 0000000..29a775a3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_red_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_silver-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_silver-expected.png new file mode 100644 index 0000000..7bccc3e2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_silver-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_silver_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_silver_rgb-expected.png new file mode 100644 index 0000000..7bccc3e2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_silver_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_teal-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_teal-expected.png new file mode 100644 index 0000000..4630c6a1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_teal-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_teal_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_teal_rgb-expected.png new file mode 100644 index 0000000..4630c6a1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_teal_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_white-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_white-expected.png new file mode 100644 index 0000000..f1efaa0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_white-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_white_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_white_rgb-expected.png new file mode 100644 index 0000000..f1efaa0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_white_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_yellow-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_yellow-expected.png new file mode 100644 index 0000000..6f2bed6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_yellow-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_yellow_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_yellow_rgb-expected.png new file mode 100644 index 0000000..6f2bed6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_bgcolor_yellow_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_baseline-expected.png new file mode 100644 index 0000000..da6d60d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_bottom-expected.png new file mode 100644 index 0000000..65308b6fa --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_middle-expected.png new file mode 100644 index 0000000..e12548e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_top-expected.png new file mode 100644 index 0000000..a8110fb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/tr_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_align_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_align_bottom-expected.png new file mode 100644 index 0000000..006356e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_align_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_align_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_align_top-expected.png new file mode 100644 index 0000000..bd2d744 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_align_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_class-expected.png new file mode 100644 index 0000000..8950029 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_id-expected.png new file mode 100644 index 0000000..8950029 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_style-expected.png new file mode 100644 index 0000000..8950029 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_caption_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_center-expected.png new file mode 100644 index 0000000..0ef4dfb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_char-expected.png new file mode 100644 index 0000000..ac64e1c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_justify-expected.png new file mode 100644 index 0000000..4ce4e5d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_left-expected.png new file mode 100644 index 0000000..7515494 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_right-expected.png new file mode 100644 index 0000000..9162e4c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_span-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_span-expected.png new file mode 100644 index 0000000..bad3fb7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_span-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_baseline-expected.png new file mode 100644 index 0000000..45ae8bd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_bottom-expected.png new file mode 100644 index 0000000..7bbdc1e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_middle-expected.png new file mode 100644 index 0000000..77e9b74 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_top-expected.png new file mode 100644 index 0000000..71aa44a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_pct-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_pct-expected.png new file mode 100644 index 0000000..751907c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_pct-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_px-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_px-expected.png new file mode 100644 index 0000000..7c616b1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_px-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_rel-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_rel-expected.png new file mode 100644 index 0000000..9e55205 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_col_width_rel-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_center-expected.png new file mode 100644 index 0000000..0ef4dfb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_char-expected.png new file mode 100644 index 0000000..a22b83a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_justify-expected.png new file mode 100644 index 0000000..4ce4e5d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_left-expected.png new file mode 100644 index 0000000..7515494 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_right-expected.png new file mode 100644 index 0000000..9162e4c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_span-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_span-expected.png new file mode 100644 index 0000000..bad3fb7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_span-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_baseline-expected.png new file mode 100644 index 0000000..c080c2b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_bottom-expected.png new file mode 100644 index 0000000..ac5dc369 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_middle-expected.png new file mode 100644 index 0000000..705c5a38 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_top-expected.png new file mode 100644 index 0000000..74b60ff7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_width_pct-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_width_pct-expected.png new file mode 100644 index 0000000..064e3fbe --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_width_pct-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_width_rel-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_width_rel-expected.png new file mode 100644 index 0000000..96d28a0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_colgroup_width_rel-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table-expected.png new file mode 100644 index 0000000..aa973b3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_center-expected.png new file mode 100644 index 0000000..fc4b5aeb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_left-expected.png new file mode 100644 index 0000000..9a59b0c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_right-expected.png new file mode 100644 index 0000000..a5031cbdb9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_bgcolor_name-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_bgcolor_name-expected.png new file mode 100644 index 0000000..a92fcd22 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_bgcolor_name-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_bgcolor_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_bgcolor_rgb-expected.png new file mode 100644 index 0000000..a92fcd22 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_bgcolor_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border-expected.png new file mode 100644 index 0000000..6e3135c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border_none-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border_none-expected.png new file mode 100644 index 0000000..4739ea0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border_none-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border_px-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border_px-expected.png new file mode 100644 index 0000000..840ed4c9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_border_px-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellpadding-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellpadding-expected.png new file mode 100644 index 0000000..2afe79c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellpadding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellpadding_pct-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellpadding_pct-expected.png new file mode 100644 index 0000000..c12a577 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellpadding_pct-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellspacing-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellspacing-expected.png new file mode 100644 index 0000000..28a684d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellspacing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellspacing_pct-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellspacing_pct-expected.png new file mode 100644 index 0000000..c1ed736 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_cellspacing_pct-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_class-expected.png new file mode 100644 index 0000000..e009805 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_frame_void-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_frame_void-expected.png new file mode 100644 index 0000000..4e4679d9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_frame_void-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_id-expected.png new file mode 100644 index 0000000..609afbb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_rules_groups-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_rules_groups-expected.png new file mode 100644 index 0000000..ea5b424a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_rules_groups-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_rules_none-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_rules_none-expected.png new file mode 100644 index 0000000..d1de800b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_rules_none-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_style-expected.png new file mode 100644 index 0000000..e718f6c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_width_pct-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_width_pct-expected.png new file mode 100644 index 0000000..af0c754 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_width_pct-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_width_px-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_width_px-expected.png new file mode 100644 index 0000000..a855b707 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_table_width_px-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_center-expected.png new file mode 100644 index 0000000..4e65f85 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_char-expected.png new file mode 100644 index 0000000..d16cabd3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_justify-expected.png new file mode 100644 index 0000000..c7671b8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_left-expected.png new file mode 100644 index 0000000..1312599 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_right-expected.png new file mode 100644 index 0000000..c849733 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_class-expected.png new file mode 100644 index 0000000..10c0353 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_id-expected.png new file mode 100644 index 0000000..10c0353 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_style-expected.png new file mode 100644 index 0000000..10c0353 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_baseline-expected.png new file mode 100644 index 0000000..e9a7ad8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_bottom-expected.png new file mode 100644 index 0000000..9d4e9b1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_middle-expected.png new file mode 100644 index 0000000..9df5550d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_top-expected.png new file mode 100644 index 0000000..569269c58 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tbody_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_center-expected.png new file mode 100644 index 0000000..5337cbb6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_char-expected.png new file mode 100644 index 0000000..dabe285 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_justify-expected.png new file mode 100644 index 0000000..374a2de --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_left-expected.png new file mode 100644 index 0000000..3abd2e04 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_right-expected.png new file mode 100644 index 0000000..3eb2c62 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_bgcolor_name-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_bgcolor_name-expected.png new file mode 100644 index 0000000..6a3c2ac0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_bgcolor_name-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_bgcolor_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_bgcolor_rgb-expected.png new file mode 100644 index 0000000..6a3c2ac0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_bgcolor_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_class-expected.png new file mode 100644 index 0000000..53d9028 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_colspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_colspan-expected.png new file mode 100644 index 0000000..904e92c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_colspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_height-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_height-expected.png new file mode 100644 index 0000000..3a51f88 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_id-expected.png new file mode 100644 index 0000000..53d9028 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_nowrap-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_nowrap-expected.png new file mode 100644 index 0000000..3b8952f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_nowrap-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_rowspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_rowspan-expected.png new file mode 100644 index 0000000..fe3ffb3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_rowspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_style-expected.png new file mode 100644 index 0000000..53d9028 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_baseline-expected.png new file mode 100644 index 0000000..0885c7a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_bottom-expected.png new file mode 100644 index 0000000..dbde5945 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_middle-expected.png new file mode 100644 index 0000000..97bb735 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_top-expected.png new file mode 100644 index 0000000..62c2e59b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_width-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_width-expected.png new file mode 100644 index 0000000..77180c7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_td_width-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_center-expected.png new file mode 100644 index 0000000..82d864a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_char-expected.png new file mode 100644 index 0000000..fdc215f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_justify-expected.png new file mode 100644 index 0000000..f309f1cc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_left-expected.png new file mode 100644 index 0000000..73d0ad59 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_right-expected.png new file mode 100644 index 0000000..cabcca8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_class-expected.png new file mode 100644 index 0000000..46de1e6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_id-expected.png new file mode 100644 index 0000000..46de1e6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_style-expected.png new file mode 100644 index 0000000..46de1e6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_baseline-expected.png new file mode 100644 index 0000000..b7a15c6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_bottom-expected.png new file mode 100644 index 0000000..d382d1f0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_middle-expected.png new file mode 100644 index 0000000..5d1d26cb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_top-expected.png new file mode 100644 index 0000000..aa258d1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tfoot_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_center-expected.png new file mode 100644 index 0000000..1eb35ed01 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_char-expected.png new file mode 100644 index 0000000..f2f4ca90 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_justify-expected.png new file mode 100644 index 0000000..cfa36cb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_left-expected.png new file mode 100644 index 0000000..d7cc275 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_right-expected.png new file mode 100644 index 0000000..9340e7b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_bgcolor_name-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_bgcolor_name-expected.png new file mode 100644 index 0000000..bce9840 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_bgcolor_name-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_bgcolor_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_bgcolor_rgb-expected.png new file mode 100644 index 0000000..bce9840 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_bgcolor_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_class-expected.png new file mode 100644 index 0000000..5916ed3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_colspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_colspan-expected.png new file mode 100644 index 0000000..11e86040 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_colspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_height-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_height-expected.png new file mode 100644 index 0000000..46aeb6b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_height-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_id-expected.png new file mode 100644 index 0000000..5916ed3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_nowrap-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_nowrap-expected.png new file mode 100644 index 0000000..07f2077 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_nowrap-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_rowspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_rowspan-expected.png new file mode 100644 index 0000000..b19e1b1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_rowspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_style-expected.png new file mode 100644 index 0000000..5916ed3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_baseline-expected.png new file mode 100644 index 0000000..71fde28a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_bottom-expected.png new file mode 100644 index 0000000..fec5661 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_middle-expected.png new file mode 100644 index 0000000..d761a02 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_top-expected.png new file mode 100644 index 0000000..1488ac98 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_width-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_width-expected.png new file mode 100644 index 0000000..28f8b22 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_th_width-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_center-expected.png new file mode 100644 index 0000000..7627bf1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_char-expected.png new file mode 100644 index 0000000..f05b694 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_justify-expected.png new file mode 100644 index 0000000..5bb3162 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_left-expected.png new file mode 100644 index 0000000..24e0e192 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_right-expected.png new file mode 100644 index 0000000..3945ffc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_class-expected.png new file mode 100644 index 0000000..70d245d2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_id-expected.png new file mode 100644 index 0000000..70d245d2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_style-expected.png new file mode 100644 index 0000000..70d245d2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_baseline-expected.png new file mode 100644 index 0000000..02f5ba9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_bottom-expected.png new file mode 100644 index 0000000..054db5f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_middle-expected.png new file mode 100644 index 0000000..1fa972745 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_top-expected.png new file mode 100644 index 0000000..9faf01e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_thead_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_center-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_center-expected.png new file mode 100644 index 0000000..dcee46ab --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_center-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_char-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_char-expected.png new file mode 100644 index 0000000..dabe285 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_char-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_justify-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_justify-expected.png new file mode 100644 index 0000000..68f12f0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_justify-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_left-expected.png new file mode 100644 index 0000000..d527b99 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_right-expected.png new file mode 100644 index 0000000..6011e7d0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_bgcolor_name-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_bgcolor_name-expected.png new file mode 100644 index 0000000..6a3c2ac0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_bgcolor_name-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_bgcolor_rgb-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_bgcolor_rgb-expected.png new file mode 100644 index 0000000..6a3c2ac0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_bgcolor_rgb-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_class-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_class-expected.png new file mode 100644 index 0000000..a915e1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_class-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_id-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_id-expected.png new file mode 100644 index 0000000..a915e1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_id-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_style-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_style-expected.png new file mode 100644 index 0000000..a915e1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_style-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_baseline-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_baseline-expected.png new file mode 100644 index 0000000..7a99ee3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_baseline-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_bottom-expected.png new file mode 100644 index 0000000..fbc76cc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_middle-expected.png new file mode 100644 index 0000000..68bf37c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_top-expected.png new file mode 100644 index 0000000..6ae9be8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/marvin/x_tr_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/body_col-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/body_col-expected.png new file mode 100644 index 0000000..5107b5b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/body_col-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/cell_widths-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/cell_widths-expected.png new file mode 100644 index 0000000..82542306 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/cell_widths-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/cellspacing-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/cellspacing-expected.png new file mode 100644 index 0000000..a0a5494 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/cellspacing-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/move_row-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/move_row-expected.png new file mode 100644 index 0000000..1b8673d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/move_row-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/ms-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/ms-expected.png new file mode 100644 index 0000000..a67c7718 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/ms-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/nested2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/nested2-expected.png new file mode 100644 index 0000000..e464f7e2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/nested2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/nestedTables-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/nestedTables-expected.png new file mode 100644 index 0000000..2440c7f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/nestedTables-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/padding-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/padding-expected.png new file mode 100644 index 0000000..e14a9882 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/padding-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/slashlogo-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/slashlogo-expected.png new file mode 100644 index 0000000..f2f14f4 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/slashlogo-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/test3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/test3-expected.png new file mode 100644 index 0000000..e42eefe --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/test3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/test6-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/test6-expected.png new file mode 100644 index 0000000..b2b1d22 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/test6-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/wa_table_thtd_rowspan-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/wa_table_thtd_rowspan-expected.png new file mode 100644 index 0000000..3ff455a6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/wa_table_thtd_rowspan-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/wa_table_tr_align-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/wa_table_tr_align-expected.png new file mode 100644 index 0000000..31139205 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla/other/wa_table_tr_align-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/97619-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/97619-expected.png new file mode 100644 index 0000000..6bcaf18a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/97619-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1010-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1010-expected.png new file mode 100644 index 0000000..cc66ee8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1010-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug10140-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug10140-expected.png new file mode 100644 index 0000000..ecbad4a5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug10140-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug101759-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug101759-expected.png new file mode 100644 index 0000000..eca0027 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug101759-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug10216-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug10216-expected.png new file mode 100644 index 0000000..c01b062 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug10216-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug104898-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug104898-expected.png new file mode 100644 index 0000000..b41c26f0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug104898-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1055-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1055-2-expected.png new file mode 100644 index 0000000..8be6a3ba5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1055-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug106336-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug106336-expected.png new file mode 100644 index 0000000..3fafe92 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug106336-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug106966-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug106966-expected.png new file mode 100644 index 0000000..ac10591 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug106966-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1128-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1128-expected.png new file mode 100644 index 0000000..652a184 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1128-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug11331-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug11331-expected.png new file mode 100644 index 0000000..3ad5ee32 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug11331-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1164-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1164-expected.png new file mode 100644 index 0000000..e633360 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1164-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug11945-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug11945-expected.png new file mode 100644 index 0000000..efdc8de --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug11945-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1262-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1262-expected.png new file mode 100644 index 0000000..ebc5c6cda --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1262-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug128876-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug128876-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug128876-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug131020-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug131020-3-expected.png new file mode 100644 index 0000000..0d7de26 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug131020-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14007-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14007-1-expected.png new file mode 100644 index 0000000..9c5ae55 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14007-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14007-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14007-2-expected.png new file mode 100644 index 0000000..38b92033 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14007-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14159-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14159-2-expected.png new file mode 100644 index 0000000..bfdff881 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14159-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14489-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14489-expected.png new file mode 100644 index 0000000..7149f95 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug14489-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1647-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1647-expected.png new file mode 100644 index 0000000..0e02162 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1647-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1725-expected.png new file mode 100644 index 0000000..65dfaef --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug1725-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug17826-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug17826-expected.png new file mode 100644 index 0000000..467ca66 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug17826-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug178855-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug178855-expected.png new file mode 100644 index 0000000..6b2d4b1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug178855-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug18770-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug18770-expected.png new file mode 100644 index 0000000..bfd127b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug18770-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug19526-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug19526-expected.png new file mode 100644 index 0000000..41db4a92 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug19526-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug21518-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug21518-expected.png new file mode 100644 index 0000000..b59eb9ad --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug21518-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug220653-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug220653-expected.png new file mode 100644 index 0000000..c4467d5b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug220653-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug22122-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug22122-expected.png new file mode 100644 index 0000000..1dde3be2 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug22122-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug23847-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug23847-expected.png new file mode 100644 index 0000000..40867256 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug23847-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png new file mode 100644 index 0000000..b5f023fb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug24880-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug24880-1-expected.png new file mode 100644 index 0000000..0696ecfa --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug24880-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug25707-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug25707-expected.png new file mode 100644 index 0000000..b53b868 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug25707-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug27993-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug27993-2-expected.png new file mode 100644 index 0000000..23c03b8d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug27993-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug29058-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug29058-2-expected.png new file mode 100644 index 0000000..4ef5057d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug29058-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3105-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3105-expected.png new file mode 100644 index 0000000..b446be9b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3105-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-1-expected.png new file mode 100644 index 0000000..75f3168 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-10-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-10-expected.png new file mode 100644 index 0000000..e861b24 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-10-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-11-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-11-expected.png new file mode 100644 index 0000000..34688fd --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-11-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-12-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-12-expected.png new file mode 100644 index 0000000..75dd157 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-12-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-13-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-13-expected.png new file mode 100644 index 0000000..1fa5786 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-13-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-14-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-14-expected.png new file mode 100644 index 0000000..2b99a74e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-14-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-15-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-15-expected.png new file mode 100644 index 0000000..47bedbf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-15-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-16-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-16-expected.png new file mode 100644 index 0000000..5a6026d29 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-16-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-17-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-17-expected.png new file mode 100644 index 0000000..7cd0537 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-17-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-18-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-18-expected.png new file mode 100644 index 0000000..cceafc1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-18-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-2-expected.png new file mode 100644 index 0000000..c6714ddf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-3-expected.png new file mode 100644 index 0000000..a2eacc1 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-4-expected.png new file mode 100644 index 0000000..0ea21c3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-5-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-5-expected.png new file mode 100644 index 0000000..3ecb34e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-5-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-6-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-6-expected.png new file mode 100644 index 0000000..5ae82cb3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-6-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-7-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-7-expected.png new file mode 100644 index 0000000..1938582 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-7-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-8-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-8-expected.png new file mode 100644 index 0000000..917dccc --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-8-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-9-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-9-expected.png new file mode 100644 index 0000000..fb8ca5a5 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3166-9-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug32205-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug32205-1-expected.png new file mode 100644 index 0000000..9a4351d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug32205-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug32205-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug32205-4-expected.png new file mode 100644 index 0000000..c495ec9d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug32205-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug33784-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug33784-expected.png new file mode 100644 index 0000000..02b367b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug33784-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3517-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3517-expected.png new file mode 100644 index 0000000..0ad21d1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug3517-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug42043-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug42043-expected.png new file mode 100644 index 0000000..1dd44e0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug42043-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug4294-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug4294-expected.png new file mode 100644 index 0000000..dbc02074 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug4294-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug45621-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug45621-expected.png new file mode 100644 index 0000000..e6b79eb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug45621-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug46268-4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug46268-4-expected.png new file mode 100644 index 0000000..473cd37 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug46268-4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug47163-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug47163-expected.png new file mode 100644 index 0000000..c9ad74b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug47163-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug51000-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug51000-expected.png new file mode 100644 index 0000000..2cf64497 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug51000-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug56024-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug56024-expected.png new file mode 100644 index 0000000..de2cf5d3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug56024-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png new file mode 100644 index 0000000..859bb46 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug59252-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug59252-expected.png new file mode 100644 index 0000000..04030df --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug59252-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug61042-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug61042-1-expected.png new file mode 100644 index 0000000..3ad62ec --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug61042-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug61042-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug61042-2-expected.png new file mode 100644 index 0000000..3ad62ec --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug61042-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug65372-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug65372-expected.png new file mode 100644 index 0000000..6b4de476 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug65372-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug67915-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug67915-2-expected.png new file mode 100644 index 0000000..97265164 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug67915-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug6933-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug6933-expected.png new file mode 100644 index 0000000..9110b07ae --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug6933-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7113-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7113-expected.png new file mode 100644 index 0000000..7deaff6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7113-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png new file mode 100644 index 0000000..46837be --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7121-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug72393-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug72393-expected.png new file mode 100644 index 0000000..b5881ff --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug72393-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7243-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7243-expected.png new file mode 100644 index 0000000..dbbfff3 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug7243-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug73629-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug73629-expected.png new file mode 100644 index 0000000..fb55b4d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug73629-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug80762-2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug80762-2-expected.png new file mode 100644 index 0000000..0631867 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug80762-2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug8499-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug8499-expected.png new file mode 100644 index 0000000..ada4e075 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug8499-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug85016-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug85016-expected.png new file mode 100644 index 0000000..b3126171 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug85016-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug89315-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug89315-expected.png new file mode 100644 index 0000000..6d04dff --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug89315-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug91057-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug91057-expected.png new file mode 100644 index 0000000..e8a6ab8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug91057-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png new file mode 100644 index 0000000..06086ef --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug92647-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug92868_1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug92868_1-expected.png new file mode 100644 index 0000000..3241862 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug92868_1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug9879-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug9879-1-expected.png new file mode 100644 index 0000000..2e297c7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/bugs/bug9879-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-1-expected.png new file mode 100644 index 0000000..f38b2667 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png new file mode 100644 index 0000000..d4a187f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png new file mode 100644 index 0000000..fca1d00 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/backgrounds-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/backgrounds-expected.png new file mode 100644 index 0000000..4af949b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/backgrounds-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions1-expected.png new file mode 100644 index 0000000..92ea94d9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions2-expected.png new file mode 100644 index 0000000..f2d7e8f8 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions3-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions3-expected.png new file mode 100644 index 0000000..4a408af --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/captions3-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/col_span2-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/col_span2-expected.png new file mode 100644 index 0000000..f937ae89 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/col_span2-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/cols1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/cols1-expected.png new file mode 100644 index 0000000..52b1310 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/cols1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/columns-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/columns-expected.png new file mode 100644 index 0000000..d3202f26 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/columns-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/conflicts-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/conflicts-expected.png new file mode 100644 index 0000000..f69067f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/conflicts-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/standards1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/standards1-expected.png new file mode 100644 index 0000000..0ad3c22 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/core/standards1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCells1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCells1-expected.png new file mode 100644 index 0000000..7afa1c31 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCells1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCellsRebuild1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCellsRebuild1-expected.png new file mode 100644 index 0000000..02f167ce --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCellsRebuild1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCol1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCol1-expected.png new file mode 100644 index 0000000..d8ffc75 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendCol1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendColGroup1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendColGroup1-expected.png new file mode 100644 index 0000000..bd3088b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/appendColGroup1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/insertTbodyExpand1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/insertTbodyExpand1-expected.png new file mode 100644 index 0000000..00187020 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/insertTbodyExpand1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/insertTbodyRebuild1-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/insertTbodyRebuild1-expected.png new file mode 100644 index 0000000..00187020 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/dom/insertTbodyRebuild1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png new file mode 100644 index 0000000..c61987e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_above-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_above-expected.png new file mode 100644 index 0000000..de5defb --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_above-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_below-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_below-expected.png new file mode 100644 index 0000000..a804fb7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_below-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_hsides-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_hsides-expected.png new file mode 100644 index 0000000..801ebbba --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_hsides-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_lhs-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_lhs-expected.png new file mode 100644 index 0000000..37f2278 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_lhs-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_rhs-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_rhs-expected.png new file mode 100644 index 0000000..a0245ae --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_rhs-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_void-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_void-expected.png new file mode 100644 index 0000000..6f45a3af --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_void-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_vsides-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_vsides-expected.png new file mode 100644 index 0000000..38aa0892 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_frame_vsides-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption-expected.png new file mode 100644 index 0000000..2ad3fd7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_bottom-expected.png new file mode 100644 index 0000000..f2b06c0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden-expected.png new file mode 100644 index 0000000..3229b79 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden_table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden_table-expected.png new file mode 100644 index 0000000..a4591af --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden_table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_left-expected.png new file mode 100644 index 0000000..2ad3fd7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_right-expected.png new file mode 100644 index 0000000..2ad3fd7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_top-expected.png new file mode 100644 index 0000000..2ad3fd7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_caption_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.png new file mode 100644 index 0000000..fca2f91 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.png new file mode 100644 index 0000000..9d8a056 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.png new file mode 100644 index 0000000..9fcb84c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.png new file mode 100644 index 0000000..eeec38b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.png new file mode 100644 index 0000000..3a8b306 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.png new file mode 100644 index 0000000..3a8b306 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.png new file mode 100644 index 0000000..4a8a5188 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.png new file mode 100644 index 0000000..e399834 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.png new file mode 100644 index 0000000..18087ac --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.png new file mode 100644 index 0000000..f8777bf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.png new file mode 100644 index 0000000..deff4a9 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.png new file mode 100644 index 0000000..a508e23a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.png new file mode 100644 index 0000000..05c575bf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.png new file mode 100644 index 0000000..a3024b24 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_dynamic_deactivate-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_dynamic_deactivate-expected.png new file mode 100644 index 0000000..b79c131 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_dynamic_deactivate-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.png new file mode 100644 index 0000000..6690a24 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.png new file mode 100644 index 0000000..7f14bf7c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.png new file mode 100644 index 0000000..ac642ef --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_rules_cols-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_rules_cols-expected.png new file mode 100644 index 0000000..eb1852f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_rules_cols-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_rules_rows-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_rules_rows-expected.png new file mode 100644 index 0000000..fa5f2d0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/table_rules_rows-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_caption_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_caption_align_left-expected.png new file mode 100644 index 0000000..81b27794 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_caption_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_caption_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_caption_align_right-expected.png new file mode 100644 index 0000000..0dcf5d0 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_caption_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_cellspacing_pct-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_cellspacing_pct-expected.png new file mode 100644 index 0000000..2232be39 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/tables_cellspacing_pct-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_caption_align_left-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_caption_align_left-expected.png new file mode 100644 index 0000000..e5704254 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_caption_align_left-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_caption_align_right-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_caption_align_right-expected.png new file mode 100644 index 0000000..1430448b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_caption_align_right-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_colgroup_width_px-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_colgroup_width_px-expected.png new file mode 100644 index 0000000..d1df526 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_colgroup_width_px-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_above-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_above-expected.png new file mode 100644 index 0000000..25273b1d --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_above-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_below-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_below-expected.png new file mode 100644 index 0000000..1f6288c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_below-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_border-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_border-expected.png new file mode 100644 index 0000000..93aa08c6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_border-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_box-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_box-expected.png new file mode 100644 index 0000000..93aa08c6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_box-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_hsides-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_hsides-expected.png new file mode 100644 index 0000000..750ae25 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_hsides-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_lhs-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_lhs-expected.png new file mode 100644 index 0000000..5bff22b --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_lhs-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_rhs-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_rhs-expected.png new file mode 100644 index 0000000..91e8ba6 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_rhs-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_vsides-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_vsides-expected.png new file mode 100644 index 0000000..8508f28 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_frame_vsides-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_all-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_all-expected.png new file mode 100644 index 0000000..9a59469ed --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_all-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_cols-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_cols-expected.png new file mode 100644 index 0000000..c2c4453 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_cols-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_rows-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_rows-expected.png new file mode 100644 index 0000000..a9020e39 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/marvin/x_table_rules_rows-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/other/empty_cells-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/other/empty_cells-expected.png new file mode 100644 index 0000000..1c54cba --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/other/empty_cells-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/other/test4-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/other/test4-expected.png new file mode 100644 index 0000000..6863c16 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/mozilla_expected_failures/other/test4-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/table-transform-absolute-position-child-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/table-transform-absolute-position-child-expected.png new file mode 100644 index 0000000..6a95a4f6a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/tables/table-transform-absolute-position-child-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png new file mode 100644 index 0000000..a6cae3f --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/force-device-scale-factor=1.5/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-body-overflow-hidden.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-body-overflow-hidden.html index 26a0444..16f646d0 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-body-overflow-hidden.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-body-overflow-hidden.html
@@ -33,31 +33,39 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - let ad_script = document.createElement("script"); - ad_script.async = false; - ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; - ad_script.onload = t.step_func(() => { +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint, and future overlay candidates + // will be considered for pop-ups rather than for prestitials. + await timeout(1500); + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial detector is - // aware of the first meaningful paint, and future overlay candidates will - // be considered for pop-ups rather than for prestitials. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - document.body.style.overflow = "hidden"; + document.body.style.overflow = "hidden"; - // Create the overlay pop-up ad. - appendAdFrameTo(document.getElementsByTagName('div')[0]); + // Create the overlay pop-up ad. + appendAdFrameTo(document.getElementsByTagName('div')[0]); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. Expect that the use counter - // kOverlayPopupAd is recorded. - verifyOverlayPopupUseCounterAfter1500ms(t, true); - }); + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate. + await forceLayoutUpdate(); + + // Expect the OverlayPopupAd UseCounter. + if (!internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); }); - document.body.appendChild(ad_script); }, "Test UseCounter for overlay-popup-ad when the frame has position:absolute and the <body> has overflow:hidden."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-created-with-gesture.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-created-with-gesture.html index 7e87b58..3a986f99 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-created-with-gesture.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-created-with-gesture.html
@@ -43,44 +43,52 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - let ad_script = document.createElement("script"); - ad_script.async = false; - ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; - ad_script.onload = t.step_func(() => { +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint, and future overlay candidates + // will be considered for pop-ups rather than for prestitials. + await timeout(1500); + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial detector is - // aware of the first meaningful paint, and future overlay candidates will - // be considered for pop-ups rather than for prestitials. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Ensure a user gesture happened in the main frame. - if (window.eventSender) { - eventSender.mouseMoveTo(1, 1); - eventSender.mouseDown(1, 1); - eventSender.mouseUp(1, 1); - } + // Ensure a user gesture happened in the main frame. + if (window.eventSender) { + eventSender.mouseMoveTo(1, 1); + eventSender.mouseDown(1, 1); + eventSender.mouseUp(1, 1); + } - // Create the overlay pop-up ad. - appendAdFrameTo(document.getElementsByTagName('div')[0]); + // Create the overlay pop-up ad. + appendAdFrameTo(document.getElementsByTagName('div')[0]); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Hide the pop-up. - document.getElementsByTagName('iframe')[0].style.display = 'none'; + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate. + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial - // detector is aware of the overlay candidate's dismissal. Expect - // that the use counter kOverlayPopupAd is not recorded. - verifyOverlayPopupUseCounterAfter1500ms(t, false); - }); - }); + // Hide the pop-up. + document.getElementsByTagName('iframe')[0].style.display = 'none'; + + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate's dismissal. + await forceLayoutUpdate(); + + // Expect no OverlayPopupAd UseCounter as the popup was created with user + // gesture. + if (internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); }); - document.body.appendChild(ad_script); }, "Test overlay-popup-ad when the frame itself has a fixed position and it's created with user gesture. In this case, we expect no use counter for kOverlayPopupAd."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-fixed-position.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-fixed-position.html index 9be114c..5e0e747d 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-fixed-position.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-fixed-position.html
@@ -43,37 +43,44 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - let ad_script = document.createElement("script"); - ad_script.async = false; - ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; - ad_script.onload = t.step_func(() => { +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint, and future overlay candidates + // will be considered for pop-ups rather than for prestitials. + await timeout(1500); + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial detector is - // aware of the first meaningful paint, and future overlay candidates will - // be considered for pop-ups rather than for prestitials. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Create the overlay pop-up ad. - appendAdFrameTo(document.getElementsByTagName('div')[0]); + // Create the overlay pop-up ad. + appendAdFrameTo(document.getElementsByTagName('div')[0]); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Hide the pop-up. - document.getElementsByTagName('iframe')[0].style.display = 'none'; + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate. + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial - // detector is aware of the overlay candidate's dismissal. Expect - // that the use counter kOverlayPopupAd is recorded. - verifyOverlayPopupUseCounterAfter1500ms(t, true); - }); - }); + // Hide the pop-up. + document.getElementsByTagName('iframe')[0].style.display = 'none'; + + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate's dismissal. + await forceLayoutUpdate(); + + // Expect the OverlayPopupAd UseCounter. + if (!internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); }); - document.body.appendChild(ad_script); }, "Test UseCounter for overlay-popup-ad when the frame itself has a fixed position."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-outer-div-fixed-position.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-outer-div-fixed-position.html index 523288c..83c2b6193 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-outer-div-fixed-position.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-outer-div-fixed-position.html
@@ -43,37 +43,44 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - let ad_script = document.createElement("script"); - ad_script.async = false; - ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; - ad_script.onload = t.step_func(() => { +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint, and future overlay candidates + // will be considered for pop-ups rather than for prestitials. + await timeout(1500); + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial detector is - // aware of the first meaningful paint, and future overlay candidates will - // be considered for pop-ups rather than for prestitials. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Create the overlay pop-up ad. - appendAdFrameTo(document.getElementsByTagName('div')[0]); + // Create the overlay pop-up ad. + appendAdFrameTo(document.getElementsByTagName('div')[0]); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Hide the pop-up. - document.getElementsByTagName('iframe')[0].style.display = 'none'; + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate. + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial - // detector is aware of the overlay candidate's dismissal. Expect - // that the use counter kOverlayPopupAd is recorded. - verifyOverlayPopupUseCounterAfter1500ms(t, true); - }); - }); + // Hide the pop-up. + document.getElementsByTagName('iframe')[0].style.display = 'none'; + + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate's dismissal. + await forceLayoutUpdate(); + + // Expect the OverlayPopupAd UseCounter. + if (!internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); }); - document.body.appendChild(ad_script); }, "Test UseCounter for overlay-popup-ad when the frame's outer div has a fixed position."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-size-too-small.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-size-too-small.html index 2423d1d4..a43078e7 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-size-too-small.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-size-too-small.html
@@ -43,37 +43,45 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - let ad_script = document.createElement("script"); - ad_script.async = false; - ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; - ad_script.onload = t.step_func(() => { +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint, and future overlay candidates + // will be considered for pop-ups rather than for prestitials. + await timeout(1500); + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial detector is - // aware of the first meaningful paint, and future overlay candidates will - // be considered for pop-ups rather than for prestitials. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Create the overlay pop-up ad. - appendAdFrameTo(document.getElementsByTagName('div')[0]); + // Create the overlay pop-up ad. + appendAdFrameTo(document.getElementsByTagName('div')[0]); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Hide the pop-up. - document.getElementsByTagName('iframe')[0].style.display = 'none'; + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate. + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial - // detector is aware of the overlay candidate's dismissal. Expect - // that the use counter kOverlayPopupAd is not recorded. - verifyOverlayPopupUseCounterAfter1500ms(t, false); - }); - }); + // Hide the pop-up. + document.getElementsByTagName('iframe')[0].style.display = 'none'; + + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate's dismissal. + await forceLayoutUpdate(); + + // Expect that the use counter kOverlayPopupAd is not recorded, as the + // ad size is too small relative to the viewport size. + if (internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); }); - document.body.appendChild(ad_script); }, "Test overlay-popup-ad when the frame itself has a fixed position and the size is less than 10% of the viewport size. In this case, we expect no use counter for kOverlayPopupAd."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-video-midrolls.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-video-midrolls.html index ad6631d5..c5bea78 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-video-midrolls.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-video-midrolls.html
@@ -44,41 +44,48 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - let ad_script = document.createElement("script"); - ad_script.async = false; - ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; - ad_script.onload = t.step_func(() => { +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // After 1500ms, force a layout update so that the interstitial detector + // would have been aware of the first meaningful paint (hadn't we skipped + // the detection in fullscreen video scenario). + await timeout(1500); + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial detector is - // aware of the first meaningful paint, and future overlay candidates will - // be considered for pop-ups rather than for prestitials. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Create the overlay pop-up ad. - appendAdFrameTo(document.body); + // Create the overlay pop-up ad. + appendAdFrameTo(document.body); - // After 1500ms, force a layout update so that the interstitial detector - // would have been aware of the overlay candidate (if we hadn't skipped - // the detection during a fullscreen video scenario). - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Hide the pop-up. - document.getElementsByTagName('iframe')[0].style.display = 'none'; + // Force a layout update, so that the interstitial detector would have + // been aware of the overlay candidate (hadn't we skipped the detection in + // fullscreen video scenario). + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial - // detector would have been aware of the overlay candidate's - // dismissal (if we hadn't skipped the detection during a fullscreen - // video scenario). Expect that the use counter kOverlayPopupAd is - // NOT recorded, because there was a dominant video element and we - // skipped the detection. - verifyOverlayPopupUseCounterAfter1500ms(t, false); - }); - }); + // Hide the pop-up. + document.getElementsByTagName('iframe')[0].style.display = 'none'; + + // Force a layout update, so that the interstitial detector would have + // been aware of the overlay candidate's dismissal (hadn't we skipped the + // detection in fullscreen video scenario). + await forceLayoutUpdate(); + + // Expect that the use counter kOverlayPopupAd is not recorded, as we + // skipped all previous detection due to there was a fullscreen video + // element. + if (internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); }); - document.body.appendChild(ad_script); }, "Test that we will skip the overlay-popup-ad detection if there's a dominant video element in the page."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-viewport-resize.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-viewport-resize.html new file mode 100644 index 0000000..16ced8a0 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-ad-viewport-resize.html
@@ -0,0 +1,119 @@ +<!DOCTYPE html> +<html> +<head> +<style> +div { + width: 100vw; + height: 100vh; +} +iframe { + position: fixed; + margin-left: 0vw; + width: 100px; + height: 100px; + border: 0px; +} +p { + position: fixed; +} +div.bottom { + position: absolute; + top: 10000px; + left: 0px; + width: 1px; + height: 1px; +} +</style> +<script src="../resources/testharness.js"></script> +<script src="../resources/testharnessreport.js"></script> +</head> + +<body marginwidth="0" marginheight="0"> +<!-- To trigger the first contentful paint at the very start --> +<p>some content</p> +<!-- To contain the overlay popup --> +<div></div> +<!-- To be positioned further down in the main page to make the page scrollable --> +<div class="bottom"></div> + +<script> +if (window.testRunner) { + // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. + testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); +} + +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint, and future overlay candidates + // will be considered for pop-ups rather than for prestitials. + await timeout(1500); + await forceLayoutUpdate(); + + // Create the overlay pop-up ad. + appendAdFrameTo(document.getElementsByTagName('div')[0]); + + // Make the page unscrollable so that future overlay candidates can be + // determined immediately rather than at dismissal time. + document.body.style.overflow = "hidden"; + + // Force a layout update, so that the interstitial detector is aware of + // the current viewport size. + await forceLayoutUpdate(); + + // Expect no OverlayPopupAd usage, as the ad frame is not in the center of + // the viewport. + if (internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + // Resize the window to to make the overlay iframe centered and large + // relative to the viewport. + testRunner.useUnfortunateSynchronousResizeMode(); + testRunner.waitUntilDone(); + window.resizeTo(150, 150); + + // Force a layout update, so that the interstitial detector + // is aware of the updated viewport size, and the overlay ad iframe. + await forceLayoutUpdate(); + + // Expect no OverlayPopupAd usage, as the viewport has just been resized + // so we have skipped this detection. + if (internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + // Force a layout update, to trigger another detection event. + await forceLayoutUpdate(); + + // Expect no OverlayPopupAd usage, as the overlay has been marked + // unqualified. + if (internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + // Create another overlay pop-up ad. + appendAdFrameTo(document.getElementsByTagName('div')[0]); + + // Force a layout update so that the interstitial detector is aware of + // the new overlay ad iframe. + await forceLayoutUpdate(); + + // Expect OverlayPopupAd usage due to the appearance of the new overlay. + if (!internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); + }); +}, "Test overlay-popup-ad when the ad appears before (no use counter) & after (use counter) resizing the viewport."); +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-image-ad-fixed-position.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-image-ad-fixed-position.html index 20c47ec..11eb76d2 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-image-ad-fixed-position.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-image-ad-fixed-position.html
@@ -44,32 +44,46 @@ if (window.testRunner) { // Inject a subresource filter to mark 'alpha.png' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["alpha.png"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - // After 1500ms, force a layout update so that the interstitial detector is - // aware of the first meaningful paint, and future overlay candidates will - // be considered for pop-ups rather than for prestitials. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Create the overlay pop-up ad. +promise_test(() => { + return new Promise(async (resolve, reject) => { + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint, and future overlay candidates + // will be considered for pop-ups rather than for prestitials. + await timeout(1500); + await forceLayoutUpdate(); + + // Create the overlay pop-up ad, and wait for image load so that the ad + // status are propagated. + await new Promise(resolve => { let ad_img = document.createElement('img'); + ad_img.addEventListener('load', () => { + resolve(); + }); ad_img.src = "resources/alpha.png"; document.getElementsByTagName('div')[0].appendChild(ad_img); - - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Hide the pop-up. - document.getElementsByTagName('img')[0].style.display = 'none'; - - // After 1500ms, force a layout update so that the interstitial - // detector is aware of the overlay candidate's dismissal. Expect - // that the use counter kOverlayPopupAd is recorded. - verifyOverlayPopupUseCounterAfter1500ms(t, true); - }); }); + + // Force a layout update, so that the interstitial detector is aware of the + // overlay candidate. + await forceLayoutUpdate(); + + // Hide the pop-up. + document.getElementsByTagName('img')[0].style.display = 'none'; + + // Force a layout update, so that the interstitial detector is aware of the + // overlay candidate's dismissal. + await forceLayoutUpdate(); + + // Expect the OverlayPopupAd UseCounter. + if (!internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }); }, "Test UseCounter for overlay-popup-ad when the image itself has a fixed position."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-non-ad-followed-by-ad.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-non-ad-followed-by-ad.html index 8196977..ff24d33 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-non-ad-followed-by-ad.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-popup-non-ad-followed-by-ad.html
@@ -47,6 +47,7 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } promise_test(() => { @@ -65,17 +66,15 @@ let form = document.createElement('form'); document.getElementsByTagName('div')[0].appendChild(form); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. - await timeout(1500); + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate. await forceLayoutUpdate(); // Hide the pop-up. document.getElementsByTagName('form')[0].style.display = 'none'; - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate's dismissal. - await timeout(1500); + // Force a layout update, so that the interstitial detector is aware of + // the overlay candidate's dismissal. await forceLayoutUpdate(); // Expect use counter kOverlayPopup. @@ -91,17 +90,15 @@ // Create the overlay pop-up ad. appendAdFrameTo(document.getElementsByTagName('div')[0]); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay ad candidate. - await timeout(1500); + // Force a layout update, so that the interstitial detector is aware of + // the overlay ad candidate. await forceLayoutUpdate(); // Hide the pop-up ad. document.getElementsByTagName('iframe')[0].style.display = 'none'; - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay ad candidate's dismissal. - await timeout(1500); + // Force a layout update, so that the interstitial detector is aware of + // the overlay ad candidate's dismissal. await forceLayoutUpdate(); // Expect use counter kOverlayPopupAd.
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-prestitial-ad.html b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-prestitial-ad.html index 76a5112..600cd3c 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/overlay-prestitial-ad.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/overlay-prestitial-ad.html
@@ -26,33 +26,44 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - let ad_script = document.createElement("script"); - ad_script.async = false; - ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; - ad_script.onload = t.step_func(() => { +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // Create the overlay pop-up ad. + let ad_frame = appendAdFrameTo(document.body); - // Create the overlay pop-up ad. - let ad_frame = appendAdFrameTo(document.body); + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint and the prestitial. + await timeout(1500); + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. However, since it's the first time - // the detector is aware of first meaningful paint, the overlay will only be - // considered for prestitials rather than for pop-ups. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Hide the pop-up. - document.getElementsByTagName('iframe')[0].style.display = 'none'; + // Ensure the detection is triggered at least once after the first + // meaningful paint is seen. + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial - // detector is aware of the overlay candidate's dismissal. Expect - // that the use counter kOverlayPopupAd is not recorded. - verifyOverlayPopupUseCounterAfter1500ms(t, false); - }); + // Hide the pop-up. + document.getElementsByTagName('iframe')[0].style.display = 'none'; + + // Force a layout update, so that the interstitial detector is aware of + // the overlay ad candidate's dismissal. + await forceLayoutUpdate(); + + // Expect no kOverlayPopupAd UseCounter as the candidate is considered to + // be 'prestitial' instead of 'pop-up'. + if (internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); }); - document.body.appendChild(ad_script); }, "Test overlay-prestitial-ad when the frame itself has a fixed position. In this case we expect no use counter for kOverlayPopupAd."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/parallax-ad-no-overlay-popup-ad-use-counter.html b/third_party/blink/web_tests/http/tests/subresource_filter/parallax-ad-no-overlay-popup-ad-use-counter.html index 98150f3..038ce9c77 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/parallax-ad-no-overlay-popup-ad-use-counter.html +++ b/third_party/blink/web_tests/http/tests/subresource_filter/parallax-ad-no-overlay-popup-ad-use-counter.html
@@ -54,43 +54,51 @@ if (window.testRunner) { // Inject a subresource filter to mark 'overlay-interstitial-ad-testharness.js' as a would be disallowed resource. testRunner.setDisallowedSubresourcePathSuffixes(["overlay-interstitial-ad-testharness.js"], false /* block_subresources */); + internals.DisableFrequencyCappingForOverlayPopupDetection(); } -async_test(t => { - let ad_script = document.createElement("script"); - ad_script.async = false; - ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; - ad_script.onload = t.step_func(() => { +promise_test(() => { + return new Promise((resolve, reject) => { + let ad_script = document.createElement("script"); + ad_script.async = false; + ad_script.src = "resources/overlay-interstitial-ad-testharness.js"; + ad_script.onload = async() => { + // After 1500ms, force a layout update so that the interstitial detector + // is aware of the first meaningful paint, and future overlay candidates + // will be considered for pop-ups rather than for prestitials. + await timeout(1500); + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial detector is - // aware of the first meaningful paint, and future overlay candidates will - // be considered for pop-ups rather than for prestitials. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Create the parallax-ad, which is under the "content" div and above - // the "empty" div. - appendAdFrameTo(document.body); + // Create the parallax-ad, which is below the "content" div and above the + // "empty" div. + appendAdFrameTo(document.body); - // Scroll down to the position where the parallax-ad is no longer - // covered by "content1" and becomes visible. - window.scrollTo(0, document.documentElement.clientHeight); + // Scroll down to the position where the parallax-ad is no longer covered + // by "content1" and becomes visible. + window.scrollTo(0, document.documentElement.clientHeight); - // After 1500ms, force a layout update so that the interstitial detector - // is aware of the overlay candidate. - verifyOverlayPopupUseCounterAfter1500ms(t, false, - () => { - // Scroll further down to the position where the parallax-ad is - // covered by "content2" and becomes invisible again. - window.scrollTo(0, document.documentElement.clientHeight * 2); + // Force a layout update, so that the interstitial detector is aware of + // the overlay ad candidate. + await forceLayoutUpdate(); - // After 1500ms, force a layout update so that the interstitial - // detector is aware of the overlay candidate's dismissal. Expect - // that the use counter kOverlayPopupAd is not recorded. - verifyOverlayPopupUseCounterAfter1500ms(t, false); - }); - }); + // Scroll further down to the position where the parallax-ad is covered by + // "content2" and becomes invisible again. + window.scrollTo(0, document.documentElement.clientHeight * 2); + + // Force a layout update, so that the interstitial detector is aware of + // the overlay ad candidate's dismissal. + await forceLayoutUpdate(); + + // Expect no kOverlayPopupAd UseCounter as the scroll offset has changed + // since the candidate's appearance. + if (internals.isUseCounted(document, kOverlayPopupAd)) { + reject(); + } + + resolve(); + }; + document.body.appendChild(ad_script); }); - document.body.appendChild(ad_script); }, "Test parallax-ad while scrolling over the page. In this case, we expect no use counter for kOverlayPopupAd."); </script>
diff --git a/third_party/blink/web_tests/http/tests/subresource_filter/resources/overlay-interstitial-ad-testharness.js b/third_party/blink/web_tests/http/tests/subresource_filter/resources/overlay-interstitial-ad-testharness.js index 9c7452c6..f854715 100644 --- a/third_party/blink/web_tests/http/tests/subresource_filter/resources/overlay-interstitial-ad-testharness.js +++ b/third_party/blink/web_tests/http/tests/subresource_filter/resources/overlay-interstitial-ad-testharness.js
@@ -12,34 +12,6 @@ return new Promise((resolve) => requestAnimationFrame(() => { setTimeout(() => { resolve(); }) })); } -// TODO(yaoxia): For those tests that still depend on this function, we'd want -// to convert them use Promise and async/await for better readability. -function verifyOverlayPopupUseCounterAfter1500ms( - test, expect_use_counter, post_verify_callback) { - // Force a lifecycle update after 1500ms, so that the final stable layout - // can be captured. - setTimeout( - test.step_func(() => { - requestAnimationFrame(test.step_func(() => { - setTimeout(test.step_func(() => { - // This code runs immediately after the lifecycle update. - if (self.internals) { - assert_equals( - internals.isUseCounted(document, kOverlayPopupAd), - expect_use_counter); - } - - if (post_verify_callback !== undefined) { - post_verify_callback(); - } else { - test.done(); - } - })); - })); - }), - 1500); -} - function appendAdFrameTo(parent) { let ad_frame = document.createElement('iframe'); parent.appendChild(ad_frame);
diff --git a/third_party/blink/web_tests/media/controls-after-reload.html b/third_party/blink/web_tests/media/controls-after-reload.html index fa244de..9a05cbd 100644 --- a/third_party/blink/web_tests/media/controls-after-reload.html +++ b/third_party/blink/web_tests/media/controls-after-reload.html
@@ -1,52 +1,36 @@ <html> <head> - <script src=media-file.js></script> + <script src="../resources/run-after-layout-and-paint.js"></script> <script src=media-controls.js></script> - <script> - var video; - - if (window.testRunner) - testRunner.waitUntilDone(); - - function finish() - { - video.removeEventListener("seeked", finish); - - if (window.testRunner) - testRunner.notifyDone(); - } - - function playing() - { - video.removeEventListener("playing", playing); - - // Ensure that the frame is always the same in pixel result. - video.addEventListener("seeked", finish); - video.pause(); - video.currentTime = 0; - } - - function canplaythrough() - { - video.removeEventListener("canplaythrough", canplaythrough); - - video.src = "content/test.ogv"; - video.addEventListener("playing", playing); - video.play(); - } - - function test() - { - video = document.getElementsByTagName('video')[0]; - enableTestMode(video); - video.addEventListener("canplaythrough", canplaythrough); - - video.src = "content/counting.ogv"; - } - </script> </head> -<body onload="test()"> +<body> <p>Making sure the controller looks ok after a second load().</p> <video controls></video> </body> +<script> + if (window.testRunner) + testRunner.waitUntilDone(); + + const video = document.getElementsByTagName('video')[0]; + enableTestMode(video); + + video.addEventListener("canplaythrough", () => { + video.src = "content/test.ogv"; + + video.play().then(() => { + // Ensure that the frame is always the same in pixel result. + video.addEventListener("seeked", () => { + runAfterLayoutAndPaint(() => { + if (window.testRunner) + testRunner.notifyDone(); + }); + }, { once: true }); + + video.pause(); + video.currentTime = 0; + }); + }, { once: true }); + + video.src = "content/counting.ogv"; +</script> </html>
diff --git a/third_party/blink/web_tests/paint/invalidation/multicol/multicol-as-paint-container-expected.txt b/third_party/blink/web_tests/paint/invalidation/multicol/multicol-as-paint-container-expected.txt index 046e4c35b..1257cdbe 100644 --- a/third_party/blink/web_tests/paint/invalidation/multicol/multicol-as-paint-container-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
@@ -11,7 +11,23 @@ "bounds": [630, 180], "backfaceVisibility": "hidden", "invalidations": [ - [0, 0, 625, 180] + [325, 140, 300, 20], + [325, 100, 300, 20], + [325, 20, 300, 20], + [325, 0, 300, 20], + [0, 140, 300, 20], + [0, 20, 300, 20], + [325, 60, 280, 20], + [325, 120, 260, 20], + [0, 100, 260, 20], + [0, 120, 240, 20], + [325, 40, 220, 20], + [0, 80, 220, 20], + [0, 40, 220, 20], + [0, 0, 220, 20], + [0, 60, 200, 20], + [325, 80, 140, 20], + [0, 160, 120, 20] ], "transform": 1 }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/multicol/multicol-with-abspos-expected.txt b/third_party/blink/web_tests/paint/invalidation/multicol/multicol-with-abspos-expected.txt similarity index 100% rename from third_party/blink/web_tests/platform/win/paint/invalidation/multicol/multicol-with-abspos-expected.txt rename to third_party/blink/web_tests/paint/invalidation/multicol/multicol-with-abspos-expected.txt
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/multicol/multicol-with-text-expected.txt b/third_party/blink/web_tests/paint/invalidation/multicol/multicol-with-text-expected.txt similarity index 100% rename from third_party/blink/web_tests/platform/win/paint/invalidation/multicol/multicol-with-text-expected.txt rename to third_party/blink/web_tests/paint/invalidation/multicol/multicol-with-text-expected.txt
diff --git a/third_party/blink/web_tests/paint/invalidation/push-block-with-first-line-expected.txt b/third_party/blink/web_tests/paint/invalidation/push-block-with-first-line-expected.txt index 78a1f0c..a8d9afb5 100644 --- a/third_party/blink/web_tests/paint/invalidation/push-block-with-first-line-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/push-block-with-first-line-expected.txt
@@ -6,8 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [8, 68, 784, 20], - [8, 8, 784, 20] + [8, 68, 140, 20], + [8, 8, 140, 20] ] } ]
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/forms/color-scheme/button/button-appearance-basic-expected.png deleted file mode 100644 index e9c7505..0000000 --- a/third_party/blink/web_tests/platform/fuchsia/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/clip/control-clip-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/clip/control-clip-expected.txt deleted file mode 100644 index e4b33d4..0000000 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/clip/control-clip-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [76, 117, 64, 16], - [9, 87, 63, 16] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/delete-into-nested-block-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/delete-into-nested-block-expected.txt index f6493b50..54555750 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/delete-into-nested-block-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/delete-into-nested-block-expected.txt
@@ -6,10 +6,10 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [8, 167, 31, 20], - [8, 127, 31, 20], - [8, 127, 27, 21], - [8, 147, 24, 21] + [8, 167, 31, 19], + [8, 127, 31, 19], + [8, 127, 27, 20], + [8, 147, 24, 20] ] } ]
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-1-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-1-expected.txt index eb13537..6c32a9cb 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-1-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-1-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [14, 80, 406, 119],
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-10-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-10-expected.txt index adff8e2..67b07da 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-10-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-10-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [65, 360, 356, 39],
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-3-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-3-expected.txt index 070223c..5d47f47 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-3-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-3-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [14, 400, 406, 59],
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-4-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-4-expected.txt index a4c9b9d2..8cb6323 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-4-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-4-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [14, 460, 407, 59],
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-5-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-5-expected.txt index 377f0ab..52c2d80 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-5-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-5-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [49, 360, 372, 39],
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-6-expected.txt index d24ce86..5ab64b9 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-6-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-6-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [65, 360, 356, 39], @@ -14,7 +14,7 @@ [14, 460, 355, 59], [14, 420, 355, 39], [65, 400, 304, 19], - [27, 363, 22, 20] + [27, 363, 22, 19] ] } ]
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-7-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-7-expected.txt index c58b609..7f4da63 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-7-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-7-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [65, 360, 356, 39],
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-8-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-8-expected.txt index e91b04e..cae3db4 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-8-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-8-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [14, 360, 407, 39],
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-9-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-9-expected.txt index 846d90e..69429ef 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-9-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/line-flow-with-floats-9-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [14, 520, 408, 80], + [14, 520, 408, 79], [14, 240, 407, 139], [14, 180, 407, 79], [65, 360, 356, 39],
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/multicol/multicol-repaint-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/multicol/multicol-repaint-expected.txt deleted file mode 100644 index 0ccec10..0000000 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/multicol/multicol-repaint-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [234, 15, 300, 50], - [9, 10, 13, 57] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt deleted file mode 100644 index e43d415..0000000 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [8, 230, 302, 104], - [6, 230, 104, 104] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt deleted file mode 100644 index c8fc2ee6..0000000 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [6, 8, 104, 182], - [6, 6, 104, 108] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/overflow/float-overflow-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/overflow/float-overflow-expected.txt deleted file mode 100644 index f6d96e80..0000000 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/overflow/float-overflow-expected.txt +++ /dev/null
@@ -1,82 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [61, 537, 62, 37], - [61, 531, 62, 37], - [61, 498, 62, 22], - [61, 492, 62, 22], - [61, 459, 62, 22], - [61, 453, 62, 22], - [61, 420, 62, 22], - [61, 414, 62, 22], - [61, 249, 62, 22], - [61, 243, 62, 22], - [61, 210, 62, 22], - [61, 204, 62, 22], - [61, 171, 62, 22], - [61, 165, 62, 22], - [61, 132, 62, 22], - [61, 126, 62, 22], - [61, 93, 62, 22], - [61, 87, 62, 22], - [61, 54, 62, 22], - [61, 48, 62, 22], - [61, 15, 62, 22], - [61, 9, 62, 22], - [61, 366, 58, 28], - [61, 360, 58, 28], - [61, 327, 58, 28], - [61, 321, 58, 28], - [61, 288, 58, 28], - [61, 282, 58, 28], - [59, 543, 40, 10], - [59, 537, 40, 10], - [59, 504, 40, 10], - [59, 498, 40, 10], - [59, 465, 40, 10], - [59, 459, 40, 10], - [59, 426, 40, 10], - [59, 420, 40, 10], - [59, 255, 40, 10], - [59, 249, 40, 10], - [59, 216, 40, 10], - [59, 210, 40, 10], - [59, 177, 40, 10], - [59, 171, 40, 10], - [59, 99, 40, 10], - [59, 93, 40, 10], - [59, 257, 16, 17], - [59, 251, 16, 17], - [59, 218, 16, 17], - [59, 212, 16, 17], - [63, 23, 16, 16], - [59, 545, 16, 16], - [59, 539, 16, 16], - [59, 506, 16, 16], - [59, 500, 16, 16], - [59, 467, 16, 16], - [59, 461, 16, 16], - [59, 428, 16, 16], - [59, 422, 16, 16], - [59, 179, 16, 16], - [59, 173, 16, 16], - [59, 140, 16, 16], - [59, 134, 16, 16], - [58, 377, 16, 16], - [58, 371, 16, 16], - [58, 338, 16, 16], - [58, 332, 16, 16], - [57, 101, 16, 16], - [57, 95, 16, 16], - [57, 62, 16, 16], - [57, 56, 16, 16] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/overflow/float-overflow-right-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/overflow/float-overflow-right-expected.txt deleted file mode 100644 index 7286ab7..0000000 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/overflow/float-overflow-right-expected.txt +++ /dev/null
@@ -1,82 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [677, 537, 62, 37], - [677, 531, 62, 37], - [677, 498, 62, 22], - [677, 492, 62, 22], - [677, 459, 62, 22], - [677, 453, 62, 22], - [677, 420, 62, 22], - [677, 414, 62, 22], - [677, 249, 62, 22], - [677, 243, 62, 22], - [677, 210, 62, 22], - [677, 204, 62, 22], - [677, 171, 62, 22], - [677, 165, 62, 22], - [677, 132, 62, 22], - [677, 126, 62, 22], - [677, 93, 62, 22], - [677, 87, 62, 22], - [677, 54, 62, 22], - [677, 48, 62, 22], - [677, 15, 62, 22], - [677, 9, 62, 22], - [681, 366, 58, 28], - [681, 360, 58, 28], - [681, 327, 58, 28], - [681, 321, 58, 28], - [681, 288, 58, 28], - [681, 282, 58, 28], - [701, 543, 40, 10], - [701, 537, 40, 10], - [701, 504, 40, 10], - [701, 498, 40, 10], - [701, 465, 40, 10], - [701, 459, 40, 10], - [701, 426, 40, 10], - [701, 420, 40, 10], - [701, 255, 40, 10], - [701, 249, 40, 10], - [701, 216, 40, 10], - [701, 210, 40, 10], - [701, 177, 40, 10], - [701, 171, 40, 10], - [701, 99, 40, 10], - [701, 93, 40, 10], - [725, 257, 16, 17], - [725, 251, 16, 17], - [725, 218, 16, 17], - [725, 212, 16, 17], - [727, 101, 16, 16], - [727, 95, 16, 16], - [727, 62, 16, 16], - [727, 56, 16, 16], - [726, 377, 16, 16], - [726, 371, 16, 16], - [726, 338, 16, 16], - [726, 332, 16, 16], - [725, 545, 16, 16], - [725, 539, 16, 16], - [725, 506, 16, 16], - [725, 500, 16, 16], - [725, 467, 16, 16], - [725, 461, 16, 16], - [725, 428, 16, 16], - [725, 422, 16, 16], - [725, 179, 16, 16], - [725, 173, 16, 16], - [725, 140, 16, 16], - [725, 134, 16, 16], - [721, 23, 16, 16] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/search-field-cancel-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/search-field-cancel-expected.txt deleted file mode 100644 index 4553a30..0000000 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/search-field-cancel-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [12, 47, 58, 16] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/subtree-root-skipped-expected.txt deleted file mode 100644 index 8a9da0d9..0000000 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/subtree-root-skipped-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [12, 11, 35, 16], - [8, 288, 10, 20] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt index 867c15e..32b14e8 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
@@ -6,11 +6,11 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [208, 972, 173, 19], - [427, 972, 150, 19], - [381, 969, 46, 25], - [423, 972, 5, 19], - [380, 972, 5, 19] + [208, 973, 173, 18], + [427, 973, 150, 18], + [382, 970, 45, 24], + [423, 973, 5, 18], + [380, 973, 5, 18] ], "transform": 1 },
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt index 09efcdb1..1b745baf 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
@@ -6,7 +6,10 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [10, 74, 836, 19] + [809, 74, 37, 19], + [543, 74, 37, 19], + [276, 74, 37, 19], + [10, 74, 36, 19] ] }, {
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png index 42a7a65..0818fd2 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/button/button-appearance-basic-expected.png index 010adaf..37411448 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/button/button-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/button/button-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/button/button-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/button/button-focus-ring-expected.png index 069edde..c2e47fee 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/button/button-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/button/button-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png index 4b30e39..62b2cfc 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png index 6a12ef2..3d01add 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png index a7e156e..20a6049 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-focus-ring-expected.png index 7211d46c..9e70365f 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-basic-expected.png index 88b3f11..c8f1d1a 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png index 2bbccaf9..a0b6ee6 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-open-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-open-expected.png index 1b0a9e00..f61c163c 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-open-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/date/date-picker-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png index 96529e24..d9945e5 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png index 5b9e09f..ba6020c1 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png index ddd633b..a0f2df1a 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png index f3d2298a3..2e9354b5 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png index f5d2753..088fc38 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/range/range-appearance-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/range/range-appearance-basic-expected.png index 69048ca..72ce028 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/range/range-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/range/range-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/range/range-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/range/range-focus-ring-expected.png index fd491e1..27d27dc 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/range/range-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/range/range-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png index 81097c5..a851588e 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/select/select-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/select/select-focus-ring-expected.png index a6bce94c..47dc137e 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/select/select-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/select/select-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png index f7c6a48..51348df 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/text/input-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/text/input-focus-ring-expected.png index eb8534cc..ca9fa1b 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/text/input-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/text/input-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.10/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.10/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color-scheme/button/button-appearance-basic-expected.png deleted file mode 100644 index db92103..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-focus-ring-expected.png index b2884e0..0337cb10 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-basic-expected.png index ac07974..1864902 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png index 0964334..48e4380 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-open-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-open-expected.png index 9ffc373..060187e5 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-open-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/date/date-picker-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png index 769bd92..c34e8a3 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png index fae1e638..2dfae572 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png index f238139..2ba25a5c 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png index 219ac8a..bbe5cd4b 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png index 2034db7be..e083d30 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.11/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.11/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color-scheme/button/button-appearance-basic-expected.png deleted file mode 100644 index db92103..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/button/button-appearance-basic-expected.png deleted file mode 100644 index db92103..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-repaint-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-repaint-expected.txt deleted file mode 100644 index 0cf9ade9..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-repaint-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [234, 14, 300, 52], - [9, 9, 13, 59] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt deleted file mode 100644 index a40765f4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [508, 27, 80, 22] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-block-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-block-expected.txt deleted file mode 100644 index 30c6573..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-block-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [328, 8, 240, 41] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-inline-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-inline-expected.txt deleted file mode 100644 index 30c6573..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-inline-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [328, 8, 240, 41] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-text-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-text-expected.txt deleted file mode 100644 index 30c6573..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/invalidation/multicol/multicol-with-text-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [328, 8, 240, 41] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/button/button-appearance-basic-expected.png deleted file mode 100644 index db92103..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png index 4f58000..ade5933 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png index 1cdafa8..9b7bb14f 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/text/input-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/text/input-focus-ring-expected.png index c5b6d4e..1c7ee88 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/text/input-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/text/input-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/fast/forms/color-scheme/button/button-appearance-basic-expected.png deleted file mode 100644 index db92103..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/line-flow-with-floats-6-expected.txt deleted file mode 100644 index 23a1828..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/line-flow-with-floats-6-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [14, 476, 407, 90], - [14, 188, 407, 72], - [14, 242, 406, 126], - [14, 80, 355, 108], - [14, 422, 355, 54], - [14, 404, 355, 36], - [65, 386, 304, 36], - [65, 368, 304, 18], - [27, 353, 22, 19] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt deleted file mode 100644 index e43d415..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [8, 230, 302, 104], - [6, 230, 104, 104] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt deleted file mode 100644 index c8fc2ee6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [6, 8, 104, 182], - [6, 6, 104, 108] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png deleted file mode 100644 index db92103..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-retina/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 50ca5c5c..0000000 --- a/third_party/blink/web_tests/platform/mac-retina/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected (string) "open" but got (object) null -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/mac-retina/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac-retina/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/mac-retina/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/service-workers/cache-storage/worker/cache-abort.https-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/service-workers/cache-storage/worker/cache-abort.https-expected.txt deleted file mode 100644 index cde71626..0000000 --- a/third_party/blink/web_tests/platform/mac/external/wpt/service-workers/cache-storage/worker/cache-abort.https-expected.txt +++ /dev/null
@@ -1,12 +0,0 @@ -This is a testharness.js-based test. -PASS put() on an already-aborted request should reject with AbortError -PASS put() synchronously followed by abort should reject with AbortError -FAIL put() followed by abort after headers received should reject with AbortError assert_unreached: Should have rejected: put should reject Reached unreachable code -PASS add() on an already-aborted request should reject with AbortError -PASS add() synchronously followed by abort should reject with AbortError -FAIL add() followed by abort after headers received should reject with AbortError assert_unreached: Should have rejected: add should reject Reached unreachable code -PASS addAll() on an already-aborted request should reject with AbortError -PASS addAll() synchronously followed by abort should reject with AbortError -FAIL addAll() followed by abort after headers received should reject with AbortError assert_unreached: Should have rejected: addAll should reject Reached unreachable code -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/clip/control-clip-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/clip/control-clip-expected.txt index 30b7399..e49574f 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/clip/control-clip-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/clip/control-clip-expected.txt
@@ -6,8 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [75, 112, 66, 17], - [9, 83, 65, 16] + [75, 113, 66, 16], + [9, 84, 65, 15] ] } ]
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/delete-into-nested-block-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/delete-into-nested-block-expected.txt index 75ad19d..f964225 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/delete-into-nested-block-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/delete-into-nested-block-expected.txt
@@ -6,9 +6,10 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [8, 155, 32, 19], - [8, 119, 32, 19], - [8, 137, 24, 19] + [8, 155, 32, 18], + [8, 119, 32, 18], + [8, 137, 24, 18], + [8, 119, 1, 19] ] } ]
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/line-flow-with-floats-6-expected.txt index 23a1828..8bd69af 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/line-flow-with-floats-6-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/line-flow-with-floats-6-expected.txt
@@ -14,7 +14,7 @@ [14, 404, 355, 36], [65, 386, 304, 36], [65, 368, 304, 18], - [27, 353, 22, 19] + [27, 353, 22, 18] ] } ]
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/multi-layout-one-frame-expected.txt index 3aea38a..6356716 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/multi-layout-one-frame-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/multi-layout-one-frame-expected.txt
@@ -6,8 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [169, 10, 54, 16], - [12, 10, 54, 16], + [169, 11, 54, 15], + [12, 11, 54, 15], [161, 9, 4, 18] ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-repaint-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-repaint-expected.txt index 447d1195..11b39c4 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-repaint-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-repaint-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [234, 14, 300, 51], + [234, 15, 300, 50], [9, 9, 13, 59] ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-abspos-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-abspos-expected.txt deleted file mode 100644 index bec2120..0000000 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-abspos-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [0, 579, 80, 21] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt deleted file mode 100644 index f4e69e0..0000000 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [508, 27, 80, 21] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-block-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-block-expected.txt deleted file mode 100644 index f53ea6f..0000000 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-block-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [328, 8, 240, 40] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-inline-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-inline-expected.txt deleted file mode 100644 index f53ea6f..0000000 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-inline-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [328, 8, 240, 40] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-text-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-text-expected.txt deleted file mode 100644 index f53ea6f..0000000 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/multicol/multicol-with-text-expected.txt +++ /dev/null
@@ -1,14 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [328, 8, 240, 40] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt deleted file mode 100644 index e43d415..0000000 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [8, 230, 302, 104], - [6, 230, 104, 104] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt deleted file mode 100644 index c8fc2ee6..0000000 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [6, 8, 104, 182], - [6, 6, 104, 108] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/float-overflow-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/float-overflow-expected.txt index 1e8f065..933334cf 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/float-overflow-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/float-overflow-expected.txt
@@ -50,10 +50,6 @@ [59, 171, 40, 10], [59, 99, 40, 10], [59, 93, 40, 10], - [59, 256, 16, 18], - [59, 250, 16, 18], - [59, 217, 16, 18], - [59, 211, 16, 18], [63, 22, 16, 17], [59, 544, 16, 17], [59, 538, 16, 17], @@ -63,6 +59,10 @@ [59, 460, 16, 17], [59, 427, 16, 17], [59, 421, 16, 17], + [59, 256, 16, 17], + [59, 250, 16, 17], + [59, 217, 16, 17], + [59, 211, 16, 17], [59, 178, 16, 17], [59, 172, 16, 17], [59, 139, 16, 17],
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/float-overflow-right-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/float-overflow-right-expected.txt index 73b32f3f..38d78ea7 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/float-overflow-right-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/float-overflow-right-expected.txt
@@ -50,10 +50,6 @@ [701, 171, 40, 10], [701, 99, 40, 10], [701, 93, 40, 10], - [725, 256, 16, 18], - [725, 250, 16, 18], - [725, 217, 16, 18], - [725, 211, 16, 18], [727, 100, 16, 17], [727, 94, 16, 17], [727, 61, 16, 17], @@ -70,6 +66,10 @@ [725, 460, 16, 17], [725, 427, 16, 17], [725, 421, 16, 17], + [725, 256, 16, 17], + [725, 250, 16, 17], + [725, 217, 16, 17], + [725, 211, 16, 17], [725, 178, 16, 17], [725, 172, 16, 17], [725, 139, 16, 17],
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/search-field-cancel-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/search-field-cancel-expected.txt index 52b8175..6eca900 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/search-field-cancel-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/search-field-cancel-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [12, 44, 58, 16] + [12, 45, 58, 15] ] } ]
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/subtree-root-skipped-expected.txt index 4018972..c6f7b1f 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/subtree-root-skipped-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/subtree-root-skipped-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [12, 10, 35, 16], + [12, 11, 35, 15], [8, 288, 10, 20] ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/outline-offset-text-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/outline-offset-text-expected.txt index c1b5dd3..0b217e8 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/outline-offset-text-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/outline-offset-text-expected.txt
@@ -6,8 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [103, 24, 160, 116], - [63, 24, 160, 116] + [104, 24, 159, 116], + [64, 24, 159, 116] ] } ]
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt index 5b6d7acc..1a0ad73 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
@@ -6,11 +6,11 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [177, 992, 202, 20], - [432, 992, 177, 20], - [380, 989, 51, 25], - [427, 992, 6, 19], - [378, 992, 6, 19] + [177, 993, 202, 19], + [432, 993, 177, 19], + [381, 990, 49, 24], + [427, 993, 6, 18], + [378, 993, 6, 18] ], "transform": 1 },
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt index f2725c8..ea8d021 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
@@ -6,7 +6,10 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [10, 71, 836, 18] + [809, 71, 37, 18], + [543, 71, 37, 18], + [276, 71, 37, 18], + [10, 71, 36, 18] ] }, {
diff --git a/third_party/blink/web_tests/platform/mac/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 37378aa..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected (string) "open" but got (object) null -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/button/button-appearance-basic-expected.png index deb241a..fb0b614 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/button/button-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/button/button-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/button/button-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/button/button-focus-ring-expected.png index af153e2..b421a0b 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/button/button-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/button/button-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/checkbox/checkbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/checkbox/checkbox-appearance-basic-expected.png index 51947a00..fe21b553 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/checkbox/checkbox-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/checkbox/checkbox-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png index bd57477..a66dbd1f 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png index 73ee44c0..b998585 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png index de4be8a..5ba7db6b 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-focus-ring-expected.png index 344b5719..eb9543a 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-basic-expected.png index b1408d66..db61623 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png index ce8a51a..6d796f9 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-open-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-open-expected.png index 59c2bea..e718ce6 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-open-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/date/date-picker-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png index 46cf62d..e132206 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png index eb18418..4f8cb7c 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png index 42dd53b8..c8497b99 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png index 172c38ad..53e56d7 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/progress/progress-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/progress/progress-appearance-basic-expected.png index a0b1f2d9..716f990 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/progress/progress-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/progress/progress-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/radio/radio-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/radio/radio-appearance-basic-expected.png index eee997c..8c2a19c 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/radio/radio-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/radio/radio-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png index 1cfe4e09..075c66b 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/range/range-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/range/range-appearance-basic-expected.png index 6e05f4a..1eb130c8 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/range/range-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/range/range-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/range/range-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/range/range-focus-ring-expected.png index 932e655b..ec99fbe 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/range/range-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/range/range-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png index d354030..301a1249 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/select/select-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/select/select-focus-ring-expected.png index dadd920..bab7581 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/select/select-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/select/select-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png index a067998..d567250 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/text/input-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/text/input-focus-ring-expected.png index 487cba3..718b2227 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/text/input-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/text/input-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/mac/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/win/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/win/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/box/box-inline-resize-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/box/box-inline-resize-expected.txt index 2710f12..b5043ca 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/box/box-inline-resize-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/box/box-inline-resize-expected.txt
@@ -6,8 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [40, 107, 111, 28], - [8, 107, 111, 28], + [40, 107, 111, 27], + [8, 107, 111, 27], [8, 88, 32, 32] ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/clip/control-clip-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/clip/control-clip-expected.txt index ae306fd..e4b33d4 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/clip/control-clip-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/clip/control-clip-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [76, 116, 64, 18], + [76, 117, 64, 16], [9, 87, 63, 16] ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/delete-into-nested-block-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/delete-into-nested-block-expected.txt index c52fdf8..a3a36c5 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/delete-into-nested-block-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/delete-into-nested-block-expected.txt
@@ -6,10 +6,10 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [8, 167, 30, 20], - [8, 127, 30, 20], - [8, 127, 26, 21], - [8, 147, 23, 21] + [8, 167, 30, 19], + [8, 127, 30, 19], + [8, 127, 26, 20], + [8, 147, 23, 20] ] } ]
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/line-flow-with-floats-6-expected.txt index b131f5b9..06027bb5 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/line-flow-with-floats-6-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/line-flow-with-floats-6-expected.txt
@@ -12,7 +12,7 @@ [14, 80, 355, 119], [14, 440, 355, 59], [65, 380, 304, 59], - [28, 363, 20, 20] + [28, 363, 20, 19] ] } ]
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/multi-layout-one-frame-expected.txt index 69d58d9..2b3da36 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/multi-layout-one-frame-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/multi-layout-one-frame-expected.txt
@@ -6,8 +6,8 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [193, 10, 53, 18], - [12, 10, 53, 18], + [193, 11, 53, 16], + [12, 11, 53, 16], [185, 9, 4, 19] ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/multicol/multicol-repaint-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/multicol/multicol-repaint-expected.txt index ed5c2fc..0ccec10 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/multicol/multicol-repaint-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/multicol/multicol-repaint-expected.txt
@@ -7,7 +7,7 @@ "backgroundColor": "#FFFFFF", "invalidations": [ [234, 15, 300, 50], - [9, 10, 13, 58] + [9, 10, 13, 57] ] } ]
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt deleted file mode 100644 index e43d415..0000000 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [8, 230, 302, 104], - [6, 230, 104, 104] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt deleted file mode 100644 index c8fc2ee6..0000000 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [800, 600], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", - "invalidations": [ - [6, 8, 104, 182], - [6, 6, 104, 108] - ] - } - ] -} -
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/overflow/float-overflow-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/overflow/float-overflow-expected.txt index 643dd077..be70b8a 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/overflow/float-overflow-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/overflow/float-overflow-expected.txt
@@ -50,10 +50,6 @@ [59, 171, 40, 10], [59, 99, 40, 10], [59, 93, 40, 10], - [59, 256, 16, 18], - [59, 250, 16, 18], - [59, 217, 16, 18], - [59, 211, 16, 18], [63, 23, 16, 16], [59, 545, 16, 16], [59, 539, 16, 16], @@ -63,6 +59,10 @@ [59, 461, 16, 16], [59, 428, 16, 16], [59, 422, 16, 16], + [59, 257, 16, 16], + [59, 251, 16, 16], + [59, 218, 16, 16], + [59, 212, 16, 16], [59, 179, 16, 16], [59, 173, 16, 16], [59, 140, 16, 16],
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/overflow/float-overflow-right-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/overflow/float-overflow-right-expected.txt index faa36a2..68a9cb5 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/overflow/float-overflow-right-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/overflow/float-overflow-right-expected.txt
@@ -50,10 +50,6 @@ [701, 171, 40, 10], [701, 99, 40, 10], [701, 93, 40, 10], - [725, 256, 16, 18], - [725, 250, 16, 18], - [725, 217, 16, 18], - [725, 211, 16, 18], [727, 101, 16, 16], [727, 95, 16, 16], [727, 62, 16, 16], @@ -70,6 +66,10 @@ [725, 461, 16, 16], [725, 428, 16, 16], [725, 422, 16, 16], + [725, 257, 16, 16], + [725, 251, 16, 16], + [725, 218, 16, 16], + [725, 212, 16, 16], [725, 179, 16, 16], [725, 173, 16, 16], [725, 140, 16, 16],
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/search-field-cancel-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/search-field-cancel-expected.txt index 176fdce..4553a30 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/search-field-cancel-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/search-field-cancel-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [12, 46, 58, 18] + [12, 47, 58, 16] ] } ]
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/subtree-root-skipped-expected.txt index a61c7d2..8a9da0d9 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/subtree-root-skipped-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/subtree-root-skipped-expected.txt
@@ -6,7 +6,7 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [12, 10, 35, 18], + [12, 11, 35, 16], [8, 288, 10, 20] ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt index 952c2240a..33bdfbb 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
@@ -6,11 +6,11 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [177, 1012, 202, 19], - [435, 1012, 173, 19], - [382, 1009, 50, 25], - [429, 1012, 6, 19], - [379, 1012, 6, 19] + [177, 1013, 202, 18], + [435, 1013, 173, 18], + [382, 1010, 50, 24], + [429, 1013, 6, 18], + [379, 1013, 6, 18] ], "transform": 1 },
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt index 6285a2e2..305ecad 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
@@ -6,7 +6,10 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "invalidations": [ - [10, 74, 835, 19] + [809, 74, 36, 19], + [543, 74, 36, 19], + [276, 74, 36, 19], + [10, 74, 35, 19] ] }, {
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/text-line-clamp-truncation-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/text-line-clamp-truncation-expected.txt index 93ddc967..cc3b0c8 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/text-line-clamp-truncation-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/text-line-clamp-truncation-expected.txt
@@ -7,7 +7,7 @@ "backgroundColor": "#FFFFFF", "invalidations": [ [8, 10, 279, 22], - [8, 10, 271, 43] + [8, 34, 271, 19] ] } ]
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png index 1480396c..72e4e86 100644 --- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/button/button-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/win/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/win/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/button/button-appearance-basic-expected.png index 7e59e22..711f0ba 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/button/button-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/button/button-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/button/button-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/button/button-focus-ring-expected.png index eb07cf7..6a682cb 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/button/button-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/button/button-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/checkbox/checkbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/checkbox/checkbox-appearance-basic-expected.png index 5d9b3ec..9e706fb 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/checkbox/checkbox-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/checkbox/checkbox-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png index 5f494c6..53272e4 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/checkbox/checkbox-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png index d84a1d4..85c9add 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/color/color-picker-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png index 82a3bdd8..83311a8 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/color/color-picker-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-focus-ring-expected.png index 3ae2f8a9..0dbcfb3 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-basic-expected.png index 024eba8..529990b 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png index 3c4a153..4a4a168 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-open-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-open-expected.png index e99181b..e20709f 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-open-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/date/date-picker-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png index ab990250..85c497ef 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png index d683a56..4c50ad75 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png index 3a4c7505..be03a34 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png index 6c0d523d..aa864a5 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/progress/progress-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/progress/progress-appearance-basic-expected.png index 03dff11..73a6dc68 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/progress/progress-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/progress/progress-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/radio/radio-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/radio/radio-appearance-basic-expected.png index 5316fed3..b87416751 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/radio/radio-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/radio/radio-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png index 6e442fa..a282c171 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/radio/radio-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/range/range-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/range/range-appearance-basic-expected.png index 62b7398..bd2df72 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/range/range-appearance-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/range/range-appearance-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/range/range-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/range/range-focus-ring-expected.png index df412af..9551875 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/range/range-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/range/range-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png index c846c4a4..a486be2c 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/select/select-dark-mode-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/select/select-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/select/select-focus-ring-expected.png index 55be3b46..05339104 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/select/select-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/select/select-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png index 2e8cd6933..7ff09dc 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/text/input-dark-mode-basic-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/text/input-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/text/input-focus-ring-expected.png index 446ba7a3..ad65e8a2 100644 --- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/text/input-focus-ring-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/text/input-focus-ring-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/color-scheme/button/button-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/color-scheme/button/button-appearance-basic-expected.png deleted file mode 100644 index bf0e5e4..0000000 --- a/third_party/blink/web_tests/platform/win7/fast/forms/color-scheme/button/button-appearance-basic-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/win7/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png index dafffc2..5745defe 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/date/date-picker-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/date/date-picker-open-expected.png b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/date/date-picker-open-expected.png index 8dbd879..bbfb737a 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/date/date-picker-open-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/date/date-picker-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png index 655cc25..0ed509c 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-month-year-selector-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png index 196549a2..670229b 100644 --- a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png +++ b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/datetimelocal-picker/datetimelocal-open-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt deleted file mode 100644 index 5392aa4..0000000 --- a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -FAIL Stream errors once aborted, after reading. Underlying connection closed. assert_unreached: Should have rejected: undefined Reached unreachable code -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt new file mode 100644 index 0000000..99afa96 --- /dev/null +++ b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt
@@ -0,0 +1,51 @@ +This is a testharness.js-based test. +PASS Aborting rejects with AbortError +PASS Aborting rejects with AbortError - no-cors +PASS TypeError from request constructor takes priority - RequestInit's window is not null +PASS TypeError from request constructor takes priority - Input URL is not valid +PASS TypeError from request constructor takes priority - Input URL has credentials +PASS TypeError from request constructor takes priority - RequestInit's mode is navigate +PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is forbidden +PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple +PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value +PASS TypeError from request constructor takes priority - Bad mode init parameter value +PASS TypeError from request constructor takes priority - Bad credentials init parameter value +PASS TypeError from request constructor takes priority - Bad cache init parameter value +PASS TypeError from request constructor takes priority - Bad redirect init parameter value +PASS Request objects have a signal property +PASS Signal on request object +PASS Signal on request object created from request object +PASS Signal on request object created from request object, with signal on second request +PASS Signal on request object created from request object, with signal on second request overriding another +PASS Signal retained after unrelated properties are overridden by fetch +PASS Signal removed by setting to null +PASS Already aborted signal rejects immediately +PASS Request is still 'used' if signal is aborted before fetching +PASS response.arrayBuffer() rejects if already aborted +PASS response.blob() rejects if already aborted +PASS response.formData() rejects if already aborted +PASS response.json() rejects if already aborted +PASS response.text() rejects if already aborted +PASS Already aborted signal does not make request +PASS Already aborted signal can be used for many fetches +PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting +PASS Underlying connection is closed when aborting after receiving response +PASS Underlying connection is closed when aborting after receiving response - no-cors +PASS Fetch aborted & connection closed when aborted after calling response.arrayBuffer() +PASS Fetch aborted & connection closed when aborted after calling response.blob() +PASS Fetch aborted & connection closed when aborted after calling response.formData() +PASS Fetch aborted & connection closed when aborted after calling response.json() +PASS Fetch aborted & connection closed when aborted after calling response.text() +PASS Stream errors once aborted. Underlying connection closed. +PASS Stream errors once aborted, after reading. Underlying connection closed. +PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. +FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false +PASS Signal state is cloned +PASS Clone aborts with original controller +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt new file mode 100644 index 0000000..99afa96 --- /dev/null +++ b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/abort/general.any.worker-expected.txt
@@ -0,0 +1,51 @@ +This is a testharness.js-based test. +PASS Aborting rejects with AbortError +PASS Aborting rejects with AbortError - no-cors +PASS TypeError from request constructor takes priority - RequestInit's window is not null +PASS TypeError from request constructor takes priority - Input URL is not valid +PASS TypeError from request constructor takes priority - Input URL has credentials +PASS TypeError from request constructor takes priority - RequestInit's mode is navigate +PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is forbidden +PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple +PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value +PASS TypeError from request constructor takes priority - Bad mode init parameter value +PASS TypeError from request constructor takes priority - Bad credentials init parameter value +PASS TypeError from request constructor takes priority - Bad cache init parameter value +PASS TypeError from request constructor takes priority - Bad redirect init parameter value +PASS Request objects have a signal property +PASS Signal on request object +PASS Signal on request object created from request object +PASS Signal on request object created from request object, with signal on second request +PASS Signal on request object created from request object, with signal on second request overriding another +PASS Signal retained after unrelated properties are overridden by fetch +PASS Signal removed by setting to null +PASS Already aborted signal rejects immediately +PASS Request is still 'used' if signal is aborted before fetching +PASS response.arrayBuffer() rejects if already aborted +PASS response.blob() rejects if already aborted +PASS response.formData() rejects if already aborted +PASS response.json() rejects if already aborted +PASS response.text() rejects if already aborted +PASS Already aborted signal does not make request +PASS Already aborted signal can be used for many fetches +PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting +PASS Underlying connection is closed when aborting after receiving response +PASS Underlying connection is closed when aborting after receiving response - no-cors +PASS Fetch aborted & connection closed when aborted after calling response.arrayBuffer() +PASS Fetch aborted & connection closed when aborted after calling response.blob() +PASS Fetch aborted & connection closed when aborted after calling response.formData() +PASS Fetch aborted & connection closed when aborted after calling response.json() +PASS Fetch aborted & connection closed when aborted after calling response.text() +PASS Stream errors once aborted. Underlying connection closed. +PASS Stream errors once aborted, after reading. Underlying connection closed. +PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. +FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false +PASS Signal state is cloned +PASS Clone aborts with original controller +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any-expected.txt b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any-expected.txt new file mode 100644 index 0000000..f7dbf317 --- /dev/null +++ b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any-expected.txt
@@ -0,0 +1,9 @@ +This is a testharness.js-based test. +FAIL Constructing a Request with a stream on which getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a stream on which read() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a stream on which read() and releaseLock() are called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a Request on which body.getReader() is called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +FAIL Constructing a Request with a Request on which body.getReader().read() is called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +FAIL Constructing a Request with a Request on which read() and releaseLock() are called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.serviceworker-expected.txt b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.serviceworker-expected.txt new file mode 100644 index 0000000..f7dbf317 --- /dev/null +++ b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.serviceworker-expected.txt
@@ -0,0 +1,9 @@ +This is a testharness.js-based test. +FAIL Constructing a Request with a stream on which getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a stream on which read() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a stream on which read() and releaseLock() are called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a Request on which body.getReader() is called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +FAIL Constructing a Request with a Request on which body.getReader().read() is called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +FAIL Constructing a Request with a Request on which read() and releaseLock() are called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.sharedworker-expected.txt b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.sharedworker-expected.txt new file mode 100644 index 0000000..f7dbf317 --- /dev/null +++ b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.sharedworker-expected.txt
@@ -0,0 +1,9 @@ +This is a testharness.js-based test. +FAIL Constructing a Request with a stream on which getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a stream on which read() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a stream on which read() and releaseLock() are called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a Request on which body.getReader() is called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +FAIL Constructing a Request with a Request on which body.getReader().read() is called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +FAIL Constructing a Request with a Request on which read() and releaseLock() are called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.worker-expected.txt b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.worker-expected.txt new file mode 100644 index 0000000..f7dbf317 --- /dev/null +++ b/third_party/blink/web_tests/virtual/cors/external/wpt/fetch/api/request/request-init-stream.any.worker-expected.txt
@@ -0,0 +1,9 @@ +This is a testharness.js-based test. +FAIL Constructing a Request with a stream on which getReader() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a stream on which read() is called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a stream on which read() and releaseLock() are called assert_throws_js: new Request() function "() => new Request(input, init)" did not throw +FAIL Constructing a Request with a Request on which body.getReader() is called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +FAIL Constructing a Request with a Request on which body.getReader().read() is called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +FAIL Constructing a Request with a Request on which read() and releaseLock() are called promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'getReader' of undefined" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt b/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt new file mode 100644 index 0000000..99afa96 --- /dev/null +++ b/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.serviceworker-expected.txt
@@ -0,0 +1,51 @@ +This is a testharness.js-based test. +PASS Aborting rejects with AbortError +PASS Aborting rejects with AbortError - no-cors +PASS TypeError from request constructor takes priority - RequestInit's window is not null +PASS TypeError from request constructor takes priority - Input URL is not valid +PASS TypeError from request constructor takes priority - Input URL has credentials +PASS TypeError from request constructor takes priority - RequestInit's mode is navigate +PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is forbidden +PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple +PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value +PASS TypeError from request constructor takes priority - Bad mode init parameter value +PASS TypeError from request constructor takes priority - Bad credentials init parameter value +PASS TypeError from request constructor takes priority - Bad cache init parameter value +PASS TypeError from request constructor takes priority - Bad redirect init parameter value +PASS Request objects have a signal property +PASS Signal on request object +PASS Signal on request object created from request object +PASS Signal on request object created from request object, with signal on second request +PASS Signal on request object created from request object, with signal on second request overriding another +PASS Signal retained after unrelated properties are overridden by fetch +PASS Signal removed by setting to null +PASS Already aborted signal rejects immediately +PASS Request is still 'used' if signal is aborted before fetching +PASS response.arrayBuffer() rejects if already aborted +PASS response.blob() rejects if already aborted +PASS response.formData() rejects if already aborted +PASS response.json() rejects if already aborted +PASS response.text() rejects if already aborted +PASS Already aborted signal does not make request +PASS Already aborted signal can be used for many fetches +PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting +PASS Underlying connection is closed when aborting after receiving response +PASS Underlying connection is closed when aborting after receiving response - no-cors +PASS Fetch aborted & connection closed when aborted after calling response.arrayBuffer() +PASS Fetch aborted & connection closed when aborted after calling response.blob() +PASS Fetch aborted & connection closed when aborted after calling response.formData() +PASS Fetch aborted & connection closed when aborted after calling response.json() +PASS Fetch aborted & connection closed when aborted after calling response.text() +PASS Stream errors once aborted. Underlying connection closed. +PASS Stream errors once aborted, after reading. Underlying connection closed. +PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. +FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false +PASS Signal state is cloned +PASS Clone aborts with original controller +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt b/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt new file mode 100644 index 0000000..99afa96 --- /dev/null +++ b/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.sharedworker-expected.txt
@@ -0,0 +1,51 @@ +This is a testharness.js-based test. +PASS Aborting rejects with AbortError +PASS Aborting rejects with AbortError - no-cors +PASS TypeError from request constructor takes priority - RequestInit's window is not null +PASS TypeError from request constructor takes priority - Input URL is not valid +PASS TypeError from request constructor takes priority - Input URL has credentials +PASS TypeError from request constructor takes priority - RequestInit's mode is navigate +PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is invalid +PASS TypeError from request constructor takes priority - RequestInit's method is forbidden +PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple +PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors +PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value +PASS TypeError from request constructor takes priority - Bad mode init parameter value +PASS TypeError from request constructor takes priority - Bad credentials init parameter value +PASS TypeError from request constructor takes priority - Bad cache init parameter value +PASS TypeError from request constructor takes priority - Bad redirect init parameter value +PASS Request objects have a signal property +PASS Signal on request object +PASS Signal on request object created from request object +PASS Signal on request object created from request object, with signal on second request +PASS Signal on request object created from request object, with signal on second request overriding another +PASS Signal retained after unrelated properties are overridden by fetch +PASS Signal removed by setting to null +PASS Already aborted signal rejects immediately +PASS Request is still 'used' if signal is aborted before fetching +PASS response.arrayBuffer() rejects if already aborted +PASS response.blob() rejects if already aborted +PASS response.formData() rejects if already aborted +PASS response.json() rejects if already aborted +PASS response.text() rejects if already aborted +PASS Already aborted signal does not make request +PASS Already aborted signal can be used for many fetches +PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting +PASS Underlying connection is closed when aborting after receiving response +PASS Underlying connection is closed when aborting after receiving response - no-cors +PASS Fetch aborted & connection closed when aborted after calling response.arrayBuffer() +PASS Fetch aborted & connection closed when aborted after calling response.blob() +PASS Fetch aborted & connection closed when aborted after calling response.formData() +PASS Fetch aborted & connection closed when aborted after calling response.json() +PASS Fetch aborted & connection closed when aborted after calling response.text() +PASS Stream errors once aborted. Underlying connection closed. +PASS Stream errors once aborted, after reading. Underlying connection closed. +PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. +FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false +PASS Signal state is cloned +PASS Clone aborts with original controller +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt deleted file mode 100644 index 47a8c8da..0000000 --- a/third_party/blink/web_tests/virtual/omt-worker-fetch/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ /dev/null
@@ -1,51 +0,0 @@ -This is a testharness.js-based test. -PASS Aborting rejects with AbortError -PASS Aborting rejects with AbortError - no-cors -PASS TypeError from request constructor takes priority - RequestInit's window is not null -PASS TypeError from request constructor takes priority - Input URL is not valid -PASS TypeError from request constructor takes priority - Input URL has credentials -PASS TypeError from request constructor takes priority - RequestInit's mode is navigate -PASS TypeError from request constructor takes priority - RequestInit's referrer is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is invalid -PASS TypeError from request constructor takes priority - RequestInit's method is forbidden -PASS TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors -PASS TypeError from request constructor takes priority - Bad referrerPolicy init parameter value -PASS TypeError from request constructor takes priority - Bad mode init parameter value -PASS TypeError from request constructor takes priority - Bad credentials init parameter value -PASS TypeError from request constructor takes priority - Bad cache init parameter value -PASS TypeError from request constructor takes priority - Bad redirect init parameter value -PASS Request objects have a signal property -PASS Signal on request object -PASS Signal on request object created from request object -PASS Signal on request object created from request object, with signal on second request -PASS Signal on request object created from request object, with signal on second request overriding another -PASS Signal retained after unrelated properties are overridden by fetch -PASS Signal removed by setting to null -PASS Already aborted signal rejects immediately -PASS Request is still 'used' if signal is aborted before fetching -PASS response.arrayBuffer() rejects if already aborted -PASS response.blob() rejects if already aborted -PASS response.formData() rejects if already aborted -PASS response.json() rejects if already aborted -PASS response.text() rejects if already aborted -PASS Already aborted signal does not make request -PASS Already aborted signal can be used for many fetches -PASS Signal can be used to abort other fetches, even if another fetch succeeded before aborting -FAIL Underlying connection is closed when aborting after receiving response assert_equals: Connection is open expected "open" but got "closed" -FAIL Underlying connection is closed when aborting after receiving response - no-cors assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.arrayBuffer() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.blob() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.formData() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.json() assert_equals: Connection is open expected "open" but got "closed" -FAIL Fetch aborted & connection closed when aborted after calling response.text() assert_equals: Connection is open expected "open" but got "closed" -PASS Stream errors once aborted. Underlying connection closed. -PASS Stream errors once aborted, after reading. Underlying connection closed. -PASS Stream will not error if body is empty. It's closed with an empty queue before it errors. -FAIL Readable stream synchronously cancels with AbortError if aborted before reading assert_true: Cancel called sync expected true got false -PASS Signal state is cloned -PASS Clone aborts with original controller -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-custom.html b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-custom.html index b14164957..590e320 100644 --- a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-custom.html +++ b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-custom.html
@@ -22,7 +22,7 @@ 1, tester.sampleRate * tester.lengthInSeconds, tester.sampleRate); // The thresholds are experimentally determined. - tester.setThresholds({snr: 139.98, maxDiff: 2.2650e-6}); + tester.setThresholds({snr: 130.47, maxDiff: 2.2576e-6}); tester.runTest( context, 'custom', 'Custom Oscillator with Exponential Sweep', task, should);
diff --git a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-sawtooth.html b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-sawtooth.html index cb210df6..ca18d42 100644 --- a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-sawtooth.html +++ b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-sawtooth.html
@@ -22,7 +22,7 @@ 1, tester.sampleRate * tester.lengthInSeconds, tester.sampleRate); // The thresholds are experimentally determined. - tester.setThresholds({snr: 134.34, maxDiff: 1.8925e-6}); + tester.setThresholds({snr: 129.40, maxDiff: 1.9894e-6}); tester.runTest( context, 'sawtooth', 'Sawtooth Oscillator with Exponential Sweep', task, should);
diff --git a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-sine.html b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-sine.html index dcd66aa..cbfa57f7 100644 --- a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-sine.html +++ b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-sine.html
@@ -22,7 +22,7 @@ 1, tester.sampleRate * tester.lengthInSeconds, tester.sampleRate); // The thresholds are experimentally determined. - tester.setThresholds({snr: 140.44, maxDiff: 3.4869e-6}); + tester.setThresholds({snr: 129.72, maxDiff: 3.7551e-6}); tester.runTest( context, 'sine', 'Sine Oscillator with Exponential Sweep', task, should);
diff --git a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-square.html b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-square.html index 03329967..034b40d 100644 --- a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-square.html +++ b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-square.html
@@ -22,7 +22,7 @@ 1, tester.sampleRate * tester.lengthInSeconds, tester.sampleRate); // The thresholds are experimentally determined. - tester.setThresholds({snr: 137.20, maxDiff: 3.8147e-6}); + tester.setThresholds({snr: 129.71, maxDiff: 3.9638e-6}); tester.runTest( context, 'square', 'Square Oscillator with Exponential Sweep', task, should);
diff --git a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-triangle.html b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-triangle.html index 5617e75..db07165 100644 --- a/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-triangle.html +++ b/third_party/blink/web_tests/webaudio/Oscillator/osc-sweep-snr-triangle.html
@@ -22,7 +22,7 @@ 1, tester.sampleRate * tester.lengthInSeconds, tester.sampleRate); // The thresholds are experimentally determined. - tester.setThresholds({snr: 139.88, maxDiff: 2.8313e-6}); + tester.setThresholds({snr: 129.66, maxDiff: 3.0995e-6}); tester.runTest( context, 'triangle', 'Triangle Oscillator with Exponential Sweep ', task, should);
diff --git a/tools/android/eclipse/.classpath b/tools/android/eclipse/.classpath index a5ed5b4a..a9ab11b 100644 --- a/tools/android/eclipse/.classpath +++ b/tools/android/eclipse/.classpath
@@ -282,7 +282,6 @@ <classpathentry kind="src" path="third_party/android_protobuf/src/java/src/main/java" including="com/google/protobuf/nano/*"/> <classpathentry kind="src" path="third_party/android_swipe_refresh/java/src"/> <classpathentry kind="src" path="third_party/androidx_browser/src/browser/src"/> - <classpathentry kind="src" path="third_party/cacheinvalidation/src/java"/> <classpathentry kind="src" path="third_party/custom_tabs_client/src/customtabs/junit/src"/> <classpathentry kind="src" path="third_party/gif_player/src"/> <classpathentry kind="src" path="third_party/junit/src"/> @@ -400,8 +399,6 @@ <classpathentry kind="lib" path="../src/out/Debug/lib.java/third_party/android_protobuf/protobuf_nano_javalib.jar"/> <classpathentry kind="lib" path="../src/out/Debug/lib.java/third_party/android_support_test_runner/runner-release-no-dep.jar"/> <classpathentry kind="lib" path="../src/out/Debug/lib.java/third_party/android_swipe_refresh/android_swipe_refresh_java.jar"/> - <classpathentry kind="lib" path="../src/out/Debug/lib.java/third_party/cacheinvalidation/cacheinvalidation_javalib.jar"/> - <classpathentry kind="lib" path="../src/out/Debug/lib.java/third_party/cacheinvalidation/cacheinvalidation_proto_java.jar"/> <classpathentry kind="lib" path="../src/out/Debug/lib.java/third_party/espresso/espresso-core-release-no-dep.jar"/> <classpathentry kind="lib" path="../src/out/Debug/lib.java/third_party/gif_player/gif_player_java.jar"/> <classpathentry kind="lib" path="../src/out/Debug/lib.java/third_party/hamcrest/hamcrest-core.jar"/>
diff --git a/tools/code_coverage/test_suite.txt b/tools/code_coverage/test_suite.txt index d444b128..1a20847 100644 --- a/tools/code_coverage/test_suite.txt +++ b/tools/code_coverage/test_suite.txt
@@ -12,7 +12,6 @@ boringssl_ssl_tests breakpad_unittests browser_tests -cacheinvalidation_unittests capture_unittests cast_unittests cc_unittests
diff --git a/tools/licenses.py b/tools/licenses.py index dd946fc..5d27b2ec 100755 --- a/tools/licenses.py +++ b/tools/licenses.py
@@ -328,7 +328,6 @@ os.path.join('third_party', 'ashmem'), os.path.join('third_party', 'blink'), os.path.join('third_party', 'bspatch'), - os.path.join('third_party', 'cacheinvalidation'), os.path.join('third_party', 'cld'), os.path.join('third_party', 'flot'), os.path.join('third_party', 'gtk+'),
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 318935e6..4598f6e9 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -39343,6 +39343,13 @@ <int value="4" label="Blocklisted due to reloads/back-forwards"/> </enum> +<enum name="LiteVideoDecision"> + <int value="0" label="None"/> + <int value="1" label="Allowed"/> + <int value="2" label="Not Allowed"/> + <int value="3" label="Holdback"/> +</enum> + <enum name="LiveCaptionsSessionEvent"> <int value="0" label="Stream started"/> <int value="1" label="Stream finished"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 76776be..a58b89f5 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -73594,7 +73594,7 @@ </histogram> <histogram name="KeyboardAccessory.AccessorySheetToggleClicked" - enum="AccessoryToggleType" expires_after="M86"> + enum="AccessoryToggleType" expires_after="M88"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary> @@ -73605,7 +73605,7 @@ </histogram> <histogram name="KeyboardAccessory.AccessorySheetToggleImpression" - enum="AccessoryToggleType" expires_after="M86"> + enum="AccessoryToggleType" expires_after="M88"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary> @@ -73625,7 +73625,7 @@ </histogram> <histogram name="KeyboardAccessory.DisabledSavingAccessoryImpressions" - enum="BooleanShown" expires_after="M86"> + enum="BooleanShown" expires_after="M88"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary> @@ -124747,9 +124747,9 @@ </histogram> <histogram name="PasswordManager.DynamicFormChanges" units="units" - expires_after="M86"> - <owner>battre@chromium.org</owner> + expires_after="M92"> <owner>jdoerrie@chromium.org</owner> + <owner>battre@chromium.org</owner> <summary> Records a bitmask of password form changes after the first time this form is seen by Password Manager. Recorded once per a form when the form is removed @@ -124961,9 +124961,9 @@ </histogram> <histogram name="PasswordManager.FirstRendererFillingResult" - enum="PasswordManagerFirstRendererFillingResult" expires_after="M86"> - <owner>battre@chromium.org</owner> + enum="PasswordManagerFirstRendererFillingResult" expires_after="M92"> <owner>jdoerrie@chromium.org</owner> + <owner>battre@chromium.org</owner> <summary> Records whether the PasswordAutofillAgent in the renderer manages to fill credentials as instructed by the browser or records a failure reason @@ -124974,9 +124974,9 @@ </histogram> <histogram name="PasswordManager.FirstWaitForUsernameReason" - enum="PasswordManagerFirstWaitForUsernameReason" expires_after="M86"> - <owner>battre@chromium.org</owner> + enum="PasswordManagerFirstWaitForUsernameReason" expires_after="M92"> <owner>jdoerrie@chromium.org</owner> + <owner>battre@chromium.org</owner> <summary> This metric records why the browser instructs the renderer not to fill the credentials on page load but to wait for the user to confirm the credential @@ -126232,7 +126232,7 @@ </histogram> <histogram name="PasswordManager.SaveUIDismissalReasonAfterUnblacklisting" - enum="PasswordManagerUIDismissalReason" expires_after="M86"> + enum="PasswordManagerUIDismissalReason" expires_after="M88"> <owner>ioanap@chromium.org</owner> <owner>vasilii@chromium.org</owner> <summary> @@ -126243,7 +126243,7 @@ </histogram> <histogram name="PasswordManager.SavingOnUsernameFirstFlow" - enum="SavingOnUsernameFirstFlow" expires_after="M86"> + enum="SavingOnUsernameFirstFlow" expires_after="M92"> <owner>jdoerrie@chromium.org</owner> <owner>vasilii@chromium.org</owner> <summary>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml index f2cf5085..f051d63 100644 --- a/tools/metrics/ukm/ukm.xml +++ b/tools/metrics/ukm/ukm.xml
@@ -5239,6 +5239,28 @@ </metric> </event> +<event name="LiteVideo"> + <owner>mcrouse@chromium.org</owner> + <owner>rajendrant@chromium.org</owner> + <summary> + Metrics that capture the state and result of the LiteVideo optimization. + This will be recorded once per frame when the associated render process + ends. Only for Lite mode users on Android. + </summary> + <metric name="BlocklistReason" enum="LiteVideoBlocklistReason"> + <summary> + The reason that a navigation was blocklisted and will not have media + requests throttled. + </summary> + </metric> + <metric name="ThrottlingStartDecision" enum="LiteVideoDecision"> + <summary> + The decision for whether media requests associated with this frame will be + potentially throttled. + </summary> + </metric> +</event> + <event name="LoadingPredictor" singular="true"> <owner>sophiechang@chromium.org</owner> <owner>tbansal@chromium.org</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 8ae615c..5b07738 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -1,16 +1,16 @@ { "trace_processor_shell": { "win": { - "hash": "2764aecc271e8b45a4cb1c5df71627d99502ddb9", - "remote_path": "perfetto_binaries/trace_processor_shell/win/0997f358ce073f83d6a4bba44ffce2d772077577/trace_processor_shell.exe" + "hash": "7b97007e7a2d805916994ab05e4e35114697ea13", + "remote_path": "perfetto_binaries/trace_processor_shell/win/1dcc3cfc0639ebb0636c30a43e69f599f9c1a981/trace_processor_shell.exe" }, "mac": { - "hash": "585a35a5bb0157912bdbc75d9636d158745417a3", - "remote_path": "perfetto_binaries/trace_processor_shell/mac/0997f358ce073f83d6a4bba44ffce2d772077577/trace_processor_shell" + "hash": "168bfb021fbc283e3ec1aa8bfe67c19a6a2e3e51", + "remote_path": "perfetto_binaries/trace_processor_shell/mac/1dcc3cfc0639ebb0636c30a43e69f599f9c1a981/trace_processor_shell" }, "linux": { "hash": "6d362c6c3b4aaa1f7eaab78780cc2bfa515a3a84", - "remote_path": "perfetto_binaries/trace_processor_shell/linux/1dcc3cfc0639ebb0636c30a43e69f599f9c1a981/trace_processor_shell" + "remote_path": "perfetto_binaries/trace_processor_shell/linux/3c13bf1fa86551bce5a94b6c92f98bfe31f773e1/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc index e64a0384..49423e6b 100644 --- a/ui/base/resource/resource_bundle.cc +++ b/ui/base/resource/resource_bundle.cc
@@ -456,18 +456,28 @@ const base::FilePath& locale_path) { is_test_resources_ = true; DCHECK(!ui::GetSupportedScaleFactors().empty()); - const ScaleFactor scale_factor(ui::GetSupportedScaleFactors()[0]); // Use the given resource pak for both common and localized resources. - std::unique_ptr<DataPack> data_pack(new DataPack(scale_factor)); - if (!path.empty() && data_pack->LoadFromPath(path)) - AddDataPack(std::move(data_pack)); - data_pack = std::make_unique<DataPack>(ui::SCALE_FACTOR_NONE); + if (!path.empty()) { + const ScaleFactor scale_factor(ui::GetSupportedScaleFactors()[0]); + auto data_pack = std::make_unique<DataPack>(scale_factor); +#if defined(OS_ANDROID) + // TODO(https://crbug.com/1078365): Fix Android and remove this conditional. + if (data_pack->LoadFromPath(path)) + AddDataPack(std::move(data_pack)); +#else // !defined(OS_ANDROID) + CHECK(data_pack->LoadFromPath(path)); + AddDataPack(std::move(data_pack)); +#endif // !define(OS_ANDROID) + } + + auto data_pack = std::make_unique<DataPack>(ui::SCALE_FACTOR_NONE); if (!locale_path.empty() && data_pack->LoadFromPath(locale_path)) { locale_resources_data_ = std::move(data_pack); } else { locale_resources_data_ = std::make_unique<DataPack>(ui::SCALE_FACTOR_NONE); } + // This is necessary to initialize ICU since we won't be calling // LoadLocaleResources in this case. l10n_util::GetApplicationLocale(std::string());
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb index 04779c7..ed2ca8ff 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
@@ -8,7 +8,7 @@ <translation id="1046068652463704410">Japanin syöttö (Yhdysvaltain näppäimistö)</translation> <translation id="1047956942837015229">Poistetaan <ph name="COUNT" /> kohdetta…</translation> <translation id="1049926623896334335">Word-asiakirja</translation> -<translation id="1060368002126861100">Jos haluat avata tiedoston sovelluksella <ph name="APP_NAME" />, siirrä ne ensin Windowsin tiedostot ‑kansioon.</translation> +<translation id="1060368002126861100">Jos haluat avata tiedoston sovelluksella <ph name="APP_NAME" />, siirrä se ensin Windowsin tiedostot ‑kansioon.</translation> <translation id="1062407476771304334">Korvaa</translation> <translation id="1065449928621190041">Näppäimistö: ranska (Kanada)</translation> <translation id="1119069657431255176">Bzip2-pakattu Tar-arkisto</translation> @@ -222,7 +222,7 @@ <translation id="3524311639100184459">Varoitus: Nämä tiedostot ovat tilapäisiä ja ne voidaan poistaa automaattisesti levytilan vapauttamiseksi. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation> <translation id="3527085408025491307">Kansio</translation> <translation id="3549797760399244642">Siirry osoitteeseen drive.google.com...</translation> -<translation id="3553048479571901246">Jos haluat avata tiedoston sovelluksella <ph name="APP_NAME" />, kopioi ne ensin Windowsin tiedostot ‑kansioon.</translation> +<translation id="3553048479571901246">Jos haluat avata tiedoston sovelluksella <ph name="APP_NAME" />, kopioi se ensin Windowsin tiedostot ‑kansioon.</translation> <translation id="357479282490346887">liettua</translation> <translation id="3583509704582854624">Aakkosnnumeerinen syöttö (japanilainen näppäimistö)</translation> <translation id="3603385196401704894">ranska (Kanada)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb index 866e40e..2803ba1 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
@@ -8,7 +8,7 @@ <translation id="1046068652463704410">קלט יפני (למקלדת של ארה"ב)</translation> <translation id="1047956942837015229">מוחק <ph name="COUNT" /> פריטים...</translation> <translation id="1049926623896334335">מסמך Word</translation> -<translation id="1060368002126861100">כדי לפתוח קבצים באמצעות <ph name="APP_NAME" />, לפני כן צריך להעתיק אותם לתיקיית קובצי Windows.</translation> +<translation id="1060368002126861100">כדי שניתן יהיה לפתוח קבצים באמצעות <ph name="APP_NAME" />, צריך להעתיק אותם לתיקיית קובצי Windows.</translation> <translation id="1062407476771304334">החלף</translation> <translation id="1065449928621190041">מקלדת צרפתית (קנדה)</translation> <translation id="1119069657431255176">ארכיון TAR מכווץ של Bzip2</translation> @@ -222,7 +222,7 @@ <translation id="3524311639100184459">זהירות: הקבצים האלה זמניים, וייתכן שהם יימחקו באופן אוטומטי כדי לפנות מקום בכונן. <ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /></translation> <translation id="3527085408025491307">תיקיה</translation> <translation id="3549797760399244642">עבור אל drive.google.com...</translation> -<translation id="3553048479571901246">כדי לפתוח קבצים באמצעות <ph name="APP_NAME" />, לפני כן צריך להעתיק אותם לתיקיית קובצי Windows.</translation> +<translation id="3553048479571901246">כדי שניתן יהיה לפתוח קבצים באמצעות <ph name="APP_NAME" />, צריך להעתיק אותם לתיקיית קובצי Windows.</translation> <translation id="357479282490346887">ליטאית</translation> <translation id="3583509704582854624">קלט אלפאנומרי (למקלדת יפנית)</translation> <translation id="3603385196401704894">צרפתית קנדית</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb index c989ed6..ef2a559 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
@@ -8,6 +8,7 @@ <translation id="1046068652463704410">日本語入力(US キーボード用)</translation> <translation id="1047956942837015229"><ph name="COUNT" /> 件の項目を削除しています...</translation> <translation id="1049926623896334335">Word ドキュメント</translation> +<translation id="1060368002126861100"><ph name="APP_NAME" /> でファイルを開くには、まず [Windows ファイル] フォルダにファイルを移動してください。</translation> <translation id="1062407476771304334">置換</translation> <translation id="1065449928621190041">フランス語(カナダ)のキーボード</translation> <translation id="1119069657431255176">bzip2 で圧縮された tar アーカイブ</translation> @@ -221,6 +222,7 @@ <translation id="3524311639100184459">注: これらのファイルは一時的なもので、ディスクの空き容量を増やすために自動的に削除されることがあります。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="3527085408025491307">フォルダ</translation> <translation id="3549797760399244642">drive.google.com にアクセスします...</translation> +<translation id="3553048479571901246"><ph name="APP_NAME" /> でファイルを開くには、まず [Windows ファイル] フォルダにファイルをコピーしてください。</translation> <translation id="357479282490346887">リトアニア語</translation> <translation id="3583509704582854624">英数入力(日本語キーボード用)</translation> <translation id="3603385196401704894">フランス語(カナダ)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb index 2cf9a90..56c8c2c 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
@@ -8,7 +8,7 @@ <translation id="1046068652463704410">Yapon tilida matn kiritish (AQSH klaviaturasi uchun)</translation> <translation id="1047956942837015229">Fayllar (<ph name="COUNT" /> ta) o‘chirilmoqda...</translation> <translation id="1049926623896334335">Word hujjati</translation> -<translation id="1060368002126861100">Fayllarni <ph name="APP_NAME" /> ilovasidan ochishdan avval ularni Windows fayllari jildiga koʻchiring.</translation> +<translation id="1060368002126861100">Fayllarni <ph name="APP_NAME" /> ilovasidan ochishdan avval ularni Windows fayllari jildiga oling.</translation> <translation id="1062407476771304334">Almashtirish</translation> <translation id="1065449928621190041">Kanada fransuzchasi klaviaturasi</translation> <translation id="1119069657431255176">Bzip2 formatida arxivlangan tar fayl</translation>
diff --git a/ui/events/keycodes/dom/keycode_converter.cc b/ui/events/keycodes/dom/keycode_converter.cc index e5550482..b61f0f7 100644 --- a/ui/events/keycodes/dom/keycode_converter.cc +++ b/ui/events/keycodes/dom/keycode_converter.cc
@@ -30,7 +30,7 @@ #define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \ { usb, evdev, code } #elif defined(OS_FUCHSIA) -// TODO(https://bugs.fuchsia.com/23982): Fuchsia currently delivers events +// TODO(https://crbug.com/1107418): Fuchsia currently delivers events // with a USB Code but no Page specified, so only map |native_keycode| for // Keyboard Usage Page codes, for now. inline constexpr uint32_t CodeIfOnKeyboardPage(uint32_t usage) {
diff --git a/ui/file_manager/file_manager/common/js/util.js b/ui/file_manager/file_manager/common/js/util.js index 718d965..c1f7526e 100644 --- a/ui/file_manager/file_manager/common/js/util.js +++ b/ui/file_manager/file_manager/common/js/util.js
@@ -1418,6 +1418,14 @@ }; /** + * Returns true if transfer details flag is enabled. + * @return {boolean} + */ +util.isTransferDetailsEnabled = () => { + return loadTimeData.getBoolean('FILES_TRANSFER_DETAILS_ENABLED'); +}; + +/** * Retrieves all entries inside the given |rootEntry|. * @param {!DirectoryEntry} rootEntry * @param {function(!Array<!Entry>)} entriesCallback Called when some chunk of
diff --git a/ui/native_theme/native_theme_base.cc b/ui/native_theme/native_theme_base.cc index 7da3b7b..563846a 100644 --- a/ui/native_theme/native_theme_base.cc +++ b/ui/native_theme/native_theme_base.cc
@@ -1664,6 +1664,7 @@ case kBackground: return SkColorSetRGB(0x3B, 0x3B, 0x3B); case kBorder: + return SkColorSetRGB(0x85, 0x85, 0x85); case kSlider: return SkColorSetRGB(0xC3, 0xC3, 0xC3); case kHoveredSlider:
diff --git a/ui/strings/translations/ui_strings_bs.xtb b/ui/strings/translations/ui_strings_bs.xtb index 60a471d9..e01b6f1 100644 --- a/ui/strings/translations/ui_strings_bs.xtb +++ b/ui/strings/translations/ui_strings_bs.xtb
@@ -37,7 +37,7 @@ <translation id="1842960171412779397">odaberi</translation> <translation id="1859234291848436338">Smjer pisanja</translation> <translation id="1860796786778352021">Zatvaranje obavještenja</translation> -<translation id="186476001994626254">Sadržaj pametnog lijepljenja s weba</translation> +<translation id="186476001994626254">Web sadržaj za pametno lijepljenje</translation> <translation id="1871244248791675517">Umet</translation> <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation> <translation id="1901303067676059328">Odaberi &sve</translation>
diff --git a/ui/strings/translations/ui_strings_id.xtb b/ui/strings/translations/ui_strings_id.xtb index 5e0f19b..3426568 100644 --- a/ui/strings/translations/ui_strings_id.xtb +++ b/ui/strings/translations/ui_strings_id.xtb
@@ -37,7 +37,7 @@ <translation id="1842960171412779397">pilih</translation> <translation id="1859234291848436338">Arah Penulisan</translation> <translation id="1860796786778352021">Tutup pemberitahuan</translation> -<translation id="186476001994626254">Konten Tempel Smart Web</translation> +<translation id="186476001994626254">Konten Web Smart Paste</translation> <translation id="1871244248791675517">Ins</translation> <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation> <translation id="1901303067676059328">Pilih semu&a</translation>
diff --git a/ui/strings/translations/ui_strings_ja.xtb b/ui/strings/translations/ui_strings_ja.xtb index d4453d24..c4e6233 100644 --- a/ui/strings/translations/ui_strings_ja.xtb +++ b/ui/strings/translations/ui_strings_ja.xtb
@@ -37,6 +37,7 @@ <translation id="1842960171412779397">選択</translation> <translation id="1859234291848436338">文章の方向</translation> <translation id="1860796786778352021">通知を閉じる</translation> +<translation id="186476001994626254">ウェブのスマート貼り付けコンテンツ</translation> <translation id="1871244248791675517">Insert</translation> <translation id="1884435127456172652"><ph name="NUMBER" />%</translation> <translation id="1901303067676059328">すべて選択(&A)</translation> @@ -75,6 +76,7 @@ <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />、<ph name="PRICE" /></translation> <translation id="2803313416453193357">フォルダを開く</translation> <translation id="2824719307700604149">{YEARS,plural, =1{1 年前}other{# 年前}}</translation> +<translation id="2878511608894704031">すべて削除</translation> <translation id="2907671656515444832">{DAYS,plural, =1{1日}other{#日}}</translation> <translation id="2931838996092594335">クリック</translation> <translation id="2981684127883932071">候補を表示しています</translation> @@ -172,6 +174,7 @@ <translation id="6417265370957905582">Google アシスタント</translation> <translation id="6430678249303439055">このアプリからのすべての通知をブロックする</translation> <translation id="6483402905448010557">{SECONDS,plural, =1{1 秒前}other{# 秒前}}</translation> +<translation id="6503257047630241175">RTF コンテンツ</translation> <translation id="6539092367496845964">エラーが発生しました。しばらくしてからもう一度お試しください。</translation> <translation id="654149438358937226">通知をすべてブロックする</translation> <translation id="6567071839949112727">上位要素をクリック</translation>
diff --git a/ui/strings/translations/ui_strings_kk.xtb b/ui/strings/translations/ui_strings_kk.xtb index 0c660c17..fc861586 100644 --- a/ui/strings/translations/ui_strings_kk.xtb +++ b/ui/strings/translations/ui_strings_kk.xtb
@@ -37,7 +37,7 @@ <translation id="1842960171412779397">таңдау</translation> <translation id="1859234291848436338">Жазу бағыты</translation> <translation id="1860796786778352021">Хабарландыруды жабу</translation> -<translation id="186476001994626254">Интернеттегі смарт мазмұн</translation> +<translation id="186476001994626254">Web Smart Paste мазмұны</translation> <translation id="1871244248791675517">Ins</translation> <translation id="1884435127456172652"><ph name="NUMBER" /> %</translation> <translation id="1901303067676059328">Барлығын &таңдау</translation>
diff --git a/ui/strings/translations/ui_strings_sq.xtb b/ui/strings/translations/ui_strings_sq.xtb index 701af7b6..a4c7be7c 100644 --- a/ui/strings/translations/ui_strings_sq.xtb +++ b/ui/strings/translations/ui_strings_sq.xtb
@@ -174,7 +174,7 @@ <translation id="6417265370957905582">Asistenti i Google</translation> <translation id="6430678249303439055">Blloko të gjitha njoftimet nga ky aplikacion</translation> <translation id="6483402905448010557">{SECONDS,plural, =1{1 sekondë më parë}other{# sekonda më parë}}</translation> -<translation id="6503257047630241175">Përmbajtja në format RTF</translation> +<translation id="6503257047630241175">Përmbajtja në formatin RTF</translation> <translation id="6539092367496845964">Ndodhi një gabim. Provo përsëri më vonë.</translation> <translation id="654149438358937226">Blloko të gjitha njoftimet</translation> <translation id="6567071839949112727">kliko te paraardhësi</translation>
diff --git a/ui/views/bubble/bubble_dialog_delegate_view.cc b/ui/views/bubble/bubble_dialog_delegate_view.cc index adbad16..68cad13 100644 --- a/ui/views/bubble/bubble_dialog_delegate_view.cc +++ b/ui/views/bubble/bubble_dialog_delegate_view.cc
@@ -15,8 +15,10 @@ #include "ui/accessibility/ax_role_properties.h" #include "ui/base/default_style.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/compositor/layer_animation_element.h" #include "ui/gfx/color_utils.h" #include "ui/gfx/geometry/rect.h" +#include "ui/gfx/geometry/vector2d_conversions.h" #include "ui/native_theme/native_theme.h" #include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/layout/layout_manager.h" @@ -32,6 +34,9 @@ #if defined(OS_MACOSX) #include "ui/views/widget/widget_utils_mac.h" +#else +#include "ui/aura/window.h" +#include "ui/aura/window_observer.h" #endif namespace views { @@ -174,16 +179,29 @@ // This class is responsible for observing events on a BubbleDialogDelegate's // anchor widget and notifying the BubbleDialogDelegate of them. +#if defined(OS_MACOSX) class BubbleDialogDelegate::AnchorWidgetObserver : public WidgetObserver { +#else +class BubbleDialogDelegate::AnchorWidgetObserver : public WidgetObserver, + public aura::WindowObserver { +#endif + public: AnchorWidgetObserver(BubbleDialogDelegate* owner, Widget* widget) : owner_(owner) { - observer_.Add(widget); + widget_observer_.Add(widget); +#if !defined(OS_MACOSX) + window_observer_.Add(widget->GetNativeWindow()); +#endif } ~AnchorWidgetObserver() override = default; + // WidgetObserver: void OnWidgetDestroying(Widget* widget) override { - observer_.Remove(widget); +#if !defined(OS_MACOSX) + window_observer_.Remove(widget->GetNativeWindow()); +#endif + widget_observer_.Remove(widget); owner_->OnAnchorWidgetDestroying(); // |this| may be destroyed here! } @@ -196,9 +214,28 @@ owner_->OnAnchorBoundsChanged(); } +#if !defined(OS_MACOSX) + // aura::WindowObserver: + void OnWindowTransformed(aura::Window* window, + ui::PropertyChangeReason reason) override { + if (window->is_destroying()) + return; + + // Update the anchor bounds when the transform animation is complete, or + // when the transform is set without animation. + if (!window->layer()->GetAnimator()->IsAnimatingOnePropertyOf( + ui::LayerAnimationElement::TRANSFORM)) { + owner_->OnAnchorBoundsChanged(); + } + } +#endif + private: BubbleDialogDelegate* owner_; - ScopedObserver<views::Widget, views::WidgetObserver> observer_{this}; + ScopedObserver<views::Widget, views::WidgetObserver> widget_observer_{this}; +#if !defined(OS_MACOSX) + ScopedObserver<aura::Window, aura::WindowObserver> window_observer_{this}; +#endif }; // This class is responsible for observing events on a BubbleDialogDelegate's @@ -511,6 +548,21 @@ anchor_rect_ = GetAnchorView()->GetAnchorBoundsInScreen(); anchor_rect_->Inset(anchor_view_insets_); + +#if !defined(OS_MACOSX) + // GetAnchorBoundsInScreen returns values that take anchor widget's + // translation into account, so undo that here. Without this, features which + // apply transforms on windows such as ChromeOS overview mode will see bubbles + // offset. + // TODO(sammiequon): Investigate if we can remove |anchor_widget_| and just + // replace its calls with GetAnchorView()->GetWidget(). + DCHECK_EQ(anchor_widget_, GetAnchorView()->GetWidget()); + gfx::Transform transform = + anchor_widget_->GetNativeWindow()->layer()->GetTargetTransform(); + if (!transform.IsIdentity()) + anchor_rect_->Offset(-gfx::ToRoundedVector2d(transform.To2dTranslation())); +#endif + return anchor_rect_.value(); }
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/BrowserControlsTest.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/BrowserControlsTest.java index 7cbd5654..fa957ef9 100644 --- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/BrowserControlsTest.java +++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/BrowserControlsTest.java
@@ -239,6 +239,45 @@ }); } + // Disabled on L bots due to unexplained flakes. See crbug.com/1035894. + @MinAndroidSdkLevel(Build.VERSION_CODES.M) + @Test + @SmallTest + public void testTopMinHeight() throws Exception { + final int minHeight = 20; + InstrumentationActivity activity = mActivityTestRule.getActivity(); + View topContents = activity.getTopContentsContainer(); + TestThreadUtils.runOnUiThreadBlocking( + () -> activity.getBrowser().setTopView(topContents, minHeight, false)); + int expectedCollapseAmount = topContents.getHeight() - minHeight; + + // Make sure the top controls start out taller than the min height. + CriteriaHelper.pollInstrumentationThread(() -> { + Criteria.checkThat(topContents.getHeight(), Matchers.greaterThan(minHeight)); + }); + + // Move by the size of the top-controls. + EventUtils.simulateDragFromCenterOfView( + activity.getWindow().getDecorView(), 0, -mTopViewHeight); + + // Moving should collapse the top-controls to their min height and change the page height. + CriteriaHelper.pollInstrumentationThread(() -> { + Criteria.checkThat( + getVisiblePageHeight(), Matchers.greaterThan(mPageHeightWithTopView)); + Criteria.checkThat( + topContents.getTranslationY(), Matchers.is((float) -expectedCollapseAmount)); + }); + + // Move so top-controls are shown again. + EventUtils.simulateDragFromCenterOfView( + activity.getWindow().getDecorView(), 0, mTopViewHeight); + + // Wait for the page height to match initial height. + CriteriaHelper.pollInstrumentationThread(() -> { + Criteria.checkThat(getVisiblePageHeight(), Matchers.is(mPageHeightWithTopView)); + }); + } + /** * Makes sure that the top controls are shown when a js dialog is shown. *
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/BrowserControlsContainerView.java b/weblayer/browser/java/org/chromium/weblayer_private/BrowserControlsContainerView.java index ce10368c..47bfffa 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/BrowserControlsContainerView.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/BrowserControlsContainerView.java
@@ -87,6 +87,9 @@ // bottom-controls, the value ranges from 0 (completely shown) to height (completely hidden). private int mControlsOffset; + // The minimum height that the controls should collapse to. Only used for top controls. + private int mMinHeight; + // Set to true if |mView| is hidden because the user has scrolled or triggered some action such // that mView is not visible. While |mView| is not visible if this is true, the bitmap from // |mView| may be partially visible. @@ -101,9 +104,9 @@ public interface Listener { /** - * Called when the browser-controls are either completely showing, or completely hiding. + * Called when the browser-controls are either completely exapanded or completely collapsed. */ - public void onBrowserControlsCompletelyShownOrHidden(); + public void onBrowserControlsCompletelyExpandedOrCollapsed(); } // Used to delay updating the image for the layer. @@ -184,11 +187,13 @@ } /** - * Returns true if the controls are completely shown or completely hidden. A return value - * of false indicates the controls are being moved. + * Returns true if the controls are completely expanded or completely collapsed. + * "Completely collapsed" does not necessarily mean hidden; the controls could be at their min + * height, in which case this would return true. A return value of false indicates the controls + * are being moved. */ - public boolean isCompletelyShownOrHidden() { - return mControlsOffset == 0 || Math.abs(mControlsOffset) == getHeight(); + public boolean isCompletelyExpandedOrCollapsed() { + return mControlsOffset == 0 || Math.abs(mControlsOffset) == getHeight() - mMinHeight; } /** @@ -235,17 +240,30 @@ } /** + * Sets the minimum height the controls can collapse to. + * Only valid for top controls. + */ + public void setMinHeight(int minHeight) { + assert mIsTop; + mMinHeight = minHeight; + // Refresh the offsets so they can get clamped to their possibly taller min height. + onOffsetsChanged(mControlsOffset, mContentOffset); + if (mWebContents != null) mWebContents.notifyBrowserControlsHeightChanged(); + } + + /** * Called from ViewAndroidDelegate, see it for details. */ public void onOffsetsChanged(int controlsOffsetY, int contentOffsetY) { if (mView == null) return; if (mIsFullscreen) return; - if (controlsOffsetY == 0) { - finishScroll(contentOffsetY); - return; - } - if (!mInScroll) prepareForScroll(); setControlsOffset(controlsOffsetY, contentOffsetY); + if (controlsOffsetY == 0 + || (mIsTop && mMinHeight > 0 && controlsOffsetY <= -getHeight() + mMinHeight)) { + finishScroll(); + } else if (!mInScroll) { + prepareForScroll(); + } } @SuppressLint("NewApi") // Used on O+, invalidateChildInParent used for previous versions. @@ -286,10 +304,10 @@ // The controls are completely visible. onOffsetsChanged(0, height); } else { - // The controls are partially (and possibly completely) hidden. Snap to - // completely hidden. + // The controls are partially (and possibly completely) hidden. Snap to min + // height (which may be 0). if (mIsTop) { - onOffsetsChanged(-height, height); + onOffsetsChanged(-height + mMinHeight, mMinHeight); } else { onOffsetsChanged(height, 0); } @@ -347,9 +365,8 @@ } } - private void finishScroll(int contentOffsetY) { + private void finishScroll() { mInScroll = false; - setControlsOffset(0, contentOffsetY); if (BrowserControlsContainerViewJni.get().shouldDelayVisibilityChange()) { mContentViewRenderView.postOnAnimation(() -> showControls()); } else { @@ -361,13 +378,14 @@ // This function is called asynchronously from the gpu, and may be out of sync with the // current values. if (mIsTop) { - mControlsOffset = MathUtils.clamp(controlsOffsetY, -getHeight(), 0); + mControlsOffset = MathUtils.clamp(controlsOffsetY, -getHeight() + mMinHeight, 0); } else { mControlsOffset = MathUtils.clamp(controlsOffsetY, 0, getHeight()); } - mContentOffset = MathUtils.clamp(contentOffsetY, 0, getHeight()); - if (isCompletelyShownOrHidden()) { - mListener.onBrowserControlsCompletelyShownOrHidden(); + mContentOffset = MathUtils.clamp(contentOffsetY, mMinHeight, getHeight()); + + if (isCompletelyExpandedOrCollapsed()) { + mListener.onBrowserControlsCompletelyExpandedOrCollapsed(); } if (mIsTop) { BrowserControlsContainerViewJni.get().setTopControlsOffset( @@ -392,7 +410,10 @@ } private void showControls() { - if (mView != null) mView.setVisibility(View.VISIBLE); + if (mView != null) { + if (mIsTop) mView.setTranslationY(mControlsOffset); + mView.setVisibility(View.VISIBLE); + } } @CalledByNative
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/BrowserImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/BrowserImpl.java index 3a04aadc..9603e19 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/BrowserImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/BrowserImpl.java
@@ -190,6 +190,18 @@ } @Override + public void setTopViewAndScrollingBehavior( + IObjectWrapper viewWrapper, int minHeight, boolean pinToContentTop) { + StrictModeWorkaround.apply(); + if (minHeight < 0) { + throw new IllegalArgumentException("Top view min height must be non-negative."); + } + + getViewController().setTopView(ObjectWrapper.unwrap(viewWrapper, View.class)); + getViewController().setTopControlsMinHeight(minHeight); + } + + @Override public void setBottomView(IObjectWrapper viewWrapper) { StrictModeWorkaround.apply(); getViewController().setBottomView(ObjectWrapper.unwrap(viewWrapper, View.class));
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/BrowserViewController.java b/weblayer/browser/java/org/chromium/weblayer_private/BrowserViewController.java index 033aeca..22753da 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/BrowserViewController.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/BrowserViewController.java
@@ -56,6 +56,8 @@ private final View.OnAttachStateChangeListener mOnAttachedStateChangeListener; private final ModalDialogManager mModalDialogManager; + private int mTopControlsMinHeight; + private TabImpl mTab; private WebContentsGestureStateTracker mGestureStateTracker; @@ -161,6 +163,8 @@ if (mTab != null) { mTab.onDidLoseActive(); + // Clean up UI related state now that the old Tab is inactive. + mTab.setTopControlsMinHeight(0); // WebContentsGestureStateTracker is relatively cheap, easier to destroy rather than // update WebContents. mGestureStateTracker.destroy(); @@ -184,6 +188,7 @@ mContentViewRenderView.setWebContents(webContents); mTopControlsContainerView.setWebContents(webContents); mBottomControlsContainerView.setWebContents(webContents); + updateActiveTabScrollBehavior(); if (mTab != null) { mTab.onDidGainActive(mTopControlsContainerView.getNativeHandle(), mBottomControlsContainerView.getNativeHandle()); @@ -199,6 +204,12 @@ mTopControlsContainerView.setView(view); } + public void setTopControlsMinHeight(int minHeight) { + mTopControlsMinHeight = minHeight; + mTopControlsContainerView.setMinHeight(minHeight); + updateActiveTabScrollBehavior(); + } + public void setBottomView(View view) { mBottomControlsContainerView.setView(view); } @@ -216,7 +227,7 @@ } @Override - public void onBrowserControlsCompletelyShownOrHidden() { + public void onBrowserControlsCompletelyExpandedOrCollapsed() { adjustWebContentsHeightIfNecessary(); } @@ -256,8 +267,8 @@ private void adjustWebContentsHeightIfNecessary() { if (mGestureStateTracker == null || mGestureStateTracker.isInGestureOrScroll() - || !mTopControlsContainerView.isCompletelyShownOrHidden() - || !mBottomControlsContainerView.isCompletelyShownOrHidden()) { + || !mTopControlsContainerView.isCompletelyExpandedOrCollapsed() + || !mBottomControlsContainerView.isCompletelyExpandedOrCollapsed()) { return; } mContentViewRenderView.setWebContentsHeightDelta( @@ -289,6 +300,12 @@ || mBottomControlsContainerView.isControlVisible()); } + private void updateActiveTabScrollBehavior() { + if (mTab != null) { + mTab.setTopControlsMinHeight(mTopControlsMinHeight); + } + } + /** * Causes the browser controls to be fully shown. Take care in calling this. Normally the * renderer drives the offsets, but this method circumvents that.
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/TabImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/TabImpl.java index 0fc6241b..5616192 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/TabImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/TabImpl.java
@@ -866,6 +866,10 @@ WebLayerAccessibilityUtil.get().removeObserver(mAccessibilityObserver); } + /* package */ void setTopControlsMinHeight(int minHeight) { + TabImplJni.get().setTopControlsMinHeight(mNativeTab, minHeight); + } + @CalledByNative private boolean doBrowserControlsShrinkRendererSize() { BrowserViewController viewController = getViewController(); @@ -986,5 +990,6 @@ void unregisterWebMessageCallback(long nativeTabImpl, String jsObjectName); boolean canTranslate(long nativeTabImpl); void showTranslateUi(long nativeTabImpl); + void setTopControlsMinHeight(long nativeTabImpl, int minHeight); } }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/IBrowser.aidl b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/IBrowser.aidl index ed9a123..e9b0e5e9 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/IBrowser.aidl +++ b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/IBrowser.aidl
@@ -36,4 +36,7 @@ void setBottomView(in IObjectWrapper view) = 10; ITab createTab() = 11; + + void setTopViewAndScrollingBehavior(in IObjectWrapper view, in int minHeight, + in boolean pinToContentTop) = 12; }
diff --git a/weblayer/browser/tab_impl.cc b/weblayer/browser/tab_impl.cc index f5ca506..7a2ef4e 100644 --- a/weblayer/browser/tab_impl.cc +++ b/weblayer/browser/tab_impl.cc
@@ -772,6 +772,10 @@ TranslateClientImpl::FromWebContents(web_contents()) ->ManualTranslateWhenReady(); } + +void TabImpl::SetTopControlsMinHeight(JNIEnv* env, int min_height) { + top_controls_min_height_ = min_height; +} #endif // OS_ANDROID content::WebContents* TabImpl::OpenURLFromTab( @@ -883,6 +887,14 @@ #endif } +int TabImpl::GetTopControlsMinHeight() { +#if defined(OS_ANDROID) + return top_controls_min_height_; +#else + return 0; +#endif +} + int TabImpl::GetBottomControlsHeight() { #if defined(OS_ANDROID) return bottom_controls_container_view_
diff --git a/weblayer/browser/tab_impl.h b/weblayer/browser/tab_impl.h index 2b36d03..56b6e37 100644 --- a/weblayer/browser/tab_impl.h +++ b/weblayer/browser/tab_impl.h
@@ -193,6 +193,7 @@ const base::android::JavaParamRef<jstring>& js_object_name); jboolean CanTranslate(JNIEnv* env); void ShowTranslateUi(JNIEnv* env); + void SetTopControlsMinHeight(JNIEnv* env, int min_height); #endif ErrorPageDelegate* error_page_delegate() { return error_page_delegate_; } @@ -257,6 +258,7 @@ scoped_refptr<content::FileSelectListener> listener, const blink::mojom::FileChooserParams& params) override; int GetTopControlsHeight() override; + int GetTopControlsMinHeight() override; int GetBottomControlsHeight() override; bool DoBrowserControlsShrinkRendererSize( const content::WebContents* web_contents) override; @@ -365,6 +367,7 @@ base::android::ScopedJavaGlobalRef<jobject> java_impl_; std::unique_ptr<BrowserControlsNavigationStateHandler> browser_controls_navigation_state_handler_; + int top_controls_min_height_ = 0; // Last value supplied to UpdateBrowserControlsState(). content::BrowserControlsState current_browser_controls_state_ =
diff --git a/weblayer/public/java/org/chromium/weblayer/Browser.java b/weblayer/public/java/org/chromium/weblayer/Browser.java index 41ec9e5..6726b666 100644 --- a/weblayer/public/java/org/chromium/weblayer/Browser.java +++ b/weblayer/public/java/org/chromium/weblayer/Browser.java
@@ -217,6 +217,33 @@ } /** + * Sets the View shown at the top of the browser. The top-view is typically used to show the + * uri. This method also allows you to control the scrolling behavior of the top-view by setting + * a minimum height it will scroll to, and pinning the top-view to the top of the web contents. + * + * @param view The new top-view, or null to remove the view. + * @param minHeight The minimum height in pixels that the top controls can scoll up to. A value + * of 0 means the top-view should scroll entirely off screen. + * @param pinToContentTop Whether the top-view should only be expanded when the web + * content is scrolled to the top. A true value makes the top-view behave as though it + * were inserted into the top of the page content. + * + * @since 86 + */ + public void setTopView(@Nullable View view, int minHeight, boolean pinToContentTop) { + ThreadCheck.ensureOnUiThread(); + if (WebLayer.getSupportedMajorVersionInternal() < 86) { + throw new UnsupportedOperationException(); + } + try { + mImpl.setTopViewAndScrollingBehavior( + ObjectWrapper.wrap(view), minHeight, pinToContentTop); + } catch (RemoteException e) { + throw new APICallException(e); + } + } + + /** * Sets the View shown at the bottom of the browser. A value of null removes the view. * * @param view The new bottom-view.
diff --git a/weblayer/shell/android/shell_apk/res/menu/app_menu.xml b/weblayer/shell/android/shell_apk/res/menu/app_menu.xml index 624b15e..7fa5c3c8 100644 --- a/weblayer/shell/android/shell_apk/res/menu/app_menu.xml +++ b/weblayer/shell/android/shell_apk/res/menu/app_menu.xml
@@ -15,6 +15,9 @@ <item android:id="@+id/toggle_bottom_view_id" android:checkable="true" android:title="Bottom view" /> + <item android:id="@+id/toggle_top_view_min_height_id" + android:checkable="true" + android:title="Set top view min height" /> <item android:id="@+id/site_settings_menu_id" android:title="Site Settings" /> <item android:id="@+id/translate_menu_id"
diff --git a/weblayer/shell/android/shell_apk/src/org/chromium/weblayer/shell/WebLayerShellActivity.java b/weblayer/shell/android/shell_apk/src/org/chromium/weblayer/shell/WebLayerShellActivity.java index f3a98b0..eca7285 100644 --- a/weblayer/shell/android/shell_apk/src/org/chromium/weblayer/shell/WebLayerShellActivity.java +++ b/weblayer/shell/android/shell_apk/src/org/chromium/weblayer/shell/WebLayerShellActivity.java
@@ -139,6 +139,7 @@ private List<Tab> mPreviousTabList = new ArrayList<>(); private Runnable mExitFullscreenRunnable; private View mBottomView; + private int mTopViewMinHeight; private boolean mInIncognitoMode; @Override @@ -180,6 +181,8 @@ popup.getMenuInflater().inflate(R.menu.app_menu, popup.getMenu()); MenuItem bottomMenuItem = popup.getMenu().findItem(R.id.toggle_bottom_view_id); bottomMenuItem.setChecked(mBottomView != null); + MenuItem topMenuItem = popup.getMenu().findItem(R.id.toggle_top_view_min_height_id); + topMenuItem.setChecked(mTopViewMinHeight > 0); popup.getMenu() .findItem(R.id.translate_menu_id) .setVisible(mBrowser.getActiveTab().canTranslate()); @@ -214,6 +217,12 @@ return true; } + if (item.getItemId() == R.id.toggle_top_view_min_height_id) { + mTopViewMinHeight = (mTopViewMinHeight == 0) ? 50 : 0; + mBrowser.setTopView(mTopContentsContainer, mTopViewMinHeight, false); + return true; + } + if (item.getItemId() == R.id.site_settings_menu_id) { // TODO(crbug.com/1083233): Figure out the right long-term behavior here. if (mInIncognitoMode) return true;