diff --git a/DEPS b/DEPS index 1a5f282..a8649cb 100644 --- a/DEPS +++ b/DEPS
@@ -179,22 +179,22 @@ # 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': '48aa52f7305a0dc0e611c8cfa0031629054ba3e4', + 'angle_revision': 'f483d4ee4696568b7fb5015ff896220b8db327cf', # 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': '6652f0b6428777b5a4a3d191cc30d8b31366b999', + 'swiftshader_revision': 'a68a80a4dbf9dc7fab42a2734c854a41d23136cc', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': '1f088ab877cbbca8ed383e327e1460ae08eb6cb0', + 'pdfium_revision': '94e600d98301661502135a89db1fb0cc7caae5e9', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. # # Note this revision should be updated with # third_party/boringssl/roll_boringssl.py, not roll-dep. - 'boringssl_revision': 'bc4c09df6416a3a0d0cf321c6c13023c77e2fec4', + 'boringssl_revision': '76918d016414bf1d71a86d28239566fbcf8aacf0', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling google-toolbox-for-mac # and whatever else without interference from each other. @@ -230,7 +230,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': '1b3fb455bf1849f1e6187e1eaeaef32b9f30d3c5', + 'catapult_revision': 'c98b1ee7e410b2fb2f7dc9e2eb01804cf7c94fcb', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -306,7 +306,7 @@ # 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': '780eaa6043f26e953f32aff96281b94ffc6ec9ed', + 'quiche_revision': '13753e667da5dac41768857b2e1c6dc077917317', # 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. @@ -314,7 +314,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libexpat # and whatever else without interference from each other. - 'libexpat_revision': 'a7bc26b69768f7fb24f0c7976fae24b157b85b13', + 'libexpat_revision': '25d3c190c69ea7f98e2826f901fd9e28b6f7f3fd', # TODO(crbug.com/941824): The values below need to be kept in sync # between //DEPS and //buildtools/DEPS, so if you're updating one, @@ -862,7 +862,7 @@ # Build tools for Chrome OS. Note: This depends on third_party/pyelftools. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '7c836ccb431d88c2a337047d21135e4100362754', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'b97e8677d34906fb963c3389893acd0bc4f47912', 'condition': 'checkout_linux', }, @@ -956,7 +956,7 @@ }, 'src/third_party/glslang/src': - Var('chromium_git') + '/external/github.com/KhronosGroup/glslang.git' + '@' + 'a959deb00750826fb087171d663947df550a3339', + Var('chromium_git') + '/external/github.com/KhronosGroup/glslang.git' + '@' + '834ee546f93d33a80fb2dea6fdef6764f8730b75', 'src/third_party/google_toolbox_for_mac/src': { 'url': Var('chromium_git') + '/external/github.com/google/google-toolbox-for-mac.git' + '@' + Var('google_toolbox_for_mac_revision'), @@ -1252,7 +1252,7 @@ Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '6f26bce0b1c4e8ce0e13332f7c0083788def5fdf', 'src/third_party/openscreen/src': - Var('chromium_git') + '/openscreen' + '@' + 'af60f62955c6101bbc4223f30e7685a824369058', + Var('chromium_git') + '/openscreen' + '@' + 'd0f315b3fac883c1e34c1ea2d768118efeffb3bc', 'src/third_party/openxr/src': { 'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + '46d7cb392019e934e2944bdd317be8ed5176b3f2', @@ -1470,7 +1470,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '2701c130839edbeb226735b0775966b6423d9e83', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'c71d85bc4e719fcf28f8f89b2975292391f1c021', + Var('webrtc_git') + '/src.git' + '@' + 'db8df1765017ec14b8fda3dcb07646f50835f60d', 'src/third_party/xdg-utils': { 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d', @@ -1532,7 +1532,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@930722709254c044a05cec3f2cab366c2d25d475', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@74af4241e484377e6dca35b868c9bf4638348351', 'condition': 'checkout_src_internal', },
diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 71eb728..13b2ae5 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py
@@ -1323,7 +1323,6 @@ 'build/android/gyp/create_apk_operations_script.pydeps', 'build/android/gyp/create_java_binary_script.pydeps', 'build/android/gyp/create_size_info_files.pydeps', - 'build/android/gyp/create_tool_wrapper.pydeps', 'build/android/gyp/desugar.pydeps', 'build/android/gyp/dexsplitter.pydeps', 'build/android/gyp/dex.pydeps',
diff --git a/WATCHLISTS b/WATCHLISTS index c06cccc..363fbfdd 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -722,7 +722,10 @@ '|services/resource_coordinator/', }, 'chrome_performance_manager': { - 'filepath': 'chrome/browser/performance_manager/', + 'filepath': 'chrome/browser/performance_manager/'\ + '|chrome/common/performance_manager/'\ + '|chrome/renderer/performance_manager/'\ + '|components/performance_manager/', }, 'chromecast': { 'filepath': 'chromecast/',
diff --git a/android_webview/browser/gfx/skia_output_surface_dependency_webview.cc b/android_webview/browser/gfx/skia_output_surface_dependency_webview.cc index f753cffa..1ed41961 100644 --- a/android_webview/browser/gfx/skia_output_surface_dependency_webview.cc +++ b/android_webview/browser/gfx/skia_output_surface_dependency_webview.cc
@@ -118,4 +118,11 @@ // No GpuChannelManagerDelegate here, so leave it no-op for now. } +void SkiaOutputSurfaceDependencyWebView::DidLoseContext( + bool offscreen, + gpu::error::ContextLostReason reason, + const GURL& active_url) { + // No GpuChannelManagerDelegate here, so leave it no-op for now. +} + } // namespace android_webview
diff --git a/android_webview/browser/gfx/skia_output_surface_dependency_webview.h b/android_webview/browser/gfx/skia_output_surface_dependency_webview.h index ff27ec25..66b06ea 100644 --- a/android_webview/browser/gfx/skia_output_surface_dependency_webview.h +++ b/android_webview/browser/gfx/skia_output_surface_dependency_webview.h
@@ -45,6 +45,9 @@ base::WeakPtr<gpu::ImageTransportSurfaceDelegate> stub) override; void RegisterDisplayContext(gpu::DisplayContext* display_context) override; void UnregisterDisplayContext(gpu::DisplayContext* display_context) override; + void DidLoseContext(bool offscreen, + gpu::error::ContextLostReason reason, + const GURL& active_url) override; private: gl::GLSurface* const gl_surface_;
diff --git a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc index 1a8f0801a..83154d42 100644 --- a/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc +++ b/android_webview/browser/network_service/aw_proxying_restricted_cookie_manager.cc
@@ -30,11 +30,10 @@ aw_restricted_cookie_manager_(aw_restricted_cookie_manager), client_listener_(std::move(client_listener)) {} - void OnCookieChange(const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause) override { + void OnCookieChange(const net::CookieChangeInfo& change) override { if (aw_restricted_cookie_manager_ && aw_restricted_cookie_manager_->AllowCookies(url_, site_for_cookies_)) - client_listener_->OnCookieChange(cookie, cause); + client_listener_->OnCookieChange(change); } private:
diff --git a/android_webview/lib/webview_entry_point.cc b/android_webview/lib/webview_entry_point.cc index 900a6f8f..66281e0a 100644 --- a/android_webview/lib/webview_entry_point.cc +++ b/android_webview/lib/webview_entry_point.cc
@@ -13,7 +13,7 @@ switch (library_process_type) { case base::android::PROCESS_WEBLAYER: case base::android::PROCESS_WEBLAYER_CHILD: - return weblayer::OnJNIOnLoadInit(); + return weblayer::OnJNIOnLoadInit("resources.pak"); break; default: return android_webview::OnJNIOnLoadInit();
diff --git a/android_webview/system_webview_apk_tmpl.gni b/android_webview/system_webview_apk_tmpl.gni index 9a5c392..c417bc6 100644 --- a/android_webview/system_webview_apk_tmpl.gni +++ b/android_webview/system_webview_apk_tmpl.gni
@@ -10,7 +10,6 @@ import("//build/util/version.gni") import("//chrome/android/trichrome.gni") import("//tools/v8_context_snapshot/v8_context_snapshot.gni") -import("//weblayer/variables.gni") declare_args() { # Android package name to use when compiling the system_webview_apk and @@ -35,10 +34,7 @@ ] target_sdk_version = android_sdk_version - locale_config_java_packages = [ - webview_locale_config_java_package, - weblayer_locale_config_java_package, - ] + locale_config_java_packages = [ webview_locale_config_java_package ] if (!defined(alternative_android_sdk_dep)) { alternative_android_sdk_dep = webview_framework_dep
diff --git a/ash/public/cpp/ash_features.cc b/ash/public/cpp/ash_features.cc index f796b13..ec59bd4 100644 --- a/ash/public/cpp/ash_features.cc +++ b/ash/public/cpp/ash_features.cc
@@ -30,7 +30,7 @@ base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kLockScreenMediaControls{"LockScreenMediaControls", - base::FEATURE_DISABLED_BY_DEFAULT}; + base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kHideArcMediaNotifications{ "HideArcMediaNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/ash/system/message_center/stacked_notification_bar.cc b/ash/system/message_center/stacked_notification_bar.cc index 1a515931..720bfe87 100644 --- a/ash/system/message_center/stacked_notification_bar.cc +++ b/ash/system/message_center/stacked_notification_bar.cc
@@ -127,8 +127,12 @@ IDS_ASH_MESSAGE_CENTER_EXPAND_ALL_NOTIFICATIONS_BUTTON_LABEL))) { SetVisible(false); + int left_padding = features::IsUnifiedMessageCenterRefactorEnabled() + ? 0 + : kStackingNotificationClearAllButtonPadding.left(); auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>( - views::BoxLayout::Orientation::kHorizontal)); + views::BoxLayout::Orientation::kHorizontal, + gfx::Insets(0, left_padding, 0, 0))); layout->set_cross_axis_alignment( views::BoxLayout::CrossAxisAlignment::kStretch);
diff --git a/ash/system/message_center/unified_message_center_bubble_unittest.cc b/ash/system/message_center/unified_message_center_bubble_unittest.cc index a6e5bf2..a3b210f 100644 --- a/ash/system/message_center/unified_message_center_bubble_unittest.cc +++ b/ash/system/message_center/unified_message_center_bubble_unittest.cc
@@ -21,6 +21,8 @@ using message_center::MessageCenter; using message_center::Notification; +#include <iostream> + namespace ash { class UnifiedMessageCenterBubbleTest : public AshTestBase { @@ -73,6 +75,10 @@ return GetMessageCenterBubble()->message_center_view()->collapsed(); } + bool IsQuickSettingsCollapsed() { + return !GetSystemTrayBubble()->controller_for_test()->IsExpanded(); + } + // Helper functions for focus cycle testing. void DoTab() { ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); @@ -277,20 +283,24 @@ (4 * kMessageCenterCollapseThreshold); GetPrimaryUnifiedSystemTray()->CloseBubble(); - // Message center should open in collapsed state when screen height is + // Message center should open in expanded state when screen height is // limited. UpdateDisplay(base::StringPrintf("1000x%d", small_display_height)); GetPrimaryUnifiedSystemTray()->ShowBubble(true); + WaitForAnimation(); + EXPECT_TRUE(IsQuickSettingsCollapsed()); + EXPECT_FALSE(IsMessageCenterCollapsed()); + + // Message center should be collapsed when quick settings is expanded + // with limited screen height. + ToggleExpanded(); + WaitForAnimation(); EXPECT_TRUE(IsMessageCenterCollapsed()); ToggleExpanded(); WaitForAnimation(); EXPECT_FALSE(IsMessageCenterCollapsed()); - ToggleExpanded(); - WaitForAnimation(); - EXPECT_TRUE(IsMessageCenterCollapsed()); - GetPrimaryUnifiedSystemTray()->CloseBubble(); UpdateDisplay(base::StringPrintf("1000x%d", large_display_height));
diff --git a/ash/system/unified/feature_pods_container_view.cc b/ash/system/unified/feature_pods_container_view.cc index 319244a..7ce96e2c 100644 --- a/ash/system/unified/feature_pods_container_view.cc +++ b/ash/system/unified/feature_pods_container_view.cc
@@ -225,14 +225,35 @@ y * expanded_amount_ + collapsed_y * (1.0 - expanded_amount_)); } -void FeaturePodsContainerView::SetMaxHeight(int max_height) { - int feature_pod_rows = - (max_height - kUnifiedFeaturePodBottomPadding - - kUnifiedFeaturePodTopPadding) / - (kUnifiedFeaturePodSize.height() + kUnifiedFeaturePodVerticalPadding); +int FeaturePodsContainerView::CalculateRowsFromHeight(int height) { + int available_height = + height - kUnifiedFeaturePodBottomPadding - kUnifiedFeaturePodTopPadding; + int row_height = + kUnifiedFeaturePodSize.height() + kUnifiedFeaturePodVerticalPadding; - feature_pod_rows = std::min(feature_pod_rows, kUnifiedFeaturePodMaxRows); - feature_pod_rows = std::max(feature_pod_rows, kUnifiedFeaturePodMinRows); + // Only use the max number of rows when there is enough space + // to show the fully expanded message center and quick settings. + if (available_height > (kUnifiedFeaturePodMaxRows * row_height) && + available_height % (kUnifiedFeaturePodMaxRows * row_height) > + kMessageCenterCollapseThreshold) { + return kUnifiedFeaturePodMaxRows; + } + + // Use 1 less than the max number of rows when there is enough + // space to show the message center in the collapsed state along + // with the expanded quick settings. + int feature_pod_rows = kUnifiedFeaturePodMaxRows - 1; + if (available_height > (feature_pod_rows * row_height) && + available_height % (feature_pod_rows * row_height) > + kStackedNotificationBarHeight) { + return feature_pod_rows; + } + + return kUnifiedFeaturePodMinRows; +} + +void FeaturePodsContainerView::SetMaxHeight(int max_height) { + int feature_pod_rows = CalculateRowsFromHeight(max_height); if (feature_pod_rows_ != feature_pod_rows) { feature_pod_rows_ = feature_pod_rows;
diff --git a/ash/system/unified/feature_pods_container_view.h b/ash/system/unified/feature_pods_container_view.h index 9955981..b62f02a 100644 --- a/ash/system/unified/feature_pods_container_view.h +++ b/ash/system/unified/feature_pods_container_view.h
@@ -64,6 +64,8 @@ bool OnMouseWheel(const ui::MouseWheelEvent& event) override; const char* GetClassName() const override; + int row_count() const { return feature_pod_rows_; } + private: friend class FeaturePodsContainerViewTest; @@ -79,6 +81,9 @@ // Calculates the ideal bounds for all feature pods. void CalculateIdealBoundsForFeaturePods(); + // Calculate the number of feature pod rows based on available height. + int CalculateRowsFromHeight(int height); + // Calculates the offset for |page_of_view| based on current page and // transition target page. const gfx::Vector2d CalculateTransitionOffset(int page_of_view) const;
diff --git a/ash/system/unified/feature_pods_container_view_unittest.cc b/ash/system/unified/feature_pods_container_view_unittest.cc index d1a36cfe..ebd2f70 100644 --- a/ash/system/unified/feature_pods_container_view_unittest.cc +++ b/ash/system/unified/feature_pods_container_view_unittest.cc
@@ -267,7 +267,8 @@ // Expect 2 rows of feature pods when there is enough height to display them. container()->SetMaxHeight(padding + (2 * (kUnifiedFeaturePodSize.height() + - kUnifiedFeaturePodVerticalPadding))); + kUnifiedFeaturePodVerticalPadding)) + + kMessageCenterCollapseThreshold); expected_number_of_pages = kNumberOfFeaturePods / (2 * kUnifiedFeaturePodItemsInRow); if (kNumberOfFeaturePods % (2 * kUnifiedFeaturePodItemsInRow)) @@ -276,7 +277,7 @@ // Expect 3 rows of feature pods at max even when the max height is very // large. - container()->SetMaxHeight(100 * (kUnifiedFeaturePodSize.height())); + container()->SetMaxHeight(150 * (kUnifiedFeaturePodSize.height())); expected_number_of_pages = kNumberOfFeaturePods / (3 * kUnifiedFeaturePodItemsInRow); if (kNumberOfFeaturePods % (3 * kUnifiedFeaturePodItemsInRow))
diff --git a/ash/system/unified/unified_system_tray_bubble.cc b/ash/system/unified/unified_system_tray_bubble.cc index 3f93b3c..f9ac89136 100644 --- a/ash/system/unified/unified_system_tray_bubble.cc +++ b/ash/system/unified/unified_system_tray_bubble.cc
@@ -103,6 +103,7 @@ int max_height = CalculateMaxHeight(); unified_view_->SetMaxHeight(max_height); bubble_view_->SetMaxHeight(max_height); + controller_->ResetToCollapsedIfRequired(); bubble_view_->AddChildView(new ContainerView(unified_view_)); bubble_view_->set_color(SK_ColorTRANSPARENT);
diff --git a/ash/system/unified/unified_system_tray_controller.cc b/ash/system/unified/unified_system_tray_controller.cc index 48a1702..5975ed66 100644 --- a/ash/system/unified/unified_system_tray_controller.cc +++ b/ash/system/unified/unified_system_tray_controller.cc
@@ -6,6 +6,7 @@ #include "ash/metrics/user_metrics_action.h" #include "ash/metrics/user_metrics_recorder.h" +#include "ash/public/cpp/ash_features.h" #include "ash/public/cpp/pagination/pagination_controller.h" #include "ash/public/cpp/system_tray_client.h" #include "ash/session/session_controller_impl.h" @@ -36,6 +37,7 @@ #include "ash/system/unified/detailed_view_controller.h" #include "ash/system/unified/feature_pod_button.h" #include "ash/system/unified/feature_pod_controller_base.h" +#include "ash/system/unified/feature_pods_container_view.h" #include "ash/system/unified/quiet_mode_feature_pod_controller.h" #include "ash/system/unified/unified_notifier_settings_controller.h" #include "ash/system/unified/unified_system_tray_bubble.h" @@ -103,14 +105,6 @@ std::make_unique<UnifiedBrightnessSliderController>(model_); unified_view_->AddSliderView(brightness_slider_controller_->CreateView()); - // Collapse system tray if there isn't enough space to show notifications when - // it is first opened. - if (bubble_ && bubble_->CalculateMaxHeight() - - unified_view_->GetExpandedSystemTrayHeight() < - kUnifiedNotificationMinimumHeight) { - ResetToCollapsed(); - } - return unified_view_; } @@ -359,11 +353,11 @@ void UnifiedSystemTrayController::InitFeaturePods() { AddFeaturePodItem(std::make_unique<NetworkFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<BluetoothFeaturePodController>(this)); + AddFeaturePodItem(std::make_unique<AccessibilityFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<QuietModeFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<RotationLockFeaturePodController>()); AddFeaturePodItem(std::make_unique<NightLightFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<CastFeaturePodController>(this)); - AddFeaturePodItem(std::make_unique<AccessibilityFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<VPNFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<IMEFeaturePodController>(this)); AddFeaturePodItem(std::make_unique<LocaleFeaturePodController>(this)); @@ -426,9 +420,14 @@ model_->set_expanded_on_open(expanded_amount == 1.0); } -void UnifiedSystemTrayController::ResetToCollapsed() { - unified_view_->SetExpandedAmount(0.0); - animation_->Reset(0); +void UnifiedSystemTrayController::ResetToCollapsedIfRequired() { + if (features::IsUnifiedMessageCenterRefactorEnabled()) { + if (unified_view_->feature_pods_container()->row_count() == + kUnifiedFeaturePodMinRows) { + unified_view_->SetExpandedAmount(0.0); + animation_->Reset(0); + } + } } double UnifiedSystemTrayController::GetDragExpandedAmount(
diff --git a/ash/system/unified/unified_system_tray_controller.h b/ash/system/unified/unified_system_tray_controller.h index 07f4093..185b71f 100644 --- a/ash/system/unified/unified_system_tray_controller.h +++ b/ash/system/unified/unified_system_tray_controller.h
@@ -112,9 +112,9 @@ // Ensure the main view is expanded. Called from the slider bubble controller. void EnsureExpanded(); - // Collapse the tray without animating. Used to open the tray in a collapsed - // state if there is insufficient vertical space. - void ResetToCollapsed(); + // Collapse the tray without animating if there isn't sufficient space for the + // notifications area. + void ResetToCollapsedIfRequired(); // gfx::AnimationDelegate: void AnimationEnded(const gfx::Animation* animation) override;
diff --git a/ash/system/unified/unified_system_tray_view.cc b/ash/system/unified/unified_system_tray_view.cc index 2b27c58..92d0ce81 100644 --- a/ash/system/unified/unified_system_tray_view.cc +++ b/ash/system/unified/unified_system_tray_view.cc
@@ -332,7 +332,7 @@ feature_pods_container_->SetMaxHeight( max_height - top_shortcuts_view_->GetPreferredSize().height() - page_indicator_view_->GetPreferredSize().height() - - sliders_container_->GetPreferredSize().height() - + sliders_container_->GetExpandedHeight() - system_info_view_->GetPreferredSize().height()); if (!features::IsUnifiedMessageCenterRefactorEnabled()) {
diff --git a/ash/system/unified/unified_system_tray_view.h b/ash/system/unified/unified_system_tray_view.h index d86674af..e4f03af2 100644 --- a/ash/system/unified/unified_system_tray_view.h +++ b/ash/system/unified/unified_system_tray_view.h
@@ -148,6 +148,10 @@ void OnWillChangeFocus(views::View* before, views::View* now) override; void OnDidChangeFocus(views::View* before, views::View* now) override; + FeaturePodsContainerView* feature_pods_container() { + return feature_pods_container_; + } + NotificationHiddenView* notification_hidden_view_for_testing() { return notification_hidden_view_; }
diff --git a/ash/wm/overview/overview_grid_event_handler.cc b/ash/wm/overview/overview_grid_event_handler.cc index 9d910347..17c2d18 100644 --- a/ash/wm/overview/overview_grid_event_handler.cc +++ b/ash/wm/overview/overview_grid_event_handler.cc
@@ -4,6 +4,8 @@ #include "ash/wm/overview/overview_grid_event_handler.h" +#include "ash/home_screen/home_screen_controller.h" +#include "ash/public/cpp/ash_features.h" #include "ash/root_window_controller.h" #include "ash/shell.h" #include "ash/wallpaper/wallpaper_view.h" @@ -12,6 +14,7 @@ #include "ash/wm/overview/overview_grid.h" #include "ash/wm/overview/overview_utils.h" #include "ui/compositor/compositor.h" +#include "ui/display/screen.h" #include "ui/events/event.h" #include "ui/events/gestures/fling_curve.h" @@ -128,8 +131,20 @@ CHECK_EQ(ui::EP_PRETARGET, event->phase()); // Events that happen while app list is sliding out during overview should // be ignored to prevent overview from disappearing out from under the user. - if (!IsSlidingOutOverviewFromShelf()) - Shell::Get()->overview_controller()->EndOverview(); + if (!IsSlidingOutOverviewFromShelf()) { + if (Shell::Get()->tablet_mode_controller()->InTabletMode() && + features::IsDragFromShelfToHomeOrOverviewEnabled()) { + // In tablet mode, clicking on tapping on the wallpaper background will + // always head back to home launcher screen. + int64_t display_id = display::Screen::GetScreen() + ->GetDisplayNearestWindow( + static_cast<aura::Window*>(event->target())) + .id(); + Shell::Get()->home_screen_controller()->GoHome(display_id); + } else { + Shell::Get()->overview_controller()->EndOverview(); + } + } event->StopPropagation(); }
diff --git a/ash/wm/overview/overview_session_unittest.cc b/ash/wm/overview/overview_session_unittest.cc index 78958e1..fdad20b1 100644 --- a/ash/wm/overview/overview_session_unittest.cc +++ b/ash/wm/overview/overview_session_unittest.cc
@@ -17,11 +17,13 @@ #include "ash/display/screen_orientation_controller.h" #include "ash/display/screen_orientation_controller_test_api.h" #include "ash/drag_drop/drag_drop_controller.h" +#include "ash/home_screen/home_screen_controller.h" #include "ash/magnifier/docked_magnifier_controller_impl.h" #include "ash/public/cpp/app_types.h" #include "ash/public/cpp/ash_features.h" #include "ash/public/cpp/fps_counter.h" #include "ash/public/cpp/shelf_config.h" +#include "ash/public/cpp/test/shell_test_api.h" #include "ash/public/cpp/window_properties.h" #include "ash/screen_util.h" #include "ash/shelf/shelf.h" @@ -2790,6 +2792,50 @@ EXPECT_FALSE(InOverviewSession()); } +// The class to test overview behavior with kDragFromShelfToHomeOrOverview flag +// enabled. +class OverviewSessionWithDragFromShelfFeatureTest : public OverviewSessionTest { + public: + OverviewSessionWithDragFromShelfFeatureTest() = default; + ~OverviewSessionWithDragFromShelfFeatureTest() override = default; + + void SetUp() override { + scoped_feature_list_.InitAndEnableFeature( + features::kDragFromShelfToHomeOrOverview); + OverviewSessionTest::SetUp(); + EnterTabletMode(); + } + + private: + base::test::ScopedFeatureList scoped_feature_list_; + + DISALLOW_COPY_AND_ASSIGN(OverviewSessionWithDragFromShelfFeatureTest); +}; + +// Tests that in tablet mode, tapping on the background will always go to home +// screen. +TEST_P(OverviewSessionWithDragFromShelfFeatureTest, TapOnBackgroundGoToHome) { + UpdateDisplay("800x600"); + std::unique_ptr<aura::Window> window(CreateTestWindow()); + WindowState* window_state = WindowState::Get(window.get()); + + EXPECT_FALSE(window_state->IsMinimized()); + EXPECT_FALSE(Shell::Get()->home_screen_controller()->IsHomeScreenVisible()); + ToggleOverview(); + EXPECT_TRUE(InOverviewSession()); + + // Tap on the background. + ui::ScopedAnimationDurationScaleMode test_duration_mode( + ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); + GetEventGenerator()->GestureTapAt(gfx::Point(10, 10)); + ShellTestApi().WaitForOverviewAnimationState( + OverviewAnimationState::kExitAnimationComplete); + + EXPECT_FALSE(InOverviewSession()); + EXPECT_TRUE(window_state->IsMinimized()); + EXPECT_TRUE(Shell::Get()->home_screen_controller()->IsHomeScreenVisible()); +} + // TODO(sammiequon): Merge this into SplitViewOverviewSessionTest and rename // that to TabletModeOverviewSessionTest. class OverviewSessionNewLayoutTest : public OverviewSessionTest { @@ -5251,5 +5297,8 @@ , SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, testing::Values(true)); +INSTANTIATE_TEST_SUITE_P(, + OverviewSessionWithDragFromShelfFeatureTest, + testing::Bool()); } // namespace ash
diff --git a/ash/wm/tablet_mode/tablet_mode_controller.cc b/ash/wm/tablet_mode/tablet_mode_controller.cc index 6747e6c3..c4badf1 100644 --- a/ash/wm/tablet_mode/tablet_mode_controller.cc +++ b/ash/wm/tablet_mode/tablet_mode_controller.cc
@@ -682,14 +682,18 @@ } else { state_ = State::kExitingTabletMode; - tablet_mode_window_manager_->SetIgnoreWmEventsForExit(); + // We may have entered tablet mode, then tried to exit before the screenshot + // was taken. In this case |tablet_mode_window_manager_| will be null. + if (tablet_mode_window_manager_) + tablet_mode_window_manager_->SetIgnoreWmEventsForExit(); + for (auto& observer : tablet_mode_observers_) observer.OnTabletModeEnding(); - // Make sure that calling `TabletModeController::InTabletMode()` returns - // false from now on. - std::unique_ptr<TabletModeWindowManager> to_be_removed_tablet_mode_wm = - std::move(tablet_mode_window_manager_); - to_be_removed_tablet_mode_wm->Shutdown(); + + if (tablet_mode_window_manager_) + tablet_mode_window_manager_->Shutdown(); + tablet_mode_window_manager_.reset(); + base::RecordAction(base::UserMetricsAction("Touchview_Disabled")); RecordTabletModeUsageInterval(TABLET_MODE_INTERVAL_ACTIVE); state_ = State::kInClamshellMode; @@ -924,6 +928,8 @@ } void TabletModeController::FinishInitTabletMode() { + DCHECK_EQ(State::kEnteringTabletMode, state_); + for (auto& observer : tablet_mode_observers_) observer.OnTabletModeStarting(); tablet_mode_window_manager_ = std::make_unique<TabletModeWindowManager>();
diff --git a/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc b/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc index 3160c40..0a230ea9 100644 --- a/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc +++ b/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc
@@ -1729,6 +1729,21 @@ EXPECT_FALSE(IsScreenshotShown()); } +// Tests that if we exit tablet mode before the screenshot is taken, there is no +// crash. (See https://crbug.com/1012879). +TEST_P(TabletModeControllerScreenshotTest, NoCrashWhenExitingWithoutWaiting) { + // One non-maximized window is needed for screenshot to be taken. + auto window = CreateTestWindow(gfx::Rect(200, 200)); + + SetTabletMode(true); + SetTabletMode(false); + EXPECT_FALSE(IsScreenshotShown()); + + // Tests that reentering tablet mode without waiting causes no crash either. + SetTabletMode(true); + EXPECT_FALSE(IsScreenshotShown()); +} + INSTANTIATE_TEST_SUITE_P(, TabletModeControllerTest, testing::Bool()); INSTANTIATE_TEST_SUITE_P(, TabletModeControllerInitedFromPowerManagerClientTest,
diff --git a/base/mac/foundation_util.h b/base/mac/foundation_util.h index 19dc089..4ee2bc00 100644 --- a/base/mac/foundation_util.h +++ b/base/mac/foundation_util.h
@@ -53,7 +53,9 @@ typedef unsigned int NSSearchPathDomainMask; #endif -#if defined(OS_IOS) || defined(MAC_OS_X_VERSION_10_15) +#if defined(OS_IOS) || \ + (defined(MAC_OS_X_VERSION_10_15) && \ + MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_15) typedef struct CF_BRIDGED_TYPE(id) __SecCertificate* SecCertificateRef; typedef struct CF_BRIDGED_TYPE(id) __SecKey* SecKeyRef; typedef struct CF_BRIDGED_TYPE(id) __SecPolicy* SecPolicyRef;
diff --git a/build/android/BUILD.gn b/build/android/BUILD.gn index 486fc1c..314b41f9 100644 --- a/build/android/BUILD.gn +++ b/build/android/BUILD.gn
@@ -131,23 +131,3 @@ "//third_party/android_build_tools/bundletool/bundletool-all-0.10.3.jar", ] } - -# Create wrapper scripts in out/bin that takes care of setting the -# --output-directory. -_scripts_to_wrap = [ - "asan_symbolize.py", - "tombstones.py", -] - -_wrapper_targets = [] -foreach(script, _scripts_to_wrap) { - _target_name = get_path_info(script, "name") + "_wrapper" - _wrapper_targets += [ ":$_target_name" ] - wrapper_script(_target_name) { - target = script - } -} - -group("wrapper_scripts") { - deps = _wrapper_targets -}
diff --git a/build/android/gyp/create_tool_wrapper.py b/build/android/gyp/create_tool_wrapper.py deleted file mode 100755 index 44330045..0000000 --- a/build/android/gyp/create_tool_wrapper.py +++ /dev/null
@@ -1,46 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2016 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. - -"""Creates a simple wrapper script that passes the correct --output-directory. -""" - -import argparse -import os - -_TEMPLATE = """\ -#!/usr/bin/env python -# -# This file was generated by //build/android/gyp/create_tool_script.py - -import os -import sys - -cmd = '{cmd}' -args = [os.path.basename(cmd), '{flag_name}={output_directory}'] + sys.argv[1:] -os.execv(cmd, args) -""" - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--output', help='Output path for executable script.') - parser.add_argument('--target', help='Path to script being wrapped.') - parser.add_argument('--output-directory', help='Value for --output-directory') - parser.add_argument('--flag-name', - help='Flag name to use instead of --output-directory', - default='--output-directory') - args = parser.parse_args() - - with open(args.output, 'w') as script: - script.write(_TEMPLATE.format( - cmd=os.path.abspath(args.target), - flag_name=args.flag_name, - output_directory=os.path.abspath(args.output_directory))) - - os.chmod(args.output, 0750) - - -if __name__ == '__main__': - main()
diff --git a/build/android/gyp/create_tool_wrapper.pydeps b/build/android/gyp/create_tool_wrapper.pydeps deleted file mode 100644 index 75b8326e..0000000 --- a/build/android/gyp/create_tool_wrapper.pydeps +++ /dev/null
@@ -1,3 +0,0 @@ -# Generated by running: -# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/create_tool_wrapper.pydeps build/android/gyp/create_tool_wrapper.py -create_tool_wrapper.py
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index 4326816..47901341 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni
@@ -128,53 +128,6 @@ } } -# Writes a script to root_out_dir/bin that passes --output-directory to the -# wrapped script, in addition to forwarding arguments. Most / all of these -# wrappers should be made deps of //tools/android:android_tools. -# -# Variables -# target: Script to wrap. -# flag_name: Default is "--output-directory" -# -# Example -# wrapper_script("foo_wrapper") { -# target = "//pkg/foo.py" -# } -template("wrapper_script") { - action_with_pydeps(target_name) { - forward_variables_from(invoker, - [ - "data", - "data_deps", - "deps", - ]) - _name = get_path_info(invoker.target, "name") - _output = "$root_out_dir/bin/$_name" - - script = "//build/android/gyp/create_tool_wrapper.py" - outputs = [ - _output, - ] - - # The target isn't actually used by the script, but it's nice to have GN - # check that it exists. - inputs = [ - invoker.target, - ] - args = [ - "--output", - rebase_path(_output, root_build_dir), - "--target", - rebase_path(invoker.target, root_build_dir), - "--output-directory", - rebase_path(root_out_dir, root_build_dir), - ] - if (defined(invoker.flag_name)) { - args += [ "--flag-name=${invoker.flag_name}" ] - } - } -} - if (enable_java_templates) { import("//build/config/sanitizers/sanitizers.gni") import("//tools/grit/grit_rule.gni")
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 6ea1b65..41ba5ef 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -8899502756487089920 \ No newline at end of file +8899327402780790352 \ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index f17fc2b9..b83e199 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -8899505638123521760 \ No newline at end of file +8899333129287039888 \ No newline at end of file
diff --git a/build/util/generate_wrapper.py b/build/util/generate_wrapper.py index 5a7d1ee8..82b13c3 100755 --- a/build/util/generate_wrapper.py +++ b/build/util/generate_wrapper.py
@@ -57,8 +57,9 @@ def ExpandWrappedPath(arg): m = _WRAPPED_PATH_RE.match(arg) if m: - return os.path.join( + relpath = os.path.join( os.path.relpath(_SCRIPT_DIR), _PATH_TO_OUTPUT_DIR, m.group(1)) + return os.path.normpath(relpath) return arg
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni index da5fecc..d1e968d 100644 --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -14,7 +14,6 @@ import("//chrome/android/features/dev_ui/dev_ui_module.gni") import("//chrome/common/features.gni") import("//device/vr/buildflags/buildflags.gni") -import("//weblayer/variables.gni") import("channel.gni") declare_args() { @@ -345,7 +344,6 @@ locale_config_java_packages = [ "org.chromium.chrome.browser", webview_locale_config_java_package, - weblayer_locale_config_java_package, ] if (android_64bit_target_cpu) { # Build //android_webview:monochrome with the opposite bitness that
diff --git a/chrome/android/java/res/layout/location_bar_base.xml b/chrome/android/java/res/layout/location_bar_base.xml index 489d313..96c38c2 100644 --- a/chrome/android/java/res/layout/location_bar_base.xml +++ b/chrome/android/java/res/layout/location_bar_base.xml
@@ -11,6 +11,10 @@ <include layout="@layout/location_status" /> + <!-- + Padding for this view is adjusted in LocationBarPhone when the search engine logo is active. + This is to prevent the url clipping described in crbug.com/1012436. + --> <include android:layout_width="match_parent" android:layout_height="match_parent"
diff --git a/chrome/android/java/res_download/layout/download_rename_custom_dialog.xml b/chrome/android/java/res_download/layout/download_rename_custom_dialog.xml index 5d830fe8..035fddb 100644 --- a/chrome/android/java/res_download/layout/download_rename_custom_dialog.xml +++ b/chrome/android/java/res_download/layout/download_rename_custom_dialog.xml
@@ -15,34 +15,20 @@ android:layout_height="wrap_content" style="@style/AlertDialogContent"> - <TextView - android:id="@+id/subtitle" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginBottom="16dp" - android:visibility="gone"/> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - - <org.chromium.ui.widget.ChromeImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:srcCompat="@drawable/ic_drive_file_24dp" - app:tint="@color/default_icon_color" - style="@style/ListItemStartIcon" /> - <org.chromium.chrome.browser.ui.widget.text.AlertDialogEditText android:id="@+id/file_name" android:layout_width="match_parent" android:layout_height="48dp" android:cursorVisible="true" + android:layout_marginStart="-4dp" + android:layout_marginEnd="-4dp" android:singleLine="true" /> - </LinearLayout> - + <TextView + android:id="@+id/error_message" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone"/> </LinearLayout> </org.chromium.chrome.browser.download.home.rename.RenameDialogCustomView>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java index 121b2f1..443e07d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java
@@ -253,20 +253,25 @@ } /** - * Records whether Chrome was started in a language other than the system language but we - * support the system language. That can happen if the user changes the system language and the - * required language split cannot be installed in time. + * Records whether Chrome was started in a language other than the system language. + * Also records if the UI and system languages differ but we support the system language. That + * can happen if the user changes the system language and the required language split cannot be + * installed in time. */ private void recordWhetherSystemAndAppLanguagesDiffer() { String uiLanguage = LocaleUtils.toLanguage(ChromeLocalizationUtils.getUiLocaleStringForCompressedPak()); String systemLanguage = LocaleUtils.toLanguage(LocaleUtils.toLanguageTag(Locale.getDefault())); - boolean isWrongLanguage = !systemLanguage.equals(uiLanguage) - && isLanguageSupported( - systemLanguage, ResourceBundle.getAvailableCompressedPakLocales()); + + boolean systemLanguageIsUiLanguage = systemLanguage.equals(uiLanguage); RecordHistogram.recordBooleanHistogram( - "Android.Language.WrongLanguageAfterResume", isWrongLanguage); + "Android.Language.UiIsSystemLanguage", systemLanguageIsUiLanguage); + + boolean systemLanguageIsSupported = isLanguageSupported( + systemLanguage, ResourceBundle.getAvailableCompressedPakLocales()); + RecordHistogram.recordBooleanHistogram("Android.Language.WrongLanguageAfterResume", + !systemLanguageIsUiLanguage && systemLanguageIsSupported); } private static boolean isLanguageSupported(String language, String[] compressedLocales) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/home/rename/RenameDialogCustomView.java b/chrome/android/java/src/org/chromium/chrome/browser/download/home/rename/RenameDialogCustomView.java index 4866c2fd..4770524 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/home/rename/RenameDialogCustomView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/home/rename/RenameDialogCustomView.java
@@ -7,6 +7,7 @@ import static android.content.Context.INPUT_METHOD_SERVICE; import android.content.Context; +import android.graphics.PorterDuff; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -16,6 +17,7 @@ import android.widget.ScrollView; import android.widget.TextView; +import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback; import org.chromium.chrome.browser.ui.widget.text.AlertDialogEditText; import org.chromium.chrome.download.R; @@ -25,7 +27,7 @@ * Content View of dialog in Download Home that allows users to rename a downloaded file. */ public class RenameDialogCustomView extends ScrollView { - private TextView mSubtitleView; + private TextView mErrorMessageView; private AlertDialogEditText mFileName; private Callback</*Empty*/ Boolean> mEmptyFileNameObserver; @@ -37,7 +39,7 @@ @Override protected void onFinishInflate() { super.onFinishInflate(); - mSubtitleView = findViewById(R.id.subtitle); + mErrorMessageView = findViewById(R.id.error_message); mFileName = findViewById(R.id.file_name); mFileName.addTextChangedListener(new TextWatcher() { @Override @@ -68,24 +70,22 @@ */ public void updateToErrorView(String suggestedName, @RenameResult int renameResult) { if (renameResult == RenameResult.SUCCESS) return; - if (!TextUtils.isEmpty(suggestedName)) { - mFileName.setText(suggestedName); - } - mFileName.clearFocus(); - highlightEditText(suggestedName); - mSubtitleView.setVisibility(View.VISIBLE); + + setEditText(suggestedName); + setEditTextStyle(true); + setErrorMessageVisibility(true); switch (renameResult) { case RenameResult.FAILURE_NAME_CONFLICT: - mSubtitleView.setText(R.string.rename_failure_name_conflict); + mErrorMessageView.setText(R.string.rename_failure_name_conflict); break; case RenameResult.FAILURE_NAME_TOO_LONG: - mSubtitleView.setText(R.string.rename_failure_name_too_long); + mErrorMessageView.setText(R.string.rename_failure_name_too_long); break; case RenameResult.FAILURE_NAME_INVALID: - mSubtitleView.setText(R.string.rename_failure_name_invalid); + mErrorMessageView.setText(R.string.rename_failure_name_invalid); break; case RenameResult.FAILURE_UNAVAILABLE: - mSubtitleView.setText(R.string.rename_failure_unavailable); + mErrorMessageView.setText(R.string.rename_failure_unavailable); break; default: break; @@ -97,12 +97,9 @@ * Initialize components in view: hide subtitle and reset value in the editTextBox. */ public void initializeView(String suggestedName) { - mSubtitleView.setVisibility(View.GONE); - if (!TextUtils.isEmpty(suggestedName)) { - mFileName.setText(suggestedName); - } - mFileName.clearFocus(); - highlightEditText(suggestedName); + setEditText(suggestedName); + setEditTextStyle(false); + setErrorMessageVisibility(false); } /** @@ -147,4 +144,29 @@ inputMethodManager.showSoftInput(mFileName, InputMethodManager.SHOW_FORCED); } } + + private void setErrorMessageVisibility(boolean hasError) { + mErrorMessageView.setTextColor( + ApiCompatibilityUtils.getColor(getResources(), R.color.error_text_color)); + mErrorMessageView.setVisibility(hasError ? View.VISIBLE : View.GONE); + } + + private void setEditText(String suggestedName) { + if (!TextUtils.isEmpty(suggestedName)) { + mFileName.setText(suggestedName); + } + mFileName.clearFocus(); + highlightEditText(suggestedName); + } + + private void setEditTextStyle(boolean hasError) { + if (hasError) { + // Change the edit text box underline tint color. + mFileName.getBackground().setColorFilter( + ApiCompatibilityUtils.getColor(getResources(), R.color.default_red), + PorterDuff.Mode.SRC_IN); + } else { + mFileName.getBackground().clearColorFilter(); + } + } } \ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java index b96bb5e1..fed85726 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java
@@ -43,9 +43,10 @@ protected void onFinishInflate() { super.onFinishInflate(); + mUrlBar = findViewById(R.id.url_bar); + updateUrlBarPaddingForSearchEngineIcon(); // Assign the first visible view here only if it hasn't been set by the DSE icon experiment. // See onNativeLibrary ready for when this variable is set for the DSE icon case. - mUrlBar = findViewById(R.id.url_bar); mFirstVisibleFocusedView = mFirstVisibleFocusedView == null ? mUrlBar : mFirstVisibleFocusedView; @@ -90,6 +91,7 @@ shouldShowSearchEngineLogo, isSearchEngineGoogle, searchEngineUrl); mIconView = mStatusView.findViewById(R.id.location_bar_status_icon); mFirstVisibleFocusedView = mStatusView; + updateUrlBarPaddingForSearchEngineIcon(); // When the search engine icon is enabled, icons are translations into the parent view's // padding area. Set clip padding to false to prevent them from getting clipped. @@ -99,6 +101,24 @@ } /** + * Factor in extra padding added for the focused state when the search engine icon is active. + */ + private void updateUrlBarPaddingForSearchEngineIcon() { + if (mUrlBar == null || mStatusView == null) return; + + int endPadding = 0; + if (SearchEngineLogoUtils.shouldShowSearchEngineLogo(mToolbarDataProvider.isIncognito())) { + // This padding prevents the UrlBar's content from extending past the available space + // and into the next view. + endPadding = mStatusView.getEndPaddingPixelSizeForFocusState(true) + - mStatusView.getEndPaddingPixelSizeForFocusState(false); + } + + mUrlBar.setPaddingRelative(mUrlBar.getPaddingStart(), mUrlBar.getPaddingTop(), endPadding, + mUrlBar.getPaddingBottom()); + } + + /** * @return The first view visible when the location bar is focused. */ public View getFirstViewVisibleWhenFocused() { @@ -163,8 +183,8 @@ // this translation will be the distance that the url bar needs to travel to arrive at the // desired padding when focused. float translation = urlExpansionPercent - * (mStatusView.getEndPaddingPixelSizeForState(true) - - mStatusView.getEndPaddingPixelSizeForState(false)); + * (mStatusView.getEndPaddingPixelSizeForFocusState(true) + - mStatusView.getEndPaddingPixelSizeForFocusState(false)); if (!hasFocus && mIconView.getVisibility() == VISIBLE && mToolbarDataProvider.getNewTabPageForCurrentTab() != null @@ -332,6 +352,7 @@ boolean isIncognito = getToolbarDataProvider().isIncognito(); boolean shouldShowSearchEngineLogo = SearchEngineLogoUtils.shouldShowSearchEngineLogo(isIncognito); + updateUrlBarPaddingForSearchEngineIcon(); if (mIconView != null) mIconView.setVisibility(shouldShowSearchEngineLogo ? VISIBLE : GONE); setShowIconsWhenUrlFocused(shouldShowSearchEngineLogo); mFirstVisibleFocusedView = shouldShowSearchEngineLogo ? mStatusView : mUrlBar;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java index 2b5ee923..698d2b2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
@@ -523,16 +523,24 @@ } /** @see android.text.TextWatcher#onTextChanged */ - void onTextChanged(CharSequence charSequence) { - // TODO (crbug.com/1012870): This is a workaround for the linked bug. Once the bug is fixed, - // it should be removed. - String urlTextWithAutocomplete = TextUtils.isEmpty(charSequence) - ? "" - : mUrlBarEditingTextStateProvider.getTextWithAutocomplete(); - if (TextUtils.equals(mUrlBarTextWithAutocomplete, urlTextWithAutocomplete)) { - return; + void onTextChanged(CharSequence urlBarText) { + String currentAutocompleteText = mUrlBarEditingTextStateProvider.getTextWithAutocomplete(); + String urlTextWithAutocomplete; + if (TextUtils.isEmpty(urlBarText)) { + // TODO (crbug.com/1012870): This is to workaround the UrlBar text being empty but the + // autocomplete text still pointing at the previous url's autocomplete text. + urlTextWithAutocomplete = ""; + } else if (TextUtils.indexOf(currentAutocompleteText, urlBarText) > -1) { + // TODO(crbug.com/1015147): This is to workaround the UrlBar text pointing to the + // "current" url and the the autocomplete text pointing to the "previous" url. + urlTextWithAutocomplete = currentAutocompleteText; + } else { + // If the above cases don't apply, then we should use the UrlBar text itself. + urlTextWithAutocomplete = urlBarText.toString(); } + if (TextUtils.equals(mUrlBarTextWithAutocomplete, urlTextWithAutocomplete)) return; + mUrlBarTextWithAutocomplete = urlTextWithAutocomplete; boolean isValid = mDelegate.isUrlValid(mUrlBarTextWithAutocomplete); if (isValid != mUrlBarTextIsValidUrl) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java index abdcbc33..44d37259 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java
@@ -122,7 +122,7 @@ // Setup the padding once we're loaded, the other padding changes will happen with post- // layout positioning. setPaddingRelative(getPaddingStart(), getPaddingTop(), - getEndPaddingPixelSizeForState(false), getPaddingBottom()); + getEndPaddingPixelSizeForFocusState(false), getPaddingBottom()); } } @@ -424,7 +424,7 @@ /** * @returns The end padding for the given state. */ - public int getEndPaddingPixelSizeForState(boolean hasFocus) { + public int getEndPaddingPixelSizeForFocusState(boolean hasFocus) { if (hasFocus) { return getResources().getDimensionPixelOffset( R.dimen.sei_location_bar_icon_end_padding_focused);
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd index be5e8c2..c54f33c 100644 --- a/chrome/android/java/strings/android_chrome_strings.grd +++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -1465,10 +1465,10 @@ Rename unavailable </message> <message name="IDS_RENAME_EXTENSION_CONFIRMATION" desc="Subtitle for rename extension dialog in the case that user try to rename the file extension."> - Are you sure you want to change the file extension? + Change file extension? </message> <message name="IDS_RENAME_EXTENSION_MESSAGE" desc="Message to warn users the danger of changing file extension."> - Changing the file extension may result in unexpected behavior and be harmful to your device. + If you change the file extension, the file may open in a different application and potentially be a hazard to your device. </message> <!-- About Chrome preferences -->
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_RENAME_EXTENSION_CONFIRMATION.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_RENAME_EXTENSION_CONFIRMATION.png.sha1 new file mode 100644 index 0000000..edb38649 --- /dev/null +++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_RENAME_EXTENSION_CONFIRMATION.png.sha1
@@ -0,0 +1 @@ +7fac73dfe472bde49f7a300a818e3a1fe323ba92 \ No newline at end of file
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_RENAME_EXTENSION_MESSAGE.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_RENAME_EXTENSION_MESSAGE.png.sha1 new file mode 100644 index 0000000..edb38649 --- /dev/null +++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_RENAME_EXTENSION_MESSAGE.png.sha1
@@ -0,0 +1 @@ +7fac73dfe472bde49f7a300a818e3a1fe323ba92 \ No newline at end of file
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageAutoFetchTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageAutoFetchTest.java index 5e57245..49ce2c4 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageAutoFetchTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageAutoFetchTest.java
@@ -56,8 +56,7 @@ /** Unit tests for auto-fetch-on-net-error-page. */ @RunWith(ChromeJUnit4ClassRunner.class) -@CommandLineFlags. -Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "enable-features=AutoFetchOnNetErrorPage"}) +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) public class OfflinePageAutoFetchTest { private static final String TAG = "AutoFetchTest"; private static final long WAIT_TIMEOUT_MS = 20000; @@ -69,7 +68,13 @@ public TestWatcher mTestWatcher = new TestWatcher() { @Override protected void failed(Throwable e, Description description) { - logAdditionalContext(); + try { + logAdditionalContext(); + } catch (Exception ex) { + // Exceptions here are typical if the test failed to start. Catch them, or it will + // obscure the actual failure. + Log.w(TAG, "Failed to log additional context: " + ex.toString()); + } } }; @@ -494,7 +499,9 @@ String[] keys = newValues.keySet().toArray(new String[] {}); Arrays.sort(keys); for (String key : keys) { - int diff = newValues.get(key) - oldValues.get(key); + Integer oldValue = oldValues.get(key); + oldValue = oldValue == null ? 0 : oldValue; + int diff = newValues.get(key) - oldValue; if (diff > 0) { if (result.length() > 0) result.append("\n"); result.append(key); @@ -546,9 +553,13 @@ return TabModelUtils.getCurrentTab(getCurrentTabModel()); } private void logAdditionalContext() { + TabModel tabModel = getCurrentTabModel(); + // Return early if the test setup didn't complete. + if (mInitialHistograms == null || tabModel == null) { + return; + } Log.d(TAG, "Logging additional context"); Log.d(TAG, "Histogram Diff: " + histogramDiff(mInitialHistograms, histogramSnapshot())); - TabModel tabModel = getCurrentTabModel(); int tabCount = tabModel.getCount(); Log.d(TAG, "Tab Count: " + tabCount); for (int i = 0; i < tabCount; ++i) {
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java index 821135a..cc2a1a0 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java
@@ -6,6 +6,9 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.content.res.Resources; import android.graphics.Bitmap; @@ -50,6 +53,8 @@ Bitmap mBitmap; @Captor ArgumentCaptor<Callback<Bitmap>> mCallbackCaptor; + @Captor + ArgumentCaptor<String> mUrlCaptor; PropertyModel mModel; StatusMediator mMediator; @@ -62,12 +67,15 @@ mMediator = new StatusMediator(mModel, mResources, mUrlBarEditingTextStateProvider); mMediator.setToolbarCommonPropertiesModel(mToolbarCommonPropertiesModel); mMediator.setDelegateForTesting(mDelegate); + + when(mDelegate.isUrlValid(mUrlCaptor.capture())) + .thenAnswer(invocation -> mUrlCaptor.getValue().equals(TEST_SEARCH_URL)); } @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_showGoogleLogo() { - setupSearchEngineLogoForTesting(true, false, false, false); + setupSearchEngineLogoForTesting(true, false, false); mMediator.setUrlHasFocus(true); mMediator.setShowIconsWhenUrlFocused(true); @@ -79,7 +87,7 @@ @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_showGoogleLogo_whenScrolled() { - setupSearchEngineLogoForTesting(true, false, false, false); + setupSearchEngineLogoForTesting(true, false, false); mMediator.setUrlHasFocus(false); mMediator.setShowIconsWhenUrlFocused(true); @@ -92,7 +100,7 @@ @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_showGoogleLogo_searchLoupeEverywhere() { - setupSearchEngineLogoForTesting(true, true, true, false); + setupSearchEngineLogoForTesting(true, true, true); mMediator.setUrlHasFocus(true); mMediator.setShowIconsWhenUrlFocused(true); @@ -103,7 +111,7 @@ @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_showNonGoogleLogo() { - setupSearchEngineLogoForTesting(true, false, false, false); + setupSearchEngineLogoForTesting(true, false, false); mMediator.setUrlHasFocus(true); mMediator.setShowIconsWhenUrlFocused(true); @@ -120,7 +128,7 @@ @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_showNonGoogleLogo_searchLoupeEverywhere() { - setupSearchEngineLogoForTesting(true, false, true, false); + setupSearchEngineLogoForTesting(true, false, true); mMediator.setUrlHasFocus(true); mMediator.setShowIconsWhenUrlFocused(true); @@ -135,19 +143,66 @@ @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_onTextChanged_globeReplacesIconWhenTextIsSite() { - setupSearchEngineLogoForTesting(true, true, false, true); + setupSearchEngineLogoForTesting(true, true, false); mMediator.setUrlHasFocus(true); mMediator.setShowIconsWhenUrlFocused(true); + doReturn(TEST_SEARCH_URL).when(mUrlBarEditingTextStateProvider).getTextWithAutocomplete(); + mMediator.onTextChanged(TEST_SEARCH_URL); Assert.assertEquals(R.drawable.ic_globe_24dp, mModel.get(StatusProperties.STATUS_ICON_RES)); } @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) + public void searchEngineLogo_onTextChanged_globeReplacesIconWhenAutocompleteSiteContainsText() { + setupSearchEngineLogoForTesting(true, true, false); + + mMediator.setUrlHasFocus(true); + mMediator.setShowIconsWhenUrlFocused(true); + doReturn(TEST_SEARCH_URL).when(mUrlBarEditingTextStateProvider).getTextWithAutocomplete(); + + mMediator.onTextChanged(TEST_SEARCH_URL.substring(0, TEST_SEARCH_URL.length() - 1)); + Assert.assertEquals(R.drawable.ic_globe_24dp, mModel.get(StatusProperties.STATUS_ICON_RES)); + } + + @Test + @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) + public void searchEngineLogo_onTextChanged_noGlobeReplacementWhenUrlBarTextDoesNotMatch() { + setupSearchEngineLogoForTesting(true, true, false); + + mMediator.setUrlHasFocus(true); + mMediator.setShowIconsWhenUrlFocused(true); + doReturn(TEST_SEARCH_URL).when(mUrlBarEditingTextStateProvider).getTextWithAutocomplete(); + + mMediator.onTextChanged("food near me"); + verify(mDelegate).isUrlValid("food near me"); + Assert.assertNotEquals( + R.drawable.ic_globe_24dp, mModel.get(StatusProperties.STATUS_ICON_RES)); + } + + @Test + @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) + public void searchEngineLogo_onTextChanged_noGlobeReplacementWhenUrlBarTextIsEmpty() { + setupSearchEngineLogoForTesting(true, true, false); + + mMediator.setUrlHasFocus(true); + mMediator.setShowIconsWhenUrlFocused(true); + // Setup a valid url to prevent the default "" from matching the url. + doReturn(TEST_SEARCH_URL).when(mUrlBarEditingTextStateProvider).getTextWithAutocomplete(); + mMediator.onTextChanged(TEST_SEARCH_URL); + + mMediator.onTextChanged(""); + verify(mDelegate).isUrlValid(""); + Assert.assertNotEquals( + R.drawable.ic_globe_24dp, mModel.get(StatusProperties.STATUS_ICON_RES)); + } + + @Test + @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_incognitoNoIcon() { - setupSearchEngineLogoForTesting(true, true, false, false); - Mockito.doReturn(true).when(mToolbarCommonPropertiesModel).isIncognito(); + setupSearchEngineLogoForTesting(true, true, false); + doReturn(true).when(mToolbarCommonPropertiesModel).isIncognito(); mMediator.setUrlHasFocus(false); mMediator.setShowIconsWhenUrlFocused(true); @@ -160,7 +215,7 @@ @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_maybeUpdateStatusIconForSearchEngineIconChanges() { - setupSearchEngineLogoForTesting(true, true, false, false); + setupSearchEngineLogoForTesting(true, true, false); mMediator.setUrlHasFocus(true); mMediator.setShowIconsWhenUrlFocused(true); @@ -175,7 +230,7 @@ @Test @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO) public void searchEngineLogo_maybeUpdateStatusIconForSearchEngineIconNoChanges() { - setupSearchEngineLogoForTesting(true, true, false, false); + setupSearchEngineLogoForTesting(true, true, false); mMediator.setUrlHasFocus(true); mMediator.setShowIconsWhenUrlFocused(false); @@ -219,15 +274,12 @@ } private void setupSearchEngineLogoForTesting( - boolean shouldShowLogo, boolean showGoogle, boolean loupeEverywhere, boolean validUrl) { - Mockito.doReturn(shouldShowLogo).when(mDelegate).shouldShowSearchEngineLogo(false); - Mockito.doReturn(false).when(mDelegate).shouldShowSearchEngineLogo(true); - Mockito.doReturn(loupeEverywhere) - .when(mDelegate) - .shouldShowSearchLoupeEverywhere(anyBoolean()); + boolean shouldShowLogo, boolean showGoogle, boolean loupeEverywhere) { + doReturn(shouldShowLogo).when(mDelegate).shouldShowSearchEngineLogo(false); + doReturn(false).when(mDelegate).shouldShowSearchEngineLogo(true); + doReturn(loupeEverywhere).when(mDelegate).shouldShowSearchLoupeEverywhere(anyBoolean()); Mockito.doNothing().when(mDelegate).getSearchEngineLogoFavicon( any(), mCallbackCaptor.capture()); - Mockito.doReturn(validUrl).when(mDelegate).isUrlValid(any()); mMediator.updateSearchEngineStatusIcon(shouldShowLogo, showGoogle, TEST_SEARCH_URL); }
diff --git a/chrome/app/theme/default_100_percent/common/save_password1.png b/chrome/app/theme/default_100_percent/common/save_password1.png new file mode 100644 index 0000000..0befda4 --- /dev/null +++ b/chrome/app/theme/default_100_percent/common/save_password1.png Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/save_password1_dark.png b/chrome/app/theme/default_100_percent/common/save_password1_dark.png new file mode 100644 index 0000000..edb0f47 --- /dev/null +++ b/chrome/app/theme/default_100_percent/common/save_password1_dark.png Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/save_password2.png b/chrome/app/theme/default_100_percent/common/save_password2.png new file mode 100644 index 0000000..2733794 --- /dev/null +++ b/chrome/app/theme/default_100_percent/common/save_password2.png Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/save_password2_dark.png b/chrome/app/theme/default_100_percent/common/save_password2_dark.png new file mode 100644 index 0000000..fbb712e --- /dev/null +++ b/chrome/app/theme/default_100_percent/common/save_password2_dark.png Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/save_password3.png b/chrome/app/theme/default_100_percent/common/save_password3.png new file mode 100644 index 0000000..d6ce586 --- /dev/null +++ b/chrome/app/theme/default_100_percent/common/save_password3.png Binary files differ
diff --git a/chrome/app/theme/default_100_percent/common/save_password3_dark.png b/chrome/app/theme/default_100_percent/common/save_password3_dark.png new file mode 100644 index 0000000..7539c4d --- /dev/null +++ b/chrome/app/theme/default_100_percent/common/save_password3_dark.png Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/save_password1.png b/chrome/app/theme/default_200_percent/common/save_password1.png new file mode 100644 index 0000000..517bafd --- /dev/null +++ b/chrome/app/theme/default_200_percent/common/save_password1.png Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/save_password1_dark.png b/chrome/app/theme/default_200_percent/common/save_password1_dark.png new file mode 100644 index 0000000..369db3ba --- /dev/null +++ b/chrome/app/theme/default_200_percent/common/save_password1_dark.png Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/save_password2.png b/chrome/app/theme/default_200_percent/common/save_password2.png new file mode 100644 index 0000000..a35629f --- /dev/null +++ b/chrome/app/theme/default_200_percent/common/save_password2.png Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/save_password2_dark.png b/chrome/app/theme/default_200_percent/common/save_password2_dark.png new file mode 100644 index 0000000..5ef10ea --- /dev/null +++ b/chrome/app/theme/default_200_percent/common/save_password2_dark.png Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/save_password3.png b/chrome/app/theme/default_200_percent/common/save_password3.png new file mode 100644 index 0000000..46d3372 --- /dev/null +++ b/chrome/app/theme/default_200_percent/common/save_password3.png Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/save_password3_dark.png b/chrome/app/theme/default_200_percent/common/save_password3_dark.png new file mode 100644 index 0000000..0d425d5 --- /dev/null +++ b/chrome/app/theme/default_200_percent/common/save_password3_dark.png Binary files differ
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd index 590ed41..b680f25 100644 --- a/chrome/app/theme/theme_resources.grd +++ b/chrome/app/theme/theme_resources.grd
@@ -254,6 +254,12 @@ <if expr="not is_android"> <structure type="chrome_scaled_image" name="IDR_SAFETY_TIP_LOOKALIKE_ILLUSTRATION" file="common/safety_tip_lookalike_illustration.png" /> <structure type="chrome_scaled_image" name="IDR_SAFETY_TIP_SUSPICIOUS_ILLUSTRATION" file="common/safety_tip_suspicious_illustration.png" /> + <structure type="chrome_scaled_image" name="IDR_SAVE_PASSWORD1" file="common/save_password1.png" /> + <structure type="chrome_scaled_image" name="IDR_SAVE_PASSWORD1_DARK" file="common/save_password1_dark.png" /> + <structure type="chrome_scaled_image" name="IDR_SAVE_PASSWORD2" file="common/save_password2.png" /> + <structure type="chrome_scaled_image" name="IDR_SAVE_PASSWORD2_DARK" file="common/save_password2_dark.png" /> + <structure type="chrome_scaled_image" name="IDR_SAVE_PASSWORD3" file="common/save_password3.png" /> + <structure type="chrome_scaled_image" name="IDR_SAVE_PASSWORD3_DARK" file="common/save_password3_dark.png" /> </if> <structure type="chrome_scaled_image" name="IDR_SCREEN_CAPTURE_NOTIFICATION_GRIP" file="screen_capture_notification_grip.png" /> <if expr="chromeos">
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 180f4f6..c1eb6e9 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -543,6 +543,8 @@ "hang_monitor/hang_crash_dump_win.cc", "heavy_ad_intervention/heavy_ad_blocklist.cc", "heavy_ad_intervention/heavy_ad_blocklist.h", + "heavy_ad_intervention/heavy_ad_features.cc", + "heavy_ad_intervention/heavy_ad_features.h", "heavy_ad_intervention/heavy_ad_helper.cc", "heavy_ad_intervention/heavy_ad_helper.h", "heavy_ad_intervention/heavy_ad_service.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 6c536a18..8a2984b 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -3080,6 +3080,11 @@ flag_descriptions::kChromeColorsCustomColorPickerDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kChromeColorsCustomColorPicker)}, + {"ntp-confirm-suggestion-removals", + flag_descriptions::kNtpConfirmSuggestionRemovalsName, + flag_descriptions::kNtpConfirmSuggestionRemovalsDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kConfirmNtpSuggestionRemovals)}, + {"ntp-customization-menu-v2", flag_descriptions::kNtpCustomizationMenuV2Name, flag_descriptions::kNtpCustomizationMenuV2Description, kOsDesktop, @@ -3149,13 +3154,6 @@ FEATURE_VALUE_TYPE( download::features::kAllowDownloadResumptionWithoutStrongValidators)}, -#if defined(OS_ANDROID) - {"auto-fetch-on-net-error-page", - flag_descriptions::kAutoFetchOnNetErrorPageName, - flag_descriptions::kAutoFetchOnNetErrorPageDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kAutoFetchOnNetErrorPage)}, -#endif // defined(OS_ANDROID) - {"tab-hover-cards", flag_descriptions::kTabHoverCardsName, flag_descriptions::kTabHoverCardsDescription, kOsDesktop, FEATURE_WITH_PARAMS_VALUE_TYPE(features::kTabHoverCards,
diff --git a/chrome/browser/android/monochrome_entry_point.cc b/chrome/browser/android/monochrome_entry_point.cc index b3f9aad..358b677f4 100644 --- a/chrome/browser/android/monochrome_entry_point.cc +++ b/chrome/browser/android/monochrome_entry_point.cc
@@ -23,7 +23,7 @@ break; case base::android::PROCESS_WEBLAYER: case base::android::PROCESS_WEBLAYER_CHILD: - return weblayer::OnJNIOnLoadInit(); + return weblayer::OnJNIOnLoadInit("resources.pak"); break; default: NOTREACHED();
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index ed2c43b3..f0ca629 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2243,6 +2243,9 @@ bool ChromeContentBrowserClient::IsDataSaverEnabled( content::BrowserContext* browser_context) { + if (!browser_context || browser_context->IsOffTheRecord()) + return false; + Profile* profile = Profile::FromBrowserContext(browser_context); return profile && data_reduction_proxy::DataReductionProxySettings:: IsDataSaverEnabledByUser(profile->GetPrefs());
diff --git a/chrome/browser/chromeos/accessibility/sticky_keys_browsertest.cc b/chrome/browser/chromeos/accessibility/sticky_keys_browsertest.cc index f9b441102..60c83d3 100644 --- a/chrome/browser/chromeos/accessibility/sticky_keys_browsertest.cc +++ b/chrome/browser/chromeos/accessibility/sticky_keys_browsertest.cc
@@ -159,7 +159,7 @@ browser()->window()->GetLocationBar()->GetOmniboxView(); // Give the omnibox focus. - omnibox->SetFocus(); + omnibox->SetFocus(/*is_user_initiated=*/true); // Make sure that the AppList is not erroneously displayed and the omnibox // doesn't lose focus.
diff --git a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc index b8d1a4f6..e827319 100644 --- a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc +++ b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.cc
@@ -75,10 +75,9 @@ } void AndroidSmsPairingStateTrackerImpl::OnCookieChange( - const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause) { - DCHECK_EQ(kMessagesPairStateCookieName, cookie.Name()); - DCHECK(cookie.IsDomainMatch(GetPairingUrl().host())); + const net::CookieChangeInfo& change) { + DCHECK_EQ(kMessagesPairStateCookieName, change.cookie.Name()); + DCHECK(change.cookie.IsDomainMatch(GetPairingUrl().host())); // NOTE: cookie.Value() cannot be trusted in this callback. The cookie may // have expired or been removed and the Value() does not get updated. It's
diff --git a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h index 01dd195c9..16e19c0 100644 --- a/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h +++ b/chrome/browser/chromeos/android_sms/android_sms_pairing_state_tracker_impl.h
@@ -36,8 +36,7 @@ private: // network::mojom::CookieChangeListener: - void OnCookieChange(const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause) override; + void OnCookieChange(const net::CookieChangeInfo& change) override; // AndroidSmsAppManager::Observer: void OnInstalledAppUrlChanged() override;
diff --git a/chrome/browser/chromeos/login/screens/fingerprint_setup_browsertest.cc b/chrome/browser/chromeos/login/screens/fingerprint_setup_browsertest.cc index e86ce8b..7142308 100644 --- a/chrome/browser/chromeos/login/screens/fingerprint_setup_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/fingerprint_setup_browsertest.cc
@@ -167,7 +167,7 @@ {"fingerprint-setup-impl", "setupFingerprint"}); } -IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupCancel) { +IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, DISABLED_FingerprintSetupCancel) { quick_unlock::EnabledForTesting(true); fingerprint_setup_screen_->Show(); OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
diff --git a/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.cc b/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.cc index 33896a4..39036ff 100644 --- a/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.cc +++ b/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.cc
@@ -10,6 +10,7 @@ namespace { constexpr gfx::Size kMaxDialogSize{768, 768}; +constexpr int kDialogHeightForWidePadding = 640; constexpr gfx::Size kMinDialogSize{464, 464}; constexpr gfx::Insets kMinMargins{48, 48}; @@ -17,7 +18,8 @@ void CalculateOobeDialogBounds(const gfx::Rect& host_bounds, int shelf_height, - gfx::Rect* result) { + gfx::Rect* result, + OobeDialogPaddingMode* result_padding) { // Area to position dialog. gfx::Rect available_area = host_bounds; available_area.Inset(0, 0, 0, shelf_height); @@ -36,6 +38,14 @@ // Center dialog within an available area. *result = available_area; result->ClampToCenteredSize(dialog_size); + if (!result_padding) + return; + if ((result->width() >= kMaxDialogSize.width()) && + (result->height() >= kDialogHeightForWidePadding)) { + *result_padding = OobeDialogPaddingMode::PADDING_WIDE; + } else { + *result_padding = OobeDialogPaddingMode::PADDING_NARROW; + } } } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h b/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h index 5e841da5..e5f9b3c 100644 --- a/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h +++ b/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h
@@ -10,12 +10,24 @@ namespace chromeos { +// Enum that specifies how inner padding of OOBE dialog should be calculated. +enum class OobeDialogPaddingMode { + // Oobe dialog is displayed full screen, padding will be calculated + // via css depending on media size. + PADDING_AUTO, + // Oobe dialog have enough free space around and should use wide padding. + PADDING_WIDE, + // Oobe dialog is positioned in limited space and should use narrow padding. + PADDING_NARROW +}; + // Position OOBE dialog according to specs inside |host_bounds| excluding shelf. // |host_bounds| is in coordinates of oobe dialog widget. |result| is // in the same coordinates of |host_bounds|. void CalculateOobeDialogBounds(const gfx::Rect& host_bounds, int shelf_height, - gfx::Rect* result); + gfx::Rect* result, + OobeDialogPaddingMode* result_padding); } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils_unittest.cc b/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils_unittest.cc index c12bb68..96d47a5 100644 --- a/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils_unittest.cc +++ b/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils_unittest.cc
@@ -76,66 +76,82 @@ TEST_F(OobeDialogSizeUtilsTest, Chromebook) { gfx::Rect usual_device(1200, 800); gfx::Rect dialog; + OobeDialogPaddingMode padding; - CalculateOobeDialogBounds(usual_device, kShelfHeight, &dialog); + CalculateOobeDialogBounds(usual_device, kShelfHeight, &dialog, &padding); ValidateDialog(SizeWithoutShelf(usual_device), dialog); + EXPECT_EQ(padding, OobeDialogPaddingMode::PADDING_WIDE); } // We have plenty of space on the screen, but virtual keyboard takes some space. TEST_F(OobeDialogSizeUtilsTest, ChromebookVirtualKeyboard) { gfx::Rect usual_device_with_keyboard(1200, 800 - kVirtualKeyboardHeight); gfx::Rect dialog; + OobeDialogPaddingMode padding; - CalculateOobeDialogBounds(usual_device_with_keyboard, 0, &dialog); + CalculateOobeDialogBounds(usual_device_with_keyboard, 0, &dialog, &padding); ValidateDialog(usual_device_with_keyboard, dialog); + EXPECT_EQ(padding, OobeDialogPaddingMode::PADDING_NARROW); } // Tablet device can have smaller screen size. TEST_F(OobeDialogSizeUtilsTest, TabletHorizontal) { gfx::Rect tablet_device(1080, 675); gfx::Rect dialog; + OobeDialogPaddingMode padding; - CalculateOobeDialogBounds(tablet_device, kShelfHeight, &dialog); + CalculateOobeDialogBounds(tablet_device, kShelfHeight, &dialog, &padding); ValidateDialog(SizeWithoutShelf(tablet_device), dialog); + EXPECT_EQ(padding, OobeDialogPaddingMode::PADDING_NARROW); } -// Tablet device in horizontal mode with virtual keyboard have restricted space. +// Tablet device in horizontal mode with virtual keyboard have restricted +// vertical space. TEST_F(OobeDialogSizeUtilsTest, TabletHorizontalVirtualKeyboard) { gfx::Rect tablet_device(1080, 675 - kVirtualKeyboardHeight); gfx::Rect dialog; + OobeDialogPaddingMode padding; - CalculateOobeDialogBounds(tablet_device, 0, &dialog); + CalculateOobeDialogBounds(tablet_device, 0, &dialog, &padding); ValidateDialog(tablet_device, dialog); + EXPECT_EQ(padding, OobeDialogPaddingMode::PADDING_NARROW); } -// Tablet device in horizontal mode with docked magnifier have restricted space. +// Tablet device in horizontal mode with docked magnifier have restricted +// vertical space. TEST_F(OobeDialogSizeUtilsTest, TabletHorizontalDockedMagnifier) { gfx::Rect tablet_device(0, 0, 1080, 675 - kDockedMagnifierHeight); gfx::Rect dialog; + OobeDialogPaddingMode padding; - CalculateOobeDialogBounds(tablet_device, 0, &dialog); + CalculateOobeDialogBounds(tablet_device, 0, &dialog, &padding); ValidateDialog(tablet_device, dialog); + EXPECT_EQ(padding, OobeDialogPaddingMode::PADDING_NARROW); } // Tablet device in horizontal mode with virtual keyboard and docked -// magnifier results in very few space. +// magnifier results in very few vertical space. TEST_F(OobeDialogSizeUtilsTest, TabletHorizontalVirtualKeyboardMagnifier) { gfx::Rect tablet_device( 0, 0, 1080, 675 - kVirtualKeyboardHeight - kDockedMagnifierHeight); gfx::Rect dialog; + OobeDialogPaddingMode padding; - CalculateOobeDialogBounds(tablet_device, 0, &dialog); + CalculateOobeDialogBounds(tablet_device, 0, &dialog, &padding); ValidateDialog(tablet_device, dialog); + EXPECT_EQ(padding, OobeDialogPaddingMode::PADDING_NARROW); } // Tablet in vertical mode puts some strain on dialog width. TEST_F(OobeDialogSizeUtilsTest, TabletVertical) { gfx::Rect tablet_device(675, 1080); gfx::Rect dialog; + OobeDialogPaddingMode padding; - CalculateOobeDialogBounds(tablet_device, kShelfHeight, &dialog); + CalculateOobeDialogBounds(tablet_device, kShelfHeight, &dialog, &padding); ValidateDialog(SizeWithoutShelf(tablet_device), dialog); + EXPECT_EQ(padding, OobeDialogPaddingMode::PADDING_NARROW); } } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc b/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc index 33c023ef..a65eedb 100644 --- a/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc +++ b/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc
@@ -20,6 +20,7 @@ #include "chrome/browser/ui/ash/ash_util.h" #include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/browser/ui/webui/chrome_web_contents_handler.h" +#include "chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h" #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" #include "components/web_modal/web_contents_modal_dialog_manager.h" @@ -43,6 +44,18 @@ constexpr char kAppLaunchBailout[] = "app_launch_bailout"; constexpr char kCancel[] = "cancel"; +CoreOobeView::DialogPaddingMode ConvertDialogPaddingMode( + OobeDialogPaddingMode padding) { + switch (padding) { + case OobeDialogPaddingMode::PADDING_AUTO: + return CoreOobeView::DialogPaddingMode::MODE_AUTO; + case OobeDialogPaddingMode::PADDING_WIDE: + return CoreOobeView::DialogPaddingMode::MODE_WIDE; + case OobeDialogPaddingMode::PADDING_NARROW: + return CoreOobeView::DialogPaddingMode::MODE_NARROW; + } +} + } // namespace class OobeWebDialogView : public views::WebDialogView { @@ -124,6 +137,8 @@ Layout(); } + OobeDialogPaddingMode padding() { return padding_; } + // views::WidgetDelegateView: ui::ModalType GetModalType() const override { return ui::MODAL_TYPE_WINDOW; } @@ -131,14 +146,18 @@ void Layout() override { if (fullscreen_) { - oobe_view_->SetBoundsRect(GetContentsBounds()); + for (views::View* child : children()) { + child->SetBoundsRect(GetContentsBounds()); + } + padding_ = OobeDialogPaddingMode::PADDING_AUTO; return; } gfx::Rect bounds; const int shelf_height = has_shelf_ ? ash::ShelfConfig::Get()->shelf_size() : 0; - CalculateOobeDialogBounds(GetContentsBounds(), shelf_height, &bounds); + CalculateOobeDialogBounds(GetContentsBounds(), shelf_height, &bounds, + &padding_); for (views::View* child : children()) { child->SetBoundsRect(bounds); @@ -155,6 +174,9 @@ // space). bool has_shelf_ = true; + // Tracks dialog margins after last size calculations. + OobeDialogPaddingMode padding_ = OobeDialogPaddingMode::PADDING_AUTO; + DISALLOW_COPY_AND_ASSIGN(LayoutWidgetDelegateView); }; @@ -308,6 +330,8 @@ layout_view_->SetHasShelf( !ChromeKeyboardControllerClient::Get()->is_keyboard_visible()); + dialog_view_->AddObserver(this); + extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( dialog_view_->web_contents()); @@ -460,6 +484,17 @@ return true; } +void OobeUIDialogDelegate::OnViewBoundsChanged(views::View* observed_view) { + if (!widget_) + return; + GetOobeUI()->GetCoreOobeView()->SetDialogPaddingMode( + ConvertDialogPaddingMode(layout_view_->padding())); +} + +void OobeUIDialogDelegate::OnViewIsDeleting(views::View* observed_view) { + observed_view->RemoveObserver(this); +} + void OobeUIDialogDelegate::OnKeyboardVisibilityChanged(bool visible) { if (!widget_) return;
diff --git a/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.h b/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.h index 1eb1d42a..6f8f33f 100644 --- a/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.h +++ b/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.h
@@ -16,6 +16,7 @@ #include "chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client.h" #include "chrome/browser/ui/chrome_web_modal_dialog_manager_delegate.h" #include "components/web_modal/web_contents_modal_dialog_host.h" +#include "ui/views/view_observer.h" #include "ui/web_dialogs/web_dialog_delegate.h" namespace content { @@ -27,6 +28,7 @@ } namespace views { +class View; class WebDialogView; class Widget; } // namespace views @@ -48,7 +50,8 @@ // clientView---->Widget's view hierarchy class OobeUIDialogDelegate : public ui::WebDialogDelegate, public ChromeKeyboardControllerClient::Observer, - public CaptivePortalWindowProxy::Observer { + public CaptivePortalWindowProxy::Observer, + public views::ViewObserver { public: explicit OobeUIDialogDelegate(base::WeakPtr<LoginDisplayHostMojo> controller); ~OobeUIDialogDelegate() override; @@ -100,6 +103,10 @@ std::vector<ui::Accelerator> GetAccelerators() override; bool AcceleratorPressed(const ui::Accelerator& accelerator) override; + // views::ViewObserver: + void OnViewBoundsChanged(views::View* observed_view) override; + void OnViewIsDeleting(views::View* observed_view) override; + // ChromeKeyboardControllerClient::Observer: void OnKeyboardVisibilityChanged(bool visible) override;
diff --git a/chrome/browser/content_index/content_index_provider_factory.cc b/chrome/browser/content_index/content_index_provider_factory.cc index fd08abd..faac3c4 100644 --- a/chrome/browser/content_index/content_index_provider_factory.cc +++ b/chrome/browser/content_index/content_index_provider_factory.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/content_index/content_index_provider_factory.h" #include "chrome/browser/content_index/content_index_provider_impl.h" +#include "chrome/browser/engagement/site_engagement_service_factory.h" #include "chrome/browser/metrics/ukm_background_recorder_service.h" #include "chrome/browser/offline_items_collection/offline_content_aggregator_factory.h" #include "chrome/browser/profiles/incognito_helpers.h" @@ -29,6 +30,7 @@ BrowserContextDependencyManager::GetInstance()) { DependsOn(OfflineContentAggregatorFactory::GetInstance()); DependsOn(ukm::UkmBackgroundRecorderFactory::GetInstance()); + DependsOn(SiteEngagementServiceFactory::GetInstance()); } ContentIndexProviderFactory::~ContentIndexProviderFactory() = default;
diff --git a/chrome/browser/content_index/content_index_provider_impl.cc b/chrome/browser/content_index/content_index_provider_impl.cc index 69d2439b..bdeba852 100644 --- a/chrome/browser/content_index/content_index_provider_impl.cc +++ b/chrome/browser/content_index/content_index_provider_impl.cc
@@ -11,6 +11,9 @@ #include "base/strings/string_split.h" #include "base/task/post_task.h" #include "build/build_config.h" +#include "chrome/browser/engagement/site_engagement_score.h" +#include "chrome/browser/engagement/site_engagement_service.h" +#include "chrome/browser/engagement/site_engagement_service_factory.h" #include "chrome/browser/metrics/ukm_background_recorder_service.h" #include "chrome/browser/offline_items_collection/offline_content_aggregator_factory.h" #include "chrome/browser/profiles/profile.h" @@ -95,53 +98,15 @@ } } -OfflineItem EntryToOfflineItem(const content::ContentIndexEntry& entry) { - OfflineItem item; - item.id = ContentId(kProviderNamespace, EntryKey(entry)); - item.title = entry.description->title; - item.description = entry.description->description; - item.filter = CategoryToFilter(entry.description->category); - item.is_transient = false; - item.is_suggested = true; - item.creation_time = entry.registration_time; - item.is_openable = true; - item.state = offline_items_collection::OfflineItemState::COMPLETE; - item.is_resumable = false; - item.can_rename = false; - item.page_url = entry.launch_url; - - return item; -} - -void DidGetAllEntries(base::OnceClosure done_closure, - ContentIndexProviderImpl::OfflineItemList* item_list, - blink::mojom::ContentIndexError error, - std::vector<content::ContentIndexEntry> entries) { - if (error != blink::mojom::ContentIndexError::NONE) { - std::move(done_closure).Run(); - return; - } - - for (const auto& entry : entries) - item_list->push_back(EntryToOfflineItem(entry)); - - std::move(done_closure).Run(); -} - -void DidGetAllEntriesAcrossStorageParitions( - std::unique_ptr<ContentIndexProviderImpl::OfflineItemList> item_list, - ContentIndexProviderImpl::MultipleItemCallback callback) { - ContentIndexMetrics::RecordContentIndexEntries(item_list->size()); - std::move(callback).Run(*item_list); -} - } // namespace ContentIndexProviderImpl::ContentIndexProviderImpl(Profile* profile) : profile_(profile), metrics_(ukm::UkmBackgroundRecorderFactory::GetForProfile(profile)), - aggregator_(OfflineContentAggregatorFactory::GetForKey( - profile->GetProfileKey())) { + aggregator_( + OfflineContentAggregatorFactory::GetForKey(profile->GetProfileKey())), + site_engagement_service_( + SiteEngagementServiceFactory::GetForProfile(profile)) { aggregator_->RegisterProvider(kProviderNamespace, this); } @@ -153,6 +118,7 @@ void ContentIndexProviderImpl::Shutdown() { aggregator_->UnregisterProvider(kProviderNamespace); aggregator_ = nullptr; + site_engagement_service_ = nullptr; } std::vector<gfx::Size> ContentIndexProviderImpl::GetIconSizes( @@ -287,15 +253,17 @@ storage_partition->GetContentIndexContext()->GetEntry( components.service_worker_registration_id, components.description_id, - base::BindOnce( - [](SingleItemCallback callback, - base::Optional<content::ContentIndexEntry> entry) { - if (!entry) - std::move(callback).Run(base::nullopt); - else - std::move(callback).Run(EntryToOfflineItem(*entry)); - }, - std::move(callback))); + base::BindOnce(&ContentIndexProviderImpl::DidGetItem, + weak_ptr_factory_.GetWeakPtr(), std::move(callback))); +} + +void ContentIndexProviderImpl::DidGetItem( + SingleItemCallback callback, + base::Optional<content::ContentIndexEntry> entry) { + if (!entry) + std::move(callback).Run(base::nullopt); + else + std::move(callback).Run(EntryToOfflineItem(*entry)); } void ContentIndexProviderImpl::GetAllItems(MultipleItemCallback callback) { @@ -317,8 +285,10 @@ // Get the all entries from every partition. auto barrier_closure = base::BarrierClosure( storage_paritions.size(), - base::BindOnce(&DidGetAllEntriesAcrossStorageParitions, - std::move(item_list), std::move(callback))); + base::BindOnce( + &ContentIndexProviderImpl::DidGetAllEntriesAcrossStorageParitions, + weak_ptr_factory_.GetWeakPtr(), std::move(item_list), + std::move(callback))); for (auto* storage_partition : storage_paritions) { if (!storage_partition || !storage_partition->GetContentIndexContext()) { @@ -328,11 +298,35 @@ // |item_list_ptr| is safe to use since it is owned by the barrier // closure. - storage_partition->GetContentIndexContext()->GetAllEntries( - base::BindOnce(&DidGetAllEntries, barrier_closure, item_list_ptr)); + storage_partition->GetContentIndexContext()->GetAllEntries(base::BindOnce( + &ContentIndexProviderImpl::DidGetAllEntries, + weak_ptr_factory_.GetWeakPtr(), barrier_closure, item_list_ptr)); } } +void ContentIndexProviderImpl::DidGetAllEntriesAcrossStorageParitions( + std::unique_ptr<OfflineItemList> item_list, + MultipleItemCallback callback) { + ContentIndexMetrics::RecordContentIndexEntries(item_list->size()); + std::move(callback).Run(*item_list); +} + +void ContentIndexProviderImpl::DidGetAllEntries( + base::OnceClosure done_closure, + OfflineItemList* item_list, + blink::mojom::ContentIndexError error, + std::vector<content::ContentIndexEntry> entries) { + if (error != blink::mojom::ContentIndexError::NONE) { + std::move(done_closure).Run(); + return; + } + + for (const auto& entry : entries) + item_list->push_back(EntryToOfflineItem(entry)); + + std::move(done_closure).Run(); +} + void ContentIndexProviderImpl::GetVisualsForItem(const ContentId& id, GetVisualsOptions options, VisualsCallback callback) { @@ -353,6 +347,31 @@ weak_ptr_factory_.GetWeakPtr(), id, std::move(callback))); } +OfflineItem ContentIndexProviderImpl::EntryToOfflineItem( + const content::ContentIndexEntry& entry) { + OfflineItem item; + item.id = ContentId(kProviderNamespace, EntryKey(entry)); + item.title = entry.description->title; + item.description = entry.description->description; + item.filter = CategoryToFilter(entry.description->category); + item.is_transient = false; + item.is_suggested = true; + item.creation_time = entry.registration_time; + item.is_openable = true; + item.state = offline_items_collection::OfflineItemState::COMPLETE; + item.is_resumable = false; + item.can_rename = false; + item.page_url = entry.launch_url; + + if (site_engagement_service_) { + item.content_quality_score = + site_engagement_service_->GetScore(entry.launch_url.GetOrigin()) / + SiteEngagementScore::kMaxPoints; + } + + return item; +} + void ContentIndexProviderImpl::DidGetIcons(const ContentId& id, VisualsCallback callback, std::vector<SkBitmap> icons) {
diff --git a/chrome/browser/content_index/content_index_provider_impl.h b/chrome/browser/content_index/content_index_provider_impl.h index 7d53ae8..b81f842 100644 --- a/chrome/browser/content_index/content_index_provider_impl.h +++ b/chrome/browser/content_index/content_index_provider_impl.h
@@ -26,6 +26,7 @@ } // namespace offline_items_collection class Profile; +class SiteEngagementService; class ContentIndexProviderImpl : public KeyedService, @@ -73,16 +74,28 @@ } private: + void DidGetItem(SingleItemCallback callback, + base::Optional<content::ContentIndexEntry> entry); + void DidGetAllEntriesAcrossStorageParitions( + std::unique_ptr<OfflineItemList> item_list, + MultipleItemCallback callback); + void DidGetAllEntries(base::OnceClosure done_closure, + OfflineItemList* item_list, + blink::mojom::ContentIndexError error, + std::vector<content::ContentIndexEntry> entries); void DidGetIcons(const offline_items_collection::ContentId& id, VisualsCallback callback, std::vector<SkBitmap> icons); void DidGetEntryToOpen(base::Optional<content::ContentIndexEntry> entry); void DidOpenTab(content::ContentIndexEntry entry, content::WebContents* web_contents); + offline_items_collection::OfflineItem EntryToOfflineItem( + const content::ContentIndexEntry& entry); Profile* profile_; ContentIndexMetrics metrics_; offline_items_collection::OfflineContentAggregator* aggregator_; + SiteEngagementService* site_engagement_service_; base::ObserverList<Observer>::Unchecked observers_; base::Optional<std::vector<gfx::Size>> icon_sizes_for_testing_; base::WeakPtrFactory<ContentIndexProviderImpl> weak_ptr_factory_{this};
diff --git a/chrome/browser/content_index/content_index_provider_unittest.cc b/chrome/browser/content_index/content_index_provider_unittest.cc index 60223b1..ec32626 100644 --- a/chrome/browser/content_index/content_index_provider_unittest.cc +++ b/chrome/browser/content_index/content_index_provider_unittest.cc
@@ -10,6 +10,7 @@ #include "base/run_loop.h" #include "base/test/bind_test_util.h" #include "base/time/time.h" +#include "chrome/browser/engagement/site_engagement_service.h" #include "chrome/test/base/testing_profile.h" #include "components/offline_items_collection/core/offline_content_provider.h" #include "content/public/browser/content_index_provider.h" @@ -30,6 +31,7 @@ using testing::_; constexpr int64_t kServiceWorkerRegistrationId = 42; +constexpr double kEngagementScore = 42.0; const GURL kLaunchURL = GURL("https://example.com/foo"); const url::Origin kOrigin = url::Origin::Create(kLaunchURL.GetOrigin()); @@ -39,6 +41,9 @@ void SetUp() override { ASSERT_TRUE(profile_.CreateHistoryService(/* delete_file= */ true, /* no_db= */ false)); + + auto* service = SiteEngagementService::Get(&profile_); + service->ResetBaseScoreForURL(kOrigin.GetURL(), kEngagementScore); provider_ = std::make_unique<ContentIndexProviderImpl>(&profile_); provider_->AddObserver(this); } @@ -86,6 +91,7 @@ EXPECT_TRUE(item.is_suggested); EXPECT_TRUE(item.is_openable); EXPECT_EQ(item.page_url, kLaunchURL); + EXPECT_EQ(item.content_quality_score, kEngagementScore / 100.0); } TEST_F(ContentIndexProviderImplTest, ObserverUpdates) {
diff --git a/chrome/browser/data_saver/data_saver_browsertest.cc b/chrome/browser/data_saver/data_saver_browsertest.cc index b52acd0d..fcd902a 100644 --- a/chrome/browser/data_saver/data_saver_browsertest.cc +++ b/chrome/browser/data_saver/data_saver_browsertest.cc
@@ -180,12 +180,15 @@ SetDataSaverEnabled(browser()->profile(), enabled); } - void VerifySaveDataHeader(const std::string& expected_header_value) { + void VerifySaveDataHeader(const std::string& expected_header_value, + Browser* browser = nullptr) { + if (!browser) + browser = InProcessBrowserTest::browser(); ui_test_utils::NavigateToURL( - browser(), embedded_test_server()->GetURL("/echoheader?Save-Data")); + browser, embedded_test_server()->GetURL("/echoheader?Save-Data")); std::string header_value; EXPECT_TRUE(content::ExecuteScriptAndExtractString( - browser()->tab_strip_model()->GetActiveWebContents(), + browser->tab_strip_model()->GetActiveWebContents(), "window.domAutomationController.send(document.body.textContent);", &header_value)); EXPECT_EQ(expected_header_value, header_value); @@ -204,6 +207,12 @@ VerifySaveDataHeader("None"); } +IN_PROC_BROWSER_TEST_F(DataSaverBrowserTest, DataSaverDisabledInIncognito) { + ASSERT_TRUE(embedded_test_server()->Start()); + EnableDataSaver(true); + VerifySaveDataHeader("None", CreateIncognitoBrowser()); +} + class DataSaverWithServerBrowserTest : public InProcessBrowserTest { protected: void Init() {
diff --git a/chrome/browser/data_saver/data_saver_webapis_browsertest.cc b/chrome/browser/data_saver/data_saver_webapis_browsertest.cc index 7958cba..f4be1b6b 100644 --- a/chrome/browser/data_saver/data_saver_webapis_browsertest.cc +++ b/chrome/browser/data_saver/data_saver_webapis_browsertest.cc
@@ -38,17 +38,20 @@ InProcessBrowserTest::SetUp(); } - void VerifySaveDataAPI(bool expected_header_set) { - ui_test_utils::NavigateToURL(browser(), + void VerifySaveDataAPI(bool expected_header_set, Browser* browser = nullptr) { + if (!browser) + browser = InProcessBrowserTest::browser(); + ui_test_utils::NavigateToURL(browser, test_server_.GetURL("/net_info.html")); - EXPECT_EQ(expected_header_set, RunScriptExtractBool("getSaveData()")); + EXPECT_EQ(expected_header_set, + RunScriptExtractBool(browser, "getSaveData()")); } private: - bool RunScriptExtractBool(const std::string& script) { + bool RunScriptExtractBool(Browser* browser, const std::string& script) { bool data; EXPECT_TRUE(ExecuteScriptAndExtractBool( - browser()->tab_strip_model()->GetActiveWebContents(), script, &data)); + browser->tab_strip_model()->GetActiveWebContents(), script, &data)); return data; } @@ -80,3 +83,9 @@ EnableDataSaver(false); VerifySaveDataAPI(false); } + +IN_PROC_BROWSER_TEST_F(DataSaverWebAPIsBrowserTest, + DataSaverDisabledInIncognito) { + EnableDataSaver(true); + VerifySaveDataAPI(false, CreateIncognitoBrowser()); +}
diff --git a/chrome/browser/devtools/devtools_eye_dropper.cc b/chrome/browser/devtools/devtools_eye_dropper.cc index a59a23c..e2c3244 100644 --- a/chrome/browser/devtools/devtools_eye_dropper.cc +++ b/chrome/browser/devtools/devtools_eye_dropper.cc
@@ -21,6 +21,7 @@ #include "media/base/limits.h" #include "media/base/video_frame.h" #include "media/capture/mojom/video_capture_types.mojom.h" +#include "mojo/public/cpp/bindings/remote.h" #include "third_party/blink/public/platform/web_input_event.h" #include "third_party/blink/public/platform/web_mouse_event.h" #include "third_party/skia/include/core/SkCanvas.h" @@ -266,7 +267,8 @@ base::ReadOnlySharedMemoryRegion data, ::media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) { + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) { gfx::Size view_size = host_->GetView()->GetViewBounds().size(); if (view_size != content_rect.size()) { video_capturer_->SetResolutionConstraints(view_size, view_size, true); @@ -274,8 +276,11 @@ return; } + mojo::Remote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks_remote(std::move(callbacks)); + if (!data.IsValid()) { - callbacks->Done(); + callbacks_remote->Done(); return; } base::ReadOnlySharedMemoryMapping mapping = data.Map(); @@ -305,7 +310,7 @@ base::ReadOnlySharedMemoryMapping mapping; // Prevents FrameSinkVideoCapturer from recycling the shared memory that // backs |frame_|. - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr releaser; + mojo::Remote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> releaser; }; frame_.installPixels( SkImageInfo::MakeN32(content_rect.width(), content_rect.height(), @@ -317,7 +322,7 @@ [](void* addr, void* context) { delete static_cast<FramePinner*>(context); }, - new FramePinner{std::move(mapping), std::move(callbacks)}); + new FramePinner{std::move(mapping), std::move(callbacks_remote)}); frame_.setImmutable(); UpdateCursor();
diff --git a/chrome/browser/devtools/devtools_eye_dropper.h b/chrome/browser/devtools/devtools_eye_dropper.h index 3ba7601..e032ee0 100644 --- a/chrome/browser/devtools/devtools_eye_dropper.h +++ b/chrome/browser/devtools/devtools_eye_dropper.h
@@ -12,6 +12,7 @@ #include "components/viz/host/client_frame_sink_video_capturer.h" #include "content/public/browser/render_widget_host.h" #include "content/public/browser/web_contents_observer.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "third_party/skia/include/core/SkBitmap.h" namespace blink { @@ -47,7 +48,8 @@ base::ReadOnlySharedMemoryRegion data, ::media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) override; + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) override; void OnStopped() override; EyeDropperCallback callback_;
diff --git a/chrome/browser/extensions/api/cookies/cookies_api.cc b/chrome/browser/extensions/api/cookies/cookies_api.cc index aca854a..e30f454 100644 --- a/chrome/browser/extensions/api/cookies/cookies_api.cc +++ b/chrome/browser/extensions/api/cookies/cookies_api.cc
@@ -95,9 +95,8 @@ CookiesEventRouter::CookieChangeListener::~CookieChangeListener() = default; void CookiesEventRouter::CookieChangeListener::OnCookieChange( - const net::CanonicalCookie& canonical_cookie, - network::mojom::CookieChangeCause cause) { - router_->OnCookieChange(otr_, canonical_cookie, cause); + const net::CookieChangeInfo& change) { + router_->OnCookieChange(otr_, change); } CookiesEventRouter::CookiesEventRouter(content::BrowserContext* context) @@ -110,50 +109,48 @@ BrowserList::RemoveObserver(this); } -void CookiesEventRouter::OnCookieChange( - bool otr, - const net::CanonicalCookie& canonical_cookie, - network::mojom::CookieChangeCause cause) { +void CookiesEventRouter::OnCookieChange(bool otr, + const net::CookieChangeInfo& change) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); std::unique_ptr<base::ListValue> args(new base::ListValue()); std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); dict->SetBoolean(cookies_api_constants::kRemovedKey, - cause != network::mojom::CookieChangeCause::INSERTED); + change.cause != net::CookieChangeCause::INSERTED); Profile* profile = otr ? profile_->GetOffTheRecordProfile() : profile_->GetOriginalProfile(); api::cookies::Cookie cookie = cookies_helpers::CreateCookie( - canonical_cookie, cookies_helpers::GetStoreIdFromProfile(profile)); + change.cookie, cookies_helpers::GetStoreIdFromProfile(profile)); dict->Set(cookies_api_constants::kCookieKey, cookie.ToValue()); // Map the internal cause to an external string. std::string cause_dict_entry; - switch (cause) { + switch (change.cause) { // Report an inserted cookie as an "explicit" change cause. All other causes // only make sense for deletions. - case network::mojom::CookieChangeCause::INSERTED: - case network::mojom::CookieChangeCause::EXPLICIT: + case net::CookieChangeCause::INSERTED: + case net::CookieChangeCause::EXPLICIT: cause_dict_entry = cookies_api_constants::kExplicitChangeCause; break; - case network::mojom::CookieChangeCause::OVERWRITE: + case net::CookieChangeCause::OVERWRITE: cause_dict_entry = cookies_api_constants::kOverwriteChangeCause; break; - case network::mojom::CookieChangeCause::EXPIRED: + case net::CookieChangeCause::EXPIRED: cause_dict_entry = cookies_api_constants::kExpiredChangeCause; break; - case network::mojom::CookieChangeCause::EVICTED: + case net::CookieChangeCause::EVICTED: cause_dict_entry = cookies_api_constants::kEvictedChangeCause; break; - case network::mojom::CookieChangeCause::EXPIRED_OVERWRITE: + case net::CookieChangeCause::EXPIRED_OVERWRITE: cause_dict_entry = cookies_api_constants::kExpiredOverwriteChangeCause; break; - case network::mojom::CookieChangeCause::UNKNOWN_DELETION: + case net::CookieChangeCause::UNKNOWN_DELETION: NOTREACHED(); } dict->SetString(cookies_api_constants::kCauseKey, cause_dict_entry); @@ -162,7 +159,7 @@ DispatchEvent(profile, events::COOKIES_ON_CHANGED, api::cookies::OnChanged::kEventName, std::move(args), - cookies_helpers::GetURLFromCanonicalCookie(canonical_cookie)); + cookies_helpers::GetURLFromCanonicalCookie(change.cookie)); } void CookiesEventRouter::OnBrowserAdded(Browser* browser) {
diff --git a/chrome/browser/extensions/api/cookies/cookies_api.h b/chrome/browser/extensions/api/cookies/cookies_api.h index ac95fc35..0761d53 100644 --- a/chrome/browser/extensions/api/cookies/cookies_api.h +++ b/chrome/browser/extensions/api/cookies/cookies_api.h
@@ -22,6 +22,7 @@ #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" #include "net/cookies/canonical_cookie.h" +#include "net/cookies/cookie_change_dispatcher.h" #include "services/network/public/mojom/cookie_manager.mojom.h" #include "url/gurl.h" @@ -49,8 +50,7 @@ ~CookieChangeListener() override; // network::mojom::CookieChangeListener: - void OnCookieChange(const net::CanonicalCookie& canonical_cookie, - network::mojom::CookieChangeCause cause) override; + void OnCookieChange(const net::CookieChangeInfo& change) override; private: CookiesEventRouter* router_; @@ -65,9 +65,7 @@ Profile* profile); void OnConnectionError( mojo::Receiver<network::mojom::CookieChangeListener>* receiver); - void OnCookieChange(bool otr, - const net::CanonicalCookie& canonical_cookie, - network::mojom::CookieChangeCause cause); + void OnCookieChange(bool otr, const net::CookieChangeInfo& change); // This method dispatches events to the extension message service. void DispatchEvent(content::BrowserContext* context,
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc index 7931d22..1e0931f 100644 --- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc +++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc
@@ -194,21 +194,12 @@ // TODO(crbug.com/495290): Pass the native window directly to the // reauth-handling code. web_contents_ = web_contents; - if (!password_access_authenticator_.EnsureUserIsAuthenticated( - password_manager::ReauthPurpose::VIEW_PASSWORD)) { - std::move(callback).Run(base::nullopt); - return; - } - - // Request the password. When it is retrieved, ShowPassword() will be called. - const std::string* sort_key = password_id_generator_.TryGetSortKey(id); - if (!sort_key) { - std::move(callback).Run(base::nullopt); - return; - } - - password_manager_presenter_->RequestShowPassword(*sort_key, - std::move(callback)); + base::OnceCallback<void(bool)> request_show_password_reply = + base::BindOnce(&PasswordsPrivateDelegateImpl::RequestShowPasswordReply, + weak_ptr_factory_.GetWeakPtr(), std::move(callback), id); + password_access_authenticator_.EnsureUserIsAuthenticatedAsync( + password_manager::ReauthPurpose::VIEW_PASSWORD, + std::move(request_show_password_reply)); } bool PasswordsPrivateDelegateImpl::OsReauthCall( @@ -327,15 +318,12 @@ // TODO(crbug.com/495290): Pass the native window directly to the // reauth-handling code. web_contents_ = web_contents; - if (!password_access_authenticator_.ForceUserReauthentication( - password_manager::ReauthPurpose::EXPORT)) { - std::move(callback).Run(kReauthenticationFailed); - return; - } - - password_manager_porter_->set_web_contents(web_contents); - bool accepted = password_manager_porter_->Store(); - std::move(callback).Run(accepted ? std::string() : kExportInProgress); + base::OnceCallback<void(bool)> export_password_reply = base::BindOnce( + &PasswordsPrivateDelegateImpl::ExportPasswordReply, + weak_ptr_factory_.GetWeakPtr(), std::move(callback), web_contents); + password_access_authenticator_.ForceUserReauthenticationAsync( + password_manager::ReauthPurpose::EXPORT, + std::move(export_password_reply)); } void PasswordsPrivateDelegateImpl::CancelExportPasswords() { @@ -383,6 +371,40 @@ pre_initialization_callbacks_.push_back(callback); } +void PasswordsPrivateDelegateImpl::ExportPasswordReply( + base::OnceCallback<void(const std::string&)> callback, + content::WebContents* web_contents, + bool authenticated) { + if (!authenticated) { + std::move(callback).Run(kReauthenticationFailed); + return; + } + + password_manager_porter_->set_web_contents(web_contents); + bool accepted = password_manager_porter_->Store(); + std::move(callback).Run(accepted ? std::string() : kExportInProgress); +} + +void PasswordsPrivateDelegateImpl::RequestShowPasswordReply( + PlaintextPasswordCallback callback, + int id, + bool authenticated) { + if (!authenticated) { + std::move(callback).Run(base::nullopt); + return; + } + + // Request the password. When it is retrieved, ShowPassword() will be called. + const std::string* sort_key = password_id_generator_.TryGetSortKey(id); + if (!sort_key) { + std::move(callback).Run(base::nullopt); + return; + } + + password_manager_presenter_->RequestShowPassword(*sort_key, + std::move(callback)); +} + void PasswordsPrivateDelegateImpl::InitializeIfNecessary() { if (is_initialized_ || !current_entries_initialized_ || !current_exceptions_initialized_)
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.h b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.h index 03d191b7..a6c9820 100644 --- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.h +++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.h
@@ -97,6 +97,17 @@ // has been initialized or by deferring it until initialization has completed. void ExecuteFunction(const base::Closure& callback); + // Called after OS authentication call for export password request. + void ExportPasswordReply( + base::OnceCallback<void(const std::string&)> accepted, + content::WebContents* web_contents, + bool authenticated); + + // Called after OS authentication call for show password request. + void RequestShowPasswordReply(PlaintextPasswordCallback callback, + int id, + bool authenticated); + void SendSavedPasswordsList(); void SendPasswordExceptionsList(); @@ -148,6 +159,9 @@ // NativeWindow for the window where the API was called. content::WebContents* web_contents_; + // Weak pointers for different callbacks. + base::WeakPtrFactory<PasswordsPrivateDelegateImpl> weak_ptr_factory_{this}; + DISALLOW_COPY_AND_ASSIGN(PasswordsPrivateDelegateImpl); };
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc index 274e5ac..27a16c5 100644 --- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc +++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
@@ -281,6 +281,7 @@ base::Optional<base::string16> plaintext_password; delegate.RequestShowPassword(0, GetCallbackArgument(&plaintext_password), nullptr); + task_environment_.RunUntilIdle(); EXPECT_TRUE(reauth_called); EXPECT_TRUE(plaintext_password.has_value()); EXPECT_EQ(base::ASCIIToUTF16("test"), *plaintext_password); @@ -301,6 +302,7 @@ base::Optional<base::string16> plaintext_password; delegate.RequestShowPassword(0, GetCallbackArgument(&plaintext_password), nullptr); + task_environment_.RunUntilIdle(); EXPECT_TRUE(reauth_called); EXPECT_FALSE(plaintext_password.has_value()); } @@ -322,11 +324,13 @@ EXPECT_CALL(mock_accepted, Run(std::string())).Times(2); delegate.ExportPasswords(mock_accepted.Get(), nullptr); + task_environment_.RunUntilIdle(); EXPECT_TRUE(reauth_called); // Export should ignore previous reauthentication results. reauth_called = false; delegate.ExportPasswords(mock_accepted.Get(), nullptr); + task_environment_.RunUntilIdle(); EXPECT_TRUE(reauth_called); } @@ -347,6 +351,7 @@ &FakeOsReauthCall, &reauth_called, ReauthResult::FAIL)); delegate.ExportPasswords(mock_accepted.Get(), nullptr); + task_environment_.RunUntilIdle(); EXPECT_TRUE(reauth_called); }
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 3adc346c..c2253d30 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -2501,6 +2501,11 @@ "expiry_milestone": 81 }, { + "name": "ntp-confirm-suggestion-removals", + "owners": ["dbeam"], + "expiry_milestone": 82 + }, + { "name": "ntp-customization-menu-v2", "owners": ["kmilka", "ramyan"], "expiry_milestone": 79
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 504b6813..e832bb8 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -2354,11 +2354,6 @@ const char kAsyncDnsName[] = "Async DNS resolver"; const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver."; -const char kAutoFetchOnNetErrorPageName[] = "AutoFetchOnNetErrorPage"; -const char kAutoFetchOnNetErrorPageDescription[] = - "When enabled, and navigation fails with an offline error, schedule a " - "fetch of the page when online again."; - const char kAutofillAccessoryViewName[] = "Autofill suggestions as keyboard accessory view"; const char kAutofillAccessoryViewDescription[] = @@ -2870,6 +2865,12 @@ "Enables the native DIAL Media Route Provider implementation to be used " "instead of the implementation in the Media Router component extension."; +const char kNtpConfirmSuggestionRemovalsName[] = + "Confirm removing \"realbox\" suggestions on New Tab page"; +const char kNtpConfirmSuggestionRemovalsDescription[] = + "Show a confirmation dialog when removing suggestions from the \"realbox\" " + "on the New Tab page. Requires #ntp-realbox to be enabled."; + const char kNtpCustomizationMenuV2Name[] = "NTP customization menu version 2"; const char kNtpCustomizationMenuV2Description[] = "Use the second version of the NTP customization menu.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 4ea35e35..8261120a 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -1388,9 +1388,6 @@ extern const char kAsyncDnsName[]; extern const char kAsyncDnsDescription[]; -extern const char kAutoFetchOnNetErrorPageName[]; -extern const char kAutoFetchOnNetErrorPageDescription[]; - extern const char kAutofillAccessoryViewName[]; extern const char kAutofillAccessoryViewDescription[]; @@ -1685,6 +1682,9 @@ extern const char kDialMediaRouteProviderName[]; extern const char kDialMediaRouteProviderDescription[]; +extern const char kNtpConfirmSuggestionRemovalsName[]; +extern const char kNtpConfirmSuggestionRemovalsDescription[]; + extern const char kNtpCustomizationMenuV2Name[]; extern const char kNtpCustomizationMenuV2Description[];
diff --git a/chrome/browser/fullscreen_aurax11.cc b/chrome/browser/fullscreen_aurax11.cc index 10ac4a5..b186c00 100644 --- a/chrome/browser/fullscreen_aurax11.cc +++ b/chrome/browser/fullscreen_aurax11.cc
@@ -7,12 +7,12 @@ #include <vector> #include "ui/gfx/native_widget_types.h" -#include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h" +#include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" #include "ui/views/widget/widget.h" bool IsFullScreenMode() { std::vector<aura::Window*> all_windows = - views::DesktopWindowTreeHostLinux::GetAllOpenWindows(); + views::DesktopWindowTreeHostX11::GetAllOpenWindows(); // Only the topmost window is checked. This works fine in the most cases, but // it may return false when there are multiple displays and one display has // a fullscreen window but others don't. See: crbug.com/345484
diff --git a/chrome/browser/heavy_ad_intervention/heavy_ad_features.cc b/chrome/browser/heavy_ad_intervention/heavy_ad_features.cc new file mode 100644 index 0000000..d20ca08a --- /dev/null +++ b/chrome/browser/heavy_ad_intervention/heavy_ad_features.cc
@@ -0,0 +1,8 @@ +// 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/heavy_ad_intervention/heavy_ad_features.h" + +extern const char kHeavyAdReportingOnlyParamName[] = "reporting-only"; +extern const char kHeavyAdReportingEnabledParamName[] = "reporting-enabled";
diff --git a/chrome/browser/heavy_ad_intervention/heavy_ad_features.h b/chrome/browser/heavy_ad_intervention/heavy_ad_features.h new file mode 100644 index 0000000..5b091eb --- /dev/null +++ b/chrome/browser/heavy_ad_intervention/heavy_ad_features.h
@@ -0,0 +1,16 @@ +// 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 CHROME_BROWSER_HEAVY_AD_INTERVENTION_HEAVY_AD_FEATURES_H_ +#define CHROME_BROWSER_HEAVY_AD_INTERVENTION_HEAVY_AD_FEATURES_H_ + +// Param that enabled heavy ad intervention with reporting only, does not +// unloaded the ads. +extern const char kHeavyAdReportingOnlyParamName[]; + +// Param that enabled sending intervention reports for frames unloaded by heavy +// ad intervention. +extern const char kHeavyAdReportingEnabledParamName[]; + +#endif // CHROME_BROWSER_HEAVY_AD_INTERVENTION_HEAVY_AD_FEATURES_H_
diff --git a/chrome/browser/media/encrypted_media_supported_types_browsertest.cc b/chrome/browser/media/encrypted_media_supported_types_browsertest.cc index f3498fb5..b6bab1d 100644 --- a/chrome/browser/media/encrypted_media_supported_types_browsertest.cc +++ b/chrome/browser/media/encrypted_media_supported_types_browsertest.cc
@@ -66,6 +66,11 @@ #define EXPECT_UNSUPPORTED(test) EXPECT_EQ(kUnsupportedResult, test) #define EXPECT_TYPEERROR(test) EXPECT_EQ(kTypeErrorResult, test) +// Any support is acceptable. This can be used around new CDM check-in time +// where test expectations can change based on the new CDM's capability. +// For any usage of EXPECT_ANY, add a TODO explaining the plan to fix it. +#define EXPECT_ANY(test) ignore_result(test) + #if BUILDFLAG(ENABLE_AV1_DECODER) #define EXPECT_AV1 EXPECT_SUCCESS #else @@ -1009,9 +1014,11 @@ EXPECT_UNSUPPORTED(IsSupportedByKeySystem(kWidevine, kVideoWebMMimeType, audio_webm_codecs())); + // TODO(crbug.com/996372): Change to EXPECT_WV_SUCCESS after new CDM is in. + EXPECT_ANY(IsSupportedByKeySystem(kWidevine, kVideoWebMMimeType, + vp9_profile2_codecs())); + // Invalid or non-Webm codecs. - EXPECT_UNSUPPORTED(IsSupportedByKeySystem(kWidevine, kVideoWebMMimeType, - vp9_profile2_codecs())); EXPECT_UNSUPPORTED( IsSupportedByKeySystem(kWidevine, kVideoWebMMimeType, invalid_codecs())); EXPECT_UNSUPPORTED(IsSupportedByKeySystem(kWidevine, kVideoWebMMimeType, @@ -1061,9 +1068,11 @@ EXPECT_UNSUPPORTED(IsSupportedByKeySystem(kWidevine, kVideoMP4MimeType, audio_mp4_flac_codecs())); + // TODO(crbug.com/996372): Change to EXPECT_WV_SUCCESS after new CDM is in. + EXPECT_ANY(IsSupportedByKeySystem(kWidevine, kVideoMP4MimeType, + vp9_profile2_codecs())); + // Invalid or non-MP4 codecs. - EXPECT_UNSUPPORTED(IsSupportedByKeySystem(kWidevine, kVideoMP4MimeType, - vp9_profile2_codecs())); EXPECT_UNSUPPORTED( IsSupportedByKeySystem(kWidevine, kVideoMP4MimeType, invalid_codecs())); EXPECT_UNSUPPORTED(IsSupportedByKeySystem(kWidevine, kVideoMP4MimeType,
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc index 769c0b4..03ab770 100644 --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc
@@ -12,9 +12,12 @@ #include "base/feature_list.h" #include "base/logging.h" #include "base/rand_util.h" +#include "base/strings/strcat.h" +#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/time/default_tick_clock.h" #include "chrome/browser/heavy_ad_intervention/heavy_ad_blocklist.h" +#include "chrome/browser/heavy_ad_intervention/heavy_ad_features.h" #include "chrome/browser/heavy_ad_intervention/heavy_ad_helper.h" #include "chrome/browser/heavy_ad_intervention/heavy_ad_service.h" #include "chrome/browser/heavy_ad_intervention/heavy_ad_service_factory.h" @@ -75,17 +78,27 @@ rfh, page_load_features); } -std::string GetHeavyAdReportMessage(const FrameData& frame_data) { +std::string GetHeavyAdReportMessage(const FrameData& frame_data, + bool reporting_only) { const char kChromeStatusMessage[] = "See https://www.chromestatus.com/feature/4800491902992384"; + const char kReportingOnlyMessage[] = + "A future version of Chrome will remove this ad"; + const char kInterventionMessage[] = "Ad was removed"; + + base::StringPiece intervention_mode = + reporting_only ? kReportingOnlyMessage : kInterventionMessage; + switch (frame_data.heavy_ad_status()) { case FrameData::HeavyAdStatus::kNetwork: - return "Ad was removed because its network usage exceeded the limit. " + - std::string(kChromeStatusMessage); + return base::StrCat({intervention_mode, + " because its network usage exceeded the limit. ", + kChromeStatusMessage}); case FrameData::HeavyAdStatus::kTotalCpu: case FrameData::HeavyAdStatus::kPeakCpu: - return "Ad was removed because its CPU usage exceeded the limit. " + - std::string(kChromeStatusMessage); + return base::StrCat({intervention_mode, + " because its CPU usage exceeded the limit. ", + kChromeStatusMessage}); case FrameData::HeavyAdStatus::kNone: NOTREACHED(); return ""; @@ -1014,18 +1027,34 @@ // Ensure that this RenderFrameHost is a subframe. DCHECK(render_frame_host->GetParent()); - const char kReportId[] = "HeavyAdIntervention"; - std::string report_message = GetHeavyAdReportMessage(*frame_data); + // We already have a heavy ad at this point so we can query the field trial + // params safely. + if (!heavy_ad_reporting_enabled_) { + heavy_ad_reporting_enabled_ = base::GetFieldTrialParamByFeatureAsBool( + features::kHeavyAdIntervention, kHeavyAdReportingEnabledParamName, + true); + } - // Report to all child frames that will be unloaded. Once all reports are - // queued, the frame will be unloaded. Because the IPC messages are ordered - // wrt to each frames unload, we do not need to wait before loading the error - // page. Reports will be added to ReportingObserver queues synchronously when - // the IPC message is handled, which guarantees they will be available in the - // the unload handler. - for (content::RenderFrameHost* reporting_frame : - render_frame_host->GetFramesInSubtree()) { - reporting_frame->SendInterventionReport(kReportId, report_message); + if (!heavy_ad_send_reports_only_) { + heavy_ad_send_reports_only_ = base::GetFieldTrialParamByFeatureAsBool( + features::kHeavyAdIntervention, kHeavyAdReportingOnlyParamName, false); + } + + if (*heavy_ad_reporting_enabled_) { + const char kReportId[] = "HeavyAdIntervention"; + std::string report_message = + GetHeavyAdReportMessage(*frame_data, *heavy_ad_send_reports_only_); + + // Report to all child frames that will be unloaded. Once all reports are + // queued, the frame will be unloaded. Because the IPC messages are ordered + // wrt to each frames unload, we do not need to wait before loading the + // error page. Reports will be added to ReportingObserver queues + // synchronously when the IPC message is handled, which guarantees they will + // be available in the the unload handler. + for (content::RenderFrameHost* reporting_frame : + render_frame_host->GetFramesInSubtree()) { + reporting_frame->SendInterventionReport(kReportId, report_message); + } } // Report intervention to the blocklist. @@ -1036,10 +1065,8 @@ static_cast<int>(HeavyAdBlocklistType::kHeavyAdOnlyType)); } - GetDelegate().GetWebContents()->GetController().LoadPostCommitErrorPage( - render_frame_host, render_frame_host->GetLastCommittedURL(), - heavy_ads::PrepareHeavyAdPage(), net::ERR_BLOCKED_BY_CLIENT); - + // Record this UMA regardless of if we actually unload or not, as sending + // reports is subject to the same noise and throttling as the intervention. RecordFeatureUsage(render_frame_host, blink::mojom::WebFeature::kHeavyAdIntervention); @@ -1049,6 +1076,13 @@ ADS_HISTOGRAM("HeavyAds.InterventionType2", UMA_HISTOGRAM_ENUMERATION, frame_data->visibility(), frame_data->heavy_ad_status_with_noise()); + + if (*heavy_ad_send_reports_only_) + return; + + GetDelegate().GetWebContents()->GetController().LoadPostCommitErrorPage( + render_frame_host, render_frame_host->GetLastCommittedURL(), + heavy_ads::PrepareHeavyAdPage(), net::ERR_BLOCKED_BY_CLIENT); } bool AdsPageLoadMetricsObserver::IsBlocklisted() {
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.h index 3d62ef0..c1d4b0b 100644 --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.h +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.h
@@ -259,6 +259,17 @@ std::unique_ptr<HeavyAdThresholdNoiseProvider> heavy_ad_threshold_noise_provider_; + // Whether we should only send reports, and not unload frames tagged as heavy + // ads by the intervention. This is null until the proper feature param is + // queried once a heavy ad is seen. Sending reports should still log entries + // to the blocklist as it is observable by the page. Reporting only should use + // a different message that indicates the frame was not unloaded. + base::Optional<bool> heavy_ad_send_reports_only_; + + // Whether reports should be sent when the heavy ad intervention occurs. This + // is null until the proper feature param is queried once a heavy ad is seen. + base::Optional<bool> heavy_ad_reporting_enabled_; + DISALLOW_COPY_AND_ASSIGN(AdsPageLoadMetricsObserver); };
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc index 30464023..785a799 100644 --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc
@@ -22,6 +22,7 @@ #include "base/time/default_clock.h" #include "base/time/time.h" #include "chrome/browser/heavy_ad_intervention/heavy_ad_blocklist.h" +#include "chrome/browser/heavy_ad_intervention/heavy_ad_features.h" #include "chrome/browser/page_load_metrics/observers/ad_metrics/frame_data.h" #include "chrome/browser/subresource_filter/subresource_filter_test_harness.h" #include "chrome/common/chrome_features.h" @@ -313,6 +314,9 @@ run_loop.Run(); } + // Returns if the last observed navigation was an error page. + bool LastPageWasErrorPage() { return is_error_page_; } + private: base::OnceClosure quit_closure_; bool is_error_page_ = false; @@ -340,6 +344,8 @@ std::move(on_empty_report_callback_).Run(); return; } + + last_message_ = message; had_message_ = true; } @@ -359,8 +365,18 @@ return had_message; } + // Returns the last observed report message and then clears it. + std::string PopLastInterventionReportMessage() { + std::string last_message = last_message_; + last_message_ = ""; + return last_message; + } + private: bool had_message_ = false; + + // The message string for the last received non-empty intervention report. + std::string last_message_; base::OnceClosure on_empty_report_callback_; mojo::AssociatedReceiverSet<blink::mojom::Frame> receivers_; }; @@ -527,6 +543,10 @@ return frame_remote_tester_.FlushForTesting(render_frame_host); } + std::string PopLastInterventionReportMessage() { + return frame_remote_tester_.PopLastInterventionReportMessage(); + } + void OverrideVisibilityTrackerWithMockClock() { clock_ = std::make_unique<base::SimpleTestTickClock>(); clock_->SetNowTicks(base::TimeTicks::Now()); @@ -1761,7 +1781,12 @@ // Load enough bytes to trigger the intervention. ResourceDataUpdate(ad_frame, ResourceCached::kNotCached, 2); + const char kInterventionMessage[] = + "Ad was removed because its network usage exceeded the limit. " + "See https://www.chromestatus.com/feature/4800491902992384"; EXPECT_TRUE(HasInterventionReportsAfterFlush(ad_frame)); + EXPECT_EQ(kInterventionMessage, PopLastInterventionReportMessage()); + waiter.WaitForError(); histogram_tester().ExpectUniqueSample( SuffixedHistogram("HeavyAds.InterventionType2"), @@ -2156,3 +2181,59 @@ histogram_tester().ExpectBucketCount( SuffixedHistogram("HeavyAds.DisallowedByBlocklist"), true, 1); } + +TEST_F(AdsPageLoadMetricsObserverTest, + HeavyAdReportingOnly_ReportSentNoUnload) { + base::test::ScopedFeatureList feature_list; + feature_list.InitWithFeaturesAndParameters( + {{features::kHeavyAdIntervention, + {{kHeavyAdReportingOnlyParamName, "true"}}}}, + {}); + + RenderFrameHost* main_frame = NavigateMainFrame(kNonAdUrl); + RenderFrameHost* ad_frame = CreateAndNavigateSubFrame(kAdUrl, main_frame); + + ErrorPageWaiter waiter(web_contents()); + + // Load enough bytes to trigger the intervention. + ResourceDataUpdate(ad_frame, ResourceCached::kNotCached, + (heavy_ad_thresholds::kMaxNetworkBytes / 1024) + 1); + + const char kReportOnlyMessage[] = + "A future version of Chrome will remove this ad because its network " + "usage exceeded the limit. " + "See https://www.chromestatus.com/feature/4800491902992384"; + + EXPECT_TRUE(HasInterventionReportsAfterFlush(ad_frame)); + EXPECT_EQ(kReportOnlyMessage, PopLastInterventionReportMessage()); + + // It is not ideal to check the last loaded page here as it requires relying + // on mojo timings after flushing the interface above. But the ordering is + // deterministic as intervention reports and navigation use the same mojo + // pipe. + EXPECT_FALSE(waiter.LastPageWasErrorPage()); + histogram_tester().ExpectUniqueSample( + SuffixedHistogram("HeavyAds.InterventionType2"), + FrameData::HeavyAdStatus::kNetwork, 1); +} + +TEST_F(AdsPageLoadMetricsObserverTest, HeavyAdReportingDisabled_NoReportSent) { + base::test::ScopedFeatureList feature_list; + feature_list.InitWithFeaturesAndParameters( + {{features::kHeavyAdIntervention, + {{kHeavyAdReportingEnabledParamName, "false"}}}}, + {}); + + RenderFrameHost* main_frame = NavigateMainFrame(kNonAdUrl); + RenderFrameHost* ad_frame = CreateAndNavigateSubFrame(kAdUrl, main_frame); + + ErrorPageWaiter waiter(web_contents()); + + // Load enough bytes to trigger the intervention. + ResourceDataUpdate(ad_frame, ResourceCached::kNotCached, + (heavy_ad_thresholds::kMaxNetworkBytes / 1024) + 1); + + EXPECT_FALSE(HasInterventionReportsAfterFlush(ad_frame)); + + waiter.WaitForError(); +}
diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc index 6394852..b8cb856 100644 --- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc
@@ -30,6 +30,9 @@ const char kHistogramFromGWSFirstContentfulPaint[] = "PageLoad.Clients.FromGoogleSearch.PaintTiming." "NavigationToFirstContentfulPaint"; +const char kHistogramFromGWSLargestContentfulPaint[] = + "PageLoad.Clients.FromGoogleSearch.PaintTiming." + "NavigationToLargestContentfulPaint"; const char kHistogramFromGWSParseStartToFirstContentfulPaint[] = "PageLoad.Clients.FromGoogleSearch.PaintTiming." "ParseStartToFirstContentfulPaint"; @@ -321,7 +324,8 @@ } // namespace -FromGWSPageLoadMetricsLogger::FromGWSPageLoadMetricsLogger() {} +FromGWSPageLoadMetricsLogger::FromGWSPageLoadMetricsLogger() = default; +FromGWSPageLoadMetricsLogger::~FromGWSPageLoadMetricsLogger() = default; void FromGWSPageLoadMetricsLogger::SetPreviouslyCommittedUrl(const GURL& url) { previously_committed_url_is_search_results_ = @@ -431,6 +435,17 @@ logger_.OnUserInput(event, timing, GetDelegate()); } +void FromGWSPageLoadMetricsObserver::OnTimingUpdate( + content::RenderFrameHost* subframe_rfh, + const page_load_metrics::mojom::PageLoadTiming& timing) { + logger_.OnTimingUpdate(subframe_rfh, timing); +} + +void FromGWSPageLoadMetricsObserver::OnDidFinishSubFrameNavigation( + content::NavigationHandle* navigation_handle) { + logger_.OnDidFinishSubFrameNavigation(navigation_handle, GetDelegate()); +} + void FromGWSPageLoadMetricsLogger::OnCommit( content::NavigationHandle* navigation_handle, ukm::SourceId source_id) { @@ -446,6 +461,8 @@ if (!ShouldLogPostCommitMetrics(delegate.GetUrl())) return; + LogMetricsOnComplete(delegate); + page_load_metrics::PageAbortInfo abort_info = GetPageAbortInfo(delegate); if (!WasAbortedInForeground(delegate, abort_info)) return; @@ -644,5 +661,36 @@ void FromGWSPageLoadMetricsLogger::FlushMetricsOnAppEnterBackground( const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::PageLoadMetricsObserverDelegate& delegate) { + LogMetricsOnComplete(delegate); LogForegroundDurations(timing, delegate, base::TimeTicks::Now()); } + +void FromGWSPageLoadMetricsLogger::OnTimingUpdate( + content::RenderFrameHost* subframe_rfh, + const page_load_metrics::mojom::PageLoadTiming& timing) { + largest_contentful_paint_handler_.RecordTiming(timing.paint_timing, + subframe_rfh); +} + +void FromGWSPageLoadMetricsLogger::OnDidFinishSubFrameNavigation( + content::NavigationHandle* navigation_handle, + const page_load_metrics::PageLoadMetricsObserverDelegate& delegate) { + largest_contentful_paint_handler_.OnDidFinishSubFrameNavigation( + navigation_handle, delegate); +} + +void FromGWSPageLoadMetricsLogger::LogMetricsOnComplete( + const page_load_metrics::PageLoadMetricsObserverDelegate& delegate) { + if (!delegate.DidCommit() || !ShouldLogPostCommitMetrics(delegate.GetUrl())) + return; + + const page_load_metrics::ContentfulPaintTimingInfo& + all_frames_largest_contentful_paint = + largest_contentful_paint_handler_.MergeMainFrameAndSubframes(); + if (!all_frames_largest_contentful_paint.IsEmpty() && + WasStartedInForegroundOptionalEventInForeground( + all_frames_largest_contentful_paint.Time(), delegate)) { + PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSLargestContentfulPaint, + all_frames_largest_contentful_paint.Time().value()); + } +}
diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h index 25c42795..b1b2a0e1 100644 --- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h +++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h
@@ -7,6 +7,7 @@ #include "base/macros.h" #include "base/optional.h" +#include "components/page_load_metrics/browser/observers/largest_contentful_paint_handler.h" #include "components/page_load_metrics/browser/page_load_metrics_observer.h" #include "services/metrics/public/cpp/ukm_source.h" #include "url/gurl.h" @@ -18,6 +19,7 @@ extern const char kHistogramFromGWSFirstPaint[]; extern const char kHistogramFromGWSFirstImagePaint[]; extern const char kHistogramFromGWSFirstContentfulPaint[]; +extern const char kHistogramFromGWSLargestContentfulPaint[]; extern const char kHistogramFromGWSParseStartToFirstContentfulPaint[]; extern const char kHistogramFromGWSParseDuration[]; extern const char kHistogramFromGWSParseStart[]; @@ -48,6 +50,7 @@ class FromGWSPageLoadMetricsLogger { public: FromGWSPageLoadMetricsLogger(); + ~FromGWSPageLoadMetricsLogger(); void SetPreviouslyCommittedUrl(const GURL& url); void SetProvisionalUrl(const GURL& url); @@ -106,6 +109,13 @@ const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::PageLoadMetricsObserverDelegate& delegate); + void OnTimingUpdate(content::RenderFrameHost* subframe_rfh, + const page_load_metrics::mojom::PageLoadTiming& timing); + + void OnDidFinishSubFrameNavigation( + content::NavigationHandle* navigation_handle, + const page_load_metrics::PageLoadMetricsObserverDelegate& delegate); + // The methods below are public only for testing. bool ShouldLogFailedProvisionalLoadMetrics(); bool ShouldLogPostCommitMetrics(const GURL& url); @@ -114,6 +124,9 @@ const page_load_metrics::PageLoadMetricsObserverDelegate& delegate); private: + void LogMetricsOnComplete( + const page_load_metrics::PageLoadMetricsObserverDelegate& delegate); + bool previously_committed_url_is_search_results_ = false; bool previously_committed_url_is_search_redirector_ = false; bool navigation_initiated_via_link_ = false; @@ -127,6 +140,9 @@ // The time of first user interaction after paint from navigation start. base::Optional<base::TimeDelta> first_user_interaction_after_paint_; + page_load_metrics::LargestContentfulPaintHandler + largest_contentful_paint_handler_; + DISALLOW_COPY_AND_ASSIGN(FromGWSPageLoadMetricsLogger); }; @@ -172,6 +188,13 @@ const blink::WebInputEvent& event, const page_load_metrics::mojom::PageLoadTiming& timing) override; + void OnTimingUpdate( + content::RenderFrameHost* subframe_rfh, + const page_load_metrics::mojom::PageLoadTiming& timing) override; + + void OnDidFinishSubFrameNavigation( + content::NavigationHandle* navigation_handle) override; + private: FromGWSPageLoadMetricsLogger logger_;
diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc index e50a27cc..cf8419be 100644 --- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
@@ -149,6 +149,8 @@ timing.paint_timing->first_paint = base::TimeDelta::FromMilliseconds(20); timing.paint_timing->first_contentful_paint = base::TimeDelta::FromMilliseconds(40); + timing.paint_timing->largest_text_paint = + base::TimeDelta::FromMilliseconds(50); timing.paint_timing->first_image_paint = base::TimeDelta::FromMilliseconds(160); timing.parse_timing->parse_stop = base::TimeDelta::FromMilliseconds(320); @@ -188,6 +190,12 @@ timing.paint_timing->first_contentful_paint.value().InMilliseconds(), 1); tester()->histogram_tester().ExpectTotalCount( + internal::kHistogramFromGWSLargestContentfulPaint, 1); + tester()->histogram_tester().ExpectBucketCount( + internal::kHistogramFromGWSLargestContentfulPaint, + timing.paint_timing->largest_text_paint.value().InMilliseconds(), 1); + + tester()->histogram_tester().ExpectTotalCount( internal::kHistogramFromGWSParseStartToFirstContentfulPaint, 1); tester()->histogram_tester().ExpectBucketCount( internal::kHistogramFromGWSParseStartToFirstContentfulPaint,
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc index 51bff24..5ff167b 100644 --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1120,6 +1120,9 @@ { key::kAllowSyncXHRInPageDismissal, prefs::kAllowSyncXHRInPageDismissal, base::Value::Type::BOOLEAN }, + { key::kExternalProtocolDialogShowAlwaysOpenCheckbox, + prefs::kExternalProtocolDialogShowAlwaysOpenCheckbox, + base::Value::Type::BOOLEAN }, #if defined(OS_WIN) || defined(OS_MACOSX) || \ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc index 2cf4e76..c4c3c7f 100644 --- a/chrome/browser/policy/policy_browsertest.cc +++ b/chrome/browser/policy/policy_browsertest.cc
@@ -5743,7 +5743,9 @@ std::make_unique<base::Value>(true)); UpdateProviderPolicy(policies); - EXPECT_TRUE(safe_browsing::RealTimePolicyEngine::CanPerformFullURLLookup( + // TODO(crbug.com/1015484): This should be enabled, once we clarify the + // policy semantics. + EXPECT_FALSE(safe_browsing::RealTimePolicyEngine::CanPerformFullURLLookup( browser()->profile())); }
diff --git a/chrome/browser/previews/lazyload_browsertest.cc b/chrome/browser/previews/lazyload_browsertest.cc index 89bd10d6..593bec5 100644 --- a/chrome/browser/previews/lazyload_browsertest.cc +++ b/chrome/browser/previews/lazyload_browsertest.cc
@@ -6,6 +6,8 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "build/build_config.h" +#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h" +#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h" #include "chrome/browser/prerender/prerender_final_status.h" #include "chrome/browser/prerender/prerender_handle.h" #include "chrome/browser/prerender/prerender_manager.h" @@ -39,16 +41,19 @@ void SetUp() override { scoped_feature_list_.InitWithFeaturesAndParameters( {{features::kLazyImageLoading, - {{"automatic-lazy-load-images-enabled", "true"}, - {"restrict-lazy-load-images-to-data-saver-only", "false"}, - {"lazy_image_first_k_fully_load", "4G:0"}}}, - {features::kLazyFrameLoading, - {{"automatic-lazy-load-frames-enabled", "true"}, - {"restrict-lazy-load-frames-to-data-saver-only", "false"}}}}, + {{"lazy_image_first_k_fully_load", "4G:0"}}}}, {}); InProcessBrowserTest::SetUp(); } + void EnableDataSaver(bool enabled) { + Profile* profile = Profile::FromBrowserContext(browser()->profile()); + + data_reduction_proxy::DataReductionProxySettings:: + SetDataSaverEnabledForTesting(profile->GetPrefs(), enabled); + base::RunLoop().RunUntilIdle(); + } + void ScrollToAndWaitForScroll(unsigned int scroll_offset) { ASSERT_TRUE(content::ExecuteScript( browser()->tab_strip_model()->GetActiveWebContents(), @@ -134,11 +139,14 @@ }; IN_PROC_BROWSER_TEST_F(LazyLoadBrowserTest, CSSBackgroundImageDeferred) { + EnableDataSaver(true); ASSERT_TRUE(embedded_test_server()->Start()); base::HistogramTester histogram_tester; - ui_test_utils::NavigateToURL( + ui_test_utils::NavigateToURLWithDisposition( browser(), - embedded_test_server()->GetURL("/lazyload/css-background-image.html")); + embedded_test_server()->GetURL("/lazyload/css-background-image.html"), + WindowOpenDisposition::NEW_FOREGROUND_TAB, + ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); base::RunLoop().RunUntilIdle(); // Navigate away to finish the histogram recording. @@ -151,6 +159,7 @@ } IN_PROC_BROWSER_TEST_F(LazyLoadBrowserTest, CSSPseudoBackgroundImageLoaded) { + EnableDataSaver(true); ASSERT_TRUE(embedded_test_server()->Start()); base::HistogramTester histogram_tester; ui_test_utils::NavigateToURL( @@ -169,14 +178,16 @@ IN_PROC_BROWSER_TEST_F(LazyLoadBrowserTest, LazyLoadImage_DeferredAndLoadedOnScroll) { + EnableDataSaver(true); ASSERT_TRUE(embedded_test_server()->Start()); GURL test_url(embedded_test_server()->GetURL("/lazyload/img.html")); - auto* contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto* contents = browser()->OpenURL(content::OpenURLParams( + test_url, content::Referrer(), WindowOpenDisposition::NEW_FOREGROUND_TAB, + ui::PAGE_TRANSITION_TYPED, false)); content::ConsoleObserverDelegate console_observer( contents, "LAZY_LOAD CONSOLE * ON_LOAD FOR TEST"); contents->SetDelegate(&console_observer); - ui_test_utils::NavigateToURL(browser(), test_url); // Wait for the four images (3 in-viewport, 1 eager below-viewport) and the // document to load. @@ -210,6 +221,7 @@ IN_PROC_BROWSER_TEST_F(LazyLoadBrowserTest, LazyLoadFrame_DeferredAndLoadedOnScroll) { + EnableDataSaver(true); SetUpLazyLoadFrameTestPage(); GURL test_url(embedded_test_server()->GetURL("/mainpage.html")); @@ -250,67 +262,141 @@ "loading=lazy iframe ON_LOAD FOR TEST")); } -IN_PROC_BROWSER_TEST_F(LazyLoadBrowserTest, +// Tests that need to verify lazyload should be disabled in certain cases. +class LazyLoadDisabledBrowserTest : public LazyLoadBrowserTest { + public: + enum class ExpectedLazyLoadAction { + kOff, // All iframes and images should load. + kExplicitOnly, // Only the above viewport elements and below viewport + // explicit lazyload elements will load. + }; + + content::WebContents* CreateBackgroundWebContents(Browser* browser, + const GURL& url) { + return browser->OpenURL(content::OpenURLParams( + url, content::Referrer(), WindowOpenDisposition::NEW_BACKGROUND_TAB, + ui::PAGE_TRANSITION_TYPED, false)); + } + + void VerifyLazyLoadFrameBehavior( + content::WebContents* web_contents, + ExpectedLazyLoadAction expected_lazy_load_action) { + content::ConsoleObserverDelegate console_observer( + web_contents, "LAZY_LOAD CONSOLE * ON_LOAD FOR TEST"); + web_contents->SetDelegate(&console_observer); + + std::vector<std::string> expected_console_messages{ + "LAZY_LOAD CONSOLE document ON_LOAD FOR TEST", + "LAZY_LOAD CONSOLE in-viewport iframe ON_LOAD FOR TEST", + "LAZY_LOAD CONSOLE in-viewport loading=lazy iframe ON_LOAD FOR " + "TEST", + "LAZY_LOAD CONSOLE in-viewport loading=eager iframe ON_LOAD FOR " + "TEST", + "LAZY_LOAD CONSOLE below-viewport loading=eager iframe ON_LOAD FOR " + "TEST"}; + switch (expected_lazy_load_action) { + case ExpectedLazyLoadAction::kOff: + expected_console_messages.push_back( + "LAZY_LOAD CONSOLE below-viewport loading=lazy iframe ON_LOAD FOR " + "TEST"); + ABSL_FALLTHROUGH_INTENDED; + case ExpectedLazyLoadAction::kExplicitOnly: + expected_console_messages.push_back( + "LAZY_LOAD CONSOLE below-viewport iframe ON_LOAD FOR TEST"); + break; + } + + // Wait for the expected elements and the document to load. + while (console_observer.messages().size() < + expected_console_messages.size()) { + base::RunLoop().RunUntilIdle(); + } + console_observer.Wait(); + + EXPECT_THAT(console_observer.messages(), + testing::UnorderedElementsAreArray(expected_console_messages)); + } + + void VerifyLazyLoadImageBehavior( + content::WebContents* web_contents, + ExpectedLazyLoadAction expected_lazy_load_action) { + content::ConsoleObserverDelegate console_observer( + web_contents, "LAZY_LOAD CONSOLE * ON_LOAD FOR TEST"); + web_contents->SetDelegate(&console_observer); + + std::vector<std::string> expected_console_messages{ + "LAZY_LOAD CONSOLE document ON_LOAD FOR TEST", + "LAZY_LOAD CONSOLE in-viewport img ON_LOAD FOR TEST", + "LAZY_LOAD CONSOLE in-viewport loading=lazy img ON_LOAD FOR TEST", + "LAZY_LOAD CONSOLE in-viewport loading=eager img ON_LOAD FOR TEST", + "LAZY_LOAD CONSOLE below-viewport loading=eager img ON_LOAD FOR " + "TEST"}; + + switch (expected_lazy_load_action) { + case ExpectedLazyLoadAction::kOff: + expected_console_messages.push_back( + "LAZY_LOAD CONSOLE below-viewport loading=lazy img ON_LOAD FOR " + "TEST"); + ABSL_FALLTHROUGH_INTENDED; + case ExpectedLazyLoadAction::kExplicitOnly: + expected_console_messages.push_back( + "LAZY_LOAD CONSOLE below-viewport img ON_LOAD FOR TEST"); + break; + } + + EXPECT_THAT(console_observer.messages(), testing::UnorderedElementsAre()); + + // Wait for the expected elements and the document to load. + while (console_observer.messages().size() < + expected_console_messages.size()) { + base::RunLoop().RunUntilIdle(); + } + console_observer.Wait(); + EXPECT_THAT(console_observer.messages(), + testing::UnorderedElementsAreArray(expected_console_messages)); + } +}; + +IN_PROC_BROWSER_TEST_F(LazyLoadDisabledBrowserTest, LazyLoadImage_DisabledInBackgroundTab) { + EnableDataSaver(true); ASSERT_TRUE(embedded_test_server()->Start()); GURL test_url(embedded_test_server()->GetURL("/lazyload/img.html")); - - auto* background_contents = browser()->OpenURL(content::OpenURLParams( - test_url, content::Referrer(), WindowOpenDisposition::NEW_BACKGROUND_TAB, - ui::PAGE_TRANSITION_TYPED, false)); - content::ConsoleObserverDelegate console_observer( - background_contents, "LAZY_LOAD CONSOLE * ON_LOAD FOR TEST"); - background_contents->SetDelegate(&console_observer); - - // Wait for the four images and the document to load. - while (console_observer.messages().size() < 7) { - base::RunLoop().RunUntilIdle(); - } - console_observer.Wait(); - - EXPECT_THAT( - console_observer.messages(), - testing::UnorderedElementsAre( - "LAZY_LOAD CONSOLE document ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE in-viewport img ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE in-viewport loading=lazy img ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE in-viewport loading=eager img ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE below-viewport img ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE below-viewport loading=lazy img ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE below-viewport loading=eager img ON_LOAD FOR " - "TEST")); + auto* web_contents = CreateBackgroundWebContents(browser(), test_url); + VerifyLazyLoadImageBehavior(web_contents, ExpectedLazyLoadAction::kOff); } -IN_PROC_BROWSER_TEST_F(LazyLoadBrowserTest, +IN_PROC_BROWSER_TEST_F(LazyLoadDisabledBrowserTest, + LazyLoadImage_DisabledInIncognito) { + EnableDataSaver(true); + ASSERT_TRUE(embedded_test_server()->Start()); + GURL test_url(embedded_test_server()->GetURL("/lazyload/img.html")); + auto* incognito_web_contents = browser()->OpenURL(content::OpenURLParams( + test_url, content::Referrer(), WindowOpenDisposition::OFF_THE_RECORD, + ui::PAGE_TRANSITION_TYPED, false)); + VerifyLazyLoadImageBehavior(incognito_web_contents, + ExpectedLazyLoadAction::kExplicitOnly); +} + +IN_PROC_BROWSER_TEST_F(LazyLoadDisabledBrowserTest, LazyLoadFrame_DisabledInBackgroundTab) { + EnableDataSaver(true); SetUpLazyLoadFrameTestPage(); GURL test_url(embedded_test_server()->GetURL("/mainpage.html")); + auto* web_contents = CreateBackgroundWebContents(browser(), test_url); + VerifyLazyLoadFrameBehavior(web_contents, ExpectedLazyLoadAction::kOff); +} - auto* background_contents = browser()->OpenURL(content::OpenURLParams( - test_url, content::Referrer(), WindowOpenDisposition::NEW_BACKGROUND_TAB, +IN_PROC_BROWSER_TEST_F(LazyLoadDisabledBrowserTest, + LazyLoadFrame_DisabledInIncognito) { + EnableDataSaver(true); + SetUpLazyLoadFrameTestPage(); + GURL test_url(embedded_test_server()->GetURL("/mainpage.html")); + auto* incognito_web_contents = browser()->OpenURL(content::OpenURLParams( + test_url, content::Referrer(), WindowOpenDisposition::OFF_THE_RECORD, ui::PAGE_TRANSITION_TYPED, false)); - content::ConsoleObserverDelegate console_observer( - background_contents, "LAZY_LOAD CONSOLE * ON_LOAD FOR TEST"); - background_contents->SetDelegate(&console_observer); - - // Wait for the four iframes and the document to load. - while (console_observer.messages().size() < 7) { - base::RunLoop().RunUntilIdle(); - } - console_observer.Wait(); - - EXPECT_THAT( - console_observer.messages(), - testing::UnorderedElementsAre( - "LAZY_LOAD CONSOLE document ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE in-viewport iframe ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE in-viewport loading=lazy iframe ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE in-viewport loading=eager iframe ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE below-viewport iframe ON_LOAD FOR TEST", - "LAZY_LOAD CONSOLE below-viewport loading=lazy iframe ON_LOAD FOR " - "TEST", - "LAZY_LOAD CONSOLE below-viewport loading=eager iframe ON_LOAD FOR " - "TEST")); + VerifyLazyLoadFrameBehavior(incognito_web_contents, + ExpectedLazyLoadAction::kExplicitOnly); } class LazyLoadPrerenderBrowserTest : public LazyLoadBrowserTest { @@ -324,6 +410,7 @@ }; IN_PROC_BROWSER_TEST_F(LazyLoadPrerenderBrowserTest, ImagesIgnored) { + EnableDataSaver(true); SetUpURLMonitor(); ASSERT_TRUE(embedded_test_server()->Start()); GURL test_url(embedded_test_server()->GetURL("/lazyload/img.html"));
diff --git a/chrome/browser/resources/chromeos/assistant_optin/assistant_optin.html b/chrome/browser/resources/chromeos/assistant_optin/assistant_optin.html index d9016fc..e2e6f142 100644 --- a/chrome/browser/resources/chromeos/assistant_optin/assistant_optin.html +++ b/chrome/browser/resources/chromeos/assistant_optin/assistant_optin.html
@@ -26,6 +26,8 @@ <link rel="stylesheet" href="chrome://resources/css/chrome_shared.css"> <link rel="stylesheet" href="../login/oobe_flex_layout.css"> <link rel="stylesheet" href="../login/oobe_screen.css"> +<link rel="stylesheet" href="../login/oobe_dialog.css"> +<link rel="stylesheet" href="../../../../../ui/login/oobe.css"> <link rel="stylesheet" href="setting_zippy.css"> <style include="cr-icons cr-shared-style"></style>
diff --git a/chrome/browser/resources/chromeos/login/cr_ui.js b/chrome/browser/resources/chromeos/login/cr_ui.js index 61cb01e9..48de3c2 100644 --- a/chrome/browser/resources/chromeos/login/cr_ui.js +++ b/chrome/browser/resources/chromeos/login/cr_ui.js
@@ -381,6 +381,14 @@ }; /** + * Sets the hint for calculating OOBE dialog margins. + * @param {OobeTypes.DialogPaddingMode} mode. + */ + Oobe.setDialogPaddingMode = function(mode) { + Oobe.getInstance().setDialogPaddingMode(mode); + }; + + /** * Get the primary display's name. * * Same as the displayInfo.name parameter returned by
diff --git a/chrome/browser/resources/chromeos/login/discover/discover_app.js b/chrome/browser/resources/chromeos/login/discover/discover_app.js index c24b76a..6f663418 100644 --- a/chrome/browser/resources/chromeos/login/discover/discover_app.js +++ b/chrome/browser/resources/chromeos/login/discover/discover_app.js
@@ -33,6 +33,7 @@ setClientAreaSize: function(data) {}, setLabelText: function(data) {}, setShelfHeight: function(data) {}, + setDialogPaddingMode: function(data) {}, setVirtualKeyboardShown: function(data) {}, showAPIKeysNotice: function(data) {}, showOobeUI: function(data) {},
diff --git a/chrome/browser/resources/chromeos/login/oobe_dialog.css b/chrome/browser/resources/chromeos/login/oobe_dialog.css index 620a75a..65390ae 100644 --- a/chrome/browser/resources/chromeos/login/oobe_dialog.css +++ b/chrome/browser/resources/chromeos/login/oobe_dialog.css
@@ -13,9 +13,9 @@ #header-container { padding-bottom: 0; - padding-inline-end: var(--oobe-dialog-content-padding, 64px); - padding-inline-start: var(--oobe-dialog-content-padding, 64px); - padding-top: var(--oobe-dialog-content-padding, 64px); + padding-inline-end: var(--oobe-dialog-content-padding); + padding-inline-start: var(--oobe-dialog-content-padding); + padding-top: var(--oobe-dialog-content-padding); } #header-container[android] { @@ -56,7 +56,7 @@ #footer-container { overflow-y: auto; - padding: 0 var(--oobe-dialog-content-padding, 64px); + padding: 0 var(--oobe-dialog-content-padding); } #footer-container[noFooterPadding] { @@ -64,11 +64,11 @@ } #oobe-bottom { - height: calc(var(--oobe-dialog-footer-height, 96px) - - 2 * var(--oobe-dialog-footer-padding, 32px)); + height: calc(var(--oobe-dialog-footer-height) + - 2 * var(--oobe-dialog-footer-padding)); /* Width: real padding - button margin */ - padding: var(--oobe-dialog-footer-padding, 32px) - calc(var(--oobe-dialog-footer-padding, 32px) - 4px); + padding: var(--oobe-dialog-footer-padding) + calc(var(--oobe-dialog-footer-padding) - 4px); z-index: 1; }
diff --git a/chrome/browser/resources/chromeos/login/oobe_types.js b/chrome/browser/resources/chromeos/login/oobe_types.js index 62d42db..d7ff60a 100644 --- a/chrome/browser/resources/chromeos/login/oobe_types.js +++ b/chrome/browser/resources/chromeos/login/oobe_types.js
@@ -134,3 +134,13 @@ * }} */ OobeTypes.SecurityTokenPinDialogParameters; + +/** + * Specifies the mechanism for calculating oobe-dialog inner padding. + * @enum {string} + */ +OobeTypes.DialogPaddingMode = { + AUTO: 'auto', + NARROW: 'narrow', + WIDE: 'wide', +};
diff --git a/chrome/browser/resources/settings/autofill_page/address_edit_dialog.html b/chrome/browser/resources/settings/autofill_page/address_edit_dialog.html index b2eb9d4..d91745b1 100644 --- a/chrome/browser/resources/settings/autofill_page/address_edit_dialog.html +++ b/chrome/browser/resources/settings/autofill_page/address_edit_dialog.html
@@ -72,13 +72,13 @@ <settings-textarea label="[[item.component.fieldName]]" value="{{item.value}}" on-value-changed="updateCanSave_" class$="address-column [[long_(item)]]" autofocus - spellcheck="false"> + spellcheck="false" maxlength="1000"> </settings-textarea> </template> <template is="dom-if" if="[[!item.isTextArea]]"> <cr-input type="text" label="[[item.component.fieldName]]" autofocus value="{{item.value}}" spellcheck="false" - on-value-changed="updateCanSave_" + on-value-changed="updateCanSave_" maxlength="1000" class$="address-column [[long_(item)]]"> </cr-input> </template> @@ -103,11 +103,12 @@ <div class="address-row"> <cr-input id="phoneInput" type="text" label="$i18n{addressPhone}" class="address-column last-row" on-value-changed="updateCanSave_" - value="{{phoneNumber_}}" spellcheck="false"> + value="{{phoneNumber_}}" spellcheck="false" maxlength="1000"> </cr-input> <cr-input id="emailInput" type="text" label="$i18n{addressEmail}" on-value-changed="updateCanSave_" value="{{email_}}" - class="address-column long last-row" spellcheck="false"> + class="address-column long last-row" spellcheck="false" + maxlength="1000"> </cr-input> </div> </div>
diff --git a/chrome/browser/resources/settings/device_page/display.html b/chrome/browser/resources/settings/device_page/display.html index cee6faf..416d9e9 100644 --- a/chrome/browser/resources/settings/device_page/display.html +++ b/chrome/browser/resources/settings/device_page/display.html
@@ -142,7 +142,7 @@ <!-- Display zoom selection slider --> <div class="settings-box indented two-line"> <div class="start text-area layout vertical"> - <div>$i18n{displayZoomTitle}</div> + <div id="displayZoomTitle">$i18n{displayZoomTitle}</div> <div class="secondary self-start">$i18n{displayZoomSublabel}</div> <div class="secondary self-start" hidden$="[[!logicalResolutionText_]]"> @@ -157,6 +157,7 @@ </cr-policy-pref-indicator> </template> <settings-slider id="displaySizeSlider" + aria-labelledby="displayZoomTitle" ticks="[[zoomValues_]]" pref="{{selectedZoomPref_}}" label-min="$i18n{displaySizeSliderMinLabel}" label-max="$i18n{displaySizeSliderMaxLabel}"
diff --git a/chrome/browser/resources/settings/settings_page/settings_subpage.html b/chrome/browser/resources/settings/settings_page/settings_subpage.html index c48064b..0b0c6b1 100644 --- a/chrome/browser/resources/settings/settings_page/settings_subpage.html +++ b/chrome/browser/resources/settings/settings_page/settings_subpage.html
@@ -88,7 +88,8 @@ </template> <template is="dom-if" if="[[searchLabel]]"> <cr-search-field label="[[searchLabel]]" - on-search-changed="onSearchChanged_"> + on-search-changed="onSearchChanged_" + clear-label="$i18n{clearSearch}"> </cr-search-field> </template> <template is="dom-if" if="[[showSpinner]]">
diff --git a/chrome/browser/search/ntp_features.cc b/chrome/browser/search/ntp_features.cc index 099ffc62..fad66ff8 100644 --- a/chrome/browser/search/ntp_features.cc +++ b/chrome/browser/search/ntp_features.cc
@@ -20,6 +20,16 @@ const base::Feature kChromeColorsCustomColorPicker{ "ChromeColorsCustomColorPicker", base::FEATURE_DISABLED_BY_DEFAULT}; +// If enabled, shows a confirm dialog before removing search suggestions from +// the New Tab page real search box ("realbox"). +const base::Feature kConfirmNtpSuggestionRemovals{ + "ConfirmNtpSuggestionRemovals", base::FEATURE_DISABLED_BY_DEFAULT}; + +// If enabled, "middle slot" promos on the bottom of the NTP will show a dismiss +// UI that allows users to close them and not see them again. +const base::Feature kDismissNtpPromos{"DismissNtpPromos", + base::FEATURE_DISABLED_BY_DEFAULT}; + // If enabled, the user will see the second version of the customization picker. const base::Feature kNtpCustomizationMenuV2{"NtpCustomizationMenuV2", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -39,9 +49,4 @@ .empty()); } -// If enabled, "middle slot" promos on the bottom of the NTP will show a dismiss -// UI that allows users to close them and not see them again. -const base::Feature kDismissNtpPromos{"DismissNtpPromos", - base::FEATURE_DISABLED_BY_DEFAULT}; - } // namespace features
diff --git a/chrome/browser/search/ntp_features.h b/chrome/browser/search/ntp_features.h index 441a8bf..5d4b39d5 100644 --- a/chrome/browser/search/ntp_features.h +++ b/chrome/browser/search/ntp_features.h
@@ -14,6 +14,8 @@ extern const base::Feature kChromeColors; extern const base::Feature kChromeColorsCustomColorPicker; +extern const base::Feature kConfirmNtpSuggestionRemovals; +extern const base::Feature kDismissNtpPromos; extern const base::Feature kNtpCustomizationMenuV2; // Note: only exposed for about:flags. Use IsNtpRealboxEnabled() instead. @@ -24,8 +26,6 @@ // show suggestions of some type in the NTP Realbox. bool IsNtpRealboxEnabled(); -extern const base::Feature kDismissNtpPromos; - } // namespace features #endif // CHROME_BROWSER_SEARCH_NTP_FEATURES_H_
diff --git a/chrome/browser/signin/consistency_cookie_browsertest.cc b/chrome/browser/signin/consistency_cookie_browsertest.cc index f465e02..02919856 100644 --- a/chrome/browser/signin/consistency_cookie_browsertest.cc +++ b/chrome/browser/signin/consistency_cookie_browsertest.cc
@@ -67,9 +67,8 @@ } // CookieChangeListener: - void OnCookieChange(const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause) override { - if (cookie.Name() != kConsistencyCookieName) + void OnCookieChange(const net::CookieChangeInfo& change) override { + if (change.cookie.Name() != kConsistencyCookieName) return; if (!run_loop_quit_closure_.is_null()) std::move(run_loop_quit_closure_).Run();
diff --git a/chrome/browser/tab_contents/view_source_browsertest.cc b/chrome/browser/tab_contents/view_source_browsertest.cc index 1d5149b..10d009c 100644 --- a/chrome/browser/tab_contents/view_source_browsertest.cc +++ b/chrome/browser/tab_contents/view_source_browsertest.cc
@@ -5,6 +5,7 @@ #include "base/command_line.h" #include "base/macros.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/bind_test_util.h" #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/profiles/profile.h" @@ -24,6 +25,7 @@ #include "content/public/test/browser_test_utils.h" #include "content/public/test/test_navigation_observer.h" #include "content/public/test/test_utils.h" +#include "content/public/test/url_loader_interceptor.h" #include "net/base/features.h" #include "net/dns/mock_host_resolver.h" #include "net/test/embedded_test_server/embedded_test_server.h" @@ -513,6 +515,89 @@ ViewSourceWithSplitCacheTest, testing::Bool()); +using ViewSourceWithSplitCacheEnabledTest = ViewSourceWithSplitCacheTest; + +// Tests that the network isolation key for the view-source request is reused +// in the back-navigation request to the view-source page. +// +// The test runs the following steps: +// 1. Navigate to page a.com/title1.html +// 2. Create a cross-site subframe b.com/title1.html +// 3. View-source the subframe +// 4. Navigate the view-source page to a c.com/title1.html +// 5. Navigate back to the view-source page +// +// In the end, the test checks whether the back navigation request resource +// exists in the cache. |exists_in_cache == true| implies the top_frame_origin +// of the network isolation key is a.com (reused). +IN_PROC_BROWSER_TEST_P(ViewSourceWithSplitCacheEnabledTest, + NetworkIsolationKeyReusedForBackNavigation) { + content::SetupCrossSiteRedirector(embedded_test_server()); + ASSERT_TRUE(embedded_test_server()->Start()); + + // 1. Navigate to page a.com/title1.html + GURL main_url(embedded_test_server()->GetURL("a.com", "/title1.html")); + ui_test_utils::NavigateToURL(browser(), main_url); + + content::WebContents* original_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + + { + // 2. Create a cross-site subframe b.com/title1.html + std::string subframe_url = + GURL(embedded_test_server()->GetURL("b.com", "/title1.html")).spec(); + std::string create_frame_script = base::StringPrintf( + "let frame = document.createElement('iframe');" + "frame.src = '%s';" + "document.body.appendChild(frame);", + subframe_url.c_str()); + content::TestNavigationObserver navigation_observer(original_contents); + original_contents->GetMainFrame()->ExecuteJavaScriptForTests( + base::ASCIIToUTF16(create_frame_script), base::NullCallback()); + navigation_observer.Wait(); + } + + // 3. View-source the subframe + content::WebContentsAddedObserver view_source_contents_observer; + original_contents->GetAllFrames()[1]->ViewSource(); + content::WebContents* view_source_contents = + view_source_contents_observer.GetWebContents(); + EXPECT_TRUE(WaitForLoadStop(view_source_contents)); + + // 4. Navigate the view-source page to a c.com/title1.html + ui_test_utils::NavigateToURL( + browser(), GURL(embedded_test_server()->GetURL("c.com", "/title1.html"))); + + bool exists_in_cache = false; + content::URLLoaderInterceptor interceptor( + base::BindLambdaForTesting( + [&](content::URLLoaderInterceptor::RequestParams* params) { + return false; + }), + base::BindLambdaForTesting( + [&](const GURL& request_url, + const network::URLLoaderCompletionStatus& status) { + exists_in_cache = status.exists_in_cache; + }), + {}); + + { + // 5. Navigate back to the view-source page + content::WebContents* new_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + content::TestNavigationObserver navigation_observer(new_contents); + chrome::GoBack(browser(), WindowOpenDisposition::CURRENT_TAB); + navigation_observer.Wait(); + } + + EXPECT_TRUE(exists_in_cache); +} + +INSTANTIATE_TEST_SUITE_P( + /* no prefix */, + ViewSourceWithSplitCacheEnabledTest, + ::testing::Values(true)); + // Verify that links clicked from view-source do not send a Referer header. // See https://crbug.com/834023. IN_PROC_BROWSER_TEST_F(ViewSourceTest, NavigationOmitsReferrer) {
diff --git a/chrome/browser/ui/app_list/app_service/app_service_app_model_builder.cc b/chrome/browser/ui/app_list/app_service/app_service_app_model_builder.cc index 96b6abb..91725c57 100644 --- a/chrome/browser/ui/app_list/app_service/app_service_app_model_builder.cc +++ b/chrome/browser/ui/app_list/app_service/app_service_app_model_builder.cc
@@ -20,6 +20,7 @@ case apps::mojom::Readiness::kReady: case apps::mojom::Readiness::kDisabledByUser: case apps::mojom::Readiness::kDisabledByBlacklist: + case apps::mojom::Readiness::kDisabledByPolicy: case apps::mojom::Readiness::kTerminated: return update.ShowInLauncher() == apps::mojom::OptionalBool::kTrue; default:
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc index 0a4c175..8371b070 100644 --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -127,4 +127,6 @@ registry->RegisterBooleanPref(prefs::kAllowPopupsDuringPageUnload, false); registry->RegisterBooleanPref(prefs::kUserFeedbackAllowed, true); registry->RegisterBooleanPref(prefs::kAllowSyncXHRInPageDismissal, false); + registry->RegisterBooleanPref( + prefs::kExternalProtocolDialogShowAlwaysOpenCheckbox, false); }
diff --git a/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.cc b/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.cc index 5be7e3e0..4da1b5f 100644 --- a/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.cc +++ b/chrome/browser/ui/libgtkui/select_file_dialog_impl_gtk.cc
@@ -200,7 +200,7 @@ host->ReleaseCapture(); std::unique_ptr<base::OnceClosure> callback = std::make_unique<base::OnceClosure>( - views::DesktopWindowTreeHostLinux::GetHostForWidget( + views::DesktopWindowTreeHostX11::GetHostForXID( host->GetAcceleratedWidget()) ->DisableEventListening()); // OnFilePickerDestroy() is called when |dialog| destroyed, which allows
diff --git a/chrome/browser/ui/location_bar/location_bar.h b/chrome/browser/ui/location_bar/location_bar.h index 7284936..d31c1e6 100644 --- a/chrome/browser/ui/location_bar/location_bar.h +++ b/chrome/browser/ui/location_bar/location_bar.h
@@ -41,18 +41,19 @@ // latency of page loads starting at user input. virtual void AcceptInput(base::TimeTicks match_selection_timestamp) = 0; - // Focuses the location bar. Optionally also selects its contents. + // Focuses the location bar. User-initiated focuses (like pressing Ctrl+L) + // should have |is_user_initiated| set to true. In those cases, we want to + // take some extra steps, like selecting everything and maybe uneliding. // - // User-initiated focuses should have |select_all| set to true, as users - // are accustomed to being able to use Ctrl+L to select-all in the omnibox. + // Renderer-initiated focuses (like browser startup or NTP finished loading), + // should have |is_user_initiated| set to false, so we can avoid disrupting + // user actions and avoid requesting on-focus suggestions. // - // Renderer-initiated focuses should have |select_all| set to false, as the - // user may be in the middle of typing while the tab finishes loading. - // In that case, we don't want to select-all and cause the user to clobber - // their already-typed text. - virtual void FocusLocation(bool select_all) = 0; + // TODO(tommycli): See if there's a more descriptive name for this method. + virtual void FocusLocation(bool is_user_initiated) = 0; // Puts the user into keyword mode with their default search provider. + // TODO(tommycli): See if there's a more descriptive name for this method. virtual void FocusSearch() = 0; // Updates the state of the images showing the content settings status.
diff --git a/chrome/browser/ui/page_info/page_info_ui.cc b/chrome/browser/ui/page_info/page_info_ui.cc index 48cd9c8..6160cd0 100644 --- a/chrome/browser/ui/page_info/page_info_ui.cc +++ b/chrome/browser/ui/page_info/page_info_ui.cc
@@ -20,6 +20,7 @@ #include "chrome/common/chrome_switches.h" #include "chrome/grit/generated_resources.h" #include "components/safe_browsing/buildflags.h" +#include "components/security_interstitials/core/common_string_util.h" #include "components/strings/grit/components_chromium_strings.h" #include "components/strings/grit/components_strings.h" #include "components/vector_icons/vector_icons.h" @@ -195,6 +196,22 @@ return security_description; } +std::unique_ptr<PageInfoUI::SecurityDescription> +CreateSecurityDescriptionForLookalikeSafetyTip(const GURL& safe_url) { + std::unique_ptr<PageInfoUI::SecurityDescription> security_description( + new PageInfoUI::SecurityDescription()); + security_description->summary_style = PageInfoUI::SecuritySummaryColor::RED; + + const base::string16 safe_host = + security_interstitials::common_string_util::GetFormattedHostName( + safe_url); + security_description->summary = l10n_util::GetStringFUTF16( + IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_TITLE, safe_host); + security_description->details = l10n_util::GetStringFUTF16( + IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_DESCRIPTION, safe_host); + return security_description; +} + // Gets the actual setting for a ContentSettingType, taking into account what // the default setting value is and whether Html5ByDefault is enabled. ContentSetting GetEffectiveSetting(Profile* profile, @@ -286,11 +303,15 @@ IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_TITLE, IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_DESCRIPTION); case security_state::SafetyTipStatus::kLookalike: - // Lookalikes have their own strings, but they're suggestions, not - // warnings, so we leave Page Info alone. + return CreateSecurityDescriptionForLookalikeSafetyTip( + identity_info.safety_tip_info.safe_url); + case security_state::SafetyTipStatus::kBadKeyword: // Keyword safety tips are only used to collect metrics for now and are // not visible to the user, so don't affect Page Info. + NOTREACHED(); + break; + case security_state::SafetyTipStatus::kNone: case security_state::SafetyTipStatus::kUnknown: break;
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc index 525a58b..dbff25e 100644 --- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc +++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
@@ -12,18 +12,22 @@ #include <string> #include <vector> +#include "base/metrics/field_trial_params.h" #include "base/strings/utf_string_conversions.h" #include "base/time/default_clock.h" +#include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/password_manager/password_store_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" #include "chrome/browser/ui/passwords/passwords_model_delegate.h" #include "chrome/grit/generated_resources.h" +#include "chrome/grit/theme_resources.h" #include "components/password_manager/core/browser/password_bubble_experiment.h" #include "components/password_manager/core/browser/password_form_metrics_recorder.h" #include "components/password_manager/core/browser/password_manager_constants.h" #include "components/password_manager/core/browser/password_store.h" +#include "components/password_manager/core/common/password_manager_features.h" #include "components/password_manager/core/common/password_manager_pref_names.h" #include "components/password_manager/core/common/password_manager_ui.h" #include "components/prefs/pref_service.h" @@ -416,6 +420,25 @@ return pending_password_.username_value; } +int ManagePasswordsBubbleModel::GetTopIllustration(bool dark_mode) const { + if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || + state_ == password_manager::ui::PENDING_PASSWORD_STATE) { + int image = base::GetFieldTrialParamByFeatureAsInt( + password_manager::features::kPasswordSaveIllustration, "image", 0); + switch (image) { + case 1: + return dark_mode ? IDR_SAVE_PASSWORD1_DARK : IDR_SAVE_PASSWORD1; + case 2: + return dark_mode ? IDR_SAVE_PASSWORD2_DARK : IDR_SAVE_PASSWORD2; + case 3: + return dark_mode ? IDR_SAVE_PASSWORD3_DARK : IDR_SAVE_PASSWORD3; + default: + return 0; + } + } + return 0; +} + bool ManagePasswordsBubbleModel::ReplaceToShowPromotionIfNeeded() { Profile* profile = GetProfile(); if (!profile)
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model.h b/chrome/browser/ui/passwords/manage_passwords_bubble_model.h index 37f67d80..b9dffa3e 100644 --- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.h +++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.h
@@ -138,6 +138,9 @@ // Returns the value for the username field when the bubble is opened. const base::string16& GetCurrentUsername() const; + // Returns the ID of the picture to show above the title. + int GetTopIllustration(bool dark_mode) const; + // Returns true and updates the internal state iff the Save bubble should // switch to show a promotion after the password was saved. Otherwise, // returns false and leaves the current state.
diff --git a/chrome/browser/ui/passwords/settings/password_access_authenticator.cc b/chrome/browser/ui/passwords/settings/password_access_authenticator.cc index 0884dd03..8085247 100644 --- a/chrome/browser/ui/passwords/settings/password_access_authenticator.cc +++ b/chrome/browser/ui/passwords/settings/password_access_authenticator.cc
@@ -6,8 +6,12 @@ #include <utility> +#include "base/callback.h" #include "base/metrics/histogram_macros.h" +#include "base/task/post_task.h" +#include "base/task/task_traits.h" #include "base/time/default_clock.h" +#include "build/build_config.h" #include "components/password_manager/core/browser/password_manager_metrics_util.h" PasswordAccessAuthenticator::PasswordAccessAuthenticator( @@ -19,34 +23,44 @@ // TODO(crbug.com/327331): Trigger Re-Auth after closing and opening the // settings tab. -bool PasswordAccessAuthenticator::EnsureUserIsAuthenticated( - password_manager::ReauthPurpose purpose) { - const bool can_skip_reauth = - last_authentication_time_.has_value() && - clock_->Now() - *last_authentication_time_ <= - base::TimeDelta::FromSeconds(kAuthValidityPeriodSeconds); +void PasswordAccessAuthenticator::EnsureUserIsAuthenticatedAsync( + password_manager::ReauthPurpose purpose, + base::OnceCallback<void(bool)> postAuthCallback) { + const bool can_skip_reauth = CanSkipReauth(); if (can_skip_reauth) { UMA_HISTOGRAM_ENUMERATION( "PasswordManager.ReauthToAccessPasswordInSettings", password_manager::metrics_util::REAUTH_SKIPPED, password_manager::metrics_util::REAUTH_COUNT); - return true; + std::move(postAuthCallback).Run(can_skip_reauth); + return; } - return ForceUserReauthentication(purpose); + ForceUserReauthenticationAsync(purpose, std::move(postAuthCallback)); } -bool PasswordAccessAuthenticator::ForceUserReauthentication( - password_manager::ReauthPurpose purpose) { +void PasswordAccessAuthenticator::ForceUserReauthenticationAsync( + password_manager::ReauthPurpose purpose, + base::OnceCallback<void(bool)> postAuthCallback) { +#if defined(OS_WIN) + // In Windows it is possible to move OS authentication to separate thread. + ReauthCallback os_reauth_call(os_reauth_call_); + base::PostTaskAndReplyWithResult( + FROM_HERE, + {base::ThreadPool(), base::TaskPriority::USER_VISIBLE, base::MayBlock(), + base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, + base::BindOnce(std::move(os_reauth_call), purpose), + base::BindOnce( + &PasswordAccessAuthenticator::ProcessReauthenticationResult, + weak_ptr_factory_.GetWeakPtr(), purpose, + std::move(postAuthCallback))); +#else + // For MAC OS, user input to a process is pulled in by OS prompt, + // if OS prompt is in open state. bool authenticated = os_reauth_call_.Run(purpose); - if (authenticated) - last_authentication_time_ = clock_->Now(); - UMA_HISTOGRAM_ENUMERATION( - "PasswordManager.ReauthToAccessPasswordInSettings", - authenticated ? password_manager::metrics_util::REAUTH_SUCCESS - : password_manager::metrics_util::REAUTH_FAILURE, - password_manager::metrics_util::REAUTH_COUNT); - return authenticated; + ProcessReauthenticationResult(purpose, std::move(postAuthCallback), + authenticated); +#endif // OS_WIN } void PasswordAccessAuthenticator::SetOsReauthCallForTesting( @@ -57,3 +71,24 @@ void PasswordAccessAuthenticator::SetClockForTesting(base::Clock* clock) { clock_ = clock; } + +bool PasswordAccessAuthenticator::CanSkipReauth() const { + return last_authentication_time_.has_value() && + clock_->Now() - *last_authentication_time_ <= + base::TimeDelta::FromSeconds(kAuthValidityPeriodSeconds); +} + +void PasswordAccessAuthenticator::ProcessReauthenticationResult( + password_manager::ReauthPurpose purpose, + base::OnceCallback<void(bool)> postAuthCallback, + bool authenticated) { + if (authenticated) + last_authentication_time_ = clock_->Now(); + UMA_HISTOGRAM_ENUMERATION( + "PasswordManager.ReauthToAccessPasswordInSettings", + authenticated ? password_manager::metrics_util::REAUTH_SUCCESS + : password_manager::metrics_util::REAUTH_FAILURE, + password_manager::metrics_util::REAUTH_COUNT); + + std::move(postAuthCallback).Run(authenticated); +}
diff --git a/chrome/browser/ui/passwords/settings/password_access_authenticator.h b/chrome/browser/ui/passwords/settings/password_access_authenticator.h index 68a06da2..c86a535 100644 --- a/chrome/browser/ui/passwords/settings/password_access_authenticator.h +++ b/chrome/browser/ui/passwords/settings/password_access_authenticator.h
@@ -9,6 +9,7 @@ #include "base/callback.h" #include "base/macros.h" +#include "base/memory/weak_ptr.h" #include "base/optional.h" #include "base/time/clock.h" #include "base/time/time.h" @@ -35,16 +36,23 @@ ~PasswordAccessAuthenticator(); - // Returns whether the user is able to pass the authentication challenge, - // which is represented by |os_reauth_call_| returning true. A successful - // result of |os_reauth_call_| is cached for |kAuthValidityPeriodSeconds| - // seconds. - bool EnsureUserIsAuthenticated(password_manager::ReauthPurpose purpose); + // Checks whether user is already authenticated or not, if yes, + // execute |postAuthCallback|. Otherwise call + // |ForceUserReauthenticationAsync| function for presenting OS + // authentication challenge. + // This function and |postAuthCallback| callback should be executed + // on main thread only. + void EnsureUserIsAuthenticatedAsync( + password_manager::ReauthPurpose purpose, + base::OnceCallback<void(bool)> postAuthCallback); - // Presents the reauthentication challenge to the user and returns whether - // the user passed the challenge. This call is guaranteed to present the - // challenge to the user. - bool ForceUserReauthentication(password_manager::ReauthPurpose purpose); + // Presents the authentication challenge to the user on the + // background thread for Windows, and on UI thread for other platforms. + // This call is guaranteed to present the challenge to the user. + // This function should be executed on main thread only. + void ForceUserReauthenticationAsync( + password_manager::ReauthPurpose purpose, + base::OnceCallback<void(bool)> postAuthCallback); // Use this in tests to mock the OS-level reauthentication. void SetOsReauthCallForTesting(ReauthCallback os_reauth_call); @@ -53,6 +61,19 @@ void SetClockForTesting(base::Clock* clock); private: + // Returns whether the user can skip Reauth, based on + // |last_authentication_time_| and |kAuthValidityPeriodSeconds| + bool CanSkipReauth() const; + + // This function will be called on main thread and it will run + // |postAuthCallback| on main thread. + // A successful result of |os_reauth_call_| is cached for + // |kAuthValidityPeriodSeconds| seconds. + void ProcessReauthenticationResult( + password_manager::ReauthPurpose purpose, + base::OnceCallback<void(bool)> postAuthCallback, + bool authenticated); + // The last time the user was successfully authenticated. base::Optional<base::Time> last_authentication_time_; @@ -63,6 +84,9 @@ // prompt) to the user. ReauthCallback os_reauth_call_; + // Weak pointers for different callbacks. + base::WeakPtrFactory<PasswordAccessAuthenticator> weak_ptr_factory_{this}; + DISALLOW_COPY_AND_ASSIGN(PasswordAccessAuthenticator); };
diff --git a/chrome/browser/ui/passwords/settings/password_access_authenticator_unittest.cc b/chrome/browser/ui/passwords/settings/password_access_authenticator_unittest.cc index ea1e203..24bd940 100644 --- a/chrome/browser/ui/passwords/settings/password_access_authenticator_unittest.cc +++ b/chrome/browser/ui/passwords/settings/password_access_authenticator_unittest.cc
@@ -7,7 +7,10 @@ #include <utility> #include "base/bind.h" +#include "base/test/mock_callback.h" #include "base/test/simple_test_clock.h" +#include "base/test/task_environment.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" using ::testing::TestWithParam; @@ -15,6 +18,9 @@ namespace { +// Callback to be executed post os authentication. +using PostAuthCallback = base::OnceCallback<void(bool)>; + enum class ReauthResult { PASS, FAIL }; bool FakeOsReauthCall(bool* reauth_called, ReauthResult result, @@ -32,7 +38,11 @@ ~PasswordAccessAuthenticatorTest() = default; protected: + base::test::TaskEnvironment& task_env() { return task_env_; } password_manager::ReauthPurpose purpose_; + + private: + base::test::TaskEnvironment task_env_; }; // Check that a passed authentication does not expire before @@ -48,20 +58,27 @@ &FakeOsReauthCall, &reauth_called, ReauthResult::PASS)); authenticator.SetClockForTesting(&clock); - EXPECT_TRUE(authenticator.EnsureUserIsAuthenticated(purpose_)); + base::MockCallback<PostAuthCallback> callback; + EXPECT_CALL(callback, Run(true)); + authenticator.EnsureUserIsAuthenticatedAsync(purpose_, callback.Get()); + task_env().RunUntilIdle(); EXPECT_TRUE(reauth_called); clock.Advance(base::TimeDelta::FromSeconds( PasswordAccessAuthenticator::kAuthValidityPeriodSeconds - 1)); reauth_called = false; - EXPECT_TRUE(authenticator.EnsureUserIsAuthenticated(purpose_)); + EXPECT_CALL(callback, Run(true)); + authenticator.EnsureUserIsAuthenticatedAsync(purpose_, callback.Get()); + task_env().RunUntilIdle(); EXPECT_FALSE(reauth_called); clock.Advance(base::TimeDelta::FromSeconds(2)); reauth_called = false; - EXPECT_TRUE(authenticator.EnsureUserIsAuthenticated(purpose_)); + EXPECT_CALL(callback, Run(true)); + authenticator.EnsureUserIsAuthenticatedAsync(purpose_, callback.Get()); + task_env().RunUntilIdle(); EXPECT_TRUE(reauth_called); } @@ -76,14 +93,19 @@ &FakeOsReauthCall, &reauth_called, ReauthResult::PASS)); authenticator.SetClockForTesting(&clock); - EXPECT_TRUE(authenticator.EnsureUserIsAuthenticated(purpose_)); + base::MockCallback<PostAuthCallback> callback; + EXPECT_CALL(callback, Run(true)); + authenticator.EnsureUserIsAuthenticatedAsync(purpose_, callback.Get()); + task_env().RunUntilIdle(); EXPECT_TRUE(reauth_called); clock.Advance(base::TimeDelta::FromSeconds( - PasswordAccessAuthenticator::kAuthValidityPeriodSeconds - 1)); + PasswordAccessAuthenticator::kAuthValidityPeriodSeconds + 1)); reauth_called = false; - EXPECT_TRUE(authenticator.ForceUserReauthentication(purpose_)); + EXPECT_CALL(callback, Run(true)); + authenticator.EnsureUserIsAuthenticatedAsync(purpose_, callback.Get()); + task_env().RunUntilIdle(); EXPECT_TRUE(reauth_called); } @@ -99,7 +121,10 @@ &FakeOsReauthCall, &reauth_called, ReauthResult::FAIL)); authenticator.SetClockForTesting(&clock); - EXPECT_FALSE(authenticator.EnsureUserIsAuthenticated(purpose_)); + base::MockCallback<PostAuthCallback> callback; + EXPECT_CALL(callback, Run(false)); + authenticator.EnsureUserIsAuthenticatedAsync(purpose_, callback.Get()); + task_env().RunUntilIdle(); EXPECT_TRUE(reauth_called); // Advance just a little bit, so that if |authenticator| starts the grace @@ -107,7 +132,9 @@ clock.Advance(base::TimeDelta::FromSeconds(1)); reauth_called = false; - EXPECT_FALSE(authenticator.EnsureUserIsAuthenticated(purpose_)); + EXPECT_CALL(callback, Run(false)); + authenticator.EnsureUserIsAuthenticatedAsync(purpose_, callback.Get()); + task_env().RunUntilIdle(); EXPECT_TRUE(reauth_called); } @@ -124,7 +151,10 @@ &FakeOsReauthCall, &reauth_called, ReauthResult::PASS)); authenticator.SetClockForTesting(&clock); - EXPECT_TRUE(authenticator.EnsureUserIsAuthenticated(purpose_)); + base::MockCallback<PostAuthCallback> callback; + EXPECT_CALL(callback, Run(true)); + authenticator.EnsureUserIsAuthenticatedAsync(purpose_, callback.Get()); + task_env().RunUntilIdle(); EXPECT_TRUE(reauth_called); }
diff --git a/chrome/browser/ui/search/search_tab_helper.cc b/chrome/browser/ui/search/search_tab_helper.cc index 301764f..834b1a1 100644 --- a/chrome/browser/ui/search/search_tab_helper.cc +++ b/chrome/browser/ui/search/search_tab_helper.cc
@@ -15,11 +15,13 @@ #include "chrome/browser/search/chrome_colors/chrome_colors_factory.h" #include "chrome/browser/search/instant_service.h" #include "chrome/browser/search/instant_service_factory.h" +#include "chrome/browser/search/ntp_features.h" #include "chrome/browser/search/promos/promo_service.h" #include "chrome/browser/search/promos/promo_service_factory.h" #include "chrome/browser/search/search.h" #include "chrome/browser/search/search_suggest/search_suggest_service.h" #include "chrome/browser/search/search_suggest/search_suggest_service_factory.h" +#include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/browser/ui/browser_finder.h" @@ -30,6 +32,8 @@ #include "chrome/browser/ui/search/ntp_user_data_logger.h" #include "chrome/browser/ui/search/search_ipc_router_policy_impl.h" #include "chrome/browser/ui/tab_contents/core_tab_helper.h" +#include "chrome/browser/ui/tab_modal_confirm_dialog.h" +#include "chrome/browser/ui/tab_modal_confirm_dialog_delegate.h" #include "chrome/common/chrome_features.h" #include "chrome/common/search.mojom.h" #include "chrome/common/url_constants.h" @@ -42,7 +46,9 @@ #include "components/omnibox/browser/omnibox_edit_model.h" #include "components/omnibox/browser/omnibox_popup_model.h" #include "components/omnibox/browser/omnibox_view.h" +#include "components/omnibox/common/omnibox_features.h" #include "components/search/search.h" +#include "components/search_engines/template_url_service.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/strings/grit/components_strings.h" #include "components/sync/base/user_selectable_type.h" @@ -292,7 +298,10 @@ return; if (focus) { - omnibox_view->SetFocus(); + // This is an invisible focus to support "realbox" implementations on NTPs + // (including other search providers). We shouldn't consider it as the user + // explicitly focusing the omnibox. + omnibox_view->SetFocus(/*is_user_initiated=*/false); omnibox_view->model()->SetCaretVisibility(false); // If the user clicked on the fakebox, any text already in the omnibox // should get cleared when they start typing. Selecting all the existing @@ -421,8 +430,11 @@ if (text_to_paste.empty()) return; - if (!omnibox_view->model()->has_focus()) - omnibox_view->SetFocus(); + if (!omnibox_view->model()->has_focus()) { + // Pasting into a "realbox" should not be considered the user explicitly + // focusing the omnibox. + omnibox_view->SetFocus(/*is_user_initiated=*/false); + } omnibox_view->OnBeforePossibleChange(); omnibox_view->model()->OnPaste(); @@ -610,14 +622,108 @@ autocomplete_controller_->Start(autocomplete_input); } +namespace { + +class DeleteAutocompleteMatchConfirmDelegate + : public TabModalConfirmDialogDelegate { + public: + DeleteAutocompleteMatchConfirmDelegate( + content::WebContents* contents, + base::string16 search_provider_name, + base::OnceCallback<void(bool)> dialog_callback) + : TabModalConfirmDialogDelegate(contents), + search_provider_name_(search_provider_name), + dialog_callback_(std::move(dialog_callback)) { + DCHECK(dialog_callback_); + } + + ~DeleteAutocompleteMatchConfirmDelegate() override { + DCHECK(!dialog_callback_); + } + + base::string16 GetTitle() override { + return l10n_util::GetStringUTF16( + IDS_OMNIBOX_REMOVE_SUGGESTION_BUBBLE_TITLE); + } + + base::string16 GetDialogMessage() override { + return l10n_util::GetStringFUTF16( + IDS_OMNIBOX_REMOVE_SUGGESTION_BUBBLE_DESCRIPTION, + search_provider_name_); + } + + base::string16 GetAcceptButtonTitle() override { + return l10n_util::GetStringUTF16(IDS_REMOVE); + } + + void OnAccepted() override { std::move(dialog_callback_).Run(true); } + + void OnCanceled() override { std::move(dialog_callback_).Run(false); } + + void OnClosed() override { + if (dialog_callback_) + OnCanceled(); + } + + private: + base::string16 search_provider_name_; + base::OnceCallback<void(bool)> dialog_callback_; +}; + +} // namespace + void SearchTabHelper::DeleteAutocompleteMatch( uint8_t line, chrome::mojom::EmbeddedSearch::DeleteAutocompleteMatchCallback callback) { + DCHECK(autocomplete_controller_); + + if (!search::DefaultSearchProviderIsGoogle(profile()) || + autocomplete_controller_->result().size() <= line || + !autocomplete_controller_->result().match_at(line).SupportsDeletion()) { + std::move(callback).Run(chrome::mojom::DeleteAutocompleteMatchResult::New( + false, std::vector<chrome::mojom::AutocompleteMatchPtr>())); + return; + } + + if (!base::FeatureList::IsEnabled(features::kConfirmNtpSuggestionRemovals)) { + // If suggestion transparency is disabled, the UI is also disabled. This + // must've come from a keyboard shortcut, which are allowed to remove + // without confirmation. + OnDeleteAutocompleteMatchConfirm(line, std::move(callback), true); + return; + } + + content::BrowserContext* context = web_contents_->GetBrowserContext(); + Profile* profile = Profile::FromBrowserContext(context); + auto* template_url_service = + TemplateURLServiceFactory::GetForProfile(profile); + const auto& match = autocomplete_controller_->result().match_at(line); + + base::string16 search_provider_name; + const TemplateURL* template_url = + match.GetTemplateURL(template_url_service, false); + if (!template_url) + template_url = template_url_service->GetDefaultSearchProvider(); + if (template_url) + search_provider_name = template_url->AdjustedShortNameForLocaleDirection(); + + auto delegate = std::make_unique<DeleteAutocompleteMatchConfirmDelegate>( + web_contents_, search_provider_name, + base::BindOnce(&SearchTabHelper::OnDeleteAutocompleteMatchConfirm, + weak_factory_.GetWeakPtr(), line, std::move(callback))); + TabModalConfirmDialog::Create(std::move(delegate), web_contents_); +} + +void SearchTabHelper::OnDeleteAutocompleteMatchConfirm( + uint8_t line, + chrome::mojom::EmbeddedSearch::DeleteAutocompleteMatchCallback callback, + bool accepted) { + DCHECK(autocomplete_controller_); + bool success = false; std::vector<chrome::mojom::AutocompleteMatchPtr> matches; - if (search::DefaultSearchProviderIsGoogle(profile()) && - autocomplete_controller_ && + if (accepted && search::DefaultSearchProviderIsGoogle(profile()) && autocomplete_controller_->result().size() > line) { const auto& match = autocomplete_controller_->result().match_at(line); if (match.SupportsDeletion()) {
diff --git a/chrome/browser/ui/search/search_tab_helper.h b/chrome/browser/ui/search/search_tab_helper.h index 0e98b68..3fbe6fa 100644 --- a/chrome/browser/ui/search/search_tab_helper.h +++ b/chrome/browser/ui/search/search_tab_helper.h
@@ -10,6 +10,7 @@ #include "base/gtest_prod_util.h" #include "base/macros.h" +#include "base/memory/weak_ptr.h" #include "base/strings/string16.h" #include "base/time/time.h" #include "build/build_config.h" @@ -171,6 +172,14 @@ // active tab is in mode SEARCH_SUGGESTIONS. bool IsInputInProgress() const; + // Called when a user confirms deleting an autocomplete match. Note: might be + // called synchronously with accepted = true if this feature is disabled + // (which defaults the behavior to silent deletions). + void OnDeleteAutocompleteMatchConfirm( + uint8_t line, + chrome::mojom::EmbeddedSearch::DeleteAutocompleteMatchCallback callback, + bool accepted); + content::WebContents* web_contents_; SearchIPCRouter ipc_router_; @@ -191,6 +200,8 @@ WEB_CONTENTS_USER_DATA_KEY_DECL(); + base::WeakPtrFactory<SearchTabHelper> weak_factory_{this}; + DISALLOW_COPY_AND_ASSIGN(SearchTabHelper); };
diff --git a/chrome/browser/ui/thumbnails/thumbnail_tab_helper.cc b/chrome/browser/ui/thumbnails/thumbnail_tab_helper.cc index 108fe313..45d91f1 100644 --- a/chrome/browser/ui/thumbnails/thumbnail_tab_helper.cc +++ b/chrome/browser/ui/thumbnails/thumbnail_tab_helper.cc
@@ -20,6 +20,7 @@ #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" #include "media/capture/mojom/video_capture_types.mojom.h" +#include "mojo/public/cpp/bindings/remote.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/geometry/size_f.h" #include "ui/gfx/scrollbar_size.h" @@ -211,15 +212,19 @@ base::ReadOnlySharedMemoryRegion data, ::media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - ::viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) { + mojo::PendingRemote<::viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) { CHECK(video_capturer_); if (!ShouldKeepUpdatingThumbnail()) StopVideoCapture(); + mojo::Remote<::viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks_remote(std::move(callbacks)); + // Process captured image. if (!data.IsValid()) { - callbacks->Done(); + callbacks_remote->Done(); return; } base::ReadOnlySharedMemoryMapping mapping = data.Map(); @@ -249,7 +254,7 @@ base::ReadOnlySharedMemoryMapping mapping; // Prevents FrameSinkVideoCapturer from recycling the shared memory that // backs |frame_|. - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr releaser; + mojo::Remote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> releaser; }; content::RenderWidgetHostView* const source_view = GetView(); @@ -284,7 +289,7 @@ [](void* addr, void* context) { delete static_cast<FramePinner*>(context); }, - new FramePinner{std::move(mapping), std::move(callbacks)}); + new FramePinner{std::move(mapping), std::move(callbacks_remote)}); frame.setImmutable(); SkBitmap cropped_frame;
diff --git a/chrome/browser/ui/thumbnails/thumbnail_tab_helper.h b/chrome/browser/ui/thumbnails/thumbnail_tab_helper.h index 29a6d71e..830d8279 100644 --- a/chrome/browser/ui/thumbnails/thumbnail_tab_helper.h +++ b/chrome/browser/ui/thumbnails/thumbnail_tab_helper.h
@@ -18,6 +18,7 @@ #include "content/public/browser/navigation_handle.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" +#include "mojo/public/cpp/bindings/pending_remote.h" class ThumbnailTabHelper : public content::WebContentsUserData<ThumbnailTabHelper>, @@ -60,7 +61,8 @@ base::ReadOnlySharedMemoryRegion data, ::media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - ::viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) override; + mojo::PendingRemote<::viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) override; void OnStopped() override; // The last known visibility WebContents visibility.
diff --git a/chrome/browser/ui/views/external_protocol_dialog.cc b/chrome/browser/ui/views/external_protocol_dialog.cc index d7e0efe..8d727af 100644 --- a/chrome/browser/ui/views/external_protocol_dialog.cc +++ b/chrome/browser/ui/views/external_protocol_dialog.cc
@@ -9,15 +9,17 @@ #include "base/metrics/histogram_macros.h" #include "base/strings/string_util.h" #include "chrome/browser/external_protocol/external_protocol_handler.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/tab_contents/tab_util.h" #include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/external_protocol_dialog_delegate.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/chrome_typography.h" +#include "chrome/common/pref_names.h" #include "components/constrained_window/constrained_window_views.h" +#include "components/prefs/pref_service.h" #include "content/public/browser/web_contents.h" #include "ui/gfx/text_elider.h" -#include "ui/views/controls/button/checkbox.h" #include "ui/views/controls/label.h" #include "ui/views/controls/message_box_view.h" #include "ui/views/layout/fill_layout.h" @@ -44,9 +46,7 @@ new ExternalProtocolDialog(std::move(delegate), web_contents); } -ExternalProtocolDialog::~ExternalProtocolDialog() { - delete remember_decision_checkbox_; -} +ExternalProtocolDialog::~ExternalProtocolDialog() {} gfx::Size ExternalProtocolDialog::CalculatePreferredSize() const { constexpr int kDialogContentWidth = 400; @@ -76,7 +76,7 @@ UMA_HISTOGRAM_LONG_TIMES("clickjacking.launch_url", base::TimeTicks::Now() - creation_time_); - const bool remember = remember_decision_checkbox_->GetChecked(); + const bool remember = message_box_view_->IsCheckBoxSelected(); ExternalProtocolHandler::RecordHandleStateMetrics( remember, ExternalProtocolHandler::DONT_BLOCK); @@ -94,6 +94,17 @@ return ui::MODAL_TYPE_CHILD; } +void ExternalProtocolDialog::ShowRememberSelectionCheckbox() { + message_box_view_->SetCheckBoxLabel(delegate_->GetCheckboxText()); +} + +void ExternalProtocolDialog::SetRememberSelectionCheckboxCheckedForTesting( + bool checked) { + if (!message_box_view_->HasCheckBox()) + ShowRememberSelectionCheckbox(); + message_box_view_->SetCheckBoxSelected(checked); +} + ExternalProtocolDialog::ExternalProtocolDialog( std::unique_ptr<const ProtocolDialogDelegate> delegate, WebContents* web_contents) @@ -115,14 +126,12 @@ SetLayoutManager(std::make_unique<views::FillLayout>()); - remember_decision_checkbox_ = - new views::Checkbox(delegate_->GetCheckboxText()); - remember_decision_checkbox_->SetChecked(false); - - // TODO(982341): We intentionally don't add |remember_decision_checkbox_| to - // the dialog, as we're reevaluating whether we actually want persistence - // for this mechanism going forward. - + Profile* profile = + Profile::FromBrowserContext(web_contents->GetBrowserContext()); + if (profile->GetPrefs()->GetBoolean( + prefs::kExternalProtocolDialogShowAlwaysOpenCheckbox)) { + ShowRememberSelectionCheckbox(); + } constrained_window::ShowWebModalDialogViews(this, web_contents); chrome::RecordDialogCreation(chrome::DialogIdentifier::EXTERNAL_PROTOCOL); }
diff --git a/chrome/browser/ui/views/external_protocol_dialog.h b/chrome/browser/ui/views/external_protocol_dialog.h index 332f9895..f75f19fa 100644 --- a/chrome/browser/ui/views/external_protocol_dialog.h +++ b/chrome/browser/ui/views/external_protocol_dialog.h
@@ -21,7 +21,6 @@ } namespace views { -class Checkbox; class MessageBoxView; } @@ -45,9 +44,10 @@ private: friend class test::ExternalProtocolDialogTestApi; - const std::unique_ptr<const ProtocolDialogDelegate> delegate_; + void ShowRememberSelectionCheckbox(); + void SetRememberSelectionCheckboxCheckedForTesting(bool checked); - views::Checkbox* remember_decision_checkbox_; + const std::unique_ptr<const ProtocolDialogDelegate> delegate_; // The message box whose commands we handle. views::MessageBoxView* message_box_view_;
diff --git a/chrome/browser/ui/views/external_protocol_dialog_browsertest.cc b/chrome/browser/ui/views/external_protocol_dialog_browsertest.cc index 16808295..230936b 100644 --- a/chrome/browser/ui/views/external_protocol_dialog_browsertest.cc +++ b/chrome/browser/ui/views/external_protocol_dialog_browsertest.cc
@@ -29,7 +29,7 @@ : dialog_(dialog) {} void SetCheckBoxSelected(bool checked) { - dialog_->remember_decision_checkbox_->SetChecked(checked); + dialog_->SetRememberSelectionCheckboxCheckedForTesting(checked); } private:
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index 499a0b90..ec950d3c 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -368,15 +368,17 @@ //////////////////////////////////////////////////////////////////////////////// // LocationBarView, public LocationBar implementation: -void LocationBarView::FocusLocation(bool select_all) { +void LocationBarView::FocusLocation(bool is_user_initiated) { const bool omnibox_already_focused = omnibox_view_->HasFocus(); - omnibox_view_->SetFocus(); + omnibox_view_->SetFocus(is_user_initiated); if (omnibox_already_focused) omnibox_view()->model()->ClearKeyword(); - if (!select_all) + // TODO(tommycli): Since we are now passing the |is_user_initiated| parameter + // onto OmniboxView, we can likely move the below code into SetFocus(). + if (!is_user_initiated) return; omnibox_view_->SelectAll(true); @@ -940,7 +942,8 @@ } void LocationBarView::FocusSearch() { - omnibox_view_->SetFocus(); + // This is called by keyboard accelerator, so it's user-initiated. + omnibox_view_->SetFocus(/*is_user_initiated=*/true); omnibox_view_->EnterKeywordModeForDefaultSearchProvider(); } @@ -1012,7 +1015,9 @@ } void LocationBarView::OnFocus() { - omnibox_view_->SetFocus(); + // This is only called when the user explicitly focuses the location bar. + // Renderer-initated focuses go through the FocusLocation() call instead. + omnibox_view_->SetFocus(/*is_user_initiated=*/true); } void LocationBarView::OnPaintBorder(gfx::Canvas* canvas) {
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h index 61fe00cc..27c15fc7 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.h +++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -167,7 +167,7 @@ bool ActivateFirstInactiveBubbleForAccessibility(); // LocationBar: - void FocusLocation(bool select_all) override; + void FocusLocation(bool is_user_initiated) override; void Revert() override; OmniboxView* GetOmniboxView() override;
diff --git a/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.cc b/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.cc index 05382a6f..6f11796 100644 --- a/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.cc +++ b/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.cc
@@ -317,8 +317,12 @@ ->GetTextForTooltipAndAccessibleName(); } -int NativeFileSystemUsageBubbleView::GetDialogButtons() const { - return ui::DIALOG_BUTTON_OK; +base::string16 NativeFileSystemUsageBubbleView::GetDialogButtonLabel( + ui::DialogButton button) const { + int message_id = IDS_DONE; + if (button == ui::DIALOG_BUTTON_CANCEL) + message_id = IDS_NATIVE_FILE_SYSTEM_USAGE_REMOVE_ACCESS; + return l10n_util::GetStringUTF16(message_id); } bool NativeFileSystemUsageBubbleView::ShouldShowCloseButton() const { @@ -383,6 +387,29 @@ } } +bool NativeFileSystemUsageBubbleView::Cancel() { + base::RecordAction( + base::UserMetricsAction("NativeFileSystemAPI.RevokePermissions")); + + if (!web_contents()) + return true; + + content::BrowserContext* profile = web_contents()->GetBrowserContext(); + auto* context = + NativeFileSystemPermissionContextFactory::GetForProfileIfExists(profile); + if (!context) + return true; + + context->RevokeGrantsForOriginAndTab( + origin_, web_contents()->GetMainFrame()->GetProcess()->GetID(), + web_contents()->GetMainFrame()->GetRoutingID()); + return true; +} + +bool NativeFileSystemUsageBubbleView::Close() { + return true; // Do not revoke permissions via Cancel() when closing normally. +} + void NativeFileSystemUsageBubbleView::WindowClosing() { // |bubble_| can be a new bubble by this point (as Close(); doesn't // call this right away). Only set to nullptr when it's this bubble. @@ -409,29 +436,3 @@ LocationBarBubbleDelegateView::ChildPreferredSizeChanged(child); SizeToContents(); } - -std::unique_ptr<views::View> -NativeFileSystemUsageBubbleView::CreateExtraView() { - return views::MdTextButton::CreateSecondaryUiButton( - this, - l10n_util::GetStringUTF16(IDS_NATIVE_FILE_SYSTEM_USAGE_REMOVE_ACCESS)); -} - -void NativeFileSystemUsageBubbleView::ButtonPressed(views::Button* sender, - const ui::Event& event) { - base::RecordAction( - base::UserMetricsAction("NativeFileSystemAPI.RevokePermissions")); - - if (!web_contents()) - return; - - content::BrowserContext* profile = web_contents()->GetBrowserContext(); - auto* context = - NativeFileSystemPermissionContextFactory::GetForProfileIfExists(profile); - if (!context) - return; - - context->RevokeGrantsForOriginAndTab( - origin_, web_contents()->GetMainFrame()->GetProcess()->GetID(), - web_contents()->GetMainFrame()->GetRoutingID()); -}
diff --git a/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.h b/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.h index 5665429..da9cf5e 100644 --- a/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.h +++ b/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.h
@@ -10,11 +10,9 @@ #include "base/files/file_path.h" #include "chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h" #include "ui/base/models/table_model.h" -#include "ui/views/controls/button/button.h" #include "url/origin.h" -class NativeFileSystemUsageBubbleView : public LocationBarBubbleDelegateView, - public views::ButtonListener { +class NativeFileSystemUsageBubbleView : public LocationBarBubbleDelegateView { public: struct Usage { Usage(); @@ -63,17 +61,15 @@ // LocationBarBubbleDelegateView: base::string16 GetAccessibleWindowTitle() const override; - int GetDialogButtons() const override; + base::string16 GetDialogButtonLabel(ui::DialogButton button) const override; bool ShouldShowCloseButton() const override; void Init() override; + bool Cancel() override; + bool Close() override; void WindowClosing() override; void CloseBubble() override; gfx::Size CalculatePreferredSize() const override; void ChildPreferredSizeChanged(views::View* child) override; - std::unique_ptr<views::View> CreateExtraView() override; - - // views::ButtonListener: - void ButtonPressed(views::Button* sender, const ui::Event& event) override; // Singleton instance of the bubble. The bubble can only be shown on the // active browser window, so there is no case in which it will be shown
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc index de22b4c..4b1c1ab 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -418,7 +418,7 @@ OmniboxView::RevertAll(); } -void OmniboxViewViews::SetFocus() { +void OmniboxViewViews::SetFocus(bool is_user_initiated) { // Temporarily reveal the top-of-window views (if not already revealed) so // that the location bar view is visible and is considered focusable. When it // actually receives focus, ImmersiveFocusWatcher will add another lock to
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.h b/chrome/browser/ui/views/omnibox/omnibox_view_views.h index b40013e..e83f4ea 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.h +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
@@ -127,7 +127,7 @@ base::string16::size_type* end) const override; void SelectAll(bool reversed) override; void RevertAll() override; - void SetFocus() override; + void SetFocus(bool is_user_initiated) override; bool IsImeComposing() const override; gfx::NativeView GetRelativeWindowForPopup() const override; bool IsImeShowingPopup() const override;
diff --git a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc index d3c73ea..5a713bf0 100644 --- a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc +++ b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc
@@ -32,6 +32,7 @@ #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" #include "components/safe_browsing/db/v4_protocol_manager_util.h" +#include "components/security_interstitials/core/common_string_util.h" #include "components/security_state/core/features.h" #include "components/security_state/core/security_state.h" #include "components/strings/grit/components_strings.h" @@ -232,7 +233,10 @@ : !IsUIShowing(); } - void CheckPageInfoShowsSafetyTipInfo(Browser* browser) { + void CheckPageInfoShowsSafetyTipInfo( + Browser* browser, + security_state::SafetyTipStatus expected_safety_tip_status, + const GURL& expected_safe_url) { if (ui_status() == UIStatus::kDisabled) { return; } @@ -241,9 +245,28 @@ views::BubbleDialogDelegateView* page_info = PageInfoBubbleViewBase::GetPageInfoBubbleForTesting(); ASSERT_TRUE(page_info); - EXPECT_EQ(page_info->GetWindowTitle(), - l10n_util::GetStringUTF16( - IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_TITLE)); + + switch (expected_safety_tip_status) { + case security_state::SafetyTipStatus::kBadReputation: + EXPECT_EQ(page_info->GetWindowTitle(), + l10n_util::GetStringUTF16( + IDS_PAGE_INFO_SAFETY_TIP_BAD_REPUTATION_TITLE)); + break; + + case security_state::SafetyTipStatus::kLookalike: + EXPECT_EQ(page_info->GetWindowTitle(), + l10n_util::GetStringFUTF16( + IDS_PAGE_INFO_SAFETY_TIP_LOOKALIKE_TITLE, + security_interstitials::common_string_util:: + GetFormattedHostName(expected_safe_url))); + break; + + case security_state::SafetyTipStatus::kBadKeyword: + case security_state::SafetyTipStatus::kUnknown: + case security_state::SafetyTipStatus::kNone: + NOTREACHED(); + break; + } } void CheckPageInfoDoesNotShowSafetyTipInfo(Browser* browser) { @@ -298,7 +321,8 @@ NavigateToURL(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB); EXPECT_TRUE(IsUIShowingIfEnabled()); - ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo(browser())); + ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo( + browser(), security_state::SafetyTipStatus::kBadReputation, GURL())); } // Ensure explicitly-allowed sites don't get blocked when the site is otherwise @@ -311,7 +335,8 @@ SetSafetyTipBadRepPatterns({"site1.com/"}); NavigateToURL(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB); EXPECT_TRUE(IsUIShowingIfEnabled()); - ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo(browser())); + ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo( + browser(), security_state::SafetyTipStatus::kBadReputation, GURL())); // ...but suppressed by the allowlist. SetSafetyTipAllowlistPatterns({"site1.com/"}); @@ -368,7 +393,8 @@ EXPECT_EQ(kNavigatedUrl, browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); - ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo(browser())); + ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo( + browser(), security_state::SafetyTipStatus::kBadReputation, GURL())); } // After the user closes the warning, they should still be on the same domain. @@ -385,7 +411,8 @@ EXPECT_EQ(kNavigatedUrl, browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); - ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo(browser())); + ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo( + browser(), security_state::SafetyTipStatus::kBadReputation, GURL())); } // If the user closes the bubble, the warning should not re-appear when the user @@ -422,7 +449,8 @@ NavigateToURL(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB); EXPECT_TRUE(IsUIShowingIfEnabled()); - ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo(browser())); + ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo( + browser(), security_state::SafetyTipStatus::kBadReputation, GURL())); } // Background tabs shouldn't open a bubble initially, but should when they @@ -460,7 +488,14 @@ SetEngagementScore(browser(), kNavigatedUrl, kLowEngagement); NavigateToURL(browser(), kNavigatedUrl, WindowOpenDisposition::CURRENT_TAB); EXPECT_TRUE(IsUIShowingOnlyIfFeaturesEnabled()); - ASSERT_NO_FATAL_FAILURE(CheckPageInfoDoesNotShowSafetyTipInfo(browser())); + + if (ui_status() == UIStatus::kEnabledWithAllFeatures) { + ASSERT_NO_FATAL_FAILURE(CheckPageInfoShowsSafetyTipInfo( + browser(), security_state::SafetyTipStatus::kLookalike, + GURL("https://google.sk"))); + } else { + ASSERT_NO_FATAL_FAILURE(CheckPageInfoDoesNotShowSafetyTipInfo(browser())); + } } // Tests that Safety Tips don't trigger on lookalike domains that are explicitly
diff --git a/chrome/browser/ui/views/passwords/password_pending_view.cc b/chrome/browser/ui/views/passwords/password_pending_view.cc index ebc6491b..f95bfc6 100644 --- a/chrome/browser/ui/views/passwords/password_pending_view.cc +++ b/chrome/browser/ui/views/passwords/password_pending_view.cc
@@ -14,6 +14,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" #include "chrome/browser/ui/passwords/password_dialog_prompts.h" +#include "chrome/browser/ui/views/accessibility/non_accessible_image_view.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/chrome_typography.h" #include "chrome/browser/ui/views/passwords/credentials_item_view.h" @@ -27,6 +28,7 @@ #include "ui/base/models/combobox_model_observer.h" #include "ui/base/models/simple_combobox_model.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/controls/button/image_button.h" #include "ui/views/controls/button/md_text_button.h" @@ -197,6 +199,23 @@ l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_PASSWORD_LABEL)); return combobox; } + +std::unique_ptr<views::View> CreateHeaderImage(int image_id) { + auto image_view = std::make_unique<NonAccessibleImageView>(); + image_view->SetImage( + *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(image_id)); + gfx::Size preferred_size = image_view->GetPreferredSize(); + if (preferred_size.width()) { + float scale = + static_cast<float>(ChromeLayoutProvider::Get()->GetDistanceMetric( + DISTANCE_BUBBLE_PREFERRED_WIDTH)) / + preferred_size.width(); + preferred_size = gfx::ScaleToRoundedSize(preferred_size, scale); + image_view->SetImageSize(preferred_size); + } + return image_view; +} + } // namespace PasswordPendingView::PasswordPendingView(content::WebContents* web_contents, @@ -391,6 +410,13 @@ ->SetAllowCharacterBreak(true); } +void PasswordPendingView::OnThemeChanged() { + if (int id = model()->GetTopIllustration( + GetNativeTheme()->ShouldUseDarkColors())) { + GetBubbleFrameView()->SetHeaderView(CreateHeaderImage(id)); + } +} + void PasswordPendingView::TogglePasswordVisibility() { if (!are_passwords_revealed_ && !model()->RevealPasswords()) return;
diff --git a/chrome/browser/ui/views/passwords/password_pending_view.h b/chrome/browser/ui/views/passwords/password_pending_view.h index 3f649a2..5893458 100644 --- a/chrome/browser/ui/views/passwords/password_pending_view.h +++ b/chrome/browser/ui/views/passwords/password_pending_view.h
@@ -56,6 +56,7 @@ // View: void AddedToWidget() override; + void OnThemeChanged() override; void TogglePasswordVisibility(); void UpdateUsernameAndPasswordInModel();
diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc index 676f914..63c4d1c 100644 --- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
@@ -556,6 +556,25 @@ SetShelfHeight(ash::ShelfConfig::Get()->shelf_size()); } +void CoreOobeHandler::SetDialogPaddingMode( + CoreOobeView::DialogPaddingMode mode) { + std::string padding; + switch (mode) { + case CoreOobeView::DialogPaddingMode::MODE_AUTO: + padding = "auto"; + break; + case CoreOobeView::DialogPaddingMode::MODE_NARROW: + padding = "narrow"; + break; + case CoreOobeView::DialogPaddingMode::MODE_WIDE: + padding = "wide"; + break; + default: + NOTREACHED(); + } + CallJS("cr.ui.Oobe.setDialogPaddingMode", padding); +} + void CoreOobeHandler::OnOobeConfigurationChanged() { base::Value configuration(base::Value::Type::DICTIONARY); chromeos::configuration::FilterConfiguration(
diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h index 2785f22..0687932 100644 --- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h
@@ -39,6 +39,17 @@ class CoreOobeView { public: + // Enum that specifies how inner padding of OOBE dialog should be calculated. + enum class DialogPaddingMode { + // Oobe dialog is displayed full screen, padding will be calculated + // via css depending on media size. + MODE_AUTO, + // Oobe dialog have enough free space around and should use wide padding. + MODE_WIDE, + // Oobe dialog is positioned in limited space and should use narrow padding. + MODE_NARROW, + }; + virtual ~CoreOobeView() {} virtual void ShowSignInError(int login_attempts, @@ -60,6 +71,7 @@ virtual void SetVirtualKeyboardShown(bool shown) = 0; virtual void SetClientAreaSize(int width, int height) = 0; virtual void SetShelfHeight(int height) = 0; + virtual void SetDialogPaddingMode(DialogPaddingMode mode) = 0; virtual void ShowDeviceResetScreen() = 0; virtual void ShowEnableDebuggingScreen() = 0; virtual void InitDemoModeDetection() = 0; @@ -140,6 +152,7 @@ void SetVirtualKeyboardShown(bool displayed) override; void SetClientAreaSize(int width, int height) override; void SetShelfHeight(int height) override; + void SetDialogPaddingMode(CoreOobeView::DialogPaddingMode mode) override; void ShowDeviceResetScreen() override; void ShowEnableDebuggingScreen() override; void ShowActiveDirectoryPasswordChangeScreen(
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 4b8205a..031a22b3 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -81,11 +81,6 @@ #endif }; -#if defined(OS_ANDROID) -const base::Feature kAutoFetchOnNetErrorPage{"AutoFetchOnNetErrorPage", - base::FEATURE_DISABLED_BY_DEFAULT}; -#endif // defined(OS_ANDROID) - #if defined(OS_WIN) || defined(OS_LINUX) // Enables the Restart background mode optimization. When all Chrome UI is // closed and it goes in the background, allows to restart the browser to
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h index 6a3e6c2..a964995 100644 --- a/chrome/common/chrome_features.h +++ b/chrome/common/chrome_features.h
@@ -62,11 +62,6 @@ COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kAsyncDns; -#if defined(OS_ANDROID) -COMPONENT_EXPORT(CHROME_FEATURES) -extern const base::Feature kAutoFetchOnNetErrorPage; -#endif - #if defined(OS_WIN) || defined(OS_LINUX) COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kBackgroundModeAllowRestart;
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 30db34b27..c894bde3 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -2820,4 +2820,7 @@ // TODO(crbug.com/1001450): Remove this once we fully shipped OOR-CORS. const char kCorsLegacyModeEnabled[] = "cors.legacy_mode.enabled"; +const char kExternalProtocolDialogShowAlwaysOpenCheckbox[] = + "external_protocol_dialog.show_always_open_checkbox"; + } // namespace prefs
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index a6375e92..940a8f2 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -998,6 +998,8 @@ extern const char kCorsMitigationList[]; extern const char kCorsLegacyModeEnabled[]; +extern const char kExternalProtocolDialogShowAlwaysOpenCheckbox[]; + } // namespace prefs #endif // CHROME_COMMON_PREF_NAMES_H_
diff --git a/chrome/renderer/net/net_error_helper.cc b/chrome/renderer/net/net_error_helper.cc index 70a69dd..9c1282d 100644 --- a/chrome/renderer/net/net_error_helper.cc +++ b/chrome/renderer/net/net_error_helper.cc
@@ -108,7 +108,7 @@ #if defined(OS_ANDROID) bool IsAutoFetchFeatureEnabled() { - return base::FeatureList::IsEnabled(features::kAutoFetchOnNetErrorPage); + return true; } #else // OS_ANDROID bool IsAutoFetchFeatureEnabled() {
diff --git a/chrome/renderer/supervised_user/OWNERS b/chrome/renderer/supervised_user/OWNERS index 33a7a97..51f8c5f 100644 --- a/chrome/renderer/supervised_user/OWNERS +++ b/chrome/renderer/supervised_user/OWNERS
@@ -1,6 +1,3 @@ -escordeiro@chromium.org -menegola@chromium.org -pam@chromium.org -treib@chromium.org +file://chrome/browser/supervised_user/OWNERS # COMPONENT: Services>SupervisedUser
diff --git a/chrome/test/base/test_browser_window.h b/chrome/test/base/test_browser_window.h index c8eb36d8..b9517ca 100644 --- a/chrome/test/base/test_browser_window.h +++ b/chrome/test/base/test_browser_window.h
@@ -103,7 +103,7 @@ bool UpdatePageActionIcon(PageActionIconType type) override; autofill::AutofillBubbleHandler* GetAutofillBubbleHandler() override; void ExecutePageActionIconForTesting(PageActionIconType type) override {} - void SetFocusToLocationBar(bool select_all) override {} + void SetFocusToLocationBar(bool is_user_initiated) override {} void UpdateReloadStopState(bool is_loading, bool force) override {} void UpdateToolbar(content::WebContents* contents) override {} void UpdateCustomTabBarVisibility(bool visible, bool animate) override {}
diff --git a/chrome/test/chromedriver/test/run_webdriver_tests.py b/chrome/test/chromedriver/test/run_webdriver_tests.py index cffc3f80..4b620f6 100644 --- a/chrome/test/chromedriver/test/run_webdriver_tests.py +++ b/chrome/test/chromedriver/test/run_webdriver_tests.py
@@ -73,15 +73,42 @@ port, expectations_dict=expectations_dict) return expectations -def preprocess_skipped_tests(test_results, expectations, path_finder): - skip_list = [] - skipped_tests = expectations.model().get_tests_with_result_type( - test_expectations.SKIP).copy() +def prepare_filtered_tests(isolated_script_test_filter, finder, shard, port): + filter_list = isolated_script_test_filter.split('::') + filtered_tests = [get_relative_subtest_path( + test, finder, shard, port) for test in filter_list] + return filter(None, filtered_tests) +def get_relative_subtest_path(external_test_path, finder, shard, port): + test_name, subtest_suffix = port.split_webdriver_test_name( + external_test_path) + abs_skipped_test_path = finder.path_from_web_tests(test_name) + if not shard.is_matched_test(abs_skipped_test_path): + return None + + relative_path = os.path.relpath(abs_skipped_test_path) + relative_subtest_path = port.add_webdriver_subtest_pytest_suffix( + relative_path, subtest_suffix) + return relative_subtest_path + +def process_skip_list(skipped_tests, results, finder, port, test_path, shard): + skip_list = [] + abs_test_path = os.path.abspath(test_path) for skipped_test in skipped_tests: - test_results.append(WebDriverTestResult( - skipped_test, 'SKIP')) - skip_list.append(path_finder.strip_webdriver_tests_path(skipped_test)) + test_name, subtest_suffix = port.split_webdriver_test_name( + skipped_test) + abs_path = finder.path_from_web_tests(test_name) + if not abs_path.startswith(abs_test_path): + continue + + if not shard.is_matched_test(abs_path): + continue + + pytest_subtest_path = port.add_webdriver_subtest_pytest_suffix( + test_name, subtest_suffix) + skip_list.append(pytest_subtest_path) + results.append(WebDriverTestResult( + skipped_test, 'SKIP')) return skip_list @@ -172,7 +199,8 @@ skip_test_flag = ['--deselect=' + skipped_test for skipped_test in skipped_tests] - pytest_args = [path] + skip_test_flag + pytest_args = [path] + skip_test_flag + \ + ['--rootdir=' + path_finder.web_tests_dir()] pytest.main(pytest_args, plugins=[subtests]) return subtests.result @@ -199,6 +227,9 @@ '--isolated-script-test-perf-output', help='JSON perf output file used by swarming, ignored') parser.add_argument( + '--isolated-script-test-filter', + help='isolated script filter string with :: separators') + parser.add_argument( '--test-path', required=True, help='Path to the WPT WebDriver tests') @@ -218,6 +249,7 @@ test_shard = TestShard(total_shards, shard_index) test_results = [] + test_path = options.test_path log_level = logging.DEBUG if options.verbose else logging.INFO configure_logging(logging_level=log_level, include_time=True) @@ -236,8 +268,10 @@ # WebDriverExpectations stores skipped and failed WebDriver tests. expectations = parse_webdriver_expectations(host, port) - skipped_tests = preprocess_skipped_tests( - test_results, expectations, path_finder) + skip_list = expectations.model().get_tests_with_result_type( + test_expectations.SKIP).copy() + skipped_tests = process_skip_list( + skip_list, test_results, path_finder, port, test_path, test_shard) options.chromedriver = util.GetAbsolutePathOfUserPath(options.chromedriver) if (not os.path.exists(options.chromedriver) and @@ -261,14 +295,18 @@ sys.exit(1) set_up_config(path_finder, chromedriver_server) - - test_path = options.test_path start_time = time.time() sys.path.insert(0, WEBDRIVER_CLIENT_ABS_PATH) try: - if os.path.isfile(test_path): - test_results = run_test(test_path, path_finder, port, skipped_tests) + if options.isolated_script_test_filter: + filtered_tests = prepare_filtered_tests( + options.isolated_script_test_filter, path_finder, test_shard, port) + for filter_test in filtered_tests: + test_results += run_test(filter_test, path_finder, port) + + elif os.path.isfile(test_path): + test_results += run_test(test_path, path_finder, port, skipped_tests) elif os.path.isdir(test_path): for root, dirnames, filenames in os.walk(test_path): for filename in filenames: @@ -276,7 +314,8 @@ continue test_file = os.path.join(root, filename) - if not test_shard.is_matched_test(test_file): + + if not test_shard.is_matched_test(os.path.abspath(test_file)): continue test_results += run_test(test_file, path_finder, port, skipped_tests) else:
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json index 8856bcc..5ed8f45b 100644 --- a/chrome/test/data/policy/policy_test_cases.json +++ b/chrome/test/data/policy/policy_test_cases.json
@@ -2866,6 +2866,14 @@ "pref_mappings": [{ "pref": "allow_sync_xhr_in_page_dismissal" }] }, + "ExternalProtocolDialogShowAlwaysOpenCheckbox": { + "os": ["win", "linux", "mac"], + "test_policy": { "ExternalProtocolDialogShowAlwaysOpenCheckbox": true }, + "pref_mappings": [ + { "pref": "external_protocol_dialog.show_always_open_checkbox" } + ] + }, + "----- Chrome OS policies ------------------------------------------------": {}, "ChromeOsLockOnIdleSuspend": {
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java index 65b666d..6ba99e6c 100644 --- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java +++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java
@@ -236,37 +236,6 @@ } @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (DEBUG) Log.d(TAG, "dispatchKeyEvent"); - int keyCode = event.getKeyCode(); - int action = event.getAction(); - - // Similar condition for all single-click events. - if (action == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { - if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_DPAD_LEFT - || keyCode == KeyEvent.KEYCODE_MEDIA_REWIND - || keyCode == KeyEvent.KEYCODE_DPAD_RIGHT - || keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD - || keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE - || keyCode == KeyEvent.KEYCODE_MEDIA_PLAY - || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE - || keyCode == KeyEvent.KEYCODE_MEDIA_STOP - || keyCode == KeyEvent.KEYCODE_MEDIA_NEXT - || keyCode == KeyEvent.KEYCODE_MEDIA_PREVIOUS) { - if (mSurfaceHelper != null) { - CastWebContentsComponent.onKeyDown(mSurfaceHelper.getSessionId(), keyCode); - } - return true; - } - } - - if (keyCode == KeyEvent.KEYCODE_BACK) { - return super.dispatchKeyEvent(event); - } - return false; - } - - @Override public boolean dispatchGenericMotionEvent(MotionEvent ev) { return false; }
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc index 1d80155..370d64e 100644 --- a/chromecast/browser/cast_browser_main_parts.cc +++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -258,6 +258,24 @@ #endif // defined(USE_AURA) +#if defined(OS_LINUX) + +base::FilePath GetApplicationFontsDir() { + std::unique_ptr<base::Environment> env(base::Environment::Create()); + std::string fontconfig_sysroot; + if (env->GetVar("FONTCONFIG_SYSROOT", &fontconfig_sysroot)) { + // Running with hermetic fontconfig; using the full path will not work. + // Assume the root is base::DIR_MODULE as set by base::SetUpFontconfig(). + return base::FilePath("/fonts"); + } else { + base::FilePath dir_module; + base::PathService::Get(base::DIR_MODULE, &dir_module); + return dir_module.Append("fonts"); + } +} + +#endif // defined(OS_LINUX) + } // namespace namespace chromecast { @@ -437,10 +455,6 @@ #endif // defined(USE_AURA) #if defined(OS_LINUX) - base::FilePath dir_module; - base::PathService::Get(base::DIR_MODULE, &dir_module); - base::FilePath dir_font = dir_module.Append("fonts"); - // Setting rescan interval to 0 will disable re-scan. More details in // b/141204302#comment41. // TODO(crbug/1015146): move re-scan disable logic to GetGlobalFontConfig(). @@ -448,6 +462,7 @@ LOG(WARNING) << "Cannot disable fontconfig rescan."; } + base::FilePath dir_font = GetApplicationFontsDir(); const FcChar8 *dir_font_char8 = reinterpret_cast<const FcChar8*>(dir_font.value().data()); if (!FcConfigAppFontAddDir(gfx::GetGlobalFontConfig(), dir_font_char8)) { LOG(ERROR) << "Cannot load fonts from " << dir_font_char8;
diff --git a/chromecast/media/audio/cast_audio_output_stream.cc b/chromecast/media/audio/cast_audio_output_stream.cc index 50ec8ff..6eac6d7 100644 --- a/chromecast/media/audio/cast_audio_output_stream.cc +++ b/chromecast/media/audio/cast_audio_output_stream.cc
@@ -101,7 +101,7 @@ void SetRunning(bool running); void Start(AudioSourceCallback* source_callback); - void Stop(); + void Stop(base::WaitableEvent* finished); void Close(base::OnceClosure closure); void SetVolume(double volume); void Flush(); @@ -188,11 +188,14 @@ mixer_connection_->SetVolumeMultiplier(volume_); } -void CastAudioOutputStream::MixerServiceWrapper::Stop() { +void CastAudioOutputStream::MixerServiceWrapper::Stop( + base::WaitableEvent* finished) { DCHECK_CALLED_ON_VALID_THREAD(io_thread_checker_); mixer_connection_.reset(); - source_callback_ = nullptr; + if (finished) { + finished->Signal(); + } } void CastAudioOutputStream::MixerServiceWrapper::Flush() { @@ -204,7 +207,7 @@ void CastAudioOutputStream::MixerServiceWrapper::Close( base::OnceClosure closure) { DCHECK_CALLED_ON_VALID_THREAD(io_thread_checker_); - Stop(); + Stop(nullptr); std::move(closure).Run(); } @@ -409,13 +412,15 @@ // |cma_wrapper_| and |mixer_service_wrapper_| cannot be both active. DCHECK(!(cma_wrapper_ && mixer_service_wrapper_)); + base::WaitableEvent finished; if (cma_wrapper_) { - base::WaitableEvent stopFinished; - POST_TO_CMA_WRAPPER(Stop, base::Unretained(&stopFinished)); - stopFinished.Wait(); + POST_TO_CMA_WRAPPER(Stop, &finished); } else if (mixer_service_wrapper_) { - POST_TO_MIXER_SERVICE_WRAPPER(Stop); + POST_TO_MIXER_SERVICE_WRAPPER(Stop, &finished); + } else { + finished.Signal(); } + finished.Wait(); } void CastAudioOutputStream::Flush() {
diff --git a/chromecast/media/audio/cast_audio_output_stream_unittest.cc b/chromecast/media/audio/cast_audio_output_stream_unittest.cc index 6f26df409..0c48533 100644 --- a/chromecast/media/audio/cast_audio_output_stream_unittest.cc +++ b/chromecast/media/audio/cast_audio_output_stream_unittest.cc
@@ -519,11 +519,8 @@ ASSERT_TRUE(stream->Open()); RunThreadsUntilIdle(); - // Set to busy, so that the OnPushBufferComplete callback is not called after - // the backend is stopped. FakeAudioDecoder* audio_decoder = GetAudioDecoder(); ASSERT_TRUE(audio_decoder); - audio_decoder->set_pipeline_status(FakeAudioDecoder::PIPELINE_STATUS_BUSY); ::media::MockAudioSourceCallback source_callback; EXPECT_CALL(source_callback, OnMoreData(_, _, _, _)) @@ -531,8 +528,13 @@ stream->Start(&source_callback); RunThreadsUntilIdle(); stream->Stop(); + EXPECT_CALL(source_callback, OnMoreData(_, _, _, _)).Times(0); + RunThreadsUntilIdle(); + testing::Mock::VerifyAndClearExpectations(&source_callback); // Ensure we fetch new data when restarting. + EXPECT_CALL(source_callback, OnMoreData(_, _, _, _)) + .WillRepeatedly(Invoke(OnMoreData)); int last_on_more_data_call_count = on_more_data_call_count_; stream->Start(&source_callback); RunThreadsUntilIdle(); @@ -551,8 +553,6 @@ ASSERT_TRUE(stream->Open()); RunThreadsUntilIdle(); - // Set to busy, so that the OnPushBufferComplete callback is not called after - // the backend is stopped. FakeAudioDecoder* audio_decoder = GetAudioDecoder(); ASSERT_TRUE(audio_decoder);
diff --git a/chromecast/media/audio/cma_audio_output_stream.cc b/chromecast/media/audio/cma_audio_output_stream.cc index 946da50..7c75b47 100644 --- a/chromecast/media/audio/cma_audio_output_stream.cc +++ b/chromecast/media/audio/cma_audio_output_stream.cc
@@ -146,7 +146,6 @@ } if (!push_in_progress_) { - push_in_progress_ = true; PushBuffer(); } } @@ -161,7 +160,6 @@ cma_backend_->Pause(); cma_backend_state_ = CmaBackendState::kPaused; } - push_in_progress_ = false; source_callback_ = nullptr; finished->Signal(); } @@ -218,6 +216,7 @@ // prevent the source callback from closing the output stream // mid-push. base::AutoLock lock(running_lock_); + DCHECK(!push_in_progress_); // Do not fill more buffers if we have stopped running. if (!running_) @@ -227,10 +226,8 @@ // Return quickly if so. if (!source_callback_ || encountered_error_ || cma_backend_state_ != CmaBackendState::kStarted) { - push_in_progress_ = false; return; } - DCHECK(push_in_progress_); CmaBackend::AudioDecoder::RenderingDelay rendering_delay = audio_decoder_->GetRenderingDelay(); @@ -271,6 +268,7 @@ decoder_buffer->set_timestamp(timestamp_helper_.GetTimestamp()); timestamp_helper_.AddFrames(frame_count); + push_in_progress_ = true; BufferStatus status = audio_decoder_->PushBuffer(std::move(decoder_buffer)); if (status != CmaBackend::BufferStatus::kBufferPending) OnPushBufferComplete(status); @@ -316,7 +314,6 @@ << " delay=" << delay << " buffer_duration_=" << buffer_duration_; push_timer_.Start(FROM_HERE, delay, this, &CmaAudioOutputStream::PushBuffer); - push_in_progress_ = true; } void CmaAudioOutputStream::OnDecoderError() {
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index 20f33b0..2e4bb8bb 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -12602.0.0 \ No newline at end of file +12603.0.0 \ No newline at end of file
diff --git a/chromeos/services/assistant/assistant_manager_service.h b/chromeos/services/assistant/assistant_manager_service.h index 3fbb6e0..3de51cf 100644 --- a/chromeos/services/assistant/assistant_manager_service.h +++ b/chromeos/services/assistant/assistant_manager_service.h
@@ -85,6 +85,9 @@ // state value. virtual void AddAndFireStateObserver(StateObserver* observer) = 0; virtual void RemoveStateObserver(const StateObserver* observer) = 0; + + // Sync the device apps user consent status. + virtual void SyncDeviceAppsStatus() = 0; }; // Observes all state changes made to the |AssistantManagerService::State|.
diff --git a/chromeos/services/assistant/assistant_manager_service_impl.cc b/chromeos/services/assistant/assistant_manager_service_impl.cc index c755f85..b7ab16c 100644 --- a/chromeos/services/assistant/assistant_manager_service_impl.cc +++ b/chromeos/services/assistant/assistant_manager_service_impl.cc
@@ -367,6 +367,12 @@ state_observers_.RemoveObserver(observer); } +void AssistantManagerServiceImpl::SyncDeviceAppsStatus() { + assistant_settings_manager_->SyncDeviceAppsStatus( + base::BindOnce(&AssistantManagerServiceImpl::OnDeviceAppsEnabled, + weak_factory_.GetWeakPtr())); +} + void AssistantManagerServiceImpl::StartVoiceInteraction() { platform_api_->SetMicState(true); assistant_manager_->StartAssistantInteraction(); @@ -1167,6 +1173,8 @@ base::TimeTicks::Now() - started_time_; UMA_HISTOGRAM_TIMES("Assistant.ServiceReadyTime", time_since_started); + SyncDeviceAppsStatus(); + RegisterFallbackMediaHandler(); AddMediaControllerObserver(); @@ -1508,6 +1516,12 @@ UpdateInternalOptions(assistant_manager_internal_); } +void AssistantManagerServiceImpl::OnDeviceAppsEnabled(bool enabled) { + display_connection_->SetDeviceAppsEnabled(enabled); + action_module_->SetAppSupportEnabled( + assistant::features::IsAppSupportEnabled() && enabled); +} + void AssistantManagerServiceImpl::StopAlarmTimerRinging() { if (!assistant_manager_internal_) return;
diff --git a/chromeos/services/assistant/assistant_manager_service_impl.h b/chromeos/services/assistant/assistant_manager_service_impl.h index a8da97f..9fb3d0d 100644 --- a/chromeos/services/assistant/assistant_manager_service_impl.h +++ b/chromeos/services/assistant/assistant_manager_service_impl.h
@@ -122,6 +122,7 @@ const CommunicationErrorObserver* observer) override; void AddAndFireStateObserver(StateObserver* observer) override; void RemoveStateObserver(const StateObserver* observer) override; + void SyncDeviceAppsStatus() override; // mojom::Assistant overrides: void StartCachedScreenContextInteraction() override; @@ -273,6 +274,8 @@ void OnMediaControlAction(const std::string& action_name, const std::string& media_action_args_proto); + void OnDeviceAppsEnabled(bool enabled); + void RegisterFallbackMediaHandler(); void AddMediaControllerObserver(); void RegisterAlarmsTimersListener();
diff --git a/chromeos/services/assistant/assistant_settings_manager_impl.cc b/chromeos/services/assistant/assistant_settings_manager_impl.cc index a5b4467..0cefd6f9 100644 --- a/chromeos/services/assistant/assistant_settings_manager_impl.cc +++ b/chromeos/services/assistant/assistant_settings_manager_impl.cc
@@ -195,6 +195,22 @@ }); } +void AssistantSettingsManagerImpl::SyncDeviceAppsStatus( + base::OnceCallback<void(bool)> callback) { + DCHECK(main_task_runner()->RunsTasksInCurrentSequence()); + + SettingsUiSelector selector; + ConsentFlowUiSelector* consent_flow_ui = + selector.mutable_consent_flow_ui_selector(); + consent_flow_ui->set_flow_id( + ActivityControlSettingsUiSelector::ASSISTANT_SUW_ONBOARDING_ON_CHROME_OS); + selector.set_gaia_user_context_ui(true); + GetSettings( + selector.SerializeAsString(), + base::BindOnce(&AssistantSettingsManagerImpl::HandleDeviceAppsStatusSync, + weak_factory_.GetWeakPtr(), std::move(callback))); +} + void AssistantSettingsManagerImpl::HandleSpeakerIdEnrollmentUpdate( const assistant_client::SpeakerIdEnrollmentUpdate& update) { DCHECK(main_task_runner()->RunsTasksInCurrentSequence()); @@ -263,6 +279,34 @@ callback.Run(); } +void AssistantSettingsManagerImpl::HandleDeviceAppsStatusSync( + base::OnceCallback<void(bool)> callback, + const std::string& settings) { + DCHECK(main_task_runner()->RunsTasksInCurrentSequence()); + + SettingsUi settings_ui; + if (!settings_ui.ParseFromString(settings)) { + LOG(ERROR) << "Failed to parse the response proto, set the DA bit to false"; + std::move(callback).Run(false); + return; + } + + if (!settings_ui.has_gaia_user_context_ui()) { + LOG(ERROR) << "Failed to get gaia user context, set the DA bit to false"; + std::move(callback).Run(false); + return; + } + + const auto& gaia_user_context_ui = settings_ui.gaia_user_context_ui(); + if (!gaia_user_context_ui.has_device_apps_enabled()) { + LOG(ERROR) << "Failed to get the device apps bit, set it to false"; + std::move(callback).Run(false); + return; + } + + std::move(callback).Run(gaia_user_context_ui.device_apps_enabled()); +} + void AssistantSettingsManagerImpl::UpdateServerDeviceSettings() { DCHECK(main_task_runner()->RunsTasksInCurrentSequence());
diff --git a/chromeos/services/assistant/assistant_settings_manager_impl.h b/chromeos/services/assistant/assistant_settings_manager_impl.h index 7b28c41e..619c27f 100644 --- a/chromeos/services/assistant/assistant_settings_manager_impl.h +++ b/chromeos/services/assistant/assistant_settings_manager_impl.h
@@ -60,6 +60,8 @@ StopSpeakerIdEnrollmentCallback callback) override; void SyncSpeakerIdEnrollmentStatus() override; + void SyncDeviceAppsStatus(base::OnceCallback<void(bool)> callback); + void UpdateServerDeviceSettings(); private: @@ -68,6 +70,8 @@ void HandleStopSpeakerIdEnrollment(base::RepeatingCallback<void()> callback); void HandleSpeakerIdEnrollmentStatusSync( const assistant_client::SpeakerIdEnrollmentStatus& status); + void HandleDeviceAppsStatusSync(base::OnceCallback<void(bool)> callback, + const std::string& settings); ash::AssistantStateBase* assistant_state(); mojom::AssistantController* assistant_controller();
diff --git a/chromeos/services/assistant/fake_assistant_manager_service_impl.h b/chromeos/services/assistant/fake_assistant_manager_service_impl.h index 3f85ac8..303b1c1 100644 --- a/chromeos/services/assistant/fake_assistant_manager_service_impl.h +++ b/chromeos/services/assistant/fake_assistant_manager_service_impl.h
@@ -43,6 +43,7 @@ const CommunicationErrorObserver* observer) override {} void AddAndFireStateObserver(StateObserver* observer) override; void RemoveStateObserver(const StateObserver* observer) override; + void SyncDeviceAppsStatus() override {} // mojom::Assistant overrides: void StartCachedScreenContextInteraction() override;
diff --git a/chromeos/services/assistant/public/proto/gaia_user_context_ui.proto b/chromeos/services/assistant/public/proto/gaia_user_context_ui.proto index 083e91f..00658dc 100644 --- a/chromeos/services/assistant/public/proto/gaia_user_context_ui.proto +++ b/chromeos/services/assistant/public/proto/gaia_user_context_ui.proto
@@ -25,4 +25,8 @@ // Whether Assistant is disabled by Dasher domain admin. // This bit only makes sense for GAIA traffic. optional bool assistant_disabled_by_dasher_domain = 4; + + // Whether Device Apps is enabled to store user's apps which could help + // improve user experience across Google services. + optional bool device_apps_enabled = 6; }
diff --git a/chromeos/services/assistant/service.cc b/chromeos/services/assistant/service.cc index d7cde5e..14575745 100644 --- a/chromeos/services/assistant/service.cc +++ b/chromeos/services/assistant/service.cc
@@ -262,6 +262,17 @@ UpdateListeningState(); } +void Service::OnAssistantConsentStatusChanged(int consent_status) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + // Notify device apps status when user accepts activity control. + if (assistant_manager_service_ && + assistant_manager_service_->GetState() == + AssistantManagerService::State::RUNNING) { + assistant_manager_service_->SyncDeviceAppsStatus(); + } +} + void Service::OnAssistantHotwordAlwaysOn(bool hotword_always_on) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // No need to update hotword status if power source is connected.
diff --git a/chromeos/services/assistant/service.h b/chromeos/services/assistant/service.h index dfd84e8..2ca7a79 100644 --- a/chromeos/services/assistant/service.h +++ b/chromeos/services/assistant/service.h
@@ -108,6 +108,7 @@ void OnLockStateChanged(bool locked) override; // ash::AssistantStateObserver overrides: + void OnAssistantConsentStatusChanged(int consent_status) override; void OnAssistantHotwordAlwaysOn(bool hotword_always_on) override; void OnAssistantSettingsEnabled(bool enabled) override; void OnAssistantHotwordEnabled(bool enabled) override;
diff --git a/components/dom_distiller/core/html/dom_distiller_viewer.html b/components/dom_distiller/core/html/dom_distiller_viewer.html index 707df923..8962957 100644 --- a/components/dom_distiller/core/html/dom_distiller_viewer.html +++ b/components/dom_distiller/core/html/dom_distiller_viewer.html
@@ -19,15 +19,23 @@ <div id="contentWrap"> <div id="mainContent"> <div id="settingsContainer" class="desktopOnly"> - <button id="settingsToggle" type="button" tabindex=0><i class="material-icons">text_format</i></button> + <button id="settingsToggle" type="button" + aria-label="Adjust appearance settings" tabindex=0> + <i class="material-icons">text_format</i> + </button> <dialog id="settingsDialog"> <div id="settingsHeader"> <h2>Reader Mode Styling</h2> - <button id="closeSettingsButton" type="button" tabindex=0><i class="material-icons">close</i></button> + <button id="closeSettingsButton" type="button" aria-label="Close settings" + tabindex=0> + <i class="material-icons">close</i> + </button> </div> <div id="settingsFields"> <div class="setting"> - <label for="fontFamilySelection" class="screenReaderOnly">Style</label> + <label for="fontFamilySelection" class="screenReaderOnly"> + Font Style + </label> <select id="fontFamilySelection" name="fontFamily"> <option value="sans-serif" selected>Sans-Serif</option> <option value="serif">Serif</option> @@ -35,26 +43,37 @@ </select> </div> <fieldset id="themeSelection" class="setting"> - <legend class="screenReaderOnly">Color</legend> + <legend class="screenReaderOnly"> + Page Theme + </legend> <ul> <li class="themeOption"> - <input type="radio" name="theme" value="light" checked id="themeOptionLight" class="light"/> - <label for="themeOptionLight" class="screenReaderOnly">Light</label> + <label for="themeOptionLight" class="screenReaderOnly"> + Light + </label> + <input type="radio" name="theme" value="light" + id="themeOptionLight" class="light" checked/> </li> <li class="themeOption"> + <label for="themeOptionSepia" class="screenReaderOnly"> + Sepia + </label> <input type="radio" name="theme" value="sepia" - id="themeOptionSepia" class="sepia"/> - <label for="themeOptionSepia" class="screenReaderOnly">Sepia</label> + id="themeOptionSepia" class="sepia"/> </li> <li class="themeOption"> + <label for="themeOptionDark" class="screenReaderOnly"> + Dark + </label> <input type="radio" name="theme" value="dark" - id="themeOptionDark" class="dark"/> - <label for="themeOptionDark" class="screenReaderOnly">Dark</label> + id="themeOptionDark" class="dark"/> </li> </ul> </fieldset> <div class="setting" id="fontSizeWrapper"> - <label for="fontSizeSelection" class="screenReaderOnly">Font Size</label> + <label for="fontSizeSelection" class="screenReaderOnly"> + Font Size + </label> <input id="fontSizeSelection" type="range" name="fontSize"
diff --git a/components/domain_reliability/quic_error_mapping.cc b/components/domain_reliability/quic_error_mapping.cc index 60cc435..53789d7 100644 --- a/components/domain_reliability/quic_error_mapping.cc +++ b/components/domain_reliability/quic_error_mapping.cc
@@ -312,6 +312,10 @@ {quic::QUIC_TRANSPORT_INVALID_CLIENT_INDICATION, "quic.transport.invalid.client.indication"}, + {quic::QUIC_QPACK_DECOMPRESSION_FAILED, "QUIC.QPACK.DECOMPRESSION.FAILED"}, + {quic::QUIC_QPACK_ENCODER_STREAM_ERROR, "QUIC.QPACK.ENCODER.STREAM.ERROR"}, + {quic::QUIC_QPACK_DECODER_STREAM_ERROR, "QUIC.QPACK.DECODER.STREAM.ERROR"}, + // QUIC_INVALID_APPLICATION_CLOSE_DATA was code 101. The code has been // deprecated, but to keep the assert below happy, there needs to be // an entry for it, but the symbol is gone.
diff --git a/components/exo/fullscreen_shell_surface.cc b/components/exo/fullscreen_shell_surface.cc index 99343e36..339a0b8 100644 --- a/components/exo/fullscreen_shell_surface.cc +++ b/components/exo/fullscreen_shell_surface.cc
@@ -10,6 +10,7 @@ #include "third_party/skia/include/core/SkPath.h" #include "ui/aura/window.h" #include "ui/aura/window_observer.h" +#include "ui/aura/window_occlusion_tracker.h" #include "ui/aura/window_targeter.h" #include "ui/compositor/compositor.h" #include "ui/compositor/dip_util.h" @@ -208,6 +209,17 @@ window->RemoveObserver(this); } +void FullscreenShellSurface::UpdateHostWindowBounds() { + // This method applies multiple changes to the window tree. Use ScopedPause + // to ensure that occlusion isn't recomputed before all changes have been + // applied. + aura::WindowOcclusionTracker::ScopedPause pause_occlusion; + + host_window()->SetBounds( + gfx::Rect(root_surface()->window()->bounds().size())); + host_window()->SetTransparent(!root_surface()->FillsBoundsOpaquely()); +} + void FullscreenShellSurface::CreateFullscreenShellSurfaceWidget( ui::WindowShowState show_state) { DCHECK(GetEnabled());
diff --git a/components/exo/fullscreen_shell_surface.h b/components/exo/fullscreen_shell_surface.h index f992897..896f69e 100644 --- a/components/exo/fullscreen_shell_surface.h +++ b/components/exo/fullscreen_shell_surface.h
@@ -86,6 +86,9 @@ void SetChildAxTreeId(ui::AXTreeID child_ax_tree_id); private: + // Keep the bounds in sync with the root surface bounds. + void UpdateHostWindowBounds() override; + void CreateFullscreenShellSurfaceWidget(ui::WindowShowState show_state); void CommitWidget(); bool OnPreWidgetCommit();
diff --git a/components/exo/fullscreen_shell_surface_unittest.cc b/components/exo/fullscreen_shell_surface_unittest.cc index c15185ed..454bd08c 100644 --- a/components/exo/fullscreen_shell_surface_unittest.cc +++ b/components/exo/fullscreen_shell_surface_unittest.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "components/exo/buffer.h" #include "components/exo/shell_surface_util.h" +#include "components/exo/sub_surface.h" #include "components/exo/surface.h" #include "components/exo/test/exo_test_base_views.h" #include "components/exo/wm_helper.h" @@ -191,6 +192,40 @@ EXPECT_EQ(fullscreen_bounds, expected_bounds); } +TEST_F(FullscreenShellSurfaceTest, BoundsWithPartiallyOffscreenSubSurface) { + aura::Window* root_window = + WMHelper::GetInstance()->GetRootWindowForNewWindows(); + gfx::Rect new_root_bounds(10, 10, 100, 100); + gfx::Rect expected_bounds(new_root_bounds.size()); + root_window->SetBounds(new_root_bounds); + + gfx::Size buffer_size(100, 100); + auto buffer = std::make_unique<Buffer>( + CreateGpuMemoryBuffer(buffer_size, gfx::BufferFormat::RGBA_8888)); + auto parent = std::make_unique<Surface>(); + auto fullscreen_surface = std::make_unique<FullscreenShellSurface>(); + fullscreen_surface->SetSurface(parent.get()); + + parent->Attach(buffer.get()); + parent->Commit(); + EXPECT_EQ(fullscreen_surface->GetWidget()->GetWindowBoundsInScreen(), + expected_bounds); + EXPECT_EQ(parent->window()->bounds(), expected_bounds); + + auto surface = std::make_unique<Surface>(); + auto sub_surface = std::make_unique<SubSurface>(surface.get(), parent.get()); + surface->Attach(buffer.get()); + sub_surface->SetPosition(gfx::Point(-50, -50)); + + parent->Commit(); + // Make sure the sub-surface doesn't affect the Fullscreen Shell's Window + // size/position. + EXPECT_EQ(fullscreen_surface->GetWidget()->GetWindowBoundsInScreen(), + expected_bounds); + // The root surface should also have the same position/size as before. + EXPECT_EQ(parent->window()->bounds(), expected_bounds); +} + TEST_F(FullscreenShellSurfaceTest, SetAXChildTree) { std::unique_ptr<Surface> surface(new Surface); std::unique_ptr<FullscreenShellSurface> fullscreen_surface(
diff --git a/components/exo/surface_tree_host.h b/components/exo/surface_tree_host.h index 552665e5b..6014831 100644 --- a/components/exo/surface_tree_host.h +++ b/components/exo/surface_tree_host.h
@@ -95,8 +95,9 @@ // need to be released back to the client. void SubmitEmptyCompositorFrame(); - // Update the host window's size to cover entire surfaces. - void UpdateHostWindowBounds(); + // Update the host window's size to cover sufaces that must be visible and + // not clipped. + virtual void UpdateHostWindowBounds(); private: viz::CompositorFrame PrepareToSubmitCompositorFrame();
diff --git a/components/omnibox/browser/omnibox_edit_model.cc b/components/omnibox/browser/omnibox_edit_model.cc index bca24fe..0fcae52 100644 --- a/components/omnibox/browser/omnibox_edit_model.cc +++ b/components/omnibox/browser/omnibox_edit_model.cc
@@ -1287,7 +1287,7 @@ view_->OnInlineAutocompleteTextCleared(); const base::string16& user_text = - user_input_in_progress_ ? user_text_ : view_->GetText(); + user_input_in_progress_ ? user_text_ : input_.text(); if (keyword_state_changed && is_keyword_selected() && inline_autocomplete_text_.empty()) { // If we reach here, the user most likely entered keyword mode by inserting @@ -1539,6 +1539,15 @@ if (popup_model()) popup_model()->ResetToDefaultMatch(); + // If user input is not in progress, we are reverting an on-focus suggestion. + // Set the window text back to the original input, rather than the top match. + // The original selection will be restored in OnRevertTemporaryText() below. + if (!user_input_in_progress_) { + view_->SetWindowTextAndCaretPos(input_.text(), /*caret_pos=*/0, + /*update_popup=*/false, + /*notify_text_changed=*/true); + } + const AutocompleteMatch& match = CurrentMatch(nullptr); view_->OnRevertTemporaryText(match.fill_into_edit, match); }
diff --git a/components/omnibox/browser/omnibox_edit_model_unittest.cc b/components/omnibox/browser/omnibox_edit_model_unittest.cc index 3ff2c86..177305b 100644 --- a/components/omnibox/browser/omnibox_edit_model_unittest.cc +++ b/components/omnibox/browser/omnibox_edit_model_unittest.cc
@@ -279,6 +279,7 @@ // Test that we don't clobber the unelided text with inline autocomplete text. EXPECT_EQ(base::string16(), view()->inline_autocomplete_text()); + model()->ShowOnFocusSuggestionsIfAutocompleteIdle(); model()->OnPopupDataChanged(base::string16(), /*is_temporary_text=*/false, base::string16(), false); EXPECT_EQ(base::ASCIIToUTF16("https://www.example.com/"), view()->GetText()); @@ -287,6 +288,28 @@ } #endif // !defined(OS_IOS) +TEST_F(OmniboxEditModelTest, RevertZeroSuggestTemporaryText) { + location_bar_model()->set_url(GURL("https://www.example.com/")); + location_bar_model()->set_url_for_display( + base::ASCIIToUTF16("https://www.example.com/")); + + EXPECT_TRUE(model()->ResetDisplayTexts()); + model()->Revert(); + + // Simulate getting ZeroSuggestions and arrowing to a different match. + view()->SelectAll(true); + model()->ShowOnFocusSuggestionsIfAutocompleteIdle(); + model()->OnPopupDataChanged(base::ASCIIToUTF16("fake_temporary_text"), + /*is_temporary_text=*/true, base::string16(), + false); + + // Test that reverting brings back the original input text. + EXPECT_TRUE(model()->OnEscapeKeyPressed()); + EXPECT_EQ(base::ASCIIToUTF16("https://www.example.com/"), view()->GetText()); + EXPECT_FALSE(model()->user_input_in_progress()); + EXPECT_TRUE(view()->IsSelectAll()); +} + // This verifies the fix for a bug where calling OpenMatch() with a valid // alternate nav URL would fail a DCHECK if the input began with "http://". // The failure was due to erroneously trying to strip the scheme from the
diff --git a/components/omnibox/browser/omnibox_view.h b/components/omnibox/browser/omnibox_view.h index 098ddac..c723a43a 100644 --- a/components/omnibox/browser/omnibox_view.h +++ b/components/omnibox/browser/omnibox_view.h
@@ -143,8 +143,10 @@ // defines a method with that name. virtual void CloseOmniboxPopup(); - // Sets the focus to the omnibox. - virtual void SetFocus() = 0; + // Sets the focus to the omnibox. |is_user_initiated| is true when the user + // explicitly focused the omnibox, and false when the omnibox was + // automatically focused (like for browser startup or NTP load). + virtual void SetFocus(bool is_user_initiated) = 0; // Shows or hides the caret based on whether the model's is_caret_visible() is // true.
diff --git a/components/omnibox/browser/test_omnibox_view.cc b/components/omnibox/browser/test_omnibox_view.cc index 958b2fa..74e9460 100644 --- a/components/omnibox/browser/test_omnibox_view.cc +++ b/components/omnibox/browser/test_omnibox_view.cc
@@ -46,6 +46,9 @@ bool save_original_selection, bool notify_text_changed) { text_ = display_text; + + if (save_original_selection) + saved_temporary_selection_ = selection_; } bool TestOmniboxView::OnInlineAutocompleteTextMaybeChanged( @@ -67,6 +70,11 @@ inline_autocomplete_text_.clear(); } +void TestOmniboxView::OnRevertTemporaryText(const base::string16& display_text, + const AutocompleteMatch& match) { + selection_ = saved_temporary_selection_; +} + bool TestOmniboxView::OnAfterPossibleChange(bool allow_keyword_ui_change) { return false; }
diff --git a/components/omnibox/browser/test_omnibox_view.h b/components/omnibox/browser/test_omnibox_view.h index 95a704dd..414f1115 100644 --- a/components/omnibox/browser/test_omnibox_view.h +++ b/components/omnibox/browser/test_omnibox_view.h
@@ -48,7 +48,7 @@ void SelectAll(bool reversed) override; void RevertAll() override {} void UpdatePopup() override {} - void SetFocus() override {} + void SetFocus(bool is_user_initiated) override {} void ApplyCaretVisibility() override {} void OnTemporaryTextMaybeChanged(const base::string16& display_text, const AutocompleteMatch& match, @@ -58,7 +58,7 @@ size_t user_text_length) override; void OnInlineAutocompleteTextCleared() override; void OnRevertTemporaryText(const base::string16& display_text, - const AutocompleteMatch& match) override {} + const AutocompleteMatch& match) override; void OnBeforePossibleChange() override {} bool OnAfterPossibleChange(bool allow_keyword_ui_change) override; gfx::NativeView GetNativeView() const override; @@ -73,6 +73,7 @@ base::string16 text_; base::string16 inline_autocomplete_text_; gfx::Range selection_; + gfx::Range saved_temporary_selection_; DISALLOW_COPY_AND_ASSIGN(TestOmniboxView); };
diff --git a/components/password_manager/core/browser/form_parsing/password_field_prediction.cc b/components/password_manager/core/browser/form_parsing/password_field_prediction.cc index 6280bee9..027d3464 100644 --- a/components/password_manager/core/browser/form_parsing/password_field_prediction.cc +++ b/components/password_manager/core/browser/form_parsing/password_field_prediction.cc
@@ -16,15 +16,6 @@ namespace password_manager { -namespace { - -// Returns true if the field is password or username prediction. -bool IsCredentialRelatedPrediction(ServerFieldType type) { - return DeriveFromServerFieldType(type) != CredentialFieldType::kNone; -} - -} // namespace - CredentialFieldType DeriveFromServerFieldType(ServerFieldType type) { switch (type) { case autofill::USERNAME: @@ -89,23 +80,20 @@ } } - if (IsCredentialRelatedPrediction(server_type)) { - bool may_use_prefilled_placeholder = false; - for (const auto& predictions : field->server_predictions()) { - may_use_prefilled_placeholder |= - predictions.may_use_prefilled_placeholder(); - } - - field_predictions.emplace_back(); - - field_predictions.back().renderer_id = field->unique_renderer_id, - field_predictions.back().type = server_type, - field_predictions.back().may_use_prefilled_placeholder = - may_use_prefilled_placeholder; -#if defined(OS_IOS) - field_predictions.back().unique_id = field->unique_id; -#endif + bool may_use_prefilled_placeholder = false; + for (const auto& predictions : field->server_predictions()) { + may_use_prefilled_placeholder |= + predictions.may_use_prefilled_placeholder(); } + + field_predictions.emplace_back(); + field_predictions.back().renderer_id = field->unique_renderer_id; + field_predictions.back().type = server_type; + field_predictions.back().may_use_prefilled_placeholder = + may_use_prefilled_placeholder; +#if defined(OS_IOS) + field_predictions.back().unique_id = field->unique_id; +#endif } FormPredictions predictions;
diff --git a/components/password_manager/core/browser/form_parsing/password_field_prediction_unittest.cc b/components/password_manager/core/browser/form_parsing/password_field_prediction_unittest.cc index ccd674f..b128a51 100644 --- a/components/password_manager/core/browser/form_parsing/password_field_prediction_unittest.cc +++ b/components/password_manager/core/browser/form_parsing/password_field_prediction_unittest.cc
@@ -37,16 +37,6 @@ namespace { -const PasswordFieldPrediction* FindFormPrediction( - const FormPredictions& predictions, - uint32_t renderer_id) { - for (const PasswordFieldPrediction& prediction : predictions.fields) { - if (prediction.renderer_id == renderer_id) - return &prediction; - } - return nullptr; -} - TEST(FormPredictionsTest, ConvertToFormPredictions) { struct TestField { std::string name; @@ -57,7 +47,7 @@ } test_fields[] = { {"full_name", "text", UNKNOWN_TYPE, UNKNOWN_TYPE, false}, // Password Manager is interested only in credential related types. - {"Email", "email", EMAIL_ADDRESS, UNKNOWN_TYPE, false}, + {"Email", "email", EMAIL_ADDRESS, EMAIL_ADDRESS, false}, {"username", "text", USERNAME, USERNAME, true}, {"Password", "password", PASSWORD, PASSWORD, false}, {"confirm_password", "password", CONFIRMATION_PASSWORD, @@ -73,20 +63,15 @@ } FormStructure form_structure(form_data); - size_t expected_predictions = 0; // Set server predictions and create expected votes. for (size_t i = 0; i < base::size(test_fields); ++i) { AutofillField* field = form_structure.field(i); field->set_server_type(test_fields[i].input_type); - ServerFieldType expected_type = test_fields[i].expected_type; FieldPrediction prediction; prediction.set_may_use_prefilled_placeholder( test_fields[i].may_use_prefilled_placeholder); field->set_server_predictions({prediction}); - - if (expected_type != UNKNOWN_TYPE) - ++expected_predictions; } constexpr int driver_id = 1000; @@ -96,20 +81,14 @@ // Check whether actual predictions are equal to expected ones. EXPECT_EQ(driver_id, actual_predictions.driver_id); EXPECT_EQ(form_structure.form_signature(), actual_predictions.form_signature); - EXPECT_EQ(expected_predictions, actual_predictions.fields.size()); + EXPECT_EQ(base::size(test_fields), actual_predictions.fields.size()); for (size_t i = 0; i < base::size(test_fields); ++i) { - uint32_t unique_renderer_id = form_data.fields[i].unique_renderer_id; - const PasswordFieldPrediction* actual_prediction = - FindFormPrediction(actual_predictions, unique_renderer_id); - if (test_fields[i].expected_type == UNKNOWN_TYPE) { - EXPECT_FALSE(actual_prediction); - } else { - ASSERT_TRUE(actual_prediction); - EXPECT_EQ(test_fields[i].expected_type, actual_prediction->type); - EXPECT_EQ(test_fields[i].may_use_prefilled_placeholder, - actual_prediction->may_use_prefilled_placeholder); - } + const PasswordFieldPrediction& actual_prediction = + actual_predictions.fields[i]; + EXPECT_EQ(test_fields[i].expected_type, actual_prediction.type); + EXPECT_EQ(test_fields[i].may_use_prefilled_placeholder, + actual_prediction.may_use_prefilled_placeholder); } } @@ -171,10 +150,7 @@ << ", input type=" << test_form[i].input_type << ", expected type=" << test_form[i].expected_type << ", synthesised FormFieldData=" << form_data.fields[i]); - const PasswordFieldPrediction* actual_prediction = FindFormPrediction( - actual_predictions, form_data.fields[i].unique_renderer_id); - ASSERT_TRUE(actual_prediction); - EXPECT_EQ(test_form[i].expected_type, actual_prediction->type); + EXPECT_EQ(test_form[i].expected_type, actual_predictions.fields[i].type); } } }
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc index 81a9355b..5b29b14 100644 --- a/components/password_manager/core/browser/password_form_manager.cc +++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -700,8 +700,10 @@ base::Time::Now())) { parsed_submitted_form_->username_value = possible_username->value; metrics_recorder_->set_possible_username_used(true); - votes_uploader_.set_single_username_vote_data( - possible_username->renderer_id, possible_username->form_predictions); + if (possible_username->form_predictions) { + votes_uploader_.set_single_username_vote_data( + possible_username->renderer_id, *possible_username->form_predictions); + } } CreatePendingCredentials(); return true;
diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc index 8e90471..7cade58 100644 --- a/components/password_manager/core/browser/password_form_manager_unittest.cc +++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
@@ -2055,7 +2055,7 @@ const base::string16 possible_username = ASCIIToUTF16("possible_username"); PossibleUsernameData possible_username_data( saved_match_.signon_realm, 1u /* renderer_id */, possible_username, - base::Time::Now()); + base::Time::Now(), 0 /* driver_id */); FormData submitted_form = observed_form_only_password_fields_; submitted_form.fields[0].value = ASCIIToUTF16("strongpassword"); @@ -2079,7 +2079,7 @@ base::string16 possible_username = ASCIIToUTF16("possible_username"); PossibleUsernameData possible_username_data( "https://another.domain.com", 1u /* renderer_id */, possible_username, - base::Time::Now()); + base::Time::Now(), 0 /* driver_id */); FormData submitted_form = observed_form_only_password_fields_; submitted_form.fields[0].value = ASCIIToUTF16("strongpassword"); @@ -2092,6 +2092,53 @@ EXPECT_TRUE(form_manager_->GetPendingCredentials().username_value.empty()); } +// Tests that username is taken during username first flow. +TEST_F(PasswordFormManagerTest, UsernameFirstFlowVotes) { + TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get()); + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature(features::kUsernameFirstFlow); + + CreateFormManager(observed_form_only_password_fields_); + fetcher_->NotifyFetchCompleted(); + const base::string16 possible_username = ASCIIToUTF16("possible_username"); + constexpr uint64_t kUsernameFieldRendererId = 100; + PossibleUsernameData possible_username_data( + saved_match_.signon_realm, kUsernameFieldRendererId, possible_username, + base::Time::Now(), 0 /* driver_id */); + + // Create form predictions and set them to |possible_username_data|. + FormPredictions predictions; + constexpr uint64_t kUsernameFormSignature = 1000; + predictions.form_signature = kUsernameFormSignature; + PasswordFieldPrediction field_prediction; + field_prediction.renderer_id = kUsernameFieldRendererId; + field_prediction.signature = 123; + field_prediction.type = autofill::SINGLE_USERNAME; + predictions.fields.push_back(field_prediction); + possible_username_data.form_predictions = predictions; + + // Simulate submission a form without username. Data from + // |possible_username_data| will be taken for setting username. + FormData submitted_form = observed_form_only_password_fields_; + submitted_form.fields[0].value = ASCIIToUTF16("strongpassword"); + + ASSERT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_, + &possible_username_data)); + + // Check that uploads for both username and password form happen. + testing::InSequence in_sequence; + // Upload for the password form. + EXPECT_CALL(mock_autofill_download_manager_, + StartUploadRequest(_, false, _, _, true, nullptr)); + + // Upload for the username form. + EXPECT_CALL(mock_autofill_download_manager_, + StartUploadRequest(SignatureIs(kUsernameFormSignature), false, _, + _, true, nullptr)); + + form_manager_->Save(); +} + } // namespace } // namespace password_manager
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc index 66f0511..1c9d1e3 100644 --- a/components/password_manager/core/browser/password_manager.cc +++ b/components/password_manager/core/browser/password_manager.cc
@@ -279,6 +279,8 @@ } } form_managers_.clear(); + + TryToFindPredictionsToPossibleUsernameData(); predictions_.clear(); store_password_called_ = false; } @@ -322,6 +324,7 @@ form_managers_.clear(); owned_submitted_form_manager_.reset(); all_visible_forms_.clear(); + TryToFindPredictionsToPossibleUsernameData(); predictions_.clear(); } @@ -386,8 +389,10 @@ PasswordManagerDriver* driver, int32_t renderer_id, const base::string16& value) { + // |driver| might be empty on iOS or in tests. + int driver_id = driver ? driver->GetId() : 0; possible_username_.emplace(GetSignonRealm(driver->GetLastCommittedURL()), - renderer_id, value, base::Time::Now()); + renderer_id, value, base::Time::Now(), driver_id); } void PasswordManager::ShowManualFallbackForSaving( @@ -586,6 +591,7 @@ return nullptr; } + TryToFindPredictionsToPossibleUsernameData(); const PossibleUsernameData* possible_username = possible_username_ ? &possible_username_.value() : nullptr; if (!matched_manager->ProvisionallySave(submitted_form, driver, @@ -1050,4 +1056,20 @@ metrics_util::LogSubmittedFormFrame(frame); } +void PasswordManager::TryToFindPredictionsToPossibleUsernameData() { + if (!possible_username_ || possible_username_->form_predictions) + return; + + for (auto it : predictions_) { + if (it.second.driver_id != possible_username_->driver_id) + continue; + for (const PasswordFieldPrediction& field : it.second.fields) { + if (field.renderer_id == possible_username_->renderer_id) { + possible_username_->form_predictions = it.second; + return; + } + } + } +} + } // namespace password_manager
diff --git a/components/password_manager/core/browser/password_manager.h b/components/password_manager/core/browser/password_manager.h index 84d4c90..cf1b4df1 100644 --- a/components/password_manager/core/browser/password_manager.h +++ b/components/password_manager/core/browser/password_manager.h
@@ -299,6 +299,11 @@ void ReportSubmittedFormFrameMetric(const PasswordManagerDriver* driver, const autofill::PasswordForm& form); + // If |possible_username_.form_predictions| is missing, this functions tries + // to find predictions for the form which contains |possible_username_| in + // |predictions_|. + void TryToFindPredictionsToPossibleUsernameData(); + // PasswordFormManager transition schemes: // 1. HTML submission with navigation afterwads. // form "seen"
diff --git a/components/password_manager/core/browser/possible_username_data.cc b/components/password_manager/core/browser/possible_username_data.cc index 26d3bdb..549a0979 100644 --- a/components/password_manager/core/browser/possible_username_data.cc +++ b/components/password_manager/core/browser/possible_username_data.cc
@@ -12,13 +12,17 @@ namespace password_manager { PossibleUsernameData::PossibleUsernameData(std::string signon_realm, - int32_t renderer_id, + uint32_t renderer_id, base::string16 value, - base::Time last_change) + base::Time last_change, + int driver_id) : signon_realm(std::move(signon_realm)), renderer_id(renderer_id), value(std::move(value)), - last_change(last_change) {} + last_change(last_change), + driver_id(driver_id) {} +PossibleUsernameData::PossibleUsernameData(const PossibleUsernameData&) = + default; PossibleUsernameData::~PossibleUsernameData() = default; bool IsPossibleUsernameValid(const PossibleUsernameData& possible_username,
diff --git a/components/password_manager/core/browser/possible_username_data.h b/components/password_manager/core/browser/possible_username_data.h index 6415fad0..b4751e7f 100644 --- a/components/password_manager/core/browser/possible_username_data.h +++ b/components/password_manager/core/browser/possible_username_data.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/optional.h" #include "base/strings/string16.h" #include "base/time/time.h" #include "components/password_manager/core/browser/form_parsing/password_field_prediction.h" @@ -23,18 +24,24 @@ // username during username first flow. struct PossibleUsernameData { PossibleUsernameData(std::string signon_realm, - int32_t renderer_id, + uint32_t renderer_id, base::string16 value, - base::Time last_change); + base::Time last_change, + int driver_id); + PossibleUsernameData(const PossibleUsernameData&); ~PossibleUsernameData(); std::string signon_realm; - int32_t renderer_id; + uint32_t renderer_id; base::string16 value; base::Time last_change; + // Id of PasswordManagerDriver which corresponds to the frame of this field. + // Paired with the |renderer_id|, this identifies a field globally. + int driver_id; + // Predictions for the form which contains a field with |renderer_id|. - FormPredictions* form_predictions = nullptr; + base::Optional<FormPredictions> form_predictions; }; // Checks that |possible_username| might represent an username:
diff --git a/components/password_manager/core/browser/possible_username_data_unittest.cc b/components/password_manager/core/browser/possible_username_data_unittest.cc index 28039fe1..c2f01ce 100644 --- a/components/password_manager/core/browser/possible_username_data_unittest.cc +++ b/components/password_manager/core/browser/possible_username_data_unittest.cc
@@ -22,7 +22,8 @@ "https://example.com/" /* submitted_signon_realm */, 1u /* renderer_id */, ASCIIToUTF16("username") /* value */, - base::Time::Now() /* last_change */) {} + base::Time::Now() /* last_change */, + 10 /* driver_id */) {} protected: PossibleUsernameData possible_username_data_;
diff --git a/components/password_manager/core/browser/votes_uploader.h b/components/password_manager/core/browser/votes_uploader.h index e7966020..590533c 100644 --- a/components/password_manager/core/browser/votes_uploader.h +++ b/components/password_manager/core/browser/votes_uploader.h
@@ -163,9 +163,8 @@ void clear_single_username_vote_data() { single_username_vote_data_.reset(); } void set_single_username_vote_data(int renderer_id, - const FormPredictions* form_predictions) { - if (form_predictions) - single_username_vote_data_.emplace(renderer_id, *form_predictions); + const FormPredictions& form_predictions) { + single_username_vote_data_.emplace(renderer_id, form_predictions); } private:
diff --git a/components/password_manager/core/browser/votes_uploader_unittest.cc b/components/password_manager/core/browser/votes_uploader_unittest.cc index f967cc6..b2ae6622 100644 --- a/components/password_manager/core/browser/votes_uploader_unittest.cc +++ b/components/password_manager/core/browser/votes_uploader_unittest.cc
@@ -405,7 +405,7 @@ form_predictions.fields.back().signature = kUsernameFieldSignature; votes_uploader.set_single_username_vote_data(kUsernameRendererId, - &form_predictions); + form_predictions); ServerFieldTypeSet expected_types = {credentials_saved ? SINGLE_USERNAME : NOT_USERNAME};
diff --git a/components/password_manager/core/common/password_manager_features.cc b/components/password_manager/core/common/password_manager_features.cc index 01293d1..242a0db 100644 --- a/components/password_manager/core/common/password_manager_features.cc +++ b/components/password_manager/core/common/password_manager_features.cc
@@ -70,6 +70,11 @@ const base::Feature kPasswordManagerOnboardingAndroid = { "PasswordManagerOnboardingAndroid", base::FEATURE_DISABLED_BY_DEFAULT}; +// Controlls whether the password bubble on desktop contains an illustration and +// which illustration. +const base::Feature kPasswordSaveIllustration = { + "SavePasswordIllustration", base::FEATURE_DISABLED_BY_DEFAULT}; + // Deletes entries from local database on Mac which cannot be decrypted when // merging data with Sync. const base::Feature kRecoverPasswordsForSyncUsers = {
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h index c98561b..fb76fce9 100644 --- a/components/password_manager/core/common/password_manager_features.h +++ b/components/password_manager/core/common/password_manager_features.h
@@ -30,6 +30,7 @@ extern const base::Feature kPasswordEditingAndroid; extern const base::Feature kPasswordImport; extern const base::Feature kPasswordManagerOnboardingAndroid; +extern const base::Feature kPasswordSaveIllustration; extern const base::Feature kRecoverPasswordsForSyncUsers; extern const base::Feature kUsernameFirstFlow; extern const base::Feature kStickyBubble;
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 35d1026d..0b35865 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -18494,6 +18494,28 @@ The ids must correspond to the "id" field in the file specified in <ph name="EXTERNAL_PRINT_SERVERS_POLICY">ExternalPrintServers</ph>. If this policy is not set, filtering is omitted and all print servers are taken into account.''' + }, + { + 'name': 'ExternalProtocolDialogShowAlwaysOpenCheckbox', + 'owners': ['ydago@chromium.org', 'mkwst@chromium.org'], + 'type': 'main', + 'schema': { + 'type': 'boolean', + }, + 'example_value': True, + 'id': 632, + 'supported_on': ['chrome.*:79-'], + 'features': { + 'dynamic_refresh': False, + 'per_profile': True, + }, + 'caption': '''Show an "Always open" checkbox in external protocol dialog.''', + 'tags': [], + 'desc': ''' This policy controls whether or not the "Always open" checkbox is shown on external protocol launch confirmation prompts. + + If this policy is set to True, when an external protocol confirmation is shown, the user may choose to "Always open" the protocol without future confirmation prompts. + + If this policy is set to False or not set, the "Always open" checkbox is not displayed and the user will be prompted each time an external protocol is invoked.''' } ], @@ -19316,6 +19338,6 @@ ], 'placeholders': [], 'deleted_policy_ids': [412, 546, 562, 569], - 'highest_id_currently_used': 631, + 'highest_id_currently_used': 632, 'highest_atomic_group_id_currently_used': 38 }
diff --git a/components/previews/core/previews_experiments.cc b/components/previews/core/previews_experiments.cc index 9b8326f..3901a8b 100644 --- a/components/previews/core/previews_experiments.cc +++ b/components/previews/core/previews_experiments.cc
@@ -335,11 +335,37 @@ previews::PreviewsType type) { switch (type) { case PreviewsType::OFFLINE: + return GetParamValueAsECTByFeature(features::kOfflinePreviews, + kEffectiveConnectionTypeThreshold, + net::EFFECTIVE_CONNECTION_TYPE_2G); case PreviewsType::NOSCRIPT: - case PreviewsType::LITE_PAGE_REDIRECT: - return GetParamValueAsECT(kClientSidePreviewsFieldTrial, - kEffectiveConnectionTypeThreshold, - net::EFFECTIVE_CONNECTION_TYPE_2G); + return GetParamValueAsECTByFeature(features::kNoScriptPreviews, + kEffectiveConnectionTypeThreshold, + net::EFFECTIVE_CONNECTION_TYPE_2G); + case PreviewsType::LITE_PAGE_REDIRECT: { + // First check ECT threshold in kLitePageServerPreviews and return that + // (if it's available). + net::EffectiveConnectionType lite_page_ect = GetParamValueAsECTByFeature( + features::kLitePageServerPreviews, kEffectiveConnectionTypeThreshold, + net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); + if (lite_page_ect != net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN) + return lite_page_ect; + + // Next check ECT threshold in kClientSidePreviewsFieldTrial and return + // that (if it's available). In M-78, the ECT threshold for + // LITE_PAGE_REDIRECT is determined from kClientSidePreviewsFieldTrial. + // So, checking kClientSidePreviewsFieldTrial makes the code backwards + // compatible. + net::EffectiveConnectionType client_side_ect = GetParamValueAsECT( + kClientSidePreviewsFieldTrial, kEffectiveConnectionTypeThreshold, + net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); + if (client_side_ect != net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN) + return client_side_ect; + + // Return the default value. + return net::EFFECTIVE_CONNECTION_TYPE_2G; + } + case PreviewsType::LITE_PAGE: NOTREACHED(); break;
diff --git a/components/previews/core/previews_experiments_unittest.cc b/components/previews/core/previews_experiments_unittest.cc index 32e7c68..b99b420 100644 --- a/components/previews/core/previews_experiments_unittest.cc +++ b/components/previews/core/previews_experiments_unittest.cc
@@ -46,6 +46,11 @@ params::OfflinePreviewFreshnessDuration()); EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, params::GetECTThresholdForPreview(PreviewsType::OFFLINE)); + EXPECT_EQ( + net::EFFECTIVE_CONNECTION_TYPE_2G, + params::GetECTThresholdForPreview(PreviewsType::LITE_PAGE_REDIRECT)); + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, + params::GetECTThresholdForPreview(PreviewsType::NOSCRIPT)); EXPECT_EQ(0, params::OfflinePreviewsVersion()); base::FieldTrialList field_trial_list(nullptr); @@ -80,13 +85,62 @@ EXPECT_EQ(base::TimeDelta::FromSeconds(28), params::SingleOptOutDuration()); EXPECT_EQ(base::TimeDelta::FromDays(12), params::OfflinePreviewFreshnessDuration()); - EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_4G, + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, params::GetECTThresholdForPreview(PreviewsType::OFFLINE)); + EXPECT_EQ( + net::EFFECTIVE_CONNECTION_TYPE_4G, + params::GetECTThresholdForPreview(PreviewsType::LITE_PAGE_REDIRECT)); + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, + params::GetECTThresholdForPreview(PreviewsType::NOSCRIPT)); EXPECT_EQ(10, params::OfflinePreviewsVersion()); variations::testing::ClearAllVariationParams(); } +// Verifies that the default params are correct, and that custom params can be +// set, for both the previews blacklist and offline previews. +TEST(PreviewsExperimentsTest, TestParamsForBlackListAndOffline_LPR) { + // Verify that the default params are correct. + EXPECT_EQ(4u, params::MaxStoredHistoryLengthForPerHostBlackList()); + EXPECT_EQ(10u, params::MaxStoredHistoryLengthForHostIndifferentBlackList()); + EXPECT_EQ(100u, params::MaxInMemoryHostsInBlackList()); + EXPECT_EQ(2, params::PerHostBlackListOptOutThreshold()); + EXPECT_EQ(6, params::HostIndifferentBlackListOptOutThreshold()); + EXPECT_EQ(base::TimeDelta::FromDays(30), params::PerHostBlackListDuration()); + EXPECT_EQ(base::TimeDelta::FromDays(30), + params::HostIndifferentBlackListPerHostDuration()); + EXPECT_EQ(base::TimeDelta::FromSeconds(60 * 5), + params::SingleOptOutDuration()); + EXPECT_EQ(base::TimeDelta::FromDays(7), + params::OfflinePreviewFreshnessDuration()); + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, + params::GetECTThresholdForPreview(PreviewsType::OFFLINE)); + EXPECT_EQ( + net::EFFECTIVE_CONNECTION_TYPE_2G, + params::GetECTThresholdForPreview(PreviewsType::LITE_PAGE_REDIRECT)); + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, + params::GetECTThresholdForPreview(PreviewsType::NOSCRIPT)); + EXPECT_EQ(0, params::OfflinePreviewsVersion()); + + // Set some custom params. Somewhat random yet valid values. + std::map<std::string, std::string> custom_params = { + {"max_allowed_effective_connection_type", "3G"}, + {"version", "10"}, + }; + + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitAndEnableFeatureWithParameters( + features::kLitePageServerPreviews, custom_params); + + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, + params::GetECTThresholdForPreview(PreviewsType::OFFLINE)); + EXPECT_EQ( + net::EFFECTIVE_CONNECTION_TYPE_3G, + params::GetECTThresholdForPreview(PreviewsType::LITE_PAGE_REDIRECT)); + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, + params::GetECTThresholdForPreview(PreviewsType::NOSCRIPT)); +} + TEST(PreviewsExperimentsTest, TestDefaultShouldExcludeMediaSuffix) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndEnableFeature(features::kExcludedMediaSuffixes);
diff --git a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm index 8f2f73d2..576ef14c1 100644 --- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm +++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
@@ -319,6 +319,8 @@ } - (void)saveRestorableState { + if (!bridge_) + return; if (![self _isConsideredOpenForPersistentState]) return; base::scoped_nsobject<NSMutableData> restorableStateData(
diff --git a/components/safe_browsing/realtime/policy_engine.cc b/components/safe_browsing/realtime/policy_engine.cc index fdf23e9..8cc1f1e 100644 --- a/components/safe_browsing/realtime/policy_engine.cc +++ b/components/safe_browsing/realtime/policy_engine.cc
@@ -36,8 +36,9 @@ // static bool RealTimePolicyEngine::IsEnabledByPolicy( content::BrowserContext* browser_context) { - PrefService* pref_service = user_prefs::UserPrefs::Get(browser_context); - return pref_service->GetBoolean(prefs::kSafeBrowsingRealTimeLookupEnabled); + // TODO(crbug.com/1015484): Once the policy semantics are understood, check if + // they are enabled here. + return false; } // static
diff --git a/components/safe_browsing/realtime/policy_engine_unittest.cc b/components/safe_browsing/realtime/policy_engine_unittest.cc index d5325a6..2b73c358 100644 --- a/components/safe_browsing/realtime/policy_engine_unittest.cc +++ b/components/safe_browsing/realtime/policy_engine_unittest.cc
@@ -51,7 +51,9 @@ feature_list.InitAndEnableFeature(kRealTimeUrlLookupFetchAllowlist); pref_service_.SetUserPref(prefs::kSafeBrowsingRealTimeLookupEnabled, std::make_unique<base::Value>(true)); - EXPECT_TRUE(CanPerformFullURLLookup()); + // TODO(crbug.com/1015484): This should be enabled, once we clarify the policy + // semantics. + EXPECT_FALSE(CanPerformFullURLLookup()); } TEST_F(RealTimePolicyEngineTest,
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc index 6ea30bc7..29953e4 100644 --- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc +++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
@@ -32,6 +32,7 @@ #include "net/base/load_flags.h" #include "net/base/net_errors.h" #include "net/cookies/cookie_change_dispatcher.h" +#include "net/cookies/cookie_constants.h" #include "net/http/http_status_code.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/network/public/cpp/resource_request.h" @@ -580,7 +581,9 @@ base::Time(), base::Time(), base::Time(), true /* secure */, false /* httponly */, net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_DEFAULT)); - OnCookieChange(*cookie, network::mojom::CookieChangeCause::UNKNOWN_DELETION); + OnCookieChange( + net::CookieChangeInfo(*cookie, net::CookieAccessSemantics::UNKNOWN, + net::CookieChangeCause::UNKNOWN_DELETION)); } void GaiaCookieManagerService::LogOutAllAccounts(gaia::GaiaSource source) { @@ -658,13 +661,13 @@ } void GaiaCookieManagerService::OnCookieChange( - const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause) { - DCHECK_EQ(kGaiaCookieName, cookie.Name()); - DCHECK(cookie.IsDomainMatch(GaiaUrls::GetInstance()->google_url().host())); + const net::CookieChangeInfo& change) { + DCHECK_EQ(kGaiaCookieName, change.cookie.Name()); + DCHECK(change.cookie.IsDomainMatch( + GaiaUrls::GetInstance()->google_url().host())); list_accounts_stale_ = true; - if (cause == network::mojom::CookieChangeCause::EXPLICIT) { + if (change.cause == net::CookieChangeCause::EXPLICIT) { DCHECK(net::CookieChangeCauseIsDeletion(net::CookieChangeCause::EXPLICIT)); if (gaia_cookie_deleted_by_user_action_callback_) { gaia_cookie_deleted_by_user_action_callback_.Run();
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.h b/components/signin/internal/identity_manager/gaia_cookie_manager_service.h index 61df0d3..730b18c 100644 --- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.h +++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.h
@@ -26,6 +26,7 @@ #include "google_apis/gaia/gaia_auth_util.h" #include "mojo/public/cpp/bindings/receiver.h" #include "net/base/backoff_entry.h" +#include "net/cookies/cookie_change_dispatcher.h" #include "services/network/public/mojom/cookie_manager.mojom.h" class GaiaAuthFetcher; @@ -312,8 +313,7 @@ // Overridden from network::mojom::CookieChangeListner. If the cookie relates // to a GAIA APISID cookie, then we call ListAccounts and fire // OnGaiaAccountsInCookieUpdated. - void OnCookieChange(const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause) override; + void OnCookieChange(const net::CookieChangeInfo& change) override; void OnCookieListenerConnectionError(); // Overridden from GaiaAuthConsumer.
diff --git a/components/signin/public/identity_manager/identity_manager_unittest.cc b/components/signin/public/identity_manager/identity_manager_unittest.cc index 764368c..d15f8eb8 100644 --- a/components/signin/public/identity_manager/identity_manager_unittest.cc +++ b/components/signin/public/identity_manager/identity_manager_unittest.cc
@@ -41,6 +41,8 @@ #include "components/sync_preferences/testing_pref_service_syncable.h" #include "google_apis/gaia/core_account_id.h" #include "google_apis/gaia/google_service_auth_error.h" +#include "net/cookies/cookie_change_dispatcher.h" +#include "net/cookies/cookie_constants.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_cookie_manager.h" #include "services/network/test/test_url_loader_factory.h" @@ -383,8 +385,9 @@ void SimulateCookieDeletedByUser( network::mojom::CookieChangeListener* listener, const net::CanonicalCookie& cookie) { - listener->OnCookieChange(cookie, - network::mojom::CookieChangeCause::EXPLICIT); + listener->OnCookieChange( + net::CookieChangeInfo(cookie, net::CookieAccessSemantics::UNKNOWN, + net::CookieChangeCause::EXPLICIT)); } void SimulateOAuthMultiloginFinished(GaiaCookieManagerService* manager, @@ -2061,7 +2064,8 @@ base::Time(), /*secure=*/true, false, net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_DEFAULT); test_cookie_manager_ptr->DispatchCookieChange( - cookie, network::mojom::CookieChangeCause::EXPLICIT); + net::CookieChangeInfo(cookie, net::CookieAccessSemantics::UNKNOWN, + net::CookieChangeCause::EXPLICIT)); run_loop.Run(); }
diff --git a/components/sync/nigori/cryptographer_impl.cc b/components/sync/nigori/cryptographer_impl.cc index 981bdc59..ac38cd4 100644 --- a/components/sync/nigori/cryptographer_impl.cc +++ b/components/sync/nigori/cryptographer_impl.cc
@@ -83,6 +83,10 @@ default_encryption_key_name_.clear(); } +bool CryptographerImpl::HasKey(const sync_pb::NigoriKey& key) const { + return key_bag_.HasKey(key); +} + sync_pb::NigoriKey CryptographerImpl::ExportDefaultKey() const { DCHECK(CanEncrypt()); return key_bag_.ExportKey(default_encryption_key_name_);
diff --git a/components/sync/nigori/cryptographer_impl.h b/components/sync/nigori/cryptographer_impl.h index 5002637..2afc6e0f 100644 --- a/components/sync/nigori/cryptographer_impl.h +++ b/components/sync/nigori/cryptographer_impl.h
@@ -65,6 +65,9 @@ // false. void ClearDefaultEncryptionKey(); + // Determines whether |key| is already known. + bool HasKey(const sync_pb::NigoriKey& key) const; + // Returns a proto representation of the default encryption key. |*this| must // have a default encryption key set, as reflected by CanEncrypt(). sync_pb::NigoriKey ExportDefaultKey() const;
diff --git a/components/sync/nigori/nigori_key_bag.cc b/components/sync/nigori/nigori_key_bag.cc index 30d972a..5e969f6 100644 --- a/components/sync/nigori/nigori_key_bag.cc +++ b/components/sync/nigori/nigori_key_bag.cc
@@ -96,6 +96,12 @@ return nigori_map_.count(key_name) != 0; } +bool NigoriKeyBag::HasKey(const sync_pb::NigoriKey& key) const { + std::unique_ptr<Nigori> nigori = Nigori::CreateByImport( + key.deprecated_user_key(), key.encryption_key(), key.mac_key()); + return HasKey(ComputeNigoriName(*nigori)); +} + sync_pb::NigoriKey NigoriKeyBag::ExportKey(const std::string& key_name) const { DCHECK(HasKey(key_name)); sync_pb::NigoriKey key =
diff --git a/components/sync/nigori/nigori_key_bag.h b/components/sync/nigori/nigori_key_bag.h index c11991d..4b4846da 100644 --- a/components/sync/nigori/nigori_key_bag.h +++ b/components/sync/nigori/nigori_key_bag.h
@@ -40,6 +40,7 @@ size_t size() const; bool HasKey(const std::string& key_name) const; + bool HasKey(const sync_pb::NigoriKey& key) const; // |key_name| must exist in this keybag. sync_pb::NigoriKey ExportKey(const std::string& key_name) const;
diff --git a/components/sync/nigori/nigori_state.cc b/components/sync/nigori/nigori_state.cc index 2207c51..10aa727e 100644 --- a/components/sync/nigori/nigori_state.cc +++ b/components/sync/nigori/nigori_state.cc
@@ -289,4 +289,16 @@ return result; } +bool NigoriState::NeedsKeystoreKeyRotation() const { + if (keystore_keys_cryptographer->IsEmpty() || + passphrase_type != sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE || + pending_keys.has_value()) { + return false; + } + + const sync_pb::NigoriKey rotated_default_key = + keystore_keys_cryptographer->ToCryptographerImpl()->ExportDefaultKey(); + return !cryptographer->HasKey(rotated_default_key); +} + } // namespace syncer
diff --git a/components/sync/nigori/nigori_state.h b/components/sync/nigori/nigori_state.h index 6595dfd..75b772d5 100644 --- a/components/sync/nigori/nigori_state.h +++ b/components/sync/nigori/nigori_state.h
@@ -49,6 +49,8 @@ // Makes a deep copy of |this|. NigoriState Clone() const; + bool NeedsKeystoreKeyRotation() const; + std::unique_ptr<CryptographerImpl> cryptographer; // Pending keys represent a remote update that contained a keybag that cannot
diff --git a/components/sync/nigori/nigori_sync_bridge_impl.cc b/components/sync/nigori/nigori_sync_bridge_impl.cc index a238b7c..f04a3ce 100644 --- a/components/sync/nigori/nigori_sync_bridge_impl.cc +++ b/components/sync/nigori/nigori_sync_bridge_impl.cc
@@ -417,6 +417,9 @@ metadata_batch.model_type_state = deserialized_data->model_type_state(); metadata_batch.entity_metadata = deserialized_data->entity_metadata(); processor_->ModelReadyToSync(this, std::move(metadata_batch)); + + // Keystore key rotation might be not performed, but required. + MaybeTriggerKeystoreKeyRotation(); } NigoriSyncBridgeImpl::~NigoriSyncBridgeImpl() { @@ -632,10 +635,10 @@ broadcasting_observer_->OnCryptographerStateChanged( state_.cryptographer.get(), state_.pending_keys.has_value()); } + MaybeTriggerKeystoreKeyRotation(); // Note: we don't need to persist keystore keys here, because we will receive // Nigori node right after this method and persist all the data during // UpdateLocalState(). - // TODO(crbug.com/922900): support key rotation. // TODO(crbug.com/922900): verify that this method is always called before // update or init of Nigori node. If this is the case we don't need to touch // cryptographer here. If this is not the case, old code is actually broken: @@ -1083,6 +1086,12 @@ return output; } +void NigoriSyncBridgeImpl::MaybeTriggerKeystoreKeyRotation() { + if (state_.NeedsKeystoreKeyRotation()) { + QueuePendingLocalCommit(PendingLocalNigoriCommit::ForKeystoreKeyRotation()); + } +} + void NigoriSyncBridgeImpl::QueuePendingLocalCommit( std::unique_ptr<PendingLocalNigoriCommit> local_commit) { DCHECK(processor_->IsTrackingMetadata());
diff --git a/components/sync/nigori/nigori_sync_bridge_impl.h b/components/sync/nigori/nigori_sync_bridge_impl.h index 070b833..fe9dd43 100644 --- a/components/sync/nigori/nigori_sync_bridge_impl.h +++ b/components/sync/nigori/nigori_sync_bridge_impl.h
@@ -127,6 +127,9 @@ // just won't be updated. void MaybeNotifyBootstrapTokenUpdated() const; + // Queues keystore rotation if current state assume it should happen. + void MaybeTriggerKeystoreKeyRotation(); + // Serializes state of the bridge and sync metadata into the proto. sync_pb::NigoriLocalData SerializeAsNigoriLocalData() const;
diff --git a/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc b/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc index e0465c6..06b0cb2 100644 --- a/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc +++ b/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc
@@ -611,6 +611,52 @@ EXPECT_THAT(cryptographer, HasDefaultKeyDerivedFrom(kKeystoreKeyParams)); } +TEST_F(NigoriSyncBridgeImplTest, ShouldRotateKeystoreKey) { + const std::string kRawKeystoreKey1 = "raw_keystore_key1"; + const KeyParams kKeystoreKeyParams1 = KeystoreKeyParams(kRawKeystoreKey1); + + sync_pb::NigoriSpecifics not_rotated_specifics = BuildKeystoreNigoriSpecifics( + /*keybag_keys_params=*/{kKeystoreKeyParams1}, + /*keystore_decryptor_params=*/kKeystoreKeyParams1, + /*keystore_key_params=*/kKeystoreKeyParams1); + EntityData entity_data; + *entity_data.specifics.mutable_nigori() = not_rotated_specifics; + ASSERT_TRUE(bridge()->SetKeystoreKeys({kRawKeystoreKey1})); + ASSERT_THAT(bridge()->MergeSyncData(std::move(entity_data)), + Eq(base::nullopt)); + + const std::string kRawKeystoreKey2 = "raw_keystore_key2"; + const KeyParams kKeystoreKeyParams2 = KeystoreKeyParams(kRawKeystoreKey2); + // Emulate server and client behavior: server sends both keystore keys and + // |not_rotated_specifics| with changed metadata. Client have already seen + // this specifics, but should pass it to the bridge, because bridge also + // issues a commit, which conflicts with |not_rotated_specifics|. + + // Ensure bridge issues a commit right after SetKeystoreKeys() call, because + // otherwise there is no conflict and ApplySyncChanges() will be called with + // empty |data|. + EXPECT_CALL(*processor(), Put(HasKeystoreNigori())); + EXPECT_TRUE(bridge()->SetKeystoreKeys({kRawKeystoreKey1, kRawKeystoreKey2})); + + // Populate new remote specifics to bridge, which is actually still + // |not_rotated_specifics|. + *entity_data.specifics.mutable_nigori() = not_rotated_specifics; + EXPECT_CALL(*processor(), Put(HasKeystoreNigori())); + EXPECT_THAT(bridge()->ApplySyncChanges(std::move(entity_data)), + Eq(base::nullopt)); + + // Mimic commit completion. + EXPECT_CALL(*observer(), OnCryptographerStateChanged( + NotNull(), /*has_pending_keys=*/false)); + EXPECT_THAT(bridge()->ApplySyncChanges(base::nullopt), Eq(base::nullopt)); + EXPECT_THAT(bridge()->GetData(), HasKeystoreNigori()); + + const Cryptographer& cryptographer = bridge()->GetCryptographerForTesting(); + EXPECT_THAT(cryptographer, CanDecryptWith(kKeystoreKeyParams1)); + EXPECT_THAT(cryptographer, CanDecryptWith(kKeystoreKeyParams2)); + EXPECT_THAT(cryptographer, HasDefaultKeyDerivedFrom(kKeystoreKeyParams2)); +} + // This test emulates late arrival of keystore keys, so neither // |keystore_decryptor_token| or |encryption_keybag| could be decrypted at the // moment NigoriSpecifics arrived. They should be decrypted right after
diff --git a/components/sync/nigori/pending_local_nigori_commit.cc b/components/sync/nigori/pending_local_nigori_commit.cc index f5bfd57..674879a00 100644 --- a/components/sync/nigori/pending_local_nigori_commit.cc +++ b/components/sync/nigori/pending_local_nigori_commit.cc
@@ -163,6 +163,36 @@ DISALLOW_COPY_AND_ASSIGN(KeystoreInitializer); }; +class KeystoreKeyRotator : public PendingLocalNigoriCommit { + public: + KeystoreKeyRotator() = default; + ~KeystoreKeyRotator() override = default; + + bool TryApply(NigoriState* state) const override { + if (!state->NeedsKeystoreKeyRotation()) { + return false; + } + // TODO(crbug.com/922900): ensure that |cryptographer| contains all + // keystore keys? (In theory it's safe to add only last one). + const std::string new_default_key_name = state->cryptographer->EmplaceKey( + state->keystore_keys_cryptographer->keystore_keys().back(), + KeyDerivationParams::CreateForPbkdf2()); + state->cryptographer->SelectDefaultEncryptionKey(new_default_key_name); + return true; + } + + void OnSuccess(const NigoriState& state, + SyncEncryptionHandler::Observer* observer) override { + observer->OnCryptographerStateChanged(state.cryptographer.get(), + /*has_pending_keys=*/false); + } + + void OnFailure(SyncEncryptionHandler::Observer* observer) override {} + + private: + DISALLOW_COPY_AND_ASSIGN(KeystoreKeyRotator); +}; + } // namespace // static @@ -180,4 +210,10 @@ return std::make_unique<KeystoreInitializer>(); } +// static +std::unique_ptr<PendingLocalNigoriCommit> +PendingLocalNigoriCommit::ForKeystoreKeyRotation() { + return std::make_unique<KeystoreKeyRotator>(); +} + } // namespace syncer
diff --git a/components/sync/nigori/pending_local_nigori_commit.h b/components/sync/nigori/pending_local_nigori_commit.h index db9f60ff..3a5c23c 100644 --- a/components/sync/nigori/pending_local_nigori_commit.h +++ b/components/sync/nigori/pending_local_nigori_commit.h
@@ -26,6 +26,8 @@ static std::unique_ptr<PendingLocalNigoriCommit> ForKeystoreInitialization(); + static std::unique_ptr<PendingLocalNigoriCommit> ForKeystoreKeyRotation(); + PendingLocalNigoriCommit() = default; virtual ~PendingLocalNigoriCommit() = default;
diff --git a/components/viz/host/client_frame_sink_video_capturer.cc b/components/viz/host/client_frame_sink_video_capturer.cc index 84f158b..95b8fde0 100644 --- a/components/viz/host/client_frame_sink_video_capturer.cc +++ b/components/viz/host/client_frame_sink_video_capturer.cc
@@ -149,7 +149,8 @@ base::ReadOnlySharedMemoryRegion data, media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) { + mojo::PendingRemote<mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); consumer_->OnFrameCaptured(std::move(data), std::move(info), content_rect,
diff --git a/components/viz/host/client_frame_sink_video_capturer.h b/components/viz/host/client_frame_sink_video_capturer.h index 0607b4af..baed9a5b 100644 --- a/components/viz/host/client_frame_sink_video_capturer.h +++ b/components/viz/host/client_frame_sink_video_capturer.h
@@ -118,7 +118,8 @@ base::ReadOnlySharedMemoryRegion data, media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) final; + mojo::PendingRemote<mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) final; void OnStopped() final; // Establishes connection to FrameSinkVideoCapturer and sends the existing
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc index 5641506..7eb2865 100644 --- a/components/viz/service/display/skia_renderer.cc +++ b/components/viz/service/display/skia_renderer.cc
@@ -961,6 +961,133 @@ } } +void SkiaRenderer::PrepareCanvasForRPDQ(const DrawRPDQParams& rpdq_params, + DrawQuadParams* params, + SkPaint* content_paint) { + // Some |image_filter|'s are really just color filters, which do not have the + // same layering requirements as regular filters. + SkColorFilter* color_filter_ptr = nullptr; + if (rpdq_params.image_filter) { + if (!rpdq_params.image_filter->asAColorFilter(&color_filter_ptr)) { + // If color_filter is not null, it will be used in place of image_filter + // so force it back to null when false is returned. + color_filter_ptr = nullptr; + } + } + // asAColorFilter adds a ref to SkColorFilter if it returns true, so we need + // an sk_sp here to unref properly. + sk_sp<SkColorFilter> color_filter(color_filter_ptr); + + bool needs_save_layer = false; + // If there's a backdrop filter, we need a layer since that's the only way to + // compute backdrop filters with Skia + if (rpdq_params.backdrop_filter) + needs_save_layer = true; + // If there's a regular filter, we need a layer if there's a mask + // (Skia applies paint masks before paint image filters, so we need a layer to + // change the order of operations). + if (!needs_save_layer && rpdq_params.image_filter && !color_filter) + needs_save_layer = !!rpdq_params.mask_image; + + bool aa = params->aa_flags != SkCanvas::kNone_QuadAAFlags; + if (needs_save_layer) { + // Clip to the filter bounds prior to saving the layer, which has been + // constructed to contain the actual filtered contents (visually no + // clipping effect, but lets Skia minimize internal layer size). + current_canvas_->clipRect(gfx::RectToSkRect(rpdq_params.filter_bounds), aa); + + SkPaint layer_paint = params->paint(); + // The layer always consumes the opacity, but its blend mode depends on if + // it was initialized with backdrop content or not. + params->opacity = 1.f; + if (rpdq_params.backdrop_filter) { + layer_paint.setBlendMode(SkBlendMode::kSrcOver); + } else { + params->blend_mode = SkBlendMode::kSrcOver; + } + // Sync the content paint with the updated |params| + if (content_paint) { + content_paint->setAlphaf(params->opacity); + content_paint->setBlendMode(params->blend_mode); + } + + if (color_filter) { + layer_paint.setColorFilter(std::move(color_filter)); + } else if (rpdq_params.image_filter) { + layer_paint.setImageFilter(rpdq_params.image_filter); + } + + SkRect bounds = gfx::RectFToSkRect(params->visible_rect); + current_canvas_->saveLayer(SkCanvas::SaveLayerRec( + &bounds, &layer_paint, rpdq_params.backdrop_filter.get(), + rpdq_params.mask_image.get(), &rpdq_params.mask_to_quad_matrix, 0)); + } else { + // If we don't need an explicit layer, moving the effects on to the + // paint allows Skia to draw the geometry with shaders and skip offscreen + // allocations when possible. + if (rpdq_params.image_filter) { + if (color_filter) { + // Use the color filter directly, instead of the image filter; since + // color filters are applied before masks, this can be combined with + // the mask image later. + if (content_paint->getColorFilter()) { + content_paint->setColorFilter( + color_filter->makeComposed(content_paint->refColorFilter())); + } else { + content_paint->setColorFilter(std::move(color_filter)); + } + DCHECK(content_paint->getColorFilter()); + } else { + // Store the image filter on the paint, but since this effect is + // applied last it's not compatible with masks as a shader + DCHECK(!rpdq_params.mask_image); + if (params->opacity != 1.f) { + // Apply opacity as the last step of image filter so it is uniform + // across any overlapping content produced by the image filters. + sk_sp<SkColorFilter> cf = MakeOpacityFilter(params->opacity, nullptr); + content_paint->setImageFilter(SkColorFilterImageFilter::Make( + std::move(cf), rpdq_params.image_filter)); + content_paint->setAlphaf(1.f); + params->opacity = 1.f; + } else { + content_paint->setImageFilter(rpdq_params.image_filter); + } + } + } + + if (rpdq_params.mask_image) { + auto mask_filter = SkShaderMaskFilter::Make( + rpdq_params.mask_image->makeShader(&rpdq_params.mask_to_quad_matrix)); + // This step assumes there's no existing mask filter to merge with, and + // that afterwards the paint handles the mask image as a mask filter. + DCHECK(!content_paint->getMaskFilter()); + content_paint->setMaskFilter(mask_filter); + DCHECK(content_paint->getMaskFilter()); + } + } + + // If we have backdrop filtered content (and not transparent black like with + // regular render passes), we have to clear out the parts of the layer that + // shouldn't show the backdrop + if (rpdq_params.backdrop_filter && + (rpdq_params.backdrop_filter_bounds.has_value() || + params->draw_region.has_value())) { + DCHECK(needs_save_layer); + current_canvas_->save(); + if (rpdq_params.backdrop_filter_bounds.has_value()) { + current_canvas_->clipRRect(SkRRect(*rpdq_params.backdrop_filter_bounds), + SkClipOp::kDifference, aa); + } + if (params->draw_region.has_value()) { + SkPath clipPath; + clipPath.addPoly(params->draw_region->points, 4, true /* close */); + current_canvas_->clipPath(clipPath, SkClipOp::kDifference, aa); + } + current_canvas_->clear(SK_ColorTRANSPARENT); + current_canvas_->restore(); + } +} + SkiaRenderer::DrawQuadParams SkiaRenderer::CalculateDrawQuadParams( const DrawQuad* quad, const gfx::QuadF* draw_region) { @@ -1650,14 +1777,6 @@ auto sk_filter = paint_filter ? paint_filter->cached_sk_filter_ : nullptr; if (sk_filter) { - if (params->opacity != 1.f) { - // Apply opacity as the last step of image filter so it is uniform - // across any overlapping content produced by the image filters. - sk_sp<SkColorFilter> cf = MakeOpacityFilter(params->opacity, nullptr); - sk_filter = SkColorFilterImageFilter::Make(std::move(cf), sk_filter); - params->opacity = 1.f; - } - // Update the filter bounds based to account for how the image filters // grow or expand the area touched by drawing. rpdq_params.filter_bounds = @@ -1855,109 +1974,22 @@ FlushBatchedQuads(); SkPaint paint = params->paint(); - paint.setImageFilter(rpdq_params.image_filter); - - // When there's no backdrop filter, there's no need to use an explicit layer. - // SkCanvas will do so implicitly (if needed) when processing the regular - // filter. - if (!rpdq_params.backdrop_filter) { - // Since there is no layer, use the mask on the paint itself - if (rpdq_params.mask_image) { - paint.setMaskFilter( - SkShaderMaskFilter::Make(rpdq_params.mask_image->makeShader( - &rpdq_params.mask_to_quad_matrix))); - DCHECK(paint.getMaskFilter()); - } - DrawSingleImage(content_image, valid_texel_bounds, paint, params); - return; - } - - // Use Skia's SaveLayerRec feature to automatically handle backdrop and - // regular image filters, mask clipping, and final layer blending. This will: - // 1. Automatically copy the backbuffer contents (InitWithPrevious flag) - // 2. Automatically apply provided backdrop filter to the image from #1 - // 3. Draw an inverted clip round-rect to zero the filtered backdrop outside - // of the allowed border. - // 4. Draw the main render pass content, but using SrcOver and no opacity - // modification, since we apply the layer's blending at the very end. - // 5. Automatically restore the saved layer, applying the restore paint's - // image filters and opacity to the results of #3. - // - This will also use the given mask's alpha to clip the final blending. // Make sure everything is provided in the quad space coordinate system. SkAutoCanvasRestore acr(current_canvas_, true /* do_save */); PrepareCanvas(params->scissor_rect, params->rounded_corner_bounds, ¶ms->content_device_transform); - // saveLayer automatically respects the clip when it is restored, and - // automatically reads beyond the clip for any pixel-moving filtered content. - // However, since Chromium does not want image-filtered content (ex. blurs) to - // be clipped to the visible_rect of the RPDQ, configure the clip to be the - // expanded bounds that encloses the entire filtered content. - // - // We could have instead passed the unadjusted visible_rect as the bounds - // pointer to the SaveLayerRec below, but that would not properly account for - // the backdrop_filter_bounds that needs to also be filtered. - current_canvas_->clipRect(gfx::RectToSkRect(rpdq_params.filter_bounds), - paint.isAntiAlias()); - - // Save the layer with the restoration paint (which holds the final image - // filters, the backdrop filters, and mask image. If we have a backdrop filter - // the layer will blended with src-over, and the rpdq's blend mode will apply - // when drawing the content into the layer itself. When there's no backdrop - // (so the layer starts empty), use the rp's blend mode when flattening layer. - SkCanvas::SaveLayerFlags layer_flags = 0; - SkBlendMode content_blend = SkBlendMode::kSrcOver; - if (rpdq_params.backdrop_filter) { - layer_flags |= SkCanvas::kInitWithPrevious_SaveLayerFlag; - content_blend = paint.getBlendMode(); - paint.setBlendMode(SkBlendMode::kSrcOver); - } - SkRect bounds = gfx::RectFToSkRect(params->visible_rect); - current_canvas_->saveLayer( - SkCanvas::SaveLayerRec(&bounds, &paint, rpdq_params.backdrop_filter.get(), - rpdq_params.mask_image.get(), - &rpdq_params.mask_to_quad_matrix, layer_flags)); - - if (rpdq_params.backdrop_filter_bounds.has_value() || - params->draw_region.has_value()) { - // The initial contents of saved layer is all of the background within - // |bounds| filtered by the backdrop filters. Must set all pixels outside - // of the border rrect to transparent black. This cannot simply be a clip - // when the layer is restored since this rrect should not clip the rest - // of the render pass content. The same logic applies when this draw is - // rendering a split quadrilateral from the RPDQ. We don't want to keep the - // backdrop filtered contents that are outside of the quad being rendered. - current_canvas_->save(); - if (rpdq_params.backdrop_filter_bounds.has_value()) { - current_canvas_->clipRRect(SkRRect(*rpdq_params.backdrop_filter_bounds), - SkClipOp::kDifference, paint.isAntiAlias()); - } - if (params->draw_region.has_value()) { - SkPath clipPath; - clipPath.addPoly(params->draw_region->points, 4, true /* close */); - current_canvas_->clipPath(clipPath, SkClipOp::kDifference, - paint.isAntiAlias()); - } - current_canvas_->clear(SK_ColorTRANSPARENT); - current_canvas_->restore(); - } - - // Now draw the main content using the same per-edge AA API to be consistent - // with DrawSingleImage. Use a new paint that uses either srcOver or the rpdq - // blend mode, depending how filters were applied, and just preserve the - // filter quality from the original paint. - SkPaint content_paint; - content_paint.setBlendMode(content_blend); - content_paint.setFilterQuality(paint.getFilterQuality()); + // Additional modifications for the renderpass effects + PrepareCanvasForRPDQ(rpdq_params, params, &paint); SkCanvas::SrcRectConstraint constraint = ResolveTextureConstraints(content_image, valid_texel_bounds, params); SkCanvas::ImageSetEntry entry = MakeEntry(content_image, -1, *params); const SkPoint* draw_region = params->draw_region.has_value() ? params->draw_region->points : nullptr; - current_canvas_->experimental_DrawEdgeAAImageSet( - &entry, 1, draw_region, nullptr, &content_paint, constraint); + current_canvas_->experimental_DrawEdgeAAImageSet(&entry, 1, draw_region, + nullptr, &paint, constraint); // And the saved layer will be auto-restored when |acr| is destructed }
diff --git a/components/viz/service/display/skia_renderer.h b/components/viz/service/display/skia_renderer.h index a2552fee..028224c 100644 --- a/components/viz/service/display/skia_renderer.h +++ b/components/viz/service/display/skia_renderer.h
@@ -104,6 +104,11 @@ void PrepareCanvas(const base::Optional<gfx::Rect>& scissor_rect, const base::Optional<gfx::RRectF>& rounded_corner_bounds, const gfx::Transform* cdt); + // Further modify the canvas or draw parameters as needed to apply the effects + // represented by |rpdq_params|. |content_paint| must be a non-null pointer. + void PrepareCanvasForRPDQ(const DrawRPDQParams& rpdq_params, + DrawQuadParams* params, + SkPaint* content_paint); // The returned DrawQuadParams can be modified by the DrawX calls that accept // params so that they can apply explicit data transforms before sending to
diff --git a/components/viz/service/display_embedder/skia_output_device_vulkan.cc b/components/viz/service/display_embedder/skia_output_device_vulkan.cc index 4b3fc4e..428816b 100644 --- a/components/viz/service/display_embedder/skia_output_device_vulkan.cc +++ b/components/viz/service/display_embedder/skia_output_device_vulkan.cc
@@ -57,10 +57,13 @@ vulkan_surface_->Reshape(size, transform); - if (vulkan_surface_->swap_chain_generation() != generation) { + auto sk_color_space = color_space.ToSkColorSpace(); + if (vulkan_surface_->swap_chain_generation() != generation || + !SkColorSpace::Equals(sk_color_space.get(), sk_color_space_.get())) { // swapchain is changed, we need recreate all cached sk surfaces. sk_surfaces_.clear(); sk_surfaces_.resize(vulkan_surface_->swap_chain()->num_images()); + sk_color_space_ = std::move(sk_color_space); } } @@ -110,7 +113,7 @@ : kRGBA_8888_SkColorType; sk_surface = SkSurface::MakeFromBackendRenderTarget( context_provider_->GetGrContext(), render_target, - kTopLeft_GrSurfaceOrigin, sk_color_type, nullptr /* color_space */, + kTopLeft_GrSurfaceOrigin, sk_color_type, sk_color_space_, &surface_props); DCHECK(sk_surface); } else {
diff --git a/components/viz/service/display_embedder/skia_output_device_vulkan.h b/components/viz/service/display_embedder/skia_output_device_vulkan.h index 9af042d..5cc1c8d 100644 --- a/components/viz/service/display_embedder/skia_output_device_vulkan.h +++ b/components/viz/service/display_embedder/skia_output_device_vulkan.h
@@ -55,6 +55,8 @@ // SkSurfaces for swap chain images. std::vector<sk_sp<SkSurface>> sk_surfaces_; + sk_sp<SkColorSpace> sk_color_space_; + DISALLOW_COPY_AND_ASSIGN(SkiaOutputDeviceVulkan); };
diff --git a/components/viz/service/display_embedder/skia_output_surface_dependency.h b/components/viz/service/display_embedder/skia_output_surface_dependency.h index 0c62bad..a48d0f6 100644 --- a/components/viz/service/display_embedder/skia_output_surface_dependency.h +++ b/components/viz/service/display_embedder/skia_output_surface_dependency.h
@@ -12,9 +12,12 @@ #include "base/memory/weak_ptr.h" #include "build/build_config.h" #include "components/viz/service/viz_service_export.h" +#include "gpu/command_buffer/common/constants.h" #include "gpu/command_buffer/service/sequence_id.h" #include "gpu/ipc/common/surface_handle.h" +class GURL; + namespace gl { class GLSurface; } @@ -91,6 +94,9 @@ virtual void RegisterDisplayContext(gpu::DisplayContext* display_context) = 0; virtual void UnregisterDisplayContext( gpu::DisplayContext* display_context) = 0; + virtual void DidLoseContext(bool offscreen, + gpu::error::ContextLostReason reason, + const GURL& active_url) = 0; }; } // namespace viz
diff --git a/components/viz/service/display_embedder/skia_output_surface_dependency_impl.cc b/components/viz/service/display_embedder/skia_output_surface_dependency_impl.cc index 34b24a3..e7695b0a 100644 --- a/components/viz/service/display_embedder/skia_output_surface_dependency_impl.cc +++ b/components/viz/service/display_embedder/skia_output_surface_dependency_impl.cc
@@ -125,4 +125,11 @@ gpu_service_impl_->UnregisterDisplayContext(display_context); } +void SkiaOutputSurfaceDependencyImpl::DidLoseContext( + bool offscreen, + gpu::error::ContextLostReason reason, + const GURL& active_url) { + gpu_service_impl_->DidLoseContext(offscreen, reason, active_url); +} + } // namespace viz
diff --git a/components/viz/service/display_embedder/skia_output_surface_dependency_impl.h b/components/viz/service/display_embedder/skia_output_surface_dependency_impl.h index c74257c..fafe67b59 100644 --- a/components/viz/service/display_embedder/skia_output_surface_dependency_impl.h +++ b/components/viz/service/display_embedder/skia_output_surface_dependency_impl.h
@@ -51,6 +51,9 @@ void RegisterDisplayContext(gpu::DisplayContext* display_context) override; void UnregisterDisplayContext(gpu::DisplayContext* display_context) override; + void DidLoseContext(bool offscreen, + gpu::error::ContextLostReason reason, + const GURL& active_url) override; private: GpuServiceImpl* const gpu_service_impl_;
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 e8202c3..8b1a8f9 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl.cc
@@ -28,6 +28,7 @@ #include "gpu/command_buffer/service/scheduler.h" #include "gpu/command_buffer/service/shared_image_representation.h" #include "gpu/command_buffer/service/skia_utils.h" +#include "gpu/ipc/service/context_url.h" #include "gpu/ipc/single_task_sequence.h" #include "gpu/vulkan/buildflags.h" #include "ui/gfx/skia_util.h" @@ -85,6 +86,12 @@ std::move(callback)); } +gpu::ContextUrl& GetActiveUrl() { + static base::NoDestructor<gpu::ContextUrl> active_url( + GURL("chrome://gpu/SkiaRenderer")); + return *active_url; +} + } // namespace SkiaOutputSurfaceImpl::ScopedPaint::ScopedPaint( @@ -784,7 +791,14 @@ void SkiaOutputSurfaceImpl::ScheduleGpuTask( base::OnceClosure callback, std::vector<gpu::SyncToken> sync_tokens) { - task_sequence_->ScheduleTask(std::move(callback), std::move(sync_tokens)); + auto wrapped_closure = base::BindOnce( + [](base::OnceClosure callback) { + gpu::ContextUrl::SetActiveUrl(GetActiveUrl()); + std::move(callback).Run(); + }, + std::move(callback)); + task_sequence_->ScheduleTask(std::move(wrapped_closure), + std::move(sync_tokens)); } GrBackendFormat SkiaOutputSurfaceImpl::GetGrBackendFormatForTexture(
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc index 60d554e..944edcba 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -624,7 +624,8 @@ buffer_presented_callback_(std::move(buffer_presented_callback)), context_lost_callback_(std::move(context_lost_callback)), gpu_vsync_callback_(std::move(gpu_vsync_callback)), - gpu_preferences_(dependency_->GetGpuPreferences()) { + gpu_preferences_(dependency_->GetGpuPreferences()), + copier_active_url_(GURL("chrome://gpu/SkiaRendererGLRendererCopier")) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); dependency_->RegisterDisplayContext(this); } @@ -950,6 +951,9 @@ bool use_gl_renderer_copier = !is_using_vulkan() && !features::IsUsingSkiaForGLReadback(); + if (use_gl_renderer_copier) + gpu::ContextUrl::SetActiveUrl(copier_active_url_); + // Lazy initialize GLRendererCopier before draw because // DirectContextProvider ctor the backbuffer. if (use_gl_renderer_copier && !copier_) { @@ -1159,6 +1163,7 @@ void SkiaOutputSurfaceImplOnGpu::PerformDelayedWork() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + gpu::ContextUrl::SetActiveUrl(copier_active_url_); ScopedUseContextProvider use_context_provider(this, /*texture_client_id=*/0); delayed_work_pending_ = false; @@ -1367,6 +1372,9 @@ // fbo0. if (!context_state_->MakeCurrent(need_fbo0 ? gl_surface_.get() : nullptr)) { LOG(ERROR) << "Failed to make current."; + dependency_->DidLoseContext( + !need_fbo0 /* offscreen */, gpu::error::kMakeCurrentFailed, + GURL("chrome://gpu/SkiaOutputSurfaceImplOnGpu::MakeCurrent")); MarkContextLost(); return false; }
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h index b670671..97ff0d9f 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
@@ -26,6 +26,7 @@ #include "gpu/command_buffer/service/shared_context_state.h" #include "gpu/command_buffer/service/sync_point_manager.h" #include "gpu/ipc/in_process_command_buffer.h" +#include "gpu/ipc/service/context_url.h" #include "gpu/ipc/service/display_context.h" #include "gpu/ipc/service/image_transport_surface_delegate.h" #include "third_party/skia/include/core/SkPromiseImageTexture.h" @@ -290,6 +291,8 @@ // Micro-optimization to get to issuing GPU SwapBuffers as soon as possible. std::vector<std::unique_ptr<SkDeferredDisplayList>> destroy_after_swap_; + const gpu::ContextUrl copier_active_url_; + THREAD_CHECKER(thread_checker_); base::WeakPtr<SkiaOutputSurfaceImplOnGpu> weak_ptr_;
diff --git a/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc b/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc index c735719..fab4ba1 100644 --- a/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc +++ b/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc
@@ -25,7 +25,8 @@ #include "media/base/limits.h" #include "media/base/video_util.h" #include "media/capture/mojom/video_capture_types.mojom.h" -#include "mojo/public/cpp/bindings/strong_binding.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "ui/gfx/color_space.h" #include "ui/gfx/geometry/size.h" @@ -787,12 +788,12 @@ DCHECK(frame->ColorSpace().IsValid()); // Ensure it was set by this point. info->color_space = frame->ColorSpace(); - // Create an InFlightFrameDelivery for this frame, owned by its mojo binding. + // Create an InFlightFrameDelivery for this frame, owned by its mojo receiver. // It responds to the consumer's Done() notification by returning the video // frame to the |frame_pool_|. It responds to the optional ProvideFeedback() // by forwarding the measurement to the |oracle_|. - mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks; - mojo::MakeStrongBinding( + mojo::PendingRemote<mojom::FrameSinkVideoConsumerFrameCallbacks> callbacks; + mojo::MakeSelfOwnedReceiver( std::make_unique<InFlightFrameDelivery>( base::BindOnce( [](scoped_refptr<VideoFrame> frame) { @@ -802,7 +803,7 @@ base::BindOnce(&VideoCaptureOracle::RecordConsumerFeedback, feedback_weak_factory_.GetWeakPtr(), oracle_frame_number)), - mojo::MakeRequest(&callbacks)); + callbacks.InitWithNewPipeAndPassReceiver()); // Send the frame to the consumer. consumer_->OnFrameCaptured(std::move(handle), std::move(info), content_rect,
diff --git a/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl_unittest.cc b/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl_unittest.cc index a0ca78a..91bea87 100644 --- a/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl_unittest.cc +++ b/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl_unittest.cc
@@ -142,13 +142,17 @@ base::ReadOnlySharedMemoryRegion data, media::mojom::VideoFrameInfoPtr info, const gfx::Rect& expected_content_rect, - mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) final { + mojo::PendingRemote<mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) final { ASSERT_TRUE(data.IsValid()); const auto required_bytes_to_hold_planes = static_cast<uint32_t>(info->coded_size.GetArea() * 3 / 2); ASSERT_LE(required_bytes_to_hold_planes, data.GetSize()); ASSERT_TRUE(info); - ASSERT_TRUE(callbacks.get()); + + mojo::Remote<mojom::FrameSinkVideoConsumerFrameCallbacks> callbacks_remote( + std::move(callbacks)); + ASSERT_TRUE(callbacks_remote.get()); // Map the shared memory buffer and re-constitute a VideoFrame instance // around it for analysis via TakeFrame(). @@ -175,7 +179,7 @@ frames_.push_back(std::move(frame)); done_callbacks_.push_back( base::BindOnce(&mojom::FrameSinkVideoConsumerFrameCallbacks::Done, - std::move(callbacks))); + std::move(callbacks_remote))); } mojo::Receiver<mojom::FrameSinkVideoConsumer> receiver_{this};
diff --git a/content/browser/cookie_store/cookie_change_subscription.cc b/content/browser/cookie_store/cookie_change_subscription.cc index 4d61fbf..ff5de3f6 100644 --- a/content/browser/cookie_store/cookie_change_subscription.cc +++ b/content/browser/cookie_store/cookie_change_subscription.cc
@@ -158,7 +158,8 @@ } bool CookieChangeSubscription::ShouldObserveChangeTo( - const net::CanonicalCookie& cookie) const { + const net::CanonicalCookie& cookie, + net::CookieAccessSemantics access_semantics) const { switch (match_type_) { case ::network::mojom::CookieMatchType::EQUALS: if (cookie.Name() != name_) @@ -174,7 +175,8 @@ net_options.set_same_site_cookie_context( net::CookieOptions::SameSiteCookieContext::SAME_SITE_STRICT); - return cookie.IncludeForRequestURL(url_, net_options).IsInclude(); + return cookie.IncludeForRequestURL(url_, net_options, access_semantics) + .IsInclude(); } } // namespace content
diff --git a/content/browser/cookie_store/cookie_change_subscription.h b/content/browser/cookie_store/cookie_change_subscription.h index c2c4839..8276cd20 100644 --- a/content/browser/cookie_store/cookie_change_subscription.h +++ b/content/browser/cookie_store/cookie_change_subscription.h
@@ -98,7 +98,8 @@ blink::mojom::CookieChangeSubscription* mojo_subscription) const; // True if the subscription covers a change to the given cookie. - bool ShouldObserveChangeTo(const net::CanonicalCookie& cookie) const; + bool ShouldObserveChangeTo(const net::CanonicalCookie& cookie, + net::CookieAccessSemantics access_semantics) const; private: const GURL url_;
diff --git a/content/browser/cookie_store/cookie_store_manager.cc b/content/browser/cookie_store/cookie_store_manager.cc index 2f8a925..63dea530 100644 --- a/content/browser/cookie_store/cookie_store_manager.cc +++ b/content/browser/cookie_store/cookie_store_manager.cc
@@ -444,16 +444,14 @@ subscriptions_by_registration_.clear(); } -void CookieStoreManager::OnCookieChange( - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause) { +void CookieStoreManager::OnCookieChange(const net::CookieChangeInfo& change) { // Waiting for on-disk subscriptions to be loaded ensures that changes are // delivered to all service workers that subscribed to them in previous // browser sessions. Without waiting, workers might miss cookie changes. if (!done_loading_subscriptions_) { subscriptions_loaded_callbacks_.emplace_back( base::BindOnce(&CookieStoreManager::OnCookieChange, - weak_factory_.GetWeakPtr(), cookie, cause)); + weak_factory_.GetWeakPtr(), change)); return; } @@ -464,7 +462,7 @@ // net::CookieMonsterChangeDispatcher::DomainKey. Extract that // implementation into net/cookies.cookie_util.h and call it. std::string url_key = net::registry_controlled_domains::GetDomainAndRegistry( - cookie.Domain(), + change.cookie.Domain(), net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); auto it = subscriptions_by_url_key_.find(url_key); if (it == subscriptions_by_url_key_.end()) @@ -475,7 +473,8 @@ subscriptions.head(); node != subscriptions.end(); node = node->next()) { const CookieChangeSubscription* subscription = node->value(); - if (subscription->ShouldObserveChangeTo(cookie)) { + if (subscription->ShouldObserveChangeTo(change.cookie, + change.access_semantics)) { interested_registration_ids.insert( subscription->service_worker_registration_id()); } @@ -487,8 +486,7 @@ registration_id, base::BindOnce( [](base::WeakPtr<CookieStoreManager> manager, - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause, + const net::CookieChangeInfo& change, blink::ServiceWorkerStatusCode find_status, scoped_refptr<ServiceWorkerRegistration> registration) { if (find_status != blink::ServiceWorkerStatusCode::kOk) @@ -497,17 +495,15 @@ DCHECK(registration); if (!manager) return; - manager->DispatchChangeEvent(std::move(registration), cookie, - cause); + manager->DispatchChangeEvent(std::move(registration), change); }, - weak_factory_.GetWeakPtr(), cookie, cause)); + weak_factory_.GetWeakPtr(), change)); } } void CookieStoreManager::DispatchChangeEvent( scoped_refptr<ServiceWorkerRegistration> registration, - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause) { + const net::CookieChangeInfo& change) { scoped_refptr<ServiceWorkerVersion> active_version = registration->active_version(); if (active_version->running_status() != EmbeddedWorkerStatus::RUNNING) { @@ -515,7 +511,7 @@ ServiceWorkerMetrics::EventType::COOKIE_CHANGE, base::BindOnce(&CookieStoreManager::DidStartWorkerForChangeEvent, weak_factory_.GetWeakPtr(), std::move(registration), - cookie, cause)); + change)); return; } @@ -523,17 +519,16 @@ ServiceWorkerMetrics::EventType::COOKIE_CHANGE, base::DoNothing()); active_version->endpoint()->DispatchCookieChangeEvent( - cookie, cause, active_version->CreateSimpleEventCallback(request_id)); + change, active_version->CreateSimpleEventCallback(request_id)); } void CookieStoreManager::DidStartWorkerForChangeEvent( scoped_refptr<ServiceWorkerRegistration> registration, - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause, + const net::CookieChangeInfo& change, blink::ServiceWorkerStatusCode start_worker_status) { if (start_worker_status != blink::ServiceWorkerStatusCode::kOk) return; - DispatchChangeEvent(std::move(registration), cookie, cause); + DispatchChangeEvent(std::move(registration), change); } } // namespace content
diff --git a/content/browser/cookie_store/cookie_store_manager.h b/content/browser/cookie_store/cookie_store_manager.h index 5d193b04..12fc6a5d 100644 --- a/content/browser/cookie_store/cookie_store_manager.h +++ b/content/browser/cookie_store/cookie_store_manager.h
@@ -96,8 +96,7 @@ void OnStorageWiped() override; // ::network::mojom::CookieChangeListener - void OnCookieChange(const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause) override; + void OnCookieChange(const net::CookieChangeInfo& change) override; private: // Updates internal state with the result of loading disk subscription data. @@ -132,20 +131,17 @@ // // Must only be called after the on-disk subscription data is successfully // loaded. - void DispatchCookieChange(const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause); + void DispatchCookieChange(const net::CookieChangeInfo& change); // Sends a cookie change event to one service worker. void DispatchChangeEvent( scoped_refptr<ServiceWorkerRegistration> registration, - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause); + const net::CookieChangeInfo& change); // Called after a service worker was started so it can get a cookie change. void DidStartWorkerForChangeEvent( scoped_refptr<ServiceWorkerRegistration> registration, - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause, + const net::CookieChangeInfo& change, blink::ServiceWorkerStatusCode start_worker_status); // Used to efficiently implement OnRegistrationDeleted().
diff --git a/content/browser/cookie_store/cookie_store_manager_unittest.cc b/content/browser/cookie_store/cookie_store_manager_unittest.cc index f0d77c76..3c2e0e4a 100644 --- a/content/browser/cookie_store/cookie_store_manager_unittest.cc +++ b/content/browser/cookie_store/cookie_store_manager_unittest.cc
@@ -9,6 +9,7 @@ #include "base/macros.h" #include "base/memory/scoped_refptr.h" #include "base/test/bind_test_util.h" +#include "base/test/scoped_feature_list.h" #include "content/browser/cookie_store/cookie_store_context.h" #include "content/browser/cookie_store/cookie_store_manager.h" #include "content/browser/service_worker/embedded_worker_test_helper.h" @@ -18,6 +19,8 @@ #include "content/browser/storage_partition_impl.h" #include "content/public/test/browser_task_environment.h" #include "content/public/test/test_browser_context.h" +#include "net/base/features.h" +#include "net/cookies/cookie_constants.h" #include "services/network/public/cpp/features.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/mojom/service_worker/service_worker.mojom.h" @@ -80,6 +83,8 @@ const char kExampleWorkerScript[] = "https://example.com/a/script.js"; const char kGoogleScope[] = "https://google.com/a"; const char kGoogleWorkerScript[] = "https://google.com/a/script.js"; +const char kLegacyScope[] = "https://legacy.com/a"; +const char kLegacyWorkerScript[] = "https://legacy.com/a/script.js"; // Mocks a service worker that uses the cookieStore API. class CookieStoreWorkerTestHelper : public EmbeddedWorkerTestHelper { @@ -155,10 +160,9 @@ } void DispatchCookieChangeEvent( - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause, + const net::CookieChangeInfo& change, DispatchCookieChangeEventCallback callback) override { - worker_helper_->changes_.emplace_back(cookie, cause); + worker_helper_->changes_.emplace_back(change); std::move(callback).Run( blink::mojom::ServiceWorkerEventStatus::COMPLETED); } @@ -196,11 +200,7 @@ } // The data in the CookieChangeEvents received by the worker. - std::vector< - std::pair<net::CanonicalCookie, ::network::mojom::CookieChangeCause>>& - changes() { - return changes_; - } + std::vector<net::CookieChangeInfo>& changes() { return changes_; } private: // Used to add cookie change subscriptions during OnInstallEvent(). @@ -213,9 +213,7 @@ base::RunLoop* quit_on_activate_ = nullptr; // Collects the changes reported to OnCookieChangeEvent(). - std::vector< - std::pair<net::CanonicalCookie, ::network::mojom::CookieChangeCause>> - changes_; + std::vector<net::CookieChangeInfo> changes_; }; } // namespace @@ -227,7 +225,13 @@ public testing::WithParamInterface<bool /* reset_context */> { public: CookieStoreManagerTest() - : task_environment_(BrowserTaskEnvironment::IO_MAINLOOP) {} + : task_environment_(BrowserTaskEnvironment::IO_MAINLOOP) { + // Enable SameSiteByDefaultCookies because the default CookieAccessSemantics + // setting is based on the state of this feature, and we want a consistent + // expected value in the tests for domains without a custom setting. + feature_list_.InitAndEnableFeature( + net::features::kSameSiteByDefaultCookies); + } void SetUp() override { // Use an on-disk service worker storage to test saving and loading. @@ -248,8 +252,10 @@ // called by ResetServiceWorkerContext(). example_service_.reset(); google_service_.reset(); + legacy_service_.reset(); example_service_remote_.reset(); google_service_remote_.reset(); + legacy_service_remote_.reset(); cookie_manager_.reset(); cookie_store_context_ = nullptr; storage_partition_impl_.reset(); @@ -292,6 +298,24 @@ google_service_remote_.BindNewPipeAndPassReceiver()); google_service_ = std::make_unique<CookieStoreSync>(google_service_remote_.get()); + + cookie_store_context_->CreateServiceForTesting( + url::Origin::Create(GURL(kLegacyScope)), + legacy_service_remote_.BindNewPipeAndPassReceiver()); + legacy_service_ = + std::make_unique<CookieStoreSync>(legacy_service_remote_.get()); + + // Set Legacy cookie access setting for legacy.com to test + // CookieAccessSemantics. + std::vector<ContentSettingPatternSource> legacy_settings; + legacy_settings.emplace_back( + ContentSettingsPattern::FromString("[*.]legacy.com"), + ContentSettingsPattern::FromString("*"), + base::Value(ContentSetting::CONTENT_SETTING_ALLOW), std::string(), + false /* incognito */); + cookie_manager_->SetContentSettingsForLegacyCookieAccess( + std::move(legacy_settings)); + cookie_manager_.FlushForTesting(); } int64_t RegisterServiceWorker(const char* scope, const char* script_url) { @@ -323,10 +347,8 @@ bool SetCanonicalCookie(const net::CanonicalCookie& cookie) { base::RunLoop run_loop; bool success = false; - net::CookieOptions options; - options.set_include_httponly(); cookie_manager_->SetCanonicalCookie( - cookie, "https", options, + cookie, "https", net::CookieOptions::MakeAllInclusive(), base::BindLambdaForTesting( [&](net::CanonicalCookie::CookieInclusionStatus service_status) { success = service_status.IsInclude(); @@ -346,7 +368,7 @@ const char* path) { return SetCanonicalCookie(net::CanonicalCookie( name, value, domain, path, base::Time(), base::Time(), base::Time(), - /* secure = */ false, + /* secure = */ true, /* httponly = */ false, net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_DEFAULT)); } @@ -357,6 +379,7 @@ protected: BrowserTaskEnvironment task_environment_; + base::test::ScopedFeatureList feature_list_; base::ScopedTempDir user_data_directory_; std::unique_ptr<CookieStoreWorkerTestHelper> worker_test_helper_; std::unique_ptr<StoragePartitionImpl> storage_partition_impl_; @@ -364,8 +387,9 @@ mojo::Remote<::network::mojom::CookieManager> cookie_manager_; mojo::Remote<blink::mojom::CookieStore> example_service_remote_, - google_service_remote_; - std::unique_ptr<CookieStoreSync> example_service_, google_service_; + google_service_remote_, legacy_service_remote_; + std::unique_ptr<CookieStoreSync> example_service_, google_service_, + legacy_service_; }; const int64_t CookieStoreManagerTest::kInvalidRegistrationId; @@ -758,12 +782,59 @@ task_environment_.RunUntilIdle(); ASSERT_EQ(1u, worker_test_helper_->changes().size()); - EXPECT_EQ("cookie-name", worker_test_helper_->changes()[0].first.Name()); - EXPECT_EQ("cookie-value", worker_test_helper_->changes()[0].first.Value()); - EXPECT_EQ("example.com", worker_test_helper_->changes()[0].first.Domain()); - EXPECT_EQ("/", worker_test_helper_->changes()[0].first.Path()); - EXPECT_EQ(::network::mojom::CookieChangeCause::INSERTED, - worker_test_helper_->changes()[0].second); + EXPECT_EQ("cookie-name", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("example.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // example.com does not have a custom access semantics setting, so it defaults + // to NONLEGACY, because the FeatureList has SameSiteByDefaultCookies enabled. + EXPECT_EQ(net::CookieAccessSemantics::NONLEGACY, + worker_test_helper_->changes()[0].access_semantics); +} + +// Same as above except this tests that the LEGACY access semantics for +// legacy.com cookies is correctly reflected in the change info. +TEST_P(CookieStoreManagerTest, OneCookieChangeLegacy) { + std::vector<CookieStoreSync::Subscriptions> batches; + batches.emplace_back(); + + CookieStoreSync::Subscriptions& subscriptions = batches.back(); + subscriptions.emplace_back(blink::mojom::CookieChangeSubscription::New()); + subscriptions.back()->name = ""; + subscriptions.back()->match_type = + ::network::mojom::CookieMatchType::STARTS_WITH; + subscriptions.back()->url = GURL(kLegacyScope); + + worker_test_helper_->SetOnInstallSubscriptions(std::move(batches), + legacy_service_remote_.get()); + int64_t registration_id = + RegisterServiceWorker(kLegacyScope, kLegacyWorkerScript); + ASSERT_NE(registration_id, kInvalidRegistrationId); + + base::Optional<CookieStoreSync::Subscriptions> all_subscriptions_opt = + legacy_service_->GetSubscriptions(registration_id); + ASSERT_TRUE(all_subscriptions_opt.has_value()); + ASSERT_EQ(1u, all_subscriptions_opt.value().size()); + + if (reset_context_during_test()) + ResetServiceWorkerContext(); + + ASSERT_TRUE( + SetSessionCookie("cookie-name", "cookie-value", "legacy.com", "/")); + task_environment_.RunUntilIdle(); + + ASSERT_EQ(1u, worker_test_helper_->changes().size()); + EXPECT_EQ("cookie-name", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("legacy.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // legacy.com has a custom Legacy setting. + EXPECT_EQ(net::CookieAccessSemantics::LEGACY, + worker_test_helper_->changes()[0].access_semantics); } TEST_P(CookieStoreManagerTest, CookieChangeNameStartsWith) { @@ -802,12 +873,16 @@ task_environment_.RunUntilIdle(); ASSERT_EQ(1u, worker_test_helper_->changes().size()); - EXPECT_EQ("cookie-name-2", worker_test_helper_->changes()[0].first.Name()); - EXPECT_EQ("cookie-value-2", worker_test_helper_->changes()[0].first.Value()); - EXPECT_EQ("example.com", worker_test_helper_->changes()[0].first.Domain()); - EXPECT_EQ("/", worker_test_helper_->changes()[0].first.Path()); - EXPECT_EQ(::network::mojom::CookieChangeCause::INSERTED, - worker_test_helper_->changes()[0].second); + EXPECT_EQ("cookie-name-2", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-2", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("example.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // example.com does not have a custom access semantics setting, so it defaults + // to NONLEGACY, because the FeatureList has SameSiteByDefaultCookies enabled. + EXPECT_EQ(net::CookieAccessSemantics::NONLEGACY, + worker_test_helper_->changes()[0].access_semantics); worker_test_helper_->changes().clear(); ASSERT_TRUE(SetSessionCookie("cookie-name-22", "cookie-value-22", @@ -815,12 +890,83 @@ task_environment_.RunUntilIdle(); ASSERT_EQ(1u, worker_test_helper_->changes().size()); - EXPECT_EQ("cookie-name-22", worker_test_helper_->changes()[0].first.Name()); - EXPECT_EQ("cookie-value-22", worker_test_helper_->changes()[0].first.Value()); - EXPECT_EQ("example.com", worker_test_helper_->changes()[0].first.Domain()); - EXPECT_EQ("/", worker_test_helper_->changes()[0].first.Path()); - EXPECT_EQ(::network::mojom::CookieChangeCause::INSERTED, - worker_test_helper_->changes()[0].second); + EXPECT_EQ("cookie-name-22", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-22", + worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("example.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // example.com does not have a custom access semantics setting, so it defaults + // to NONLEGACY, because the FeatureList has SameSiteByDefaultCookies enabled. + EXPECT_EQ(net::CookieAccessSemantics::NONLEGACY, + worker_test_helper_->changes()[0].access_semantics); +} + +// Same as above except this tests that the LEGACY access semantics for +// legacy.com cookies is correctly reflected in the change info. +TEST_P(CookieStoreManagerTest, CookieChangeNameStartsWithLegacy) { + std::vector<CookieStoreSync::Subscriptions> batches; + batches.emplace_back(); + + CookieStoreSync::Subscriptions& subscriptions = batches.back(); + subscriptions.emplace_back(blink::mojom::CookieChangeSubscription::New()); + subscriptions.back()->name = "cookie-name-2"; + subscriptions.back()->match_type = + ::network::mojom::CookieMatchType::STARTS_WITH; + subscriptions.back()->url = GURL(kLegacyScope); + + worker_test_helper_->SetOnInstallSubscriptions(std::move(batches), + legacy_service_remote_.get()); + int64_t registration_id = + RegisterServiceWorker(kLegacyScope, kLegacyWorkerScript); + ASSERT_NE(registration_id, kInvalidRegistrationId); + + base::Optional<CookieStoreSync::Subscriptions> all_subscriptions_opt = + legacy_service_->GetSubscriptions(registration_id); + ASSERT_TRUE(all_subscriptions_opt.has_value()); + ASSERT_EQ(1u, all_subscriptions_opt.value().size()); + + if (reset_context_during_test()) + ResetServiceWorkerContext(); + + ASSERT_TRUE( + SetSessionCookie("cookie-name-1", "cookie-value-1", "legacy.com", "/")); + task_environment_.RunUntilIdle(); + EXPECT_EQ(0u, worker_test_helper_->changes().size()); + + worker_test_helper_->changes().clear(); + ASSERT_TRUE( + SetSessionCookie("cookie-name-2", "cookie-value-2", "legacy.com", "/")); + task_environment_.RunUntilIdle(); + + ASSERT_EQ(1u, worker_test_helper_->changes().size()); + EXPECT_EQ("cookie-name-2", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-2", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("legacy.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // legacy.com has a custom Legacy setting. + EXPECT_EQ(net::CookieAccessSemantics::LEGACY, + worker_test_helper_->changes()[0].access_semantics); + + worker_test_helper_->changes().clear(); + ASSERT_TRUE( + SetSessionCookie("cookie-name-22", "cookie-value-22", "legacy.com", "/")); + task_environment_.RunUntilIdle(); + + ASSERT_EQ(1u, worker_test_helper_->changes().size()); + EXPECT_EQ("cookie-name-22", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-22", + worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("legacy.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // legacy.com has a custom Legacy setting. + EXPECT_EQ(net::CookieAccessSemantics::LEGACY, + worker_test_helper_->changes()[0].access_semantics); } TEST_P(CookieStoreManagerTest, CookieChangeUrl) { @@ -865,12 +1011,16 @@ task_environment_.RunUntilIdle(); ASSERT_EQ(1u, worker_test_helper_->changes().size()); - EXPECT_EQ("cookie-name-3", worker_test_helper_->changes()[0].first.Name()); - EXPECT_EQ("cookie-value-3", worker_test_helper_->changes()[0].first.Value()); - EXPECT_EQ("example.com", worker_test_helper_->changes()[0].first.Domain()); - EXPECT_EQ("/", worker_test_helper_->changes()[0].first.Path()); - EXPECT_EQ(::network::mojom::CookieChangeCause::INSERTED, - worker_test_helper_->changes()[0].second); + EXPECT_EQ("cookie-name-3", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-3", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("example.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // example.com does not have a custom access semantics setting, so it defaults + // to NONLEGACY, because the FeatureList has SameSiteByDefaultCookies enabled. + EXPECT_EQ(net::CookieAccessSemantics::NONLEGACY, + worker_test_helper_->changes()[0].access_semantics); worker_test_helper_->changes().clear(); ASSERT_TRUE( @@ -878,12 +1028,87 @@ task_environment_.RunUntilIdle(); ASSERT_EQ(1u, worker_test_helper_->changes().size()); - EXPECT_EQ("cookie-name-4", worker_test_helper_->changes()[0].first.Name()); - EXPECT_EQ("cookie-value-4", worker_test_helper_->changes()[0].first.Value()); - EXPECT_EQ("example.com", worker_test_helper_->changes()[0].first.Domain()); - EXPECT_EQ("/a", worker_test_helper_->changes()[0].first.Path()); - EXPECT_EQ(::network::mojom::CookieChangeCause::INSERTED, - worker_test_helper_->changes()[0].second); + EXPECT_EQ("cookie-name-4", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-4", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("example.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/a", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // example.com does not have a custom access semantics setting, so it defaults + // to NONLEGACY, because the FeatureList has SameSiteByDefaultCookies enabled. + EXPECT_EQ(net::CookieAccessSemantics::NONLEGACY, + worker_test_helper_->changes()[0].access_semantics); +} + +// Same as above except this tests that the LEGACY access semantics for +// legacy.com cookies is correctly reflected in the change info. +TEST_P(CookieStoreManagerTest, CookieChangeUrlLegacy) { + std::vector<CookieStoreSync::Subscriptions> batches; + batches.emplace_back(); + + CookieStoreSync::Subscriptions& subscriptions = batches.back(); + subscriptions.emplace_back(blink::mojom::CookieChangeSubscription::New()); + subscriptions.back()->name = ""; + subscriptions.back()->match_type = + ::network::mojom::CookieMatchType::STARTS_WITH; + subscriptions.back()->url = GURL(kLegacyScope); + + worker_test_helper_->SetOnInstallSubscriptions(std::move(batches), + legacy_service_remote_.get()); + int64_t registration_id = + RegisterServiceWorker(kLegacyScope, kLegacyWorkerScript); + ASSERT_NE(registration_id, kInvalidRegistrationId); + + base::Optional<CookieStoreSync::Subscriptions> all_subscriptions_opt = + legacy_service_->GetSubscriptions(registration_id); + ASSERT_TRUE(all_subscriptions_opt.has_value()); + ASSERT_EQ(1u, all_subscriptions_opt.value().size()); + + if (reset_context_during_test()) + ResetServiceWorkerContext(); + + ASSERT_TRUE( + SetSessionCookie("cookie-name-1", "cookie-value-1", "google.com", "/")); + task_environment_.RunUntilIdle(); + ASSERT_EQ(0u, worker_test_helper_->changes().size()); + + worker_test_helper_->changes().clear(); + ASSERT_TRUE(SetSessionCookie("cookie-name-2", "cookie-value-2", "legacy.com", + "/a/subpath")); + task_environment_.RunUntilIdle(); + EXPECT_EQ(0u, worker_test_helper_->changes().size()); + + worker_test_helper_->changes().clear(); + ASSERT_TRUE( + SetSessionCookie("cookie-name-3", "cookie-value-3", "legacy.com", "/")); + task_environment_.RunUntilIdle(); + + ASSERT_EQ(1u, worker_test_helper_->changes().size()); + EXPECT_EQ("cookie-name-3", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-3", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("legacy.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // legacy.com has a custom Legacy setting. + EXPECT_EQ(net::CookieAccessSemantics::LEGACY, + worker_test_helper_->changes()[0].access_semantics); + + worker_test_helper_->changes().clear(); + ASSERT_TRUE( + SetSessionCookie("cookie-name-4", "cookie-value-4", "legacy.com", "/a")); + task_environment_.RunUntilIdle(); + + ASSERT_EQ(1u, worker_test_helper_->changes().size()); + EXPECT_EQ("cookie-name-4", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-4", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("legacy.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/a", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // legacy.com has a custom Legacy setting. + EXPECT_EQ(net::CookieAccessSemantics::LEGACY, + worker_test_helper_->changes()[0].access_semantics); } TEST_P(CookieStoreManagerTest, HttpOnlyCookieChange) { @@ -930,12 +1155,73 @@ task_environment_.RunUntilIdle(); ASSERT_EQ(1u, worker_test_helper_->changes().size()); - EXPECT_EQ("cookie-name-2", worker_test_helper_->changes()[0].first.Name()); - EXPECT_EQ("cookie-value-2", worker_test_helper_->changes()[0].first.Value()); - EXPECT_EQ("example.com", worker_test_helper_->changes()[0].first.Domain()); - EXPECT_EQ("/", worker_test_helper_->changes()[0].first.Path()); - EXPECT_EQ(::network::mojom::CookieChangeCause::INSERTED, - worker_test_helper_->changes()[0].second); + EXPECT_EQ("cookie-name-2", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-2", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("example.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // example.com does not have a custom access semantics setting, so it defaults + // to NONLEGACY, because the FeatureList has SameSiteByDefaultCookies enabled. + EXPECT_EQ(net::CookieAccessSemantics::NONLEGACY, + worker_test_helper_->changes()[0].access_semantics); +} + +// Same as above except this tests that the LEGACY access semantics for +// legacy.com cookies is correctly reflected in the change info. +TEST_P(CookieStoreManagerTest, HttpOnlyCookieChangeLegacy) { + std::vector<CookieStoreSync::Subscriptions> batches; + batches.emplace_back(); + + CookieStoreSync::Subscriptions& subscriptions = batches.back(); + subscriptions.emplace_back(blink::mojom::CookieChangeSubscription::New()); + subscriptions.back()->name = ""; + subscriptions.back()->match_type = + ::network::mojom::CookieMatchType::STARTS_WITH; + subscriptions.back()->url = GURL(kLegacyScope); + + worker_test_helper_->SetOnInstallSubscriptions(std::move(batches), + legacy_service_remote_.get()); + int64_t registration_id = + RegisterServiceWorker(kLegacyScope, kLegacyWorkerScript); + ASSERT_NE(registration_id, kInvalidRegistrationId); + + base::Optional<CookieStoreSync::Subscriptions> all_subscriptions_opt = + legacy_service_->GetSubscriptions(registration_id); + ASSERT_TRUE(all_subscriptions_opt.has_value()); + ASSERT_EQ(1u, all_subscriptions_opt.value().size()); + + if (reset_context_during_test()) + ResetServiceWorkerContext(); + + ASSERT_TRUE(SetCanonicalCookie(net::CanonicalCookie( + "cookie-name-1", "cookie-value-1", "legacy.com", "/", base::Time(), + base::Time(), base::Time(), + /* secure = */ false, + /* httponly = */ true, net::CookieSameSite::NO_RESTRICTION, + net::COOKIE_PRIORITY_DEFAULT))); + task_environment_.RunUntilIdle(); + EXPECT_EQ(0u, worker_test_helper_->changes().size()); + + worker_test_helper_->changes().clear(); + ASSERT_TRUE(SetCanonicalCookie(net::CanonicalCookie( + "cookie-name-2", "cookie-value-2", "legacy.com", "/", base::Time(), + base::Time(), base::Time(), + /* secure = */ false, + /* httponly = */ false, net::CookieSameSite::NO_RESTRICTION, + net::COOKIE_PRIORITY_DEFAULT))); + task_environment_.RunUntilIdle(); + + ASSERT_EQ(1u, worker_test_helper_->changes().size()); + EXPECT_EQ("cookie-name-2", worker_test_helper_->changes()[0].cookie.Name()); + EXPECT_EQ("cookie-value-2", worker_test_helper_->changes()[0].cookie.Value()); + EXPECT_EQ("legacy.com", worker_test_helper_->changes()[0].cookie.Domain()); + EXPECT_EQ("/", worker_test_helper_->changes()[0].cookie.Path()); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + worker_test_helper_->changes()[0].cause); + // legacy.com has a custom Legacy setting. + EXPECT_EQ(net::CookieAccessSemantics::LEGACY, + worker_test_helper_->changes()[0].access_semantics); } TEST_P(CookieStoreManagerTest, GetSubscriptionsFromWrongOrigin) {
diff --git a/content/browser/devtools/devtools_video_consumer.cc b/content/browser/devtools/devtools_video_consumer.cc index 2bd1bbd..07b2d99 100644 --- a/content/browser/devtools/devtools_video_consumer.cc +++ b/content/browser/devtools/devtools_video_consumer.cc
@@ -135,7 +135,8 @@ base::ReadOnlySharedMemoryRegion data, ::media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) { + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) { if (!data.IsValid()) return; @@ -169,7 +170,8 @@ } frame->AddDestructionObserver(base::BindOnce( [](base::ReadOnlySharedMemoryMapping mapping, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) {}, + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) {}, std::move(mapping), std::move(callbacks))); frame->metadata()->MergeInternalValuesFrom(info->metadata); if (info->color_space.has_value())
diff --git a/content/browser/devtools/devtools_video_consumer.h b/content/browser/devtools/devtools_video_consumer.h index a34fb53..aa86ec8 100644 --- a/content/browser/devtools/devtools_video_consumer.h +++ b/content/browser/devtools/devtools_video_consumer.h
@@ -10,6 +10,7 @@ #include "base/time/time.h" #include "components/viz/host/client_frame_sink_video_capturer.h" #include "content/common/content_export.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "ui/gfx/geometry/size.h" class SkBitmap; @@ -66,7 +67,8 @@ base::ReadOnlySharedMemoryRegion data, ::media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) override; + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) override; void OnStopped() override; // Default min frame size is 1x1, as otherwise, nothing would be captured.
diff --git a/content/browser/devtools/devtools_video_consumer_unittest.cc b/content/browser/devtools/devtools_video_consumer_unittest.cc index ee5038f..93257b0 100644 --- a/content/browser/devtools/devtools_video_consumer_unittest.cc +++ b/content/browser/devtools/devtools_video_consumer_unittest.cc
@@ -131,10 +131,12 @@ class MockFrameSinkVideoConsumerFrameCallbacks : public viz::mojom::FrameSinkVideoConsumerFrameCallbacks { public: - MockFrameSinkVideoConsumerFrameCallbacks() {} + MockFrameSinkVideoConsumerFrameCallbacks() = default; - void Bind(viz::mojom::FrameSinkVideoConsumerFrameCallbacksRequest request) { - receiver_.Bind(std::move(request)); + void Bind( + mojo::PendingReceiver<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + receiver) { + receiver_.Bind(std::move(receiver)); } MOCK_METHOD0(Done, void()); @@ -185,8 +187,9 @@ } void SimulateFrameCapture(base::ReadOnlySharedMemoryRegion data) { - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks_ptr; - callbacks.Bind(mojo::MakeRequest(&callbacks_ptr)); + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks_remote; + callbacks.Bind(callbacks_remote.InitWithNewPipeAndPassReceiver()); media::mojom::VideoFrameInfoPtr info = media::mojom::VideoFrameInfo::New( base::TimeDelta(), base::Value(base::Value::Type::DICTIONARY), kFormat, @@ -195,7 +198,7 @@ consumer_->OnFrameCaptured(std::move(data), std::move(info), gfx::Rect(kResolution), - std::move(callbacks_ptr)); + std::move(callbacks_remote)); } void StartCaptureWithMockCapturer() {
diff --git a/content/browser/media/capture/frame_sink_video_capture_device.cc b/content/browser/media/capture/frame_sink_video_capture_device.cc index 5841962..65b3c80 100644 --- a/content/browser/media/capture/frame_sink_video_capture_device.cc +++ b/content/browser/media/capture/frame_sink_video_capture_device.cc
@@ -206,12 +206,16 @@ base::ReadOnlySharedMemoryRegion data, media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) { + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(callbacks); + mojo::Remote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks_remote(std::move(callbacks)); + if (!receiver_ || !data.IsValid()) { - callbacks->Done(); + callbacks_remote->Done(); return; } @@ -225,11 +229,11 @@ // number of frames in-flight. constexpr size_t kMaxInFlightFrames = 32; // Arbitrarily-chosen limit. DCHECK_LT(frame_callbacks_.size(), kMaxInFlightFrames); - frame_callbacks_.emplace_back(std::move(callbacks)); + frame_callbacks_.emplace_back(std::move(callbacks_remote)); break; } if (!frame_callbacks_[index].is_bound()) { - frame_callbacks_[index] = std::move(callbacks); + frame_callbacks_[index] = std::move(callbacks_remote); break; } }
diff --git a/content/browser/media/capture/frame_sink_video_capture_device.h b/content/browser/media/capture/frame_sink_video_capture_device.h index 0106d9d..607362d 100644 --- a/content/browser/media/capture/frame_sink_video_capture_device.h +++ b/content/browser/media/capture/frame_sink_video_capture_device.h
@@ -22,6 +22,7 @@ #include "media/capture/video/video_capture_device.h" #include "media/capture/video/video_frame_receiver.h" #include "media/capture/video_capture_types.h" +#include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/remote.h" #include "services/device/public/mojom/wake_lock.mojom.h" #include "services/service_manager/public/cpp/connector.h" @@ -78,7 +79,8 @@ base::ReadOnlySharedMemoryRegion data, media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) final; + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks) final; void OnStopped() final; // These are called to notify when the capture target has changed or was @@ -145,12 +147,12 @@ std::unique_ptr<viz::ClientFrameSinkVideoCapturer> capturer_; - // A vector that holds the "callbacks" mojo InterfacePtr for each frame while - // the frame is being processed by VideoFrameReceiver. The index corresponding - // to a particular frame is used as the BufferId passed to VideoFrameReceiver. + // A vector that holds the "callbacks" mojo::Remote for each frame while the + // frame is being processed by VideoFrameReceiver. The index corresponding to + // a particular frame is used as the BufferId passed to VideoFrameReceiver. // Therefore, non-null pointers in this vector must never move to a different // position. - std::vector<viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr> + std::vector<mojo::Remote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks>> frame_callbacks_; // Set when OnFatalError() is called. This prevents any future
diff --git a/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc b/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc index 92483a8..855a4861 100644 --- a/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc +++ b/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc
@@ -20,7 +20,9 @@ #include "media/capture/video_capture_types.h" #include "mojo/public/cpp/base/shared_memory_utils.h" #include "mojo/public/cpp/bindings/binding.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" #include "services/viz/privileged/mojom/compositing/frame_sink_video_capture.mojom.h" #include "testing/gmock/include/gmock/gmock.h" @@ -136,18 +138,21 @@ class MockFrameSinkVideoConsumerFrameCallbacks : public viz::mojom::FrameSinkVideoConsumerFrameCallbacks { public: - MockFrameSinkVideoConsumerFrameCallbacks() : binding_(this) {} + MockFrameSinkVideoConsumerFrameCallbacks() = default; - void Bind(viz::mojom::FrameSinkVideoConsumerFrameCallbacksRequest request) { + void Bind( + mojo::PendingReceiver<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + receiver) { DCHECK_NOT_ON_DEVICE_THREAD(); - binding_.Bind(std::move(request)); + receiver_.Bind(std::move(receiver)); } MOCK_METHOD0(Done, void()); MOCK_METHOD1(ProvideFeedback, void(double utilization)); private: - mojo::Binding<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> binding_; + mojo::Receiver<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> receiver_{ + this}; }; // Mock for the VideoFrameReceiver, the point-of-injection of video frames into @@ -365,16 +370,16 @@ memset(region.mapping.memory(), GetFrameFillValue(frame_number), region.mapping.size()); - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks_ptr; - callbacks->Bind(mojo::MakeRequest(&callbacks_ptr)); - // |callbacks_ptr| is bound on the main thread, so it needs to be re-bound - // to the device thread before calling OnFrameCaptured(). + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks_remote; + callbacks->Bind(callbacks_remote.InitWithNewPipeAndPassReceiver()); + // |callbacks_remote| is bound on the main thread, so it needs to be + // re-bound to the device thread before calling OnFrameCaptured(). POST_DEVICE_TASK(base::BindOnce( [](FrameSinkVideoCaptureDevice* device, base::ReadOnlySharedMemoryRegion data, int frame_number, - mojo::InterfacePtrInfo< - viz::mojom::FrameSinkVideoConsumerFrameCallbacks> - callbacks_info) { + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks_remote) { device->OnFrameCaptured( std::move(data), media::mojom::VideoFrameInfo::New( @@ -382,12 +387,10 @@ base::Value(base::Value::Type::DICTIONARY), kFormat, kResolution, gfx::Rect(kResolution), gfx::ColorSpace::CreateREC709(), nullptr), - gfx::Rect(kResolution), - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr( - std::move(callbacks_info))); + gfx::Rect(kResolution), std::move(callbacks_remote)); }, base::Unretained(device_.get()), std::move(region.region), frame_number, - callbacks_ptr.PassInterface())); + std::move(callbacks_remote))); } // Returns a byte value based on the given |frame_number|.
diff --git a/content/browser/media/capture/lame_window_capturer_chromeos.cc b/content/browser/media/capture/lame_window_capturer_chromeos.cc index 97bf732..0930d3b 100644 --- a/content/browser/media/capture/lame_window_capturer_chromeos.cc +++ b/content/browser/media/capture/lame_window_capturer_chromeos.cc
@@ -15,7 +15,8 @@ #include "media/base/video_util.h" #include "media/capture/mojom/video_capture_types.mojom.h" #include "mojo/public/cpp/base/shared_memory_utils.h" -#include "mojo/public/cpp/bindings/strong_binding.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "ui/gfx/geometry/rect.h" using media::VideoFrame; @@ -364,11 +365,12 @@ const gfx::Rect content_rect = in_flight_frame->content_rect(); // Create a mojo message pipe and bind to the InFlightFrame to wait for the - // Done() signal from the consumer. The mojo::StrongBinding takes ownership of - // the InFlightFrame. - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks; - mojo::MakeStrongBinding(std::move(in_flight_frame), - mojo::MakeRequest(&callbacks)); + // Done() signal from the consumer. The mojo::SelfOwnedReceiver takes + // ownership of the InFlightFrame. + mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumerFrameCallbacks> + callbacks; + mojo::MakeSelfOwnedReceiver(std::move(in_flight_frame), + callbacks.InitWithNewPipeAndPassReceiver()); // Send the frame to the consumer. consumer_->OnFrameCaptured(std::move(handle), std::move(info), content_rect,
diff --git a/content/browser/service_worker/fake_service_worker.cc b/content/browser/service_worker/fake_service_worker.cc index 39b1d931..4435e23 100644 --- a/content/browser/service_worker/fake_service_worker.cc +++ b/content/browser/service_worker/fake_service_worker.cc
@@ -109,8 +109,7 @@ } void FakeServiceWorker::DispatchCookieChangeEvent( - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause, + const net::CookieChangeInfo& change, DispatchCookieChangeEventCallback callback) { std::move(callback).Run(blink::mojom::ServiceWorkerEventStatus::COMPLETED); }
diff --git a/content/browser/service_worker/fake_service_worker.h b/content/browser/service_worker/fake_service_worker.h index b6d7ef9ad..93a7f1b 100644 --- a/content/browser/service_worker/fake_service_worker.h +++ b/content/browser/service_worker/fake_service_worker.h
@@ -71,8 +71,7 @@ blink::mojom::BackgroundFetchRegistrationPtr registration, DispatchBackgroundFetchSuccessEventCallback callback) override; void DispatchCookieChangeEvent( - const net::CanonicalCookie& cookie, - ::network::mojom::CookieChangeCause cause, + const net::CookieChangeInfo& change, DispatchCookieChangeEventCallback callback) override; void DispatchFetchEventForMainResource( blink::mojom::DispatchFetchEventParamsPtr params,
diff --git a/content/browser/site_per_process_hit_test_browsertest.cc b/content/browser/site_per_process_hit_test_browsertest.cc index 11f68ea..fbec490b6 100644 --- a/content/browser/site_per_process_hit_test_browsertest.cc +++ b/content/browser/site_per_process_hit_test_browsertest.cc
@@ -901,11 +901,12 @@ ack_observer.Wait(); // Check compositor layers. - EXPECT_TRUE(ExecuteScriptAndExtractString( - nested_iframe_node->current_frame_host(), - "window.domAutomationController.send(" - "window.internals.layerTreeAsText(document));", - &str)); + EXPECT_TRUE( + ExecuteScriptAndExtractString(nested_iframe_node->current_frame_host(), + "window.domAutomationController.send(" + "window.internals.layerTreeAsText(document," + " internals.OUTPUT_AS_LAYER_TREE));", + &str)); // We expect the nested OOPIF to not have any compositor layers. EXPECT_EQ(std::string(), str);
diff --git a/content/test/fuzzer/browser_accessibility_fuzzer.cc b/content/test/fuzzer/browser_accessibility_fuzzer.cc index f30097c..1766042b 100644 --- a/content/test/fuzzer/browser_accessibility_fuzzer.cc +++ b/content/test/fuzzer/browser_accessibility_fuzzer.cc
@@ -4,6 +4,7 @@ #include <fuzzer/FuzzedDataProvider.h> +#include "base/at_exit.h" #include "content/browser/accessibility/browser_accessibility.h" #include "content/browser/accessibility/browser_accessibility_manager.h" #include "content/browser/accessibility/one_shot_accessibility_tree_search.h" @@ -61,6 +62,8 @@ // the fuzz input. Once the tree is constructed, fuzz by calling some // functions that walk the tree in various ways to ensure they don't crash. extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + base::AtExitManager at_exit; + FuzzedDataProvider fdp(data, size); // The tree structure is always the same, only the data changes. @@ -77,6 +80,8 @@ ui::AXTreeID parent_tree_id = ui::AXTreeID::CreateNewAXTreeID(); ui::AXTreeID child_tree_id = ui::AXTreeID::CreateNewAXTreeID(); + const int num_nodes = 10; + ui::AXTreeUpdate tree; tree.root_id = 1; tree.tree_data.tree_id = parent_tree_id; @@ -103,17 +108,17 @@ tree.nodes[3].child_ids = {9, 10}; AddStates(fdp, &tree.nodes[3]); - for (int i = 4; i < 10; i++) { + for (int i = 4; i < num_nodes; i++) { tree.nodes[i].id = i + 1; tree.nodes[i].role = GetInterestingRole(fdp); AddStates(fdp, &tree.nodes[i]); } - for (int i = 0; i < 10; i++) + for (int i = 0; i < num_nodes; i++) tree.nodes[i].SetName(fdp.ConsumeRandomLengthString(5)); // Optionally, embed the child tree in the parent tree. - int embedder_node = fdp.ConsumeIntegralInRange(0, 10); + int embedder_node = fdp.ConsumeIntegralInRange(0, num_nodes); if (embedder_node > 0) tree.nodes[embedder_node - 1].AddStringAttribute( ax::mojom::StringAttribute::kChildTreeId, child_tree_id.ToString()); @@ -173,6 +178,24 @@ // This is just to ensure that none of the above code gets optimized away. CHECK_NE(0U, results.size()); + // Add a node, possibly clearing old children. + int node_id = num_nodes + 1; + int parent = fdp.ConsumeIntegralInRange(0, num_nodes); + + ui::AXTreeUpdate update; + update.nodes.resize(2); + update.nodes[0].id = parent; + update.nodes[0].child_ids = {node_id}; + update.nodes[1].id = node_id; + update.nodes[1].role = GetInterestingRole(fdp); + AddStates(fdp, &update.nodes[1]); + + AXEventNotificationDetails notification; + notification.updates.resize(1); + notification.updates[0] = update; + + CHECK(manager->OnAccessibilityEvents(notification)); + return 0; }
diff --git a/fuchsia/engine/browser/cookie_manager_impl.cc b/fuchsia/engine/browser/cookie_manager_impl.cc index ad87562..becb528 100644 --- a/fuchsia/engine/browser/cookie_manager_impl.cc +++ b/fuchsia/engine/browser/cookie_manager_impl.cc
@@ -10,6 +10,7 @@ #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" #include "net/cookies/canonical_cookie.h" +#include "net/cookies/cookie_change_dispatcher.h" #include "services/network/public/mojom/network_context.mojom.h" #include "url/gurl.h" @@ -17,7 +18,7 @@ fuchsia::web::Cookie ConvertCanonicalCookie( const net::CanonicalCookie& canonical_cookie, - network::mojom::CookieChangeCause cause) { + net::CookieChangeCause cause) { fuchsia::web::CookieId id; id.set_name(canonical_cookie.Name()); id.set_domain(canonical_cookie.Domain()); @@ -26,15 +27,15 @@ fuchsia::web::Cookie cookie; cookie.set_id(std::move(id)); switch (cause) { - case network::mojom::CookieChangeCause::INSERTED: + case net::CookieChangeCause::INSERTED: cookie.set_value(canonical_cookie.Value()); break; - case network::mojom::CookieChangeCause::EXPLICIT: - case network::mojom::CookieChangeCause::UNKNOWN_DELETION: - case network::mojom::CookieChangeCause::OVERWRITE: - case network::mojom::CookieChangeCause::EXPIRED: - case network::mojom::CookieChangeCause::EVICTED: - case network::mojom::CookieChangeCause::EXPIRED_OVERWRITE: + case net::CookieChangeCause::EXPLICIT: + case net::CookieChangeCause::UNKNOWN_DELETION: + case net::CookieChangeCause::OVERWRITE: + case net::CookieChangeCause::EXPIRED: + case net::CookieChangeCause::EVICTED: + case net::CookieChangeCause::EXPIRED_OVERWRITE: break; }; @@ -60,8 +61,8 @@ fidl::InterfaceRequest<fuchsia::web::CookiesIterator> iterator) : CookiesIteratorImpl(std::move(iterator)) { for (const auto& cookie : cookies) { - queued_cookies_[cookie.UniqueKey()] = ConvertCanonicalCookie( - cookie, network::mojom::CookieChangeCause::INSERTED); + queued_cookies_[cookie.UniqueKey()] = + ConvertCanonicalCookie(cookie, net::CookieChangeCause::INSERTED); } } // Same as above except it takes CookieStatusList instead of just CookieList. @@ -72,7 +73,7 @@ for (const auto& cookie_with_status : cookies_with_statuses) { queued_cookies_[cookie_with_status.cookie.UniqueKey()] = ConvertCanonicalCookie(cookie_with_status.cookie, - network::mojom::CookieChangeCause::INSERTED); + net::CookieChangeCause::INSERTED); } } ~CookiesIteratorImpl() final = default; @@ -130,9 +131,9 @@ } // network::mojom::CookieChangeListener implementation: - void OnCookieChange(const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause) final { - queued_cookies_[cookie.UniqueKey()] = ConvertCanonicalCookie(cookie, cause); + void OnCookieChange(const net::CookieChangeInfo& change) final { + queued_cookies_[change.cookie.UniqueKey()] = + ConvertCanonicalCookie(change.cookie, change.cause); MaybeSendQueuedCookies(); }
diff --git a/gpu/vulkan/vulkan_instance.cc b/gpu/vulkan/vulkan_instance.cc index 8bd39f54..d1638b6 100644 --- a/gpu/vulkan/vulkan_instance.cc +++ b/gpu/vulkan/vulkan_instance.cc
@@ -284,6 +284,7 @@ ycbcr_converson_features.pNext = &protected_memory_feature; vkGetPhysicalDeviceFeatures2(device, &features_2); + info.features = features_2.features; info.feature_sampler_ycbcr_conversion = ycbcr_converson_features.samplerYcbcrConversion; info.feature_protected_memory = protected_memory_feature.protectedMemory;
diff --git a/infra/config/consoles/angle.try.star b/infra/config/consoles/angle.try.star new file mode 100644 index 0000000..a3267db --- /dev/null +++ b/infra/config/consoles/angle.try.star
@@ -0,0 +1,20 @@ +luci.list_view( + name = 'angle.try', + entries = [ + 'android_angle_deqp_rel_ng', + 'android_angle_vk32_deqp_rel_ng', + 'android_angle_vk64_deqp_rel_ng', + 'android_angle_rel_ng', + 'android_angle_vk32_rel_ng', + 'android_angle_vk64_rel_ng', + 'fuchsia-angle-rel', + 'linux-angle-rel', + 'linux_angle_deqp_rel_ng', + 'linux_angle_ozone_rel_ng', + 'mac-angle-rel', + 'win-angle-deqp-rel-32', + 'win-angle-deqp-rel-64', + 'win-angle-rel-32', + 'win-angle-rel-64', + ], +)
diff --git a/infra/config/consoles/chromium-header.textpb b/infra/config/consoles/chromium-header.textpb new file mode 100644 index 0000000..b509e6f --- /dev/null +++ b/infra/config/consoles/chromium-header.textpb
@@ -0,0 +1,235 @@ +oncalls { + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" +} +oncalls { + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" +} +oncalls { + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" +} +oncalls { + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" +} +oncalls { + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" +} +oncalls { + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" +} +oncalls { + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" +} +oncalls { + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" +} +oncalls { + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" +} +links { + name: "Builds" + links { + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + } + links { + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + } + links { + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + } +} +links { + name: "Dashboards" + links { + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + } + links { + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + } + links { + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + } +} +links { + name: "Chromium" + links { + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + } + links { + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + } + links { + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + } + links { + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + } + links { + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + } + links { + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + } +} +links { + name: "Consoles" + links { + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + } + links { + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + } + links { + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + } + links { + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + } + links { + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + } + links { + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + } + links { + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + } + links { + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + } + links { + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + } + links { + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + } +} +links { + name: "Tryservers" + links { + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + } + links { + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + } + links { + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + } + links { + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + } + links { + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + } + links { + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + } + links { + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + } + links { + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + } +} +links { + name: "Navigate" + links { + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + } + links { + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + } +} +console_groups { + title { + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + } + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" +} +console_groups { + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" +} +tree_status_host: "chromium-status.appspot.com"
diff --git a/infra/config/consoles/chromium.android.fyi.star b/infra/config/consoles/chromium.android.fyi.star new file mode 100644 index 0000000..435aa07 --- /dev/null +++ b/infra/config/consoles/chromium.android.fyi.star
@@ -0,0 +1,35 @@ +luci.console_view( + name = 'chromium.android.fyi', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/android-bfcache-debug', + category = 'android', + ), + luci.console_view_entry( + builder = 'ci/Memory Infra Tester', + category = 'Memory', + ), + luci.console_view_entry( + builder = 'ci/Android WebView P FYI (rel)', + category = 'webview', + short_name = 'p-rel', + ), + luci.console_view_entry( + builder = 'ci/Android WebView P OOR-CORS FYI (rel)', + category = 'webview', + short_name = 'cors', + ), + luci.console_view_entry( + builder = 'ci/android-marshmallow-x86-fyi-rel', + category = 'emulator|M|x86', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/android-pie-x86-fyi-rel', + category = 'emulator|P|x86', + short_name = 'rel', + ), + ], +)
diff --git a/infra/config/consoles/chromium.android.star b/infra/config/consoles/chromium.android.star new file mode 100644 index 0000000..b850cb63 --- /dev/null +++ b/infra/config/consoles/chromium.android.star
@@ -0,0 +1,194 @@ +luci.console_view( + name = 'chromium.android', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/android-cronet-arm-dbg', + category = 'cronet|arm', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-arm-rel', + category = 'cronet|arm', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-arm64-dbg', + category = 'cronet|arm64', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-arm64-rel', + category = 'cronet|arm64', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-x86-dbg', + category = 'cronet|x86', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-x86-rel', + category = 'cronet|x86', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-asan-arm-rel', + category = 'cronet|asan', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-kitkat-arm-rel', + category = 'cronet|test', + short_name = 'k', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-lollipop-arm-rel', + category = 'cronet|test', + short_name = 'l', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-marshmallow-arm64-rel', + category = 'cronet|test', + short_name = 'm', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-marshmallow-arm64-perf-rel', + category = 'cronet|test|perf', + short_name = 'm', + ), + luci.console_view_entry( + builder = 'ci/android-jumbo-rel', + category = 'builder', + ), + luci.console_view_entry( + builder = 'ci/Android arm Builder (dbg)', + category = 'builder|arm', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Android arm64 Builder (dbg)', + category = 'builder|arm', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Android x86 Builder (dbg)', + category = 'builder|x86', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Android x64 Builder (dbg)', + category = 'builder|x86', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Android', + category = 'builder|det', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Android (dbg)', + category = 'builder|det', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/KitKat Phone Tester (dbg)', + category = 'tester|phone', + short_name = 'K', + ), + luci.console_view_entry( + builder = 'ci/Lollipop Phone Tester', + category = 'tester|phone', + short_name = 'L', + ), + luci.console_view_entry( + builder = 'ci/Marshmallow 64 bit Tester', + category = 'tester|phone', + short_name = 'M', + ), + luci.console_view_entry( + builder = 'ci/Nougat Phone Tester', + category = 'tester|phone', + short_name = 'N', + ), + luci.console_view_entry( + builder = 'ci/Oreo Phone Tester', + category = 'tester|phone', + short_name = 'O', + ), + luci.console_view_entry( + builder = 'ci/android-pie-arm64-dbg', + category = 'tester|phone', + short_name = 'P', + ), + luci.console_view_entry( + builder = 'ci/KitKat Tablet Tester', + category = 'tester|tablet', + short_name = 'K', + ), + luci.console_view_entry( + builder = 'ci/Lollipop Tablet Tester', + category = 'tester|tablet', + short_name = 'L', + ), + luci.console_view_entry( + builder = 'ci/Marshmallow Tablet Tester', + category = 'tester|tablet', + short_name = 'M', + ), + luci.console_view_entry( + builder = 'ci/android-incremental-dbg', + category = 'tester|incremental', + ), + luci.console_view_entry( + builder = 'ci/Android WebView L (dbg)', + category = 'tester|webview', + short_name = 'L', + ), + luci.console_view_entry( + builder = 'ci/Android WebView M (dbg)', + category = 'tester|webview', + short_name = 'M', + ), + luci.console_view_entry( + builder = 'ci/Android WebView N (dbg)', + category = 'tester|webview', + short_name = 'N', + ), + luci.console_view_entry( + builder = 'ci/Android WebView O (dbg)', + category = 'tester|webview', + short_name = 'O', + ), + luci.console_view_entry( + builder = 'ci/Android WebView P (dbg)', + category = 'tester|webview', + short_name = 'P', + ), + luci.console_view_entry( + builder = 'ci/android-kitkat-arm-rel', + category = 'on_cq', + short_name = 'K', + ), + luci.console_view_entry( + builder = 'ci/android-marshmallow-arm64-rel', + category = 'on_cq', + short_name = 'M', + ), + luci.console_view_entry( + builder = 'ci/Cast Android (dbg)', + category = 'on_cq', + short_name = 'cst', + ), + luci.console_view_entry( + builder = 'ci/Android ASAN (dbg)', + category = 'on_cq', + short_name = 'san', + ), + luci.console_view_entry( + builder = 'ci/android-pie-arm64-rel', + category = 'on_cq|future', + short_name = 'P', + ), + ], +)
diff --git a/infra/config/consoles/chromium.chromiumos.star b/infra/config/consoles/chromium.chromiumos.star new file mode 100644 index 0000000..b24964f1 --- /dev/null +++ b/infra/config/consoles/chromium.chromiumos.star
@@ -0,0 +1,57 @@ +luci.console_view( + name = 'chromium.chromiumos', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Linux ChromiumOS Full', + category = 'default', + short_name = 'ful', + ), + luci.console_view_entry( + builder = 'ci/linux-chromeos-rel', + category = 'default', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/linux-chromeos-dbg', + category = 'default', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-asan-rel', + category = 'simple|release|x64', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-cfi-thin-lto-rel', + category = 'simple|release|x64', + short_name = 'cfi', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-dbg', + category = 'simple|debug|x64', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel', + category = 'simple|release|x64', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/chromeos-arm-generic-dbg', + category = 'simple|debug', + short_name = 'arm', + ), + luci.console_view_entry( + builder = 'ci/chromeos-arm-generic-rel', + category = 'simple|release', + short_name = 'arm', + ), + luci.console_view_entry( + builder = 'ci/chromeos-kevin-rel', + category = 'simple|release', + short_name = 'kvn', + ), + ], +)
diff --git a/infra/config/consoles/chromium.clang.star b/infra/config/consoles/chromium.clang.star new file mode 100644 index 0000000..6ad544d --- /dev/null +++ b/infra/config/consoles/chromium.clang.star
@@ -0,0 +1,216 @@ +luci.console_view( + name = 'chromium.clang', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/ToTLinux', + category = 'ToT Linux', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'chrome:ci/ToTLinuxOfficial', + category = 'ToT Linux', + short_name = 'ofi', + ), + luci.console_view_entry( + builder = 'ci/ToTLinux (dbg)', + category = 'ToT Linux', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ToTLinuxASan', + category = 'ToT Linux', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/ToTLinuxASanLibfuzzer', + category = 'ToT Linux', + short_name = 'fuz', + ), + luci.console_view_entry( + builder = 'ci/ToTLinuxMSan', + category = 'ToT Linux', + short_name = 'msn', + ), + luci.console_view_entry( + builder = 'ci/ToTLinuxTSan', + category = 'ToT Linux', + short_name = 'tsn', + ), + luci.console_view_entry( + builder = 'ci/ToTLinuxThinLTO', + category = 'ToT Linux', + short_name = 'lto', + ), + luci.console_view_entry( + builder = 'ci/ToTLinuxUBSanVptr', + category = 'ToT Linux', + short_name = 'usn', + ), + luci.console_view_entry( + builder = 'ci/ToTAndroid', + category = 'ToT Android', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/ToTAndroid (dbg)', + category = 'ToT Android', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ToTAndroid x64', + category = 'ToT Android', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/ToTAndroid64', + category = 'ToT Android', + short_name = 'a64', + ), + luci.console_view_entry( + builder = 'ci/ToTAndroidASan', + category = 'ToT Android', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/ToTAndroidCFI', + category = 'ToT Android', + short_name = 'cfi', + ), + luci.console_view_entry( + builder = 'ci/ToTAndroidOfficial', + category = 'ToT Android', + short_name = 'off', + ), + luci.console_view_entry( + builder = 'ci/ToTMac', + category = 'ToT Mac', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'chrome:ci/ToTMacOfficial', + category = 'ToT Mac', + short_name = 'ofi', + ), + luci.console_view_entry( + builder = 'ci/ToTMac (dbg)', + category = 'ToT Mac', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ToTMacASan', + category = 'ToT Mac', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'chrome:ci/ToTWin', + category = 'ToT Windows', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'chrome:ci/ToTWinOfficial', + category = 'ToT Windows', + short_name = 'ofi', + ), + luci.console_view_entry( + builder = 'ci/ToTWin(dbg)', + category = 'ToT Windows', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ToTWin(dll)', + category = 'ToT Windows', + short_name = 'dll', + ), + luci.console_view_entry( + builder = 'chrome:ci/ToTWin64', + category = 'ToT Windows|x64', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/ToTWin64(dbg)', + category = 'ToT Windows|x64', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ToTWin64(dll)', + category = 'ToT Windows|x64', + short_name = 'dll', + ), + luci.console_view_entry( + builder = 'chrome:ci/ToTWinThinLTO64', + category = 'ToT Windows|x64', + short_name = 'lto', + ), + luci.console_view_entry( + builder = 'ci/ToTWinLibcxx64', + category = 'ToT Windows|x64', + short_name = 'cxx', + ), + luci.console_view_entry( + builder = 'ci/CrWinAsan', + category = 'ToT Windows|Asan', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/CrWinAsan(dll)', + category = 'ToT Windows|Asan', + short_name = 'dll', + ), + luci.console_view_entry( + builder = 'ci/ToTWinASanLibfuzzer', + category = 'ToT Windows|Asan', + short_name = 'fuz', + ), + luci.console_view_entry( + builder = 'ci/linux-win_cross-rel', + category = 'ToT Windows', + short_name = 'lxw', + ), + luci.console_view_entry( + builder = 'ci/ToTLinuxCoverage', + category = 'ToT Code Coverage', + short_name = 'linux', + ), + luci.console_view_entry( + builder = 'ci/ToTMacCoverage', + category = 'ToT Code Coverage', + short_name = 'mac', + ), + luci.console_view_entry( + builder = 'ci/CFI Linux CF', + category = 'CFI|Linux', + short_name = 'CF', + ), + luci.console_view_entry( + builder = 'ci/CFI Linux ToT', + category = 'CFI|Linux', + short_name = 'ToT', + ), + luci.console_view_entry( + builder = 'ci/ToTWinCFI', + category = 'CFI|Win', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/ToTWinCFI64', + category = 'CFI|Win', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/ToTiOS', + category = 'iOS', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ToTiOSDevice', + category = 'iOS', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/UBSanVptr Linux', + short_name = 'usn', + ), + ], +)
diff --git a/infra/config/consoles/chromium.dawn.star b/infra/config/consoles/chromium.dawn.star new file mode 100644 index 0000000..d8c95eb --- /dev/null +++ b/infra/config/consoles/chromium.dawn.star
@@ -0,0 +1,127 @@ +luci.console_view( + name = 'chromium.dawn', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Dawn Linux x64 Builder', + category = 'ToT|Linux|Builder', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Linux x64 Release (Intel HD 630)', + category = 'ToT|Linux|Intel', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Linux x64 Release (NVIDIA)', + category = 'ToT|Linux|Nvidia', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Mac x64 Builder', + category = 'ToT|Mac|Builder', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Mac x64 Release (AMD)', + category = 'ToT|Mac|AMD', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Mac x64 Release (Intel)', + category = 'ToT|Mac|Intel', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x86 Builder', + category = 'ToT|Windows|Builder', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x64 Builder', + category = 'ToT|Windows|Builder', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x86 Release (Intel HD 630)', + category = 'ToT|Windows|Intel', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x64 Release (Intel HD 630)', + category = 'ToT|Windows|Intel', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x86 Release (NVIDIA)', + category = 'ToT|Windows|Nvidia', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x64 Release (NVIDIA)', + category = 'ToT|Windows|Nvidia', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Linux x64 DEPS Builder', + category = 'DEPS|Linux|Builder', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Linux x64 DEPS Release (Intel HD 630)', + category = 'DEPS|Linux|Intel', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Linux x64 DEPS Release (NVIDIA)', + category = 'DEPS|Linux|Nvidia', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Mac x64 DEPS Builder', + category = 'DEPS|Mac|Builder', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Mac x64 DEPS Release (AMD)', + category = 'DEPS|Mac|AMD', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Mac x64 DEPS Release (Intel)', + category = 'DEPS|Mac|Intel', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x86 DEPS Builder', + category = 'DEPS|Windows|Builder', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x64 DEPS Builder', + category = 'DEPS|Windows|Builder', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x86 DEPS Release (Intel HD 630)', + category = 'DEPS|Windows|Intel', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x64 DEPS Release (Intel HD 630)', + category = 'DEPS|Windows|Intel', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x86 DEPS Release (NVIDIA)', + category = 'DEPS|Windows|Nvidia', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/Dawn Win10 x64 DEPS Release (NVIDIA)', + category = 'DEPS|Windows|Nvidia', + short_name = 'x64', + ), + ], +)
diff --git a/infra/config/consoles/chromium.fuzz.star b/infra/config/consoles/chromium.fuzz.star new file mode 100644 index 0000000..6b06d8f --- /dev/null +++ b/infra/config/consoles/chromium.fuzz.star
@@ -0,0 +1,161 @@ +luci.console_view( + name = 'chromium.fuzz', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Afl Upload Linux ASan', + category = 'afl', + short_name = 'afl', + ), + luci.console_view_entry( + builder = 'ci/Win ASan Release', + category = 'win asan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Win ASan Release Media', + category = 'win asan', + short_name = 'med', + ), + luci.console_view_entry( + builder = 'ci/Mac ASAN Release', + category = 'mac asan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Mac ASAN Release Media', + category = 'mac asan', + short_name = 'med', + ), + luci.console_view_entry( + builder = 'ci/ChromiumOS ASAN Release', + short_name = 'cro', + ), + luci.console_view_entry( + builder = 'ci/ASAN Debug', + category = 'linux asan', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ASAN Release', + category = 'linux asan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/ASAN Release Media', + category = 'linux asan', + short_name = 'med', + ), + luci.console_view_entry( + builder = 'ci/ASan Debug (32-bit x86 with V8-ARM)', + category = 'linux asan|x64 v8-ARM', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ASan Release (32-bit x86 with V8-ARM)', + category = 'linux asan|x64 v8-ARM', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/ASan Release Media (32-bit x86 with V8-ARM)', + category = 'linux asan|x64 v8-ARM', + short_name = 'med', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Chrome OS ASan', + category = 'libfuzz', + short_name = 'chromeos-asan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux32 ASan', + category = 'libfuzz', + short_name = 'linux32', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux32 ASan Debug', + category = 'libfuzz', + short_name = 'linux32-dbg', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux ASan', + category = 'libfuzz', + short_name = 'linux', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux ASan Debug', + category = 'libfuzz', + short_name = 'linux-dbg', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux MSan', + category = 'libfuzz', + short_name = 'linux-msan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux UBSan', + category = 'libfuzz', + short_name = 'linux-ubsan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Mac ASan', + category = 'libfuzz', + short_name = 'mac-asan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Windows ASan', + category = 'libfuzz', + short_name = 'win-asan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux32 V8-ARM ASan', + category = 'libfuzz', + short_name = 'arm', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux32 V8-ARM ASan Debug', + category = 'libfuzz', + short_name = 'arm-dbg', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux V8-ARM64 ASan', + category = 'libfuzz', + short_name = 'arm64', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux V8-ARM64 ASan Debug', + category = 'libfuzz', + short_name = 'arm64-dbg', + ), + luci.console_view_entry( + builder = 'ci/MSAN Release (chained origins)', + category = 'linux msan', + short_name = 'org', + ), + luci.console_view_entry( + builder = 'ci/MSAN Release (no origins)', + category = 'linux msan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/TSAN Debug', + category = 'linux tsan', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/TSAN Release', + category = 'linux tsan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/UBSan Release', + category = 'linux UBSan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/UBSan vptr Release', + category = 'linux UBSan', + short_name = 'vpt', + ), + ], +)
diff --git a/infra/config/consoles/chromium.fyi.goma.star b/infra/config/consoles/chromium.fyi.goma.star new file mode 100644 index 0000000..3567500 --- /dev/null +++ b/infra/config/consoles/chromium.fyi.goma.star
@@ -0,0 +1,130 @@ +luci.console_view( + name = 'chromium.fyi.goma', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Win Builder Goma Canary', + category = 'win|rel', + ), + luci.console_view_entry( + builder = 'ci/Win Builder (dbg) Goma Canary', + category = 'win|dbg', + ), + luci.console_view_entry( + builder = 'ci/win32-archive-rel-goma-canary-localoutputcache', + category = 'win|rel', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/Win cl.exe Goma Canary LocalOutputCache', + category = 'cl.exe|rel', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/Win7 Builder Goma Canary', + category = 'win7|rel', + ), + luci.console_view_entry( + builder = 'ci/Win7 Builder (dbg) Goma Canary', + category = 'win7|dbg', + ), + luci.console_view_entry( + builder = 'ci/WinMSVC64 Goma Canary', + category = 'cl.exe|rel', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder Goma Canary', + category = 'mac|rel', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg) Goma Canary', + category = 'mac|dbg', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel-goma-canary', + category = 'mac|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg) Goma Canary (clobber)', + category = 'mac|dbg', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel-goma-canary-localoutputcache', + category = 'mac|rel', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel-goma-canary', + category = 'cros|rel', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder Goma Canary', + category = 'linux|rel', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-canary', + category = 'linux|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-canary-localoutputcache', + category = 'linux|rel', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/android-archive-dbg-goma-canary', + category = 'android|dbg', + ), + luci.console_view_entry( + builder = 'ci/ios-device-goma-canary-clobber', + category = 'ios|rel', + short_name = 'clb', + ), + # RBE + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-rbe-canary', + category = 'rbe|linux|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-rbe-ats-canary', + category = 'rbe|linux|rel', + short_name = 'ats', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder Goma RBE Canary', + category = 'rbe|linux|rel', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel-goma-rbe-canary', + category = 'rbe|cros|rel', + ), + luci.console_view_entry( + builder = 'ci/android-archive-dbg-goma-rbe-canary', + category = 'rbe|android|dbg', + ), + luci.console_view_entry( + builder = 'ci/android-archive-dbg-goma-rbe-ats-canary', + category = 'rbe|android|dbg', + short_name = 'ats', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel-goma-rbe-canary', + category = 'rbe|mac|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg) Goma RBE Canary (clobber)', + category = 'rbe|mac|dbg', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/ios-device-goma-rbe-canary-clobber', + category = 'rbe|ios', + short_name = 'clb', + ), + ], +)
diff --git a/infra/config/consoles/chromium.fyi.star b/infra/config/consoles/chromium.fyi.star new file mode 100644 index 0000000..33d0e60 --- /dev/null +++ b/infra/config/consoles/chromium.fyi.star
@@ -0,0 +1,339 @@ +luci.console_view( + name = 'chromium.fyi', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Closure Compilation Linux', + category = 'closure_compilation', + ), + luci.console_view_entry( + builder = 'ci/android-code-coverage', + category = 'code_coverage', + short_name = 'and', + ), + luci.console_view_entry( + builder = 'ci/linux-code-coverage', + category = 'code_coverage', + short_name = 'lnx', + ), + luci.console_view_entry( + builder = 'ci/chromeos-vm-code-coverage', + category = 'code_coverage', + short_name = 'vm', + ), + luci.console_view_entry( + builder = 'ci/linux-chromeos-code-coverage', + category = 'code_coverage', + short_name = 'lcr', + ), + luci.console_view_entry( + builder = 'ci/mac-code-coverage-generation', + category = 'code_coverage', + short_name = 'mac', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-code-coverage', + category = 'code_coverage', + short_name = 'ios', + ), + luci.console_view_entry( + builder = 'ci/win10-code-coverage', + category = 'code_coverage', + short_name = 'win', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-cronet', + category = 'cronet', + ), + luci.console_view_entry( + builder = 'ci/mac-hermetic-upgrade-rel', + category = 'mac', + short_name = 'herm', + ), + luci.console_view_entry( + builder = 'ci/mac-osxbeta-rel', + category = 'mac', + short_name = 'beta', + ), + luci.console_view_entry( + builder = 'ci/mac-jumbo-rel', + category = 'mac', + short_name = 'jmb', + ), + luci.console_view_entry( + builder = 'ci/win-jumbo-rel', + category = 'win', + short_name = 'jmb', + ), + luci.console_view_entry( + builder = 'ci/Mac deterministic', + category = 'deterministic|mac', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Mac deterministic (dbg)', + category = 'deterministic|mac', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-fyi-arm64-rel', + category = 'fuchsia', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-fyi-x64-dbg', + category = 'fuchsia', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-fyi-x64-rel', + category = 'fuchsia', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder Goma Canary', + category = 'goma|linux', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-canary', + category = 'goma|linux', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-canary-localoutputcache', + category = 'goma|linux', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg) Goma Canary', + category = 'goma|mac|debug', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg) Goma Canary (clobber)', + category = 'goma|mac|debug', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder Goma Canary', + category = 'goma|mac', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel-goma-canary', + category = 'goma|mac', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel-goma-canary-localoutputcache', + category = 'goma|mac', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/Win Builder (dbg) Goma Canary', + category = 'goma|win|debug', + ), + luci.console_view_entry( + builder = 'ci/Win7 Builder (dbg) Goma Canary', + category = 'goma|win|debug', + short_name = '7', + ), + luci.console_view_entry( + builder = 'ci/Win Builder Goma Canary', + category = 'goma|win', + ), + luci.console_view_entry( + builder = 'ci/win32-archive-rel-goma-canary-localoutputcache', + category = 'goma|win', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/Win7 Builder Goma Canary', + category = 'goma|win', + short_name = '7', + ), + luci.console_view_entry( + builder = 'ci/Win cl.exe Goma Canary LocalOutputCache', + category = 'goma|win|cl.exe', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/WinMSVC64 Goma Canary', + category = 'goma|win|cl.exe', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel-goma-canary', + category = 'goma|chromeos', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel-vm-tests', + category = 'chromeos', + ), + luci.console_view_entry( + builder = 'ci/chromeos-kevin-rel-hw-tests', + category = 'chromos', + ), + luci.console_view_entry( + builder = 'ci/ios-device-goma-canary-clobber', + category = 'goma|ios', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-cr-recipe', + category = 'iOS', + short_name = 'chr', + ), + luci.console_view_entry( + builder = 'ci/ios-webkit-tot', + category = 'iOS', + short_name = 'wk', + ), + luci.console_view_entry( + builder = 'ci/ios13-sdk-device', + category = 'iOS|iOS13', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/ios13-sdk-simulator', + category = 'iOS|iOS13', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ios13-beta-simulator', + category = 'iOS|iOS13', + short_name = 'ios13', + ), + luci.console_view_entry( + builder = 'ci/Jumbo Linux x64', + category = 'jumbo', + ), + luci.console_view_entry( + builder = 'ci/Jumbo Mac', + category = 'jumbo', + ), + luci.console_view_entry( + builder = 'ci/Jumbo Win x64', + category = 'jumbo', + ), + luci.console_view_entry( + builder = 'ci/linux-blink-animation-use-time-delta', + category = 'linux|blink', + short_name = 'TD', + ), + luci.console_view_entry( + builder = 'ci/linux-blink-heap-concurrent-marking-tsan-rel', + category = 'linux|blink', + short_name = 'CM', + ), + luci.console_view_entry( + builder = 'ci/linux-blink-heap-verification', + category = 'linux|blink', + short_name = 'VF', + ), + luci.console_view_entry( + builder = 'ci/VR Linux', + category = 'linux', + ), + luci.console_view_entry( + builder = 'ci/linux-bfcache-debug', + category = 'linux', + ), + luci.console_view_entry( + builder = 'ci/linux-oor-cors-rel', + category = 'linux', + ), + luci.console_view_entry( + builder = 'ci/linux-fieldtrial-rel', + category = 'linux', + ), + luci.console_view_entry( + builder = 'ci/linux-wpt-fyi-rel', + category = 'linux', + ), + luci.console_view_entry( + builder = 'ci/Mojo Android', + category = 'mojo', + short_name = 'and', + ), + luci.console_view_entry( + builder = 'ci/android-mojo-webview-rel', + category = 'mojo', + short_name = 'aw', + ), + luci.console_view_entry( + builder = 'ci/Mojo ChromiumOS', + category = 'mojo', + short_name = 'cr', + ), + luci.console_view_entry( + builder = 'ci/Mojo Linux', + category = 'mojo', + short_name = 'lnx', + ), + luci.console_view_entry( + builder = 'ci/mac-mojo-rel', + category = 'mojo', + short_name = 'mac', + ), + luci.console_view_entry( + builder = 'ci/Mojo Windows', + category = 'mojo', + short_name = 'win', + ), + luci.console_view_entry( + builder = 'ci/linux-chromium-tests-staging-builder', + category = 'recipe|staging|linux', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/linux-chromium-tests-staging-tests', + category = 'recipe|staging|linux', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux remote_run Builder', + category = 'remote_run', + ), + luci.console_view_entry( + builder = 'ci/Linux remote_run Tester', + category = 'remote_run', + ), + luci.console_view_entry( + builder = 'ci/Site Isolation Android', + category = 'site_isolation', + ), + luci.console_view_entry( + builder = 'ci/linux-annotator-rel', + category = 'network|traffic|annotations', + short_name = 'lnx', + ), + luci.console_view_entry( + builder = 'ci/win-annotator-rel', + category = 'network|traffic|annotations', + short_name = 'win', + ), + luci.console_view_entry( + builder = 'ci/Linux Viz', + category = 'viz', + ), + luci.console_view_entry( + builder = 'ci/Win 10 Fast Ring', + category = 'win10', + ), + luci.console_view_entry( + builder = 'ci/win-pixel-builder-rel', + category = 'win10', + ), + luci.console_view_entry( + builder = 'ci/win-pixel-tester-rel', + category = 'win10', + ), + luci.console_view_entry( + builder = 'ci/Win10 Tests x64 1803', + category = 'win10|1803', + ), + luci.console_view_entry( + builder = 'ci/win-celab-builder-rel', + category = 'celab', + ), + luci.console_view_entry( + builder = 'ci/win-celab-tester-rel', + category = 'celab', + ), + ], +)
diff --git a/infra/config/consoles/chromium.goma.fyi.star b/infra/config/consoles/chromium.goma.fyi.star new file mode 100644 index 0000000..f401eb8 --- /dev/null +++ b/infra/config/consoles/chromium.goma.fyi.star
@@ -0,0 +1,81 @@ +luci.console_view( + name = 'chromium.goma.fyi', + header = '//consoles/chromium-header.textpb', + include_experimental_builds = True, + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Prod', + category = 'prod|linux|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Prod (clobber)', + category = 'prod|linux|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Prod (dbg)', + category = 'prod|linux|dbg', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Prod (dbg) (clobber)', + category = 'prod|linux|dbg', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Mac Goma RBE Prod', + category = 'prod|mac|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Win Goma RBE Prod', + category = 'prod|win|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Win Goma RBE Prod (clobber)', + category = 'prod|win|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Win Goma RBE Prod (dbg)', + category = 'prod|win|dbg', + ), + luci.console_view_entry( + builder = 'ci/Chromium Win Goma RBE Prod (dbg) (clobber)', + category = 'prod|win|dbg', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Android ARM 32-bit Goma RBE Prod', + category = 'prod|android arm|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Android ARM 32-bit Goma RBE Prod (clobber)', + category = 'prod|android arm|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Android ARM 32-bit Goma RBE Prod (dbg)', + category = 'prod|android arm|dbg', + ), + luci.console_view_entry( + builder = 'ci/Chromium Android ARM 32-bit Goma RBE Prod (dbg) (clobber)', + category = 'prod|android arm|dbg', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-fyi-arm64-rel (Goma RBE FYI)', + category = 'prod|chromium.linux|fuchsia|misc', + short_name = 'a64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-fyi-x64-rel (Goma RBE FYI)', + category = 'prod|chromium.linux|fuchsia|misc', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel (Goma RBE FYI)', + category = 'tot|chromium.chromiumos|simple|release|x64', + short_name = 'rel', + ), + ], +)
diff --git a/infra/config/consoles/chromium.goma.migration.star b/infra/config/consoles/chromium.goma.migration.star new file mode 100644 index 0000000..9b064c4f --- /dev/null +++ b/infra/config/consoles/chromium.goma.migration.star
@@ -0,0 +1,709 @@ +# These are used for monitoring builders that have recently been migrated to +# Goma RBE (See crbug.com/950413). +luci.console_view( + name = 'chromium.goma.migration', + header = '//consoles/chromium-header.textpb', + include_experimental_builds = True, + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/VR Linux', + category = 'week1|linux', + short_name = 'vr', + ), + luci.console_view_entry( + builder = 'ci/Mojo Linux', + category = 'week1|linux', + short_name = 'mojo', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder (dbg)', + category = 'week1|linux|dbg', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder (dbg)(32)', + category = 'week1|linux|dbg', + short_name = '32bit', + ), + luci.console_view_entry( + builder = 'ci/Linux CFI', + category = 'week1|linux|cfi', + ), + luci.console_view_entry( + builder = 'ci/CFI Linux CF', + category = 'week1|linux|cfi', + short_name = 'cf', + ), + luci.console_view_entry( + builder = 'ci/Linux MSan Builder', + category = 'week1|linux', + short_name = 'msan', + ), + luci.console_view_entry( + builder = 'ci/Afl Upload Linux ASan', + category = 'week1|linux', + short_name = 'afl-asan', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux ASAN', + category = 'week1|linux|webkit', + short_name = 'asan', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux Leak', + category = 'week1|linux|webkit', + short_name = 'leak', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux MSAN', + category = 'week1|linux|webkit', + short_name = 'msan', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 32 Vk Release (Pixel 2)', + category = 'week2a|android|32', + short_name = 'p2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 32 dEQP Vk Release (Pixel 2)', + category = 'week2a|android|32deqp', + short_name = 'p2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 64 Vk Release (Pixel 2)', + category = 'week2a|android|64', + short_name = 'p2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 64 dEQP Vk Release (Pixel 2)', + category = 'week2a|android|64deqp', + short_name = 'p2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (NVIDIA Shield TV)', + category = 'week2a|android|rel', + short_name = 'shdtv', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 5)', + category = 'week2a|android|rel', + short_name = 'n5', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 5X)', + category = 'week2a|android|rel', + short_name = 'n5x', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 6)', + category = 'week2a|android|rel', + short_name = 'n6', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 6P)', + category = 'week2a|android|rel', + short_name = 'n6p', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 9)', + category = 'week2a|android|rel', + short_name = 'n9', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Pixel 2)', + category = 'week2a|android|rel', + short_name = 'p2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI dEQP Release (Nexus 5X)', + category = 'week2a|android|deqp', + short_name = 'n5x', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Android', + category = 'week2a|android|det', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Android (dbg)', + category = 'week2a|android|det', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Android Builder', + category = 'week2b|android|release', + short_name = '32', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Android Builder (dbg)', + category = 'week2b|android|debug|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Android Builder ARM64 (dbg)', + category = 'week2b|android|debug|builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Linux Builder', + category = 'week2b|linux|release', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Linux Builder (dbg)', + category = 'week2b|linux|debug', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Mac Builder', + category = 'week2b|mac|release', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Mac Builder (dbg)', + category = 'week2b|mac|debug', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Android Builder', + category = 'week2b|android', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Linux Builder', + category = 'week2b|linux', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Mac Builder', + category = 'week2b|mac', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Mac ASAN Release', + category = 'week2c|mac|asan', + ), + luci.console_view_entry( + builder = 'ci/Mac ASAN Release Media', + category = 'week2c|mac|asan', + short_name = 'media', + ), + luci.console_view_entry( + builder = 'ci/Mac ASan 64 Builder', + category = 'week2c|mac|asan', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Mac ASan', + category = 'week2c|mac|asan', + short_name = 'fuzz', + ), + luci.console_view_entry( + builder = 'ci/WebKit Mac10.13 (retina)', + category = 'week2c|mac', + short_name = 'webkit', + ), + luci.console_view_entry( + builder = 'ci/Android CFI', + category = 'week2c|android', + short_name = 'cfi', + ), + luci.console_view_entry( + builder = 'ci/Site Isolation Android', + category = 'week2c|android', + short_name = 'isolate', + ), + luci.console_view_entry( + builder = 'ci/Mojo Android', + category = 'week2c|android', + short_name = 'mojo', + ), + luci.console_view_entry( + builder = 'ci/Android x64 Builder (dbg)', + category = 'week2c|android|dbg', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Android x86 Builder (dbg)', + category = 'week2c|android|dbg', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/Android WebView L (dbg)', + category = 'week2c|android|dbg|webview', + short_name = 'l', + ), + luci.console_view_entry( + builder = 'ci/Android WebView M (dbg)', + category = 'week2c|android|dbg|webview', + short_name = 'm', + ), + luci.console_view_entry( + builder = 'ci/Android WebView N (dbg)', + category = 'week2c|android|dbg|webview', + short_name = 'n', + ), + luci.console_view_entry( + builder = 'ci/Android WebView O (dbg)', + category = 'week2c|android|dbg|webview', + short_name = 'o', + ), + luci.console_view_entry( + builder = 'ci/Android WebView P FYI (rel)', + category = 'week2c|android|rel|webview', + short_name = 'p', + ), + luci.console_view_entry( + builder = 'ci/Dawn Linux x64 Builder', + category = 'week2d|linux|dawn', + ), + luci.console_view_entry( + builder = 'ci/Dawn Linux x64 DEPS Builder', + category = 'week2d|linux|dawn', + short_name = 'deps', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Linux Builder', + category = 'week2d|linux|gpu|fyi', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Linux Builder (dbg)', + category = 'week2d|linux|gpu|fyi', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Linux Ozone Builder', + category = 'week2d|linux|gpu|fyi', + short_name = 'ozone', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Linux dEQP Builder', + category = 'week2d|linux|gpu|fyi', + short_name = 'deqp', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI GPU TSAN Release', + category = 'week2d|linux|gpu|fyi', + short_name = 'tsan', + ), + luci.console_view_entry( + builder = 'ci/GPU Linux Builder (dbg)', + category = 'week2d|linux|gpu', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Linux Viz', + category = 'week2d|linux', + short_name = 'viz', + ), + luci.console_view_entry( + builder = 'ci/Linux remote_run Builder', + category = 'week2d|linux', + short_name = 'rem', + ), + luci.console_view_entry( + builder = 'ci/Closure Compilation Linux', + category = 'week2d|linux', + short_name = 'clsr', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Linux', + category = 'week2d|linux|det', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Linux (dbg)', + category = 'week2d|linux|det', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Jumbo Linux x64', + category = 'week2d|linux', + short_name = 'jumbo', + ), + luci.console_view_entry( + builder = 'ci/Dawn Mac x64 Builder', + category = 'week2d|mac|dawn', + ), + luci.console_view_entry( + builder = 'ci/Dawn Mac x64 DEPS Builder', + category = 'week2d|mac|dawn', + short_name = 'deps', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Mac Builder', + category = 'week2d|mac|gpu|fyi', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Mac Builder (dbg)', + category = 'week2d|mac|gpu|fyi', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Mac dEQP Builder', + category = 'week2d|mac|gpu|fyi', + short_name = 'deqp', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI GPU ASAN Release', + category = 'week2d|mac|gpu|fyi', + short_name = 'asan', + ), + luci.console_view_entry( + builder = 'ci/GPU Mac Builder (dbg)', + category = 'week2d|mac|gpu', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Mac deterministic', + category = 'week2d|mac|det', + ), + luci.console_view_entry( + builder = 'ci/Mac deterministic (dbg)', + category = 'week2d|mac|det', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Jumbo Mac', + category = 'week2d|mac', + short_name = 'jumbo', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder', + category = 'week2.5|linux', + ), + luci.console_view_entry( + builder = 'ci/GPU Linux Builder', + category = 'week2.5|linux', + short_name = 'gpu', + ), + luci.console_view_entry( + builder = 'ci/linux-ozone-rel', + category = 'week3a|linux', + short_name = 'ozone', + ), + luci.console_view_entry( + builder = 'ci/linux-annotator-rel', + category = 'week3a|linux', + short_name = 'anno', + ), + luci.console_view_entry( + builder = 'ci/linux_chromium_component_updater', + category = 'week3a|linux', + short_name = 'cc_upd', + ), + luci.console_view_entry( + builder = 'ci/linux-code-coverage', + category = 'week3a|linux', + short_name = 'code', + ), + luci.console_view_entry( + builder = 'ci/linux-blink-animation-use-time-delta', + category = 'week3a|linux|blink', + short_name = 'anim', + ), + luci.console_view_entry( + builder = 'ci/linux-blink-heap-concurrent-marking-tsan-rel', + category = 'week3a|linux|blink', + short_name = 'tsan', + ), + luci.console_view_entry( + builder = 'ci/linux-blink-heap-verification', + category = 'week3a|linux|blink', + short_name = 'ver', + ), + luci.console_view_entry( + builder = 'ci/linux-chromium-tests-staging-builder', + category = 'week3a|linux', + short_name = 'crtests', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-arm-dbg', + category = 'week3b|android|cronet|arm', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-arm-rel', + category = 'week3b|android|cronet|arm', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-asan-arm-rel', + category = 'week3b|android|cronet|arm', + short_name = 'asan', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-kitkat-arm-rel', + category = 'week3b|android|cronet|arm', + short_name = 'kkat', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-lollipop-arm-rel', + category = 'week3b|android|cronet|arm', + short_name = 'lpop', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-arm64-rel', + category = 'week3b|android|cronet|arm64', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-arm64-dbg', + category = 'week3b|android|cronet|arm64', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-marshmallow-arm64-rel', + category = 'week3b|android|cronet|arm64', + short_name = 'marsh', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-marshmallow-arm64-perf-rel', + category = 'week3b|android|cronet|arm64', + short_name = 'perf', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-x86-rel', + category = 'week3b|android|cronet|x86', + ), + luci.console_view_entry( + builder = 'ci/android-cronet-x86-dbg', + category = 'week3b|android|cronet|x86', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/android-incremental-dbg', + category = 'week3b|android', + short_name = 'inc', + ), + luci.console_view_entry( + builder = 'ci/android-kitkat-arm-rel', + category = 'week3b|android', + short_name = 'kkat', + ), + luci.console_view_entry( + builder = 'ci/android-mojo-webview-rel', + category = 'week3b|android', + short_name = 'mojo', + ), + luci.console_view_entry( + builder = 'ci/android-pie-arm64-dbg', + category = 'week3b|linux', + short_name = 'pie', + ), + luci.console_view_entry( + builder = 'ci/mac-code-coverage-generation', + category = 'week3c|mac', + short_name = 'code', + ), + luci.console_view_entry( + builder = 'ci/mac-hermetic-upgrade-rel', + category = 'week3c|mac', + short_name = 'herm', + ), + luci.console_view_entry( + builder = 'ci/mac-jumbo-rel', + category = 'week3c|mac', + short_name = 'jumbo', + ), + luci.console_view_entry( + builder = 'ci/mac-mojo-rel', + category = 'week3c|mac', + short_name = 'mojo', + ), + luci.console_view_entry( + builder = 'ci/mac-osxbeta-rel', + category = 'week3c|mac', + short_name = 'osx', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder', + category = 'week3c|mac', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg)', + category = 'week3c|mac', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/GPU Mac Builder', + category = 'week3c|mac', + short_name = 'gpu', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux ASan', + category = 'week4|linux', + short_name = 'asan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux ASan Debug', + category = 'week4|linux', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux MSan', + category = 'week4|linux', + short_name = 'msan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux UBSan', + category = 'week4|linux', + short_name = 'ubsan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux V8-ARM64 ASan', + category = 'week4|linux|v8arm', + short_name = 'asan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux V8-ARM64 ASan Debug', + category = 'week4|linux|v8arm', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux32 ASan', + category = 'week4|linux32', + short_name = 'asan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux32 ASan Debug', + category = 'week4|linux32', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux32 V8-ARM ASan', + category = 'week4|linux32|v8arm', + short_name = 'asan', + ), + luci.console_view_entry( + builder = 'ci/Libfuzzer Upload Linux32 V8-ARM ASan Debug', + category = 'week4|linux32|v8arm', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ASan Debug (32-bit x86 with V8-ARM)', + category = 'week5|asan', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ASan Release (32-bit x86 with V8-ARM)', + category = 'week5|asan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/ASan Release Media (32-bit x86 with V8-ARM)', + category = 'week5|asan', + short_name = 'media', + ), + luci.console_view_entry( + builder = 'ci/ASAN Debug', + category = 'week6|asan', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/ASAN Release', + category = 'week6|asan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/ASAN Release Media', + category = 'week6|asan', + short_name = 'media', + ), + luci.console_view_entry( + builder = 'ci/MSAN Release (chained origins)', + category = 'week7|msan', + short_name = 'chain', + ), + luci.console_view_entry( + builder = 'ci/MSAN Release (no origins)', + category = 'week7|msan', + short_name = 'none', + ), + luci.console_view_entry( + builder = 'ci/TSAN Release', + category = 'week8|tsan', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/TSAN Debug', + category = 'week8|tsan', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/UBSan Release', + category = 'week9|ubsan', + ), + luci.console_view_entry( + builder = 'ci/UBSan vptr Release', + category = 'week9|ubsan|vptr', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/UBSanVptr Linux', + category = 'week9|ubsan|vptr', + short_name = 'lnx', + ), + luci.console_view_entry( + builder = 'ci/Cast Android (dbg)', + category = 'week10|android', + ), + luci.console_view_entry( + builder = 'ci/Cast Audio Linux', + category = 'week10|linux', + short_name = 'audio', + ), + luci.console_view_entry( + builder = 'ci/Cast Linux', + category = 'week10|linux', + ), + luci.console_view_entry( + builder = 'ci/Fuchsia ARM64', + category = 'week11|fuchsia|arm64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-arm64-cast', + category = 'week11|fuchsia|arm64', + short_name = 'cast', + ), + luci.console_view_entry( + builder = 'ci/Fuchsia x64', + category = 'week11|fuchsia|x64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-x64-cast', + category = 'week11|fuchsia|x64', + short_name = 'cast', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-fyi-arm64-rel', + category = 'week11|fuchsia|fyi', + short_name = 'arm64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-fyi-x64-dbg', + category = 'week11|fuchsia|fyi', + short_name = 'x64 dbg', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-fyi-x64-rel', + category = 'week11|fuchsia|fyi', + short_name = 'x64 rel', + ), + luci.console_view_entry( + builder = 'ci/android-marshmallow-arm64-rel', + category = 'week13|android', + short_name = 'marsh', + ), + luci.console_view_entry( + builder = 'ci/Android Release (Nexus 5X)', + category = 'week13|android', + short_name = 'n5x', + ), + luci.console_view_entry( + builder = 'ci/Win ASan Release', + category = 'win|week1|asan', + ), + luci.console_view_entry( + builder = 'ci/Win ASan Release Media', + category = 'win|week1|asan', + short_name = 'media', + ), + ], +)
diff --git a/infra/config/consoles/chromium.goma.star b/infra/config/consoles/chromium.goma.star new file mode 100644 index 0000000..e055f557e --- /dev/null +++ b/infra/config/consoles/chromium.goma.star
@@ -0,0 +1,93 @@ +luci.console_view( + name = 'chromium.goma', + header = '//consoles/chromium-header.textpb', + include_experimental_builds = True, + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma Staging', + category = 'clients5', + short_name = 'lnx', + ), + luci.console_view_entry( + builder = 'ci/Chromium Mac Goma Staging', + category = 'clients5', + short_name = 'mac', + ), + luci.console_view_entry( + builder = 'ci/CrWinGomaStaging', + category = 'clients5', + short_name = 'win', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE ToT', + category = 'rbe|tot|linux|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE ToT (ATS)', + category = 'rbe|tot|linux|rel', + short_name = 'ats', + ), + luci.console_view_entry( + builder = 'ci/Chromium Mac Goma RBE ToT', + category = 'rbe|tot|mac|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Win Goma RBE ToT', + category = 'rbe|tot|win|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Android ARM 32-bit Goma RBE ToT', + category = 'rbe|tot|android arm|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Android ARM 32-bit Goma RBE ToT (ATS)', + category = 'rbe|tot|android arm|rel', + short_name = 'ats', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Staging (clobber)', + category = 'rbe|staging|linux|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Staging', + category = 'rbe|staging|linux|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Staging (dbg) (clobber)', + category = 'rbe|staging|linux|debug', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Staging (dbg)', + category = 'rbe|staging|linux|debug', + ), + luci.console_view_entry( + builder = 'ci/Chromium Mac Goma RBE Staging (clobber)', + category = 'rbe|staging|mac|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Mac Goma RBE Staging', + category = 'rbe|staging|mac|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Mac Goma RBE Staging (dbg)', + category = 'rbe|staging|mac|debug', + ), + luci.console_view_entry( + builder = 'ci/Chromium Win Goma RBE Staging', + category = 'rbe|staging|win|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Win Goma RBE Staging (clobber)', + category = 'rbe|staging|win|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Android ARM 32-bit Goma RBE Staging', + category = 'rbe|staging|android arm|rel', + ), + ], +)
diff --git a/infra/config/consoles/chromium.gpu.fyi.star b/infra/config/consoles/chromium.gpu.fyi.star new file mode 100644 index 0000000..9c1312a --- /dev/null +++ b/infra/config/consoles/chromium.gpu.fyi.star
@@ -0,0 +1,382 @@ +luci.console_view( + name = 'chromium.gpu.fyi', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/GPU FYI Win Builder', + category = 'Windows|Builder|Release', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Win x64 Builder', + category = 'Windows|Builder|Release', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Win dEQP Builder', + category = 'Windows|Builder|dEQP', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Win x64 dEQP Builder', + category = 'Windows|Builder|dEQP', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Win Builder (dbg)', + category = 'Windows|Builder|Debug', + short_name = 'x86', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Win x64 Builder (dbg)', + category = 'Windows|Builder|Debug', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI XR Win x64 Builder', + category = 'Windows|Builder|XR', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Debug (NVIDIA)', + category = 'Windows|10|x64|Nvidia', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Release (Intel HD 630)', + category = 'Windows|10|x64|Intel', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Release (Intel UHD 630)', + category = 'Windows|10|x64|Intel', + short_name = 'uhd', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Release (NVIDIA)', + category = 'Windows|10|x64|Nvidia', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Release XR Perf (NVIDIA)', + category = 'Windows|10|x64|Nvidia', + short_name = 'xr', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 dEQP Release (Intel HD 630)', + category = 'Windows|10|x64|Intel', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 dEQP Release (NVIDIA)', + category = 'Windows|10|x64|Nvidia', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Exp Release (Intel HD 630)', + category = 'Windows|10|x64|Intel', + short_name = 'exp', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Exp Release (NVIDIA)', + category = 'Windows|10|x64|Nvidia', + short_name = 'exp', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Release (AMD RX 550)', + category = 'Windows|10|x64|AMD', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 Release (NVIDIA GeForce GTX 1660)', + category = 'Windows|10|x64|Nvidia', + short_name = 'gtx', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x64 SkiaRenderer GL (NVIDIA)', + category = 'Windows|10|x64|Nvidia', + short_name = 'skgl', + ), + luci.console_view_entry( + builder = 'ci/Win10 FYI x86 Release (NVIDIA)', + category = 'Windows|10|x86|Nvidia', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Win7 FYI Debug (AMD)', + category = 'Windows|7|x86|AMD', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Win7 FYI dEQP Release (AMD)', + category = 'Windows|7|x86|AMD', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Win7 FYI Release (AMD)', + category = 'Windows|7|x86|AMD', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Win7 FYI Release (NVIDIA)', + category = 'Windows|7|x86|Nvidia', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Win7 FYI x64 Release (NVIDIA)', + category = 'Windows|7|x64|Nvidia', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Win7 FYI x64 dEQP Release (NVIDIA)', + category = 'Windows|7|x64|Nvidia', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Mac Builder', + category = 'Mac|Builder', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Mac Builder (dbg)', + category = 'Mac|Builder', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Mac dEQP Builder', + category = 'Mac|Builder', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Debug (Intel)', + category = 'Mac|Intel', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Experimental Release (Intel)', + category = 'Mac|Intel', + short_name = 'exp', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI dEQP Release Intel', + category = 'Mac|Intel', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Release (Intel)', + category = 'Mac|Intel', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Mac Pro FYI Release (AMD)', + category = 'Mac|AMD|Pro', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI dEQP Release AMD', + category = 'Mac|AMD', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Retina Debug (AMD)', + category = 'Mac|AMD|Retina', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Retina Release (AMD)', + category = 'Mac|AMD|Retina', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Experimental Retina Release (AMD)', + category = 'Mac|AMD|Retina', + short_name = 'exp', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Retina Debug (NVIDIA)', + category = 'Mac|Nvidia', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Retina Release (NVIDIA)', + category = 'Mac|Nvidia', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI Experimental Retina Release (NVIDIA)', + category = 'Mac|Nvidia', + short_name = 'exp', + ), + luci.console_view_entry( + builder = 'ci/Mac FYI GPU ASAN Release', + category = 'Mac', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Linux Builder', + category = 'Linux|Builder', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Linux Builder (dbg)', + category = 'Linux|Builder', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Linux Ozone Builder', + category = 'Linux|Builder', + short_name = 'ozn', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Linux dEQP Builder', + category = 'Linux|Builder', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI Experimental Release (Intel HD 630)', + category = 'Linux|Intel', + short_name = 'exp', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI Release (Intel HD 630)', + category = 'Linux|Intel', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI Release (Intel UHD 630)', + category = 'Linux|Intel', + short_name = 'uhd', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI dEQP Release (Intel HD 630)', + category = 'Linux|Intel', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI Ozone (Intel)', + category = 'Linux|Intel', + short_name = 'ozn', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI Release (AMD R7 240)', + category = 'Linux', + short_name = 'amd', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI Release (NVIDIA)', + category = 'Linux|Nvidia', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI Experimental Release (NVIDIA)', + category = 'Linux|Nvidia', + short_name = 'exp', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI Debug (NVIDIA)', + category = 'Linux|Nvidia', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI dEQP Release (NVIDIA)', + category = 'Linux|Nvidia', + short_name = 'dqp', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI SkiaRenderer Vulkan (Intel HD 630)', + category = 'Linux|Intel', + short_name = 'skv', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI SkiaRenderer Vulkan (NVIDIA)', + category = 'Linux|Nvidia', + short_name = 'skv', + ), + luci.console_view_entry( + builder = 'ci/Linux FYI GPU TSAN Release', + category = 'Linux', + short_name = 'tsn', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 5)', + category = 'Android|L32', + short_name = 'N5', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 6)', + category = 'Android|L32', + short_name = 'N6', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 5X)', + category = 'Android|M64|QCOM', + short_name = 'N5X', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 6P)', + category = 'Android|M64|QCOM', + short_name = 'N6P', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Nexus 9)', + category = 'Android|M64|NVDA', + short_name = 'N9', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (NVIDIA Shield TV)', + category = 'Android|N64|NVDA', + short_name = 'STV', + ), + luci.console_view_entry( + builder = 'ci/Android FYI Release (Pixel 2)', + category = 'Android|P32|QCOM', + short_name = 'P2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 32 Vk Release (Pixel 2)', + category = 'Android|vk|Q32', + short_name = 'P2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 64 Vk Release (Pixel 2)', + category = 'Android|vk|Q64', + short_name = 'P2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI dEQP Release (Nexus 5X)', + category = 'Android|dqp|M64', + short_name = 'N5X', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 32 dEQP Vk Release (Pixel 2)', + category = 'Android|dqp|vk|Q32', + short_name = 'P2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 64 dEQP Vk Release (Pixel 2)', + category = 'Android|dqp|vk|Q64', + short_name = 'P2', + ), + luci.console_view_entry( + builder = 'ci/Android FYI SkiaRenderer GL (Nexus 5X)', + category = 'Android|skgl|M64', + short_name = 'N5X', + ), + luci.console_view_entry( + builder = 'ci/Android FYI SkiaRenderer Vulkan (Pixel 2)', + category = 'Android|skv|P32', + short_name = 'P2', + ), + luci.console_view_entry( + builder = 'ci/GPU FYI Perf Android 64 Builder', + category = 'Android|Perf|Builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Android FYI 64 Perf (Pixel 2)', + category = 'Android|Perf|Q64', + short_name = 'P2', + ), + ], +)
diff --git a/infra/config/consoles/chromium.gpu.star b/infra/config/consoles/chromium.gpu.star new file mode 100644 index 0000000..935716b --- /dev/null +++ b/infra/config/consoles/chromium.gpu.star
@@ -0,0 +1,67 @@ +luci.console_view( + name = 'chromium.gpu', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/GPU Win x64 Builder', + category = 'Windows', + ), + luci.console_view_entry( + builder = 'ci/GPU Win x64 Builder (dbg)', + category = 'Windows', + ), + luci.console_view_entry( + builder = 'ci/Win10 x64 Debug (NVIDIA)', + category = 'Windows', + ), + luci.console_view_entry( + builder = 'ci/Win10 x64 Release (NVIDIA)', + category = 'Windows', + ), + luci.console_view_entry( + builder = 'ci/GPU Mac Builder', + category = 'Mac', + ), + luci.console_view_entry( + builder = 'ci/GPU Mac Builder (dbg)', + category = 'Mac', + ), + luci.console_view_entry( + builder = 'ci/Mac Debug (Intel)', + category = 'Mac', + ), + luci.console_view_entry( + builder = 'ci/Mac Release (Intel)', + category = 'Mac', + ), + luci.console_view_entry( + builder = 'ci/Mac Retina Debug (AMD)', + category = 'Mac', + ), + luci.console_view_entry( + builder = 'ci/Mac Retina Release (AMD)', + category = 'Mac', + ), + luci.console_view_entry( + builder = 'ci/GPU Linux Builder', + category = 'Linux', + ), + luci.console_view_entry( + builder = 'ci/GPU Linux Builder (dbg)', + category = 'Linux', + ), + luci.console_view_entry( + builder = 'ci/Linux Debug (NVIDIA)', + category = 'Linux', + ), + luci.console_view_entry( + builder = 'ci/Linux Release (NVIDIA)', + category = 'Linux', + ), + luci.console_view_entry( + builder = 'ci/Android Release (Nexus 5X)', + category = 'Android', + ), + ], +)
diff --git a/infra/config/consoles/chromium.linux.star b/infra/config/consoles/chromium.linux.star new file mode 100644 index 0000000..ed2e5dd --- /dev/null +++ b/infra/config/consoles/chromium.linux.star
@@ -0,0 +1,106 @@ +luci.console_view( + name = 'chromium.linux', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Linux Builder', + category = 'release', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux Tests', + category = 'release', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/linux-gcc-rel', + category = 'release', + short_name = 'gcc', + ), + luci.console_view_entry( + builder = 'ci/linux-jumbo-rel', + category = 'release', + short_name = 'jmb', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Linux', + category = 'release', + short_name = 'det', + ), + luci.console_view_entry( + builder = 'ci/Leak Detection Linux', + category = 'release', + short_name = 'lk', + ), + luci.console_view_entry( + builder = 'ci/linux-ozone-rel', + category = 'release', + short_name = 'ozo', + ), + luci.console_view_entry( + builder = 'ci/linux-trusty-rel', + category = 'release', + short_name = 'tru', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder (dbg)(32)', + category = 'debug|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder (dbg)', + category = 'debug|builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Linux (dbg)', + category = 'debug|builder', + short_name = 'det', + ), + luci.console_view_entry( + builder = 'ci/Linux Tests (dbg)(1)', + category = 'debug|tester', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Cast Linux', + category = 'cast', + short_name = 'vid', + ), + luci.console_view_entry( + builder = 'ci/Cast Audio Linux', + category = 'cast', + short_name = 'aud', + ), + luci.console_view_entry( + builder = 'ci/Fuchsia ARM64', + category = 'fuchsia|a64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-arm64-cast', + category = 'fuchsia|cast', + short_name = 'a64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-x64-cast', + category = 'fuchsia|cast', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-x64-dbg', + category = 'fuchsia|x64', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Fuchsia (dbg)', + category = 'fuchsia|x64', + short_name = 'det', + ), + luci.console_view_entry( + builder = 'ci/Fuchsia x64', + category = 'fuchsia|x64', + short_name = 'rel', + ), + ], +)
diff --git a/infra/config/consoles/chromium.mac.star b/infra/config/consoles/chromium.mac.star new file mode 100644 index 0000000..391dec2 --- /dev/null +++ b/infra/config/consoles/chromium.mac.star
@@ -0,0 +1,82 @@ +luci.console_view( + name = 'chromium.mac', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Mac Builder', + category = 'release', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Mac10.10 Tests', + category = 'release', + short_name = '10', + ), + luci.console_view_entry( + builder = 'ci/Mac10.11 Tests', + category = 'release', + short_name = '11', + ), + luci.console_view_entry( + builder = 'ci/Mac10.12 Tests', + category = 'release', + short_name = '12', + ), + luci.console_view_entry( + builder = 'ci/Mac10.13 Tests', + category = 'release', + short_name = '13', + ), + luci.console_view_entry( + builder = 'ci/WebKit Mac10.13 (retina)', + category = 'release', + short_name = 'ret', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg)', + category = 'debug', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Mac10.13 Tests (dbg)', + category = 'debug', + short_name = '13', + ), + luci.console_view_entry( + builder = 'ci/ios-device', + category = 'ios|default', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator', + category = 'ios|default', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-full-configs', + category = 'ios|default', + short_name = 'ful', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-noncq', + category = 'ios|default', + short_name = 'non', + ), + luci.console_view_entry( + builder = 'ci/ios-device-xcode-clang', + category = 'ios|xcode', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-xcode-clang', + category = 'ios|xcode', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ios-slimnav', + category = 'ios|misc', + short_name = 'slim', + ), + ], +)
diff --git a/infra/config/consoles/chromium.memory.star b/infra/config/consoles/chromium.memory.star new file mode 100644 index 0000000..fb71685 --- /dev/null +++ b/infra/config/consoles/chromium.memory.star
@@ -0,0 +1,107 @@ +luci.console_view( + name = 'chromium.memory', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/win-asan', + category = 'win', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/Mac ASan 64 Builder', + category = 'mac', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Mac ASan 64 Tests (1)', + category = 'mac', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux TSan Builder', + category = 'linux|TSan v2', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux TSan Tests', + category = 'linux|TSan v2', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux ASan LSan Builder', + category = 'linux|asan lsan', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux ASan LSan Tests (1)', + category = 'linux|asan lsan', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux ASan Tests (sandboxed)', + category = 'linux|asan lsan', + short_name = 'sbx', + ), + luci.console_view_entry( + builder = 'ci/Linux MSan Builder', + category = 'linux|msan', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux MSan Tests', + category = 'linux|msan', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux ASAN', + category = 'linux|webkit', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux MSAN', + category = 'linux|webkit', + short_name = 'msn', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux Leak', + category = 'linux|webkit', + short_name = 'lk', + ), + luci.console_view_entry( + builder = 'ci/Linux Chromium OS ASan LSan Builder', + category = 'cros|asan', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux Chromium OS ASan LSan Tests (1)', + category = 'cros|asan', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux ChromiumOS MSan Builder', + category = 'cros|msan', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux ChromiumOS MSan Tests', + category = 'cros|msan', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/android-asan', + category = 'android', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/Android CFI', + category = 'cfi', + short_name = 'and', + ), + luci.console_view_entry( + builder = 'ci/Linux CFI', + category = 'cfi', + short_name = 'lnx', + ), + ], +)
diff --git a/infra/config/consoles/chromium.star b/infra/config/consoles/chromium.star new file mode 100644 index 0000000..d34cf1b --- /dev/null +++ b/infra/config/consoles/chromium.star
@@ -0,0 +1,48 @@ +luci.console_view( + name = 'chromium', + header = '//consoles/chromium-header.textpb', + include_experimental_builds = True, + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/android-archive-dbg', + category = 'android', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/android-archive-rel', + category = 'android', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-dbg', + category = 'linux', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel', + category = 'linux', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-dbg', + category = 'mac', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel', + category = 'mac', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/win32-archive-rel', + category = 'win-rel', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/win-archive-rel', + category = 'win-rel', + short_name = '64', + ), + ], +)
diff --git a/infra/config/consoles/chromium.webrtc.fyi.star b/infra/config/consoles/chromium.webrtc.fyi.star new file mode 100644 index 0000000..589c804 --- /dev/null +++ b/infra/config/consoles/chromium.webrtc.fyi.star
@@ -0,0 +1,97 @@ +luci.console_view( + name = 'chromium.webrtc.fyi', + header = '//consoles/chromium-header.textpb', + repo = 'https://webrtc.googlesource.com/src', + entries = [ + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Android Builder (dbg)', + category = 'android|debug|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Android Builder ARM64 (dbg)', + category = 'android|debug|builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)', + category = 'android|debug|tester', + short_name = 'K', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)', + category = 'android|debug|tester', + short_name = 'M', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Android Builder', + category = 'android|release', + short_name = '32', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Linux Builder (dbg)', + category = 'linux|debug', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Linux Builder', + category = 'linux|release', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Linux Tester', + category = 'linux|release', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Mac Builder (dbg)', + category = 'mac|debug', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Mac Builder', + category = 'mac|release', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Mac Tester', + category = 'mac|release', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Win Builder (dbg)', + category = 'win|debug', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Win Builder', + category = 'win|release|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Win10 Tester', + category = 'win|release|tester', + short_name = '10', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Win7 Tester', + category = 'win|release|tester', + short_name = '7', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI Win8 Tester', + category = 'win|release|tester', + short_name = '8', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI ios-device', + category = 'ios', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'webrtc.fyi/WebRTC Chromium FYI ios-simulator', + category = 'ios', + short_name = 'sim', + ), + ], +)
diff --git a/infra/config/consoles/chromium.webrtc.star b/infra/config/consoles/chromium.webrtc.star new file mode 100644 index 0000000..3f931b1 --- /dev/null +++ b/infra/config/consoles/chromium.webrtc.star
@@ -0,0 +1,57 @@ +luci.console_view( + name = 'chromium.webrtc', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Android Builder', + category = 'android', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Android Tester', + category = 'android', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Linux Builder', + category = 'linux', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Linux Tester', + category = 'linux', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Mac Builder', + category = 'mac', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Mac Tester', + category = 'mac', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Win Builder', + category = 'win', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Win10 Tester', + category = 'win', + short_name = '10', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Win7 Tester', + category = 'win', + short_name = '7', + ), + luci.console_view_entry( + builder = 'webrtc/WebRTC Chromium Win8 Tester', + category = 'win', + short_name = '8', + ), + ], +)
diff --git a/infra/config/consoles/chromium.win.star b/infra/config/consoles/chromium.win.star new file mode 100644 index 0000000..27c9b2a --- /dev/null +++ b/infra/config/consoles/chromium.win.star
@@ -0,0 +1,67 @@ +luci.console_view( + name = 'chromium.win', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Win Builder', + category = 'release|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Win x64 Builder', + category = 'release|builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Win7 (32) Tests', + category = 'release|tester', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Win7 Tests (1)', + category = 'release|tester', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Win 7 Tests x64 (1)', + category = 'release|tester', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Win10 Tests x64', + category = 'release|tester', + short_name = 'w10', + ), + luci.console_view_entry( + builder = 'ci/Win x64 Builder (dbg)', + category = 'debug|builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Win Builder (dbg)', + category = 'debug|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Win7 Tests (dbg)(1)', + category = 'debug|tester', + short_name = '7', + ), + luci.console_view_entry( + builder = 'ci/Win10 Tests x64 (dbg)', + category = 'debug|tester', + short_name = '10', + ), + luci.console_view_entry( + builder = 'ci/Windows deterministic', + category = 'misc', + short_name = 'det', + ), + luci.console_view_entry( + builder = 'ci/WebKit Win10', + category = 'misc', + short_name = 'wbk', + ), + ], +)
diff --git a/infra/config/consoles/goma.latest.star b/infra/config/consoles/goma.latest.star new file mode 100644 index 0000000..5b67ab7d --- /dev/null +++ b/infra/config/consoles/goma.latest.star
@@ -0,0 +1,138 @@ +luci.console_view( + name = 'goma.latest', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Win Builder Goma Latest Client', + category = 'win|rel', + ), + luci.console_view_entry( + builder = 'ci/Win Builder (dbg) Goma Latest Client', + category = 'win|dbg', + ), + luci.console_view_entry( + builder = 'ci/win32-archive-rel-goma-latest-localoutputcache', + category = 'win|rel', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/Win cl.exe Goma Latest Client LocalOutputCache', + category = 'cl.exe|rel', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/Win7 Builder Goma Latest Client', + category = 'win7|rel', + ), + luci.console_view_entry( + builder = 'ci/Win7 Builder (dbg) Goma Latest Client', + category = 'win7|dbg', + ), + luci.console_view_entry( + builder = 'ci/WinMSVC64 Goma Latest Client', + category = 'cl.exe|rel', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder Goma Latest Client', + category = 'mac|rel', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg) Goma Latest Client', + category = 'mac|dbg', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel-goma-latest', + category = 'mac|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg) Goma Latest Client (clobber)', + category = 'mac|dbg', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel-goma-latest-localoutputcache', + category = 'mac|rel', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel-goma-latest', + category = 'cros|rel', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder Goma Latest Client', + category = 'linux|rel', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-latest', + category = 'linux|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-latest-localoutputcache', + category = 'linux|rel', + short_name = 'loc', + ), + luci.console_view_entry( + builder = 'ci/android-archive-dbg-goma-latest', + category = 'android|dbg', + ), + luci.console_view_entry( + builder = 'ci/ios-device-goma-latest-clobber', + category = 'ios', + short_name = 'clb', + ), + # RBE + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-rbe-latest', + category = 'rbe|linux|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel-goma-rbe-ats-latest', + category = 'rbe|linux|rel', + short_name = 'ats', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder Goma RBE Latest Client', + category = 'rbe|linux|rel', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel-goma-rbe-latest', + category = 'rbe|cros|rel', + ), + luci.console_view_entry( + builder = 'ci/android-archive-dbg-goma-rbe-latest', + category = 'rbe|android|dbg', + ), + luci.console_view_entry( + builder = 'ci/android-archive-dbg-goma-rbe-ats-latest', + category = 'rbe|android|dbg', + short_name = 'ats', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel-goma-rbe-latest', + category = 'rbe|mac|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg) Goma RBE Latest Client (clobber)', + category = 'rbe|mac|dbg', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/ios-device-goma-rbe-latest-clobber', + category = 'rbe|ios', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Win Builder Goma RBE Latest Client', + category = 'rbe|win|rel', + ), + luci.console_view_entry( + builder = 'ci/Win Builder (dbg) Goma RBE Latest Client', + category = 'rbe|win|dbg', + ), + ], +)
diff --git a/infra/config/consoles/luci.chromium.goma.star b/infra/config/consoles/luci.chromium.goma.star new file mode 100644 index 0000000..a90ff74 --- /dev/null +++ b/infra/config/consoles/luci.chromium.goma.star
@@ -0,0 +1,41 @@ +luci.console_view( + name = 'luci.chromium.goma', + header = '//consoles/chromium-header.textpb', + include_experimental_builds = True, + repo = 'https://chromium.googlesource.com/chromium/src', + entries = [ + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma Staging', + category = 'clients5', + short_name = 'lnx', + ), + luci.console_view_entry( + builder = 'ci/Chromium Mac Goma Staging', + category = 'clients5', + short_name = 'mac', + ), + luci.console_view_entry( + builder = 'ci/CrWinGomaStaging', + category = 'clients5', + short_name = 'win', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Staging (clobber)', + category = 'rbe|rel', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Staging', + category = 'rbe|rel', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Staging (dbg) (clobber)', + category = 'rbe|debug', + short_name = 'clb', + ), + luci.console_view_entry( + builder = 'ci/Chromium Linux Goma RBE Staging (dbg)', + category = 'rbe|debug', + ), + ], +)
diff --git a/infra/config/consoles/luci.chromium.try.star b/infra/config/consoles/luci.chromium.try.star new file mode 100644 index 0000000..c7f03a224 --- /dev/null +++ b/infra/config/consoles/luci.chromium.try.star
@@ -0,0 +1,182 @@ +luci.list_view( + name = 'luci.chromium.try', + entries = [ + 'try/android-cronet-arm-dbg', + 'try/android-kitkat-arm-rel', + 'try/android-marshmallow-arm64-coverage-rel', + 'try/android-marshmallow-arm64-rel', + 'try/android-oreo-arm64-cts-networkservice-dbg', + 'try/android-pie-arm64-rel', + 'try/android-webview-pie-arm64-fyi-rel', + 'try/android_archive_rel_ng', + 'try/android_arm64_dbg_recipe', + 'try/android_angle_deqp_rel_ng', + 'try/android_angle_vk32_deqp_rel_ng', + 'try/android_angle_vk64_deqp_rel_ng', + 'try/android_angle_rel_ng', + 'try/android_angle_vk32_rel_ng', + 'try/android_angle_vk64_rel_ng', + 'try/android_cfi_rel_ng', + 'try/android_compile_dbg', + 'try/android_compile_x64_dbg', + 'try/android_compile_x86_dbg', + 'try/android_mojo', + 'try/android_n5x_swarming_dbg', + 'try/android_optional_gpu_tests_rel', + 'try/android-webview-marshmallow-arm64-dbg', + 'try/android-webview-nougat-arm64-dbg', + 'try/android-webview-oreo-arm64-dbg', + 'try/android-webview-pie-arm64-dbg', + 'try/cast_shell_audio_linux', + 'try/cast_shell_linux', + 'try/chromeos-amd64-generic-cfi-thin-lto-rel', + 'try/chromeos-amd64-generic-dbg', + 'try/chromeos-amd64-generic-rel', + 'try/chromeos-arm-generic-dbg', + 'try/chromeos-arm-generic-rel', + 'try/chromeos-kevin-compile-rel', + 'try/chromeos-kevin-experimental-rel', + 'try/chromeos-kevin-rel', + 'try/chromium_presubmit', + 'try/closure_compilation', + 'try/fuchsia-angle-rel', + 'try/fuchsia-compile-x64-dbg', + 'try/gpu-fyi-try-android-l-nexus-5-32', + 'try/gpu-fyi-try-android-l-nexus-6-32', + 'try/gpu-fyi-try-android-m-nexus-5x-64', + 'try/gpu-fyi-try-android-m-nexus-5x-deqp-64', + 'try/gpu-fyi-try-android-m-nexus-5x-skgl-64', + 'try/gpu-fyi-try-android-m-nexus-6p-64', + 'try/gpu-fyi-try-android-m-nexus-9-64', + 'try/gpu-fyi-try-android-n-nvidia-shield-tv-64', + 'try/gpu-fyi-try-android-p-pixel-2-32', + 'try/gpu-fyi-try-android-p-pixel-2-skv-32', + 'try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32', + 'try/gpu-fyi-try-android-q-pixel-2-deqp-vk-64', + 'try/gpu-fyi-try-android-q-pixel-2-vk-32', + 'try/gpu-fyi-try-android-q-pixel-2-vk-64', + 'try/gpu-fyi-try-linux-intel-dqp', + 'try/gpu-fyi-try-linux-intel-exp', + 'try/gpu-fyi-try-linux-intel-rel', + 'try/gpu-fyi-try-linux-intel-skv', + 'try/gpu-fyi-try-linux-nvidia-dbg', + 'try/gpu-fyi-try-linux-nvidia-dqp', + 'try/gpu-fyi-try-linux-nvidia-exp', + 'try/gpu-fyi-try-linux-nvidia-rel', + 'try/gpu-fyi-try-linux-nvidia-skv', + 'try/gpu-fyi-try-linux-nvidia-tsn', + 'try/gpu-fyi-try-win-xr-builder-64', + 'try/gpu-fyi-try-win7-amd-dbg-32', + 'try/gpu-fyi-try-win7-amd-dqp-32', + 'try/gpu-fyi-try-win7-amd-rel-32', + 'try/gpu-fyi-try-win7-nvidia-dqp-64', + 'try/gpu-fyi-try-win7-nvidia-rel-32', + 'try/gpu-fyi-try-win7-nvidia-rel-64', + 'try/gpu-fyi-try-win10-intel-dqp-64', + 'try/gpu-fyi-try-win10-intel-exp-64', + 'try/gpu-fyi-try-win10-intel-rel-64', + 'try/gpu-fyi-try-win10-nvidia-dbg-64', + 'try/gpu-fyi-try-win10-nvidia-dqp-64', + 'try/gpu-fyi-try-win10-nvidia-exp-64', + 'try/gpu-fyi-try-win10-nvidia-rel-32', + 'try/gpu-fyi-try-win10-nvidia-rel-64', + 'try/gpu-fyi-try-win10-nvidia-skgl-64', + 'try/gpu-fyi-try-mac-amd-dqp', + 'try/gpu-fyi-try-mac-amd-pro-rel', + 'try/gpu-fyi-try-mac-amd-retina-dbg', + 'try/gpu-fyi-try-mac-amd-retina-exp', + 'try/gpu-fyi-try-mac-amd-retina-rel', + 'try/gpu-fyi-try-mac-asan', + 'try/gpu-fyi-try-mac-intel-dbg', + 'try/gpu-fyi-try-mac-intel-dqp', + 'try/gpu-fyi-try-mac-intel-exp', + 'try/gpu-fyi-try-mac-intel-rel', + 'try/gpu-fyi-try-mac-nvidia-retina-dbg', + 'try/gpu-fyi-try-mac-nvidia-retina-exp', + 'try/gpu-fyi-try-mac-nvidia-retina-rel', + 'try/gpu-try-android-m-nexus-5x-64', + 'try/gpu-try-linux-nvidia-dbg', + 'try/gpu-try-linux-nvidia-rel', + 'try/gpu-try-mac-amd-retina-dbg', + 'try/gpu-try-mac-intel-dbg', + 'try/linux-angle-rel', + 'try/linux-blink-heap-concurrent-marking-tsan-rel', + 'try/linux-blink-heap-verification-try', + 'try/linux-chromeos-rel', + 'try/linux-jumbo-rel', + 'try/linux-libfuzzer-asan-rel', + 'try/linux-ozone-rel', + 'try/linux_android_dbg_ng', + 'try/linux_angle_deqp_rel_ng', + 'try/linux_angle_ozone_rel_ng', + 'try/linux_arm', + 'try/linux_chromium_analysis', + 'try/linux_chromium_archive_rel_ng', + 'try/linux_chromium_asan_rel_ng', + 'try/linux_chromium_cfi_rel_ng', + 'try/linux_chromium_chromeos_asan_rel_ng', + 'try/linux_chromium_chromeos_msan_rel_ng', + 'try/linux_chromium_clobber_deterministic', + 'try/linux_chromium_clobber_rel_ng', + 'try/linux_chromium_compile_dbg_32_ng', + 'try/linux_chromium_compile_dbg_ng', + 'try/linux_chromium_compile_rel_ng', + 'try/linux-clang-tidy-dbg', + 'try/linux-clang-tidy-rel', + 'try/linux-rel', + 'try/linux_chromium_dbg_ng', + 'try/linux_chromium_msan_rel_ng', + 'try/linux_chromium_tsan_rel_ng', + 'try/linux_chromium_ubsan_rel_ng', + 'try/linux_layout_tests_composite_after_paint', + 'try/linux_layout_tests_layout_ng_disabled', + 'try/linux_mojo', + 'try/linux_mojo_chromeos', + 'try/linux_optional_gpu_tests_rel', + 'try/linux_upload_clang', + 'try/linux-viz-rel', + 'try/ios-device', + 'try/ios-device-xcode-clang', + 'try/ios-simulator', + 'try/ios-simulator-cronet', + 'try/ios-simulator-eg', + 'try/ios-simulator-xcode-clang', + 'try/ios13-sdk-simulator', + 'try/mac-angle-rel', + 'try/mac-jumbo-rel', + 'try/mac-rel', + 'try/mac_chromium_10.10', + 'try/mac_chromium_10.12_rel_ng', + 'try/mac_chromium_10.13_rel_ng', + 'try/mac_chromium_archive_rel_ng', + 'try/mac_chromium_asan_rel_ng', + 'try/mac_chromium_compile_dbg_ng', + 'try/mac_chromium_compile_rel_ng', + 'try/mac_chromium_dbg_ng', + 'try/mac_optional_gpu_tests_rel', + 'try/mac_upload_clang', + 'try/try-nougat-phone-tester', + 'try/android-oreo-arm64-dbg', + 'try/android-pie-arm64-dbg', + 'try/android-pie-x86-fyi-rel', + 'try/win7-rel', + 'try/win10_chromium_x64_dbg_ng', + 'try/win10_chromium_x64_rel_ng', + 'try/win10_chromium_x64_rel_ng_exp', + 'try/win-angle-deqp-rel-32', + 'try/win-angle-deqp-rel-64', + 'try/win-angle-rel-32', + 'try/win-angle-rel-64', + 'try/win-jumbo-rel', + 'try/win_archive', + 'try/win_chromium_compile_dbg_ng', + 'try/win_chromium_compile_rel_ng', + 'try/win_chromium_dbg_ng', + 'try/win_chromium_x64_rel_ng', + 'try/win_mojo', + 'try/win_optional_gpu_tests_rel', + 'try/win_upload_clang', + 'try/win_x64_archive', + 'try/win-celab-try-rel', + ], +)
diff --git a/infra/config/consoles/main.star b/infra/config/consoles/main.star new file mode 100644 index 0000000..973feb7f --- /dev/null +++ b/infra/config/consoles/main.star
@@ -0,0 +1,452 @@ +luci.console_view( + name = 'main', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + title = 'Chromium Main Console', + entries = [ + luci.console_view_entry( + builder = 'ci/android-archive-dbg', + category = 'chromium|android', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/android-archive-rel', + category = 'chromium|android', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-dbg', + category = 'chromium|linux', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/linux-archive-rel', + category = 'chromium|linux', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-dbg', + category = 'chromium|mac', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/mac-archive-rel', + category = 'chromium|mac', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/win32-archive-rel', + category = 'chromium|win-rel', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/win-archive-rel', + category = 'chromium|win-rel', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Win Builder', + category = 'chromium.win|release|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Win x64 Builder', + category = 'chromium.win|release|builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Win7 (32) Tests', + category = 'chromium.win|release|tester', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Win7 Tests (1)', + category = 'chromium.win|release|tester', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Win 7 Tests x64 (1)', + category = 'chromium.win|release|tester', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Win10 Tests x64', + category = 'chromium.win|release|tester', + short_name = 'w10', + ), + luci.console_view_entry( + builder = 'ci/Win x64 Builder (dbg)', + category = 'chromium.win|debug|builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Win Builder (dbg)', + category = 'chromium.win|debug|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Win7 Tests (dbg)(1)', + category = 'chromium.win|debug|tester', + short_name = '7', + ), + luci.console_view_entry( + builder = 'ci/Win10 Tests x64 (dbg)', + category = 'chromium.win|debug|tester', + short_name = '10', + ), + luci.console_view_entry( + builder = 'ci/Windows deterministic', + category = 'chromium.win|misc', + short_name = 'det', + ), + luci.console_view_entry( + builder = 'ci/WebKit Win10', + category = 'chromium.win|misc', + short_name = 'wbk', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder', + category = 'chromium.mac|release', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Mac10.10 Tests', + category = 'chromium.mac|release', + short_name = '10', + ), + luci.console_view_entry( + builder = 'ci/Mac10.11 Tests', + category = 'chromium.mac|release', + short_name = '11', + ), + luci.console_view_entry( + builder = 'ci/Mac10.12 Tests', + category = 'chromium.mac|release', + short_name = '12', + ), + luci.console_view_entry( + builder = 'ci/Mac10.13 Tests', + category = 'chromium.mac|release', + short_name = '13', + ), + luci.console_view_entry( + builder = 'ci/WebKit Mac10.13 (retina)', + category = 'chromium.mac|release', + short_name = 'ret', + ), + luci.console_view_entry( + builder = 'ci/Mac Builder (dbg)', + category = 'chromium.mac|debug', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Mac10.13 Tests (dbg)', + category = 'chromium.mac|debug', + short_name = '13', + ), + luci.console_view_entry( + builder = 'ci/ios-device', + category = 'chromium.mac|ios|default', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator', + category = 'chromium.mac|ios|default', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-full-configs', + category = 'chromium.mac|ios|default', + short_name = 'ful', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-noncq', + category = 'chromium.mac|ios|default', + short_name = 'non', + ), + luci.console_view_entry( + builder = 'ci/ios-device-xcode-clang', + category = 'chromium.mac|ios|xcode', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-xcode-clang', + category = 'chromium.mac|ios|xcode', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ios-slimnav', + category = 'chromium.mac|ios|misc', + short_name = 'slim', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder', + category = 'chromium.linux|release', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux Tests', + category = 'chromium.linux|release', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/linux-gcc-rel', + category = 'chromium.linux|release', + short_name = 'gcc', + ), + luci.console_view_entry( + builder = 'ci/linux-jumbo-rel', + category = 'chromium.linux|release', + short_name = 'jmb', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Linux', + category = 'chromium.linux|release', + short_name = 'det', + ), + luci.console_view_entry( + builder = 'ci/Leak Detection Linux', + category = 'chromium.linux|release', + short_name = 'lk', + ), + luci.console_view_entry( + builder = 'ci/linux-ozone-rel', + category = 'chromium.linux|release', + short_name = 'ozo', + ), + luci.console_view_entry( + builder = 'ci/linux-trusty-rel', + category = 'chromium.linux|release', + short_name = 'tru', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder (dbg)(32)', + category = 'chromium.linux|debug|builder', + short_name = '32', + ), + luci.console_view_entry( + builder = 'ci/Linux Builder (dbg)', + category = 'chromium.linux|debug|builder', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Linux (dbg)', + category = 'chromium.linux|debug|builder', + short_name = 'det', + ), + luci.console_view_entry( + builder = 'ci/Linux Tests (dbg)(1)', + category = 'chromium.linux|debug|tester', + short_name = '64', + ), + luci.console_view_entry( + builder = 'ci/Cast Linux', + category = 'chromium.linux|cast', + short_name = 'vid', + ), + luci.console_view_entry( + builder = 'ci/Cast Audio Linux', + category = 'chromium.linux|cast', + short_name = 'aud', + ), + luci.console_view_entry( + builder = 'ci/Fuchsia ARM64', + category = 'chromium.linux|fuchsia|a64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-arm64-cast', + category = 'chromium.linux|fuchsia|cast', + short_name = 'a64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-x64-cast', + category = 'chromium.linux|fuchsia|cast', + short_name = 'x64', + ), + luci.console_view_entry( + builder = 'ci/fuchsia-x64-dbg', + category = 'chromium.linux|fuchsia|x64', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/Deterministic Fuchsia (dbg)', + category = 'chromium.linux|fuchsia|x64', + short_name = 'det', + ), + luci.console_view_entry( + builder = 'ci/Fuchsia x64', + category = 'chromium.linux|fuchsia|x64', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/Linux ChromiumOS Full', + category = 'chromium.chromiumos|default', + short_name = 'ful', + ), + luci.console_view_entry( + builder = 'ci/linux-chromeos-rel', + category = 'chromium.chromiumos|default', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/linux-chromeos-dbg', + category = 'chromium.chromiumos|default', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-asan-rel', + category = 'chromium.chromiumos|simple|release|x64', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-cfi-thin-lto-rel', + category = 'chromium.chromiumos|simple|release|x64', + short_name = 'cfi', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-dbg', + category = 'chromium.chromiumos|simple|debug|x64', + short_name = 'dbg', + ), + luci.console_view_entry( + builder = 'ci/chromeos-amd64-generic-rel', + category = 'chromium.chromiumos|simple|release|x64', + short_name = 'rel', + ), + luci.console_view_entry( + builder = 'ci/chromeos-arm-generic-dbg', + category = 'chromium.chromiumos|simple|debug', + short_name = 'arm', + ), + luci.console_view_entry( + builder = 'ci/chromeos-arm-generic-rel', + category = 'chromium.chromiumos|simple|release', + short_name = 'arm', + ), + luci.console_view_entry( + builder = 'ci/chromeos-kevin-rel', + category = 'chromium.chromiumos|simple|release', + short_name = 'kvn', + ), + luci.console_view_entry( + builder = 'chrome:ci/linux-chromeos-google-rel', + category = 'chrome', + short_name = 'cro', + ), + luci.console_view_entry( + builder = 'chrome:ci/linux-google-rel', + category = 'chrome', + short_name = 'lnx', + ), + luci.console_view_entry( + builder = 'chrome:ci/mac-google-rel', + category = 'chrome', + short_name = 'mac', + ), + luci.console_view_entry( + builder = 'chrome:ci/win-google-rel', + category = 'chrome', + short_name = 'win', + ), + luci.console_view_entry( + builder = 'ci/win-asan', + category = 'chromium.memory|win', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/Mac ASan 64 Builder', + category = 'chromium.memory|mac', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Mac ASan 64 Tests (1)', + category = 'chromium.memory|mac', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux TSan Builder', + category = 'chromium.memory|linux|TSan v2', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux TSan Tests', + category = 'chromium.memory|linux|TSan v2', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux ASan LSan Builder', + category = 'chromium.memory|linux|asan lsan', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux ASan LSan Tests (1)', + category = 'chromium.memory|linux|asan lsan', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux ASan Tests (sandboxed)', + category = 'chromium.memory|linux|asan lsan', + short_name = 'sbx', + ), + luci.console_view_entry( + builder = 'ci/Linux MSan Builder', + category = 'chromium.memory|linux|msan', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux MSan Tests', + category = 'chromium.memory|linux|msan', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux ASAN', + category = 'chromium.memory|linux|webkit', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux MSAN', + category = 'chromium.memory|linux|webkit', + short_name = 'msn', + ), + luci.console_view_entry( + builder = 'ci/WebKit Linux Leak', + category = 'chromium.memory|linux|webkit', + short_name = 'lk', + ), + luci.console_view_entry( + builder = 'ci/Linux Chromium OS ASan LSan Builder', + category = 'chromium.memory|cros|asan', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux Chromium OS ASan LSan Tests (1)', + category = 'chromium.memory|cros|asan', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/Linux ChromiumOS MSan Builder', + category = 'chromium.memory|cros|msan', + short_name = 'bld', + ), + luci.console_view_entry( + builder = 'ci/Linux ChromiumOS MSan Tests', + category = 'chromium.memory|cros|msan', + short_name = 'tst', + ), + luci.console_view_entry( + builder = 'ci/android-asan', + category = 'chromium.memory|android', + short_name = 'asn', + ), + luci.console_view_entry( + builder = 'ci/Android CFI', + category = 'chromium.memory|cfi', + short_name = 'and', + ), + luci.console_view_entry( + builder = 'ci/Linux CFI', + category = 'chromium.memory|cfi', + short_name = 'lnx', + ), + ], +)
diff --git a/infra/config/consoles/sheriff.ios.star b/infra/config/consoles/sheriff.ios.star new file mode 100644 index 0000000..84fa96f --- /dev/null +++ b/infra/config/consoles/sheriff.ios.star
@@ -0,0 +1,59 @@ +luci.console_view( + name = 'sheriff.ios', + header = '//consoles/chromium-header.textpb', + repo = 'https://chromium.googlesource.com/chromium/src', + title = 'iOS Sheriff Console', + entries = [ + + luci.console_view_entry( + builder = 'ci/ios-device', + category = 'chromium.mac', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator', + category = 'chromium.mac', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-full-configs', + category = 'chromium.mac', + short_name = 'ful', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-noncq', + category = 'chromium.mac', + short_name = 'non', + ), + luci.console_view_entry( + builder = 'ci/ios-device-xcode-clang', + category = 'chromium.mac|xcode', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/ios-simulator-xcode-clang', + category = 'chromium.mac|xcode', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ios-slimnav', + category = 'chromium.mac', + short_name = 'slim', + ), + luci.console_view_entry( + builder = 'ci/ios13-sdk-device', + category = 'chromium.fyi|13', + short_name = 'dev', + ), + luci.console_view_entry( + builder = 'ci/ios13-sdk-simulator', + category = 'chromium.fyi|13', + short_name = 'sim', + ), + luci.console_view_entry( + builder = 'ci/ios13-beta-simulator', + category = 'chromium.fyi|13', + short_name = 'ios13', + ), + ], +)
diff --git a/infra/config/consoles/tryserver.blink.star b/infra/config/consoles/tryserver.blink.star new file mode 100644 index 0000000..205c009 --- /dev/null +++ b/infra/config/consoles/tryserver.blink.star
@@ -0,0 +1,13 @@ +luci.list_view( + name = 'tryserver.blink', + entries = [ + 'try/linux-blink-rel', + 'try/mac10.10-blink-rel', + 'try/mac10.11-blink-rel', + 'try/mac10.12-blink-rel', + 'try/mac10.13-blink-rel', + 'try/mac10.13_retina-blink-rel', + 'try/win10-blink-rel', + 'try/win7-blink-rel', + ], +)
diff --git a/infra/config/consoles/tryserver.chromium.android.star b/infra/config/consoles/tryserver.chromium.android.star new file mode 100644 index 0000000..c038186 --- /dev/null +++ b/infra/config/consoles/tryserver.chromium.android.star
@@ -0,0 +1,53 @@ +luci.list_view( + name = 'tryserver.chromium.android', + entries = [ + 'try/android-opus-kitkat-arm-rel', + 'try/android_archive_rel_ng', + 'try/android-binary-size', + 'try/android_blink_rel', + 'try/android_cfi_rel_ng', + 'try/android_clang_dbg_recipe', + 'try/android_compile_dbg', + 'try/android_compile_rel', + 'try/android_compile_x64_dbg', + 'try/android_compile_x86_dbg', + 'try/android_cronet', + 'try/android-cronet-arm-dbg', + 'try/android_cronet_tester', + 'try/android_mojo', + 'try/android-marshmallow-arm64-rel', + 'try/android-marshmallow-x86-fyi-rel', + 'try/android-pie-arm64-rel', + 'try/android-webview-pie-arm64-fyi-rel', + 'try/android_optional_gpu_tests_rel', + 'try/android_unswarmed_pixel_aosp', + 'try/cast_shell_android', + 'try/linux_android_dbg_ng', + 'try/android-kitkat-arm-rel', + 'try/gpu-fyi-try-android-l-nexus-5-32', + 'try/gpu-fyi-try-android-l-nexus-6-32', + 'try/gpu-fyi-try-android-m-nexus-5x-64', + 'try/gpu-fyi-try-android-m-nexus-5x-deqp-64', + 'try/gpu-fyi-try-android-m-nexus-5x-skgl-64', + 'try/gpu-fyi-try-android-m-nexus-6p-64', + 'try/gpu-fyi-try-android-m-nexus-9-64', + 'try/gpu-fyi-try-android-n-nvidia-shield-tv-64', + 'try/gpu-fyi-try-android-p-pixel-2-32', + 'try/gpu-fyi-try-android-p-pixel-2-skv-32', + 'try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32', + 'try/gpu-fyi-try-android-q-pixel-2-deqp-vk-64', + 'try/gpu-fyi-try-android-q-pixel-2-vk-32', + 'try/gpu-fyi-try-android-q-pixel-2-vk-64', + 'try/gpu-try-android-m-nexus-5x-64', + 'try/android-deterministic-rel', + 'try/android-deterministic-dbg', + 'try/try-nougat-phone-tester', + 'try/android-oreo-arm64-dbg', + 'try/android-pie-arm64-dbg', + 'try/android-pie-x86-fyi-rel', + 'try/android-webview-marshmallow-arm64-dbg', + 'try/android-webview-nougat-arm64-dbg', + 'try/android-webview-oreo-arm64-dbg', + 'try/android-webview-pie-arm64-dbg', + ], +)
diff --git a/infra/config/consoles/tryserver.chromium.chromiumos.star b/infra/config/consoles/tryserver.chromium.chromiumos.star new file mode 100644 index 0000000..766e67c --- /dev/null +++ b/infra/config/consoles/tryserver.chromium.chromiumos.star
@@ -0,0 +1,14 @@ +luci.list_view( + name = 'tryserver.chromium.chromiumos', + entries = [ + 'try/chromeos-amd64-generic-dbg', + 'try/chromeos-amd64-generic-rel', + 'try/chromeos-arm-generic-dbg', + 'try/chromeos-arm-generic-rel', + 'try/chromeos-kevin-compile-rel', + 'try/chromeos-kevin-rel', + 'try/linux-chromeos-compile-dbg', + 'try/linux-chromeos-dbg', + 'try/linux-chromeos-rel', + ], +)
diff --git a/infra/config/consoles/tryserver.chromium.linux.star b/infra/config/consoles/tryserver.chromium.linux.star new file mode 100644 index 0000000..556dfef --- /dev/null +++ b/infra/config/consoles/tryserver.chromium.linux.star
@@ -0,0 +1,59 @@ +luci.list_view( + name = 'tryserver.chromium.linux', + entries = [ + 'try/cast_shell_audio_linux', + 'try/cast_shell_linux', + 'try/chromium_presubmit', + 'try/closure_compilation', + 'try/fuchsia_arm64', + 'try/fuchsia-arm64-cast', + 'try/fuchsia-compile-x64-dbg', + 'try/fuchsia-fyi-arm64-rel', + 'try/fuchsia-fyi-x64-dbg', + 'try/fuchsia-fyi-x64-rel', + 'try/fuchsia_x64', + 'try/fuchsia-x64-cast', + 'try/gpu-fyi-try-linux-intel-dqp', + 'try/gpu-fyi-try-linux-intel-exp', + 'try/gpu-fyi-try-linux-intel-rel', + 'try/gpu-fyi-try-linux-intel-skv', + 'try/gpu-fyi-try-linux-nvidia-dbg', + 'try/gpu-fyi-try-linux-nvidia-dqp', + 'try/gpu-fyi-try-linux-nvidia-exp', + 'try/gpu-fyi-try-linux-nvidia-rel', + 'try/gpu-fyi-try-linux-nvidia-skv', + 'try/gpu-fyi-try-linux-nvidia-tsn', + 'try/gpu-try-linux-nvidia-dbg', + 'try/gpu-try-linux-nvidia-rel', + 'try/layout_test_leak_detection', + 'try/leak_detection_linux', + 'try/linux-annotator-rel', + 'try/linux-gcc-rel', + 'try/linux-libfuzzer-asan-rel', + 'try/linux-ozone-rel', + 'try/linux-rel', + 'try/linux-clang-tidy-dbg', + 'try/linux-clang-tidy-rel', + 'try/linux-trusty-rel', + 'try/linux_arm', + 'try/linux_chromium_analysis', + 'try/linux_chromium_archive_rel_ng', + 'try/linux_chromium_asan_rel_ng', + 'try/linux_chromium_cfi_rel_ng', + 'try/linux_chromium_chromeos_asan_rel_ng', + 'try/linux_chromium_chromeos_msan_rel_ng', + 'try/linux_chromium_clobber_rel_ng', + 'try/linux_chromium_compile_dbg_32_ng', + 'try/linux_chromium_msan_rel_ng', + 'try/linux_chromium_tsan_rel_ng', + 'try/linux_chromium_ubsan_rel_ng', + 'try/linux_layout_tests_composite_after_paint', + 'try/linux_layout_tests_layout_ng_disabled', + 'try/linux_mojo', + 'try/linux_mojo_chromeos', + 'try/linux_optional_gpu_tests_rel', + 'try/linux_upload_clang', + 'try/linux-viz-rel', + 'try/linux_vr', + ], +)
diff --git a/infra/config/consoles/tryserver.chromium.mac.star b/infra/config/consoles/tryserver.chromium.mac.star new file mode 100644 index 0000000..7b06025 --- /dev/null +++ b/infra/config/consoles/tryserver.chromium.mac.star
@@ -0,0 +1,42 @@ +luci.list_view( + name = 'tryserver.chromium.mac', + entries = [ + 'try/gpu-fyi-try-mac-amd-dqp', + 'try/gpu-fyi-try-mac-amd-pro-rel', + 'try/gpu-fyi-try-mac-amd-retina-dbg', + 'try/gpu-fyi-try-mac-amd-retina-exp', + 'try/gpu-fyi-try-mac-amd-retina-rel', + 'try/gpu-fyi-try-mac-asan', + 'try/gpu-fyi-try-mac-intel-dbg', + 'try/gpu-fyi-try-mac-intel-dqp', + 'try/gpu-fyi-try-mac-intel-exp', + 'try/gpu-fyi-try-mac-intel-rel', + 'try/gpu-fyi-try-mac-nvidia-retina-dbg', + 'try/gpu-fyi-try-mac-nvidia-retina-exp', + 'try/gpu-fyi-try-mac-nvidia-retina-rel', + 'try/gpu-try-mac-amd-retina-dbg', + 'try/gpu-try-mac-intel-dbg', + 'try/ios-device', + 'try/ios-device-xcode-clang', + 'try/ios-simulator-cr-recipe', + 'try/ios-simulator-cronet', + 'try/ios-simulator-full-configs', + 'try/ios-simulator-noncq', + 'try/ios-simulator-xcode-clang', + 'try/ios13-beta-simulator', + 'try/ios13-sdk-simulator', + 'try/ios-slimnav', + 'try/mac-osxbeta-rel', + 'try/mac-rel', + 'try/mac_chromium_10.10', + 'try/mac_chromium_10.12_rel_ng', + 'try/mac_chromium_10.13_rel_ng', + 'try/mac_chromium_archive_rel_ng', + 'try/mac_chromium_asan_rel_ng', + 'try/mac_chromium_compile_dbg_ng', + 'try/mac_chromium_compile_rel_ng', + 'try/mac_chromium_dbg_ng', + 'try/mac_optional_gpu_tests_rel', + 'try/mac_upload_clang', + ], +)
diff --git a/infra/config/consoles/tryserver.chromium.win.star b/infra/config/consoles/tryserver.chromium.win.star new file mode 100644 index 0000000..4c59559 --- /dev/null +++ b/infra/config/consoles/tryserver.chromium.win.star
@@ -0,0 +1,35 @@ +luci.list_view( + name = 'tryserver.chromium.win', + entries = [ + 'try/gpu-fyi-try-win-xr-builder-64', + 'try/gpu-fyi-try-win7-amd-dbg-32', + 'try/gpu-fyi-try-win7-amd-dqp-32', + 'try/gpu-fyi-try-win7-amd-rel-32', + 'try/gpu-fyi-try-win7-nvidia-dqp-64', + 'try/gpu-fyi-try-win7-nvidia-rel-32', + 'try/gpu-fyi-try-win7-nvidia-rel-64', + 'try/gpu-fyi-try-win10-intel-dqp-64', + 'try/gpu-fyi-try-win10-intel-exp-64', + 'try/gpu-fyi-try-win10-intel-rel-64', + 'try/gpu-fyi-try-win10-nvidia-dbg-64', + 'try/gpu-fyi-try-win10-nvidia-dqp-64', + 'try/gpu-fyi-try-win10-nvidia-exp-64', + 'try/gpu-fyi-try-win10-nvidia-rel-32', + 'try/gpu-fyi-try-win10-nvidia-rel-64', + 'try/gpu-fyi-try-win10-nvidia-skgl-64', + 'try/win-libfuzzer-asan-rel', + 'try/win7-rel', + 'try/win10_chromium_x64_dbg_ng', + 'try/win10_chromium_x64_rel_ng', + 'try/win_archive', + 'try/win_chromium_compile_dbg_ng', + 'try/win_chromium_compile_rel_ng', + 'try/win_chromium_dbg_ng', + 'try/win_chromium_x64_rel_ng', + 'try/win_mojo', + 'try/win_optional_gpu_tests_rel', + 'try/win_upload_clang', + 'try/win_x64_archive', + 'try/win-annotator-rel', + ], +)
diff --git a/infra/config/dev.star b/infra/config/dev.star index cf8cd2b..faf5459 100755 --- a/infra/config/dev.star +++ b/infra/config/dev.star
@@ -18,19 +18,20 @@ # TODO(https://crbug.com/1011908) Migrate the configuration in these files to starlark [lucicfg.emit(dest = f, data = io.read_file(f)) for f in ( 'luci-milo-dev.cfg', - 'luci-scheduler-dev.cfg', )] luci.project( name = 'chromium', buildbucket = 'cr-buildbucket-dev.appspot.com', logdog = 'luci-logdog-dev.appspot.com', + scheduler = 'luci-scheduler-dev.appspot.com', swarming = 'chromium-swarm-dev.appspot.com', acls = [ acl.entry( roles = [ acl.LOGDOG_READER, acl.PROJECT_CONFIGS_READER, + acl.SCHEDULER_READER, ], groups = 'all', ), @@ -38,6 +39,10 @@ roles = acl.LOGDOG_WRITER, groups = 'luci-logdog-chromium-dev-writers', ), + acl.entry( + roles = acl.SCHEDULER_OWNER, + groups = 'project-chromium-admins', + ), ], )
diff --git a/infra/config/dev/buckets/ci.star b/infra/config/dev/buckets/ci.star index 45241fb..960b682b 100644 --- a/infra/config/dev/buckets/ci.star +++ b/infra/config/dev/buckets/ci.star
@@ -21,6 +21,13 @@ ], ) +luci.gitiles_poller( + name = 'master-gitiles-trigger', + bucket = 'ci', + repo = 'https://chromium.googlesource.com/chromium/src', +) + + luci.recipe.defaults.cipd_package.set( 'infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build') @@ -38,28 +45,35 @@ defaults.swarming_tags.set(['vpython:native-python-wrapper']) -builder( +def ci_builder(*, name, **kwargs): + return builder( + name = name, + triggered_by = ['master-gitiles-trigger'], + **kwargs + ) + +ci_builder( name = 'Android N5 Swarm', ) -builder( +ci_builder( name = 'Android N5X Swarm', ) -builder( +ci_builder( name = 'ChromeOS Swarm', ) -builder( +ci_builder( name = 'Linux Swarm', ) -builder( +ci_builder( name = 'Mac Swarm', os = os.MAC_DEFAULT, ) -builder( +ci_builder( name = 'Windows Swarm', os = os.WINDOWS_DEFAULT, )
diff --git a/infra/config/dev/buckets/cron.star b/infra/config/dev/buckets/cron.star index 2cdd719b..03de983 100644 --- a/infra/config/dev/buckets/cron.star +++ b/infra/config/dev/buckets/cron.star
@@ -30,6 +30,8 @@ name = 'Snapshot Builder', executable = luci.recipe(name = 'snapshots/builder'), os = os.LINUX_DEFAULT, + # TODO(smut): Adjust frequency + schedule = 'with 300s interval', service_account = 'snapshot-builder@chops-service-accounts.iam.gserviceaccount.com', )
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg index bd9d7fe..27f28cf 100644 --- a/infra/config/generated/luci-milo.cfg +++ b/infra/config/generated/luci-milo.cfg
@@ -1,5379 +1,10707 @@ -# See http://luci-config.appspot.com/schemas/projects:luci-milo.cfg for schema -# of this file and documentation. +# Auto-generated by lucicfg. +# Do not modify manually. +# +# For the schema of this file, see Project message: +# https://luci-config.appspot.com/schemas/projects:luci-milo.cfg -logo_url: "https://storage.googleapis.com/chrome-infra-public/logo/chromium.svg" - -headers { - id: "chromium" - oncalls { - name: "Chromium" - url: "https://rota-ng.appspot.com/legacy/sheriff.json" - } - oncalls { - name: "Android" - url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" - } - oncalls { - name: "iOS" - url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" - } - oncalls { - name: "GPU" - url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" - } - oncalls { - name: "Angle" - url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" - } - oncalls { - name: "Perf" - url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" - } - oncalls { - name: "Perfbot" - url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" - } - oncalls { - name: "V8" - url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" - } - oncalls { - name: "Trooper" - url: "https://rota-ng.appspot.com/legacy/trooper.json" - } - links { - name: "Builds" - links { - text: "continuous" - url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" - alt: "Continuous browser snapshots" - } - links { - text: "symbols" - url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" - alt: "Windows Symbols" - } - links { - text: "status" - url: "https://chromium-status.appspot.com/" - alt: "Current tree status" - } - } - links { - name: "Dashboards" - links { - text: "perf" - url: "https://chromeperf.appspot.com/" - alt: "Chrome perf dashboard" - } - links { - text: "flake-portal" - url: "https://analysis.chromium.org/p/chromium/flake-portal" - alt: "New flake portal" - } - links { - text: "legacy-flakiness" - url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" - alt: "Legacy flakiness dashboard" - } - } - links { - name: "Chromium" - links { - text: "source" - url: "https://chromium.googlesource.com/chromium/src" - alt: "Chromium source code repository" - } - links { - text: "reviews" - url: "https://chromium-review.googlesource.com" - alt: "Chromium code review tool" - } - links { - text: "bugs" - url: "https://crbug.com" - alt: "Chromium bug tracker" - } - links { - text: "coverage" - url: "https://analysis.chromium.org/p/chromium/coverage" - alt: "Chromium code coverage dashboard" - } - links { - text: "dev" - url: "https://dev.chromium.org/Home" - alt: "Chromium developer home page" - } - links { - text: "support" - url: "https://support.google.com/chrome/#topic=7438008" - alt: "Google Chrome help center" - } - } - links { - name: "Consoles" - links { - text: "android" - url: "/p/chromium/g/chromium.android" - alt: "Chromium Android console" - } - links { - text: "clang" - url: "/p/chromium/g/chromium.clang" - alt: "Chromium Clang console" - } - links { - text: "dawn" - url: "/p/chromium/g/chromium.dawn" - alt: "Chromium Dawn console" - } - links { - text: "fuzz" - url: "/p/chromium/g/chromium.fuzz" - alt: "Chromium Fuzz console" - } - links { - text: "fyi" - url: "/p/chromium/g/chromium.fyi" - alt: "Chromium FYI console" - } - links { - text: "gpu" - url: "/p/chromium/g/chromium.gpu" - alt: "Chromium GPU console" - } - links { - text: "perf" - url: "/p/chrome/g/chrome.perf/console" - alt: "Chromium Perf console" - } - links { - text: "perf.fyi" - url: "/p/chrome/g/chrome.perf.fyi/console" - alt: "Chromium Perf FYI console" - } - links { - text: "webrtc" - url: "/p/chromium/g/chromium.webrtc" - alt: "Chromium WebRTC console" - } - links { - text: "chromiumos" - url: "/p/chromium/g/chromium.chromiumos" - alt: "ChromiumOS console" - } - } - links { - name: "Tryservers" - links { - text: "android" - url: "/p/chromium/g/tryserver.chromium.android/builders" - alt: "Android" - } - links { - text: "angle" - url: "/p/chromium/g/angle.try/builders" - alt: "Angle" - } - links { - text: "blink" - url: "/p/chromium/g/tryserver.blink/builders" - alt: "Blink" - } - links { - text: "chrome" - url: "/p/chrome/g/tryserver.chrome/builders" - alt: "Chrome" - } - links { - text: "chromiumos" - url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" - alt: "ChromiumOS" - } - links { - text: "linux" - url: "/p/chromium/g/tryserver.chromium.linux/builders" - alt: "Linux" - } - links { - text: "mac" - url: "/p/chromium/g/tryserver.chromium.mac/builders" - alt: "Mac" - } - links { - text: "win" - url: "/p/chromium/g/tryserver.chromium.win/builders" - alt: "Win" - } - } - links { - name: "Navigate" - links { - text: "about" - url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" - alt: "Tour of the console" - } - links { - text: "customize" - url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" - alt: "Customize this console" - } - } - console_groups { - title { - text: "Tree Closers" - url: "https://chromium-status.appspot.com/" - } - console_ids: "chromium/chromium" - console_ids: "chromium/chromium.win" - console_ids: "chromium/chromium.mac" - console_ids: "chromium/chromium.linux" - console_ids: "chromium/chromium.chromiumos" - console_ids: "chrome/chrome" - console_ids: "chromium/chromium.memory" - console_ids: "chromium/chromium.gpu" - } - console_groups { - console_ids: "chromium/chromium.android" - console_ids: "chrome/chrome.perf" - console_ids: "chromium/chromium.gpu.fyi" - console_ids: "chromium/chromium.fuzz" - } - tree_status_host: "chromium-status.appspot.com" -} - -consoles { - header_id: "chromium" - id: "main" - name: "Chromium Main Console" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg" - category: "chromium|android" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-rel" - category: "chromium|android" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-dbg" - category: "chromium|linux" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel" - category: "chromium|linux" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-dbg" - category: "chromium|mac" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel" - category: "chromium|mac" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel" - category: "chromium|win-rel" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/win-archive-rel" - category: "chromium|win-rel" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder" - category: "chromium.win|release|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win x64 Builder" - category: "chromium.win|release|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 (32) Tests" - category: "chromium.win|release|tester" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Tests (1)" - category: "chromium.win|release|tester" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win 7 Tests x64 (1)" - category: "chromium.win|release|tester" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64" - category: "chromium.win|release|tester" - short_name: "w10" - } - builders { - name: "buildbucket/luci.chromium.ci/Win x64 Builder (dbg)" - category: "chromium.win|debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg)" - category: "chromium.win|debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Tests (dbg)(1)" - category: "chromium.win|debug|tester" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64 (dbg)" - category: "chromium.win|debug|tester" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.ci/Windows deterministic" - category: "chromium.win|misc" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Win10" - category: "chromium.win|misc" - short_name: "wbk" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder" - category: "chromium.mac|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.10 Tests" - category: "chromium.mac|release" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.11 Tests" - category: "chromium.mac|release" - short_name: "11" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.12 Tests" - category: "chromium.mac|release" - short_name: "12" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.13 Tests" - category: "chromium.mac|release" - short_name: "13" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" - category: "chromium.mac|release" - short_name: "ret" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" - category: "chromium.mac|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.13 Tests (dbg)" - category: "chromium.mac|debug" - short_name: "13" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device" - category: "chromium.mac|ios|default" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator" - category: "chromium.mac|ios|default" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-full-configs" - category: "chromium.mac|ios|default" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-noncq" - category: "chromium.mac|ios|default" - short_name: "non" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-xcode-clang" - category: "chromium.mac|ios|xcode" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-xcode-clang" - category: "chromium.mac|ios|xcode" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-slimnav" - category: "chromium.mac|ios|misc" - short_name: "slim" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder" - category: "chromium.linux|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Tests" - category: "chromium.linux|release" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-gcc-rel" - category: "chromium.linux|release" - short_name: "gcc" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-jumbo-rel" - category: "chromium.linux|release" - short_name: "jmb" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux" - category: "chromium.linux|release" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Leak Detection Linux" - category: "chromium.linux|release" - short_name: "lk" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-ozone-rel" - category: "chromium.linux|release" - short_name: "ozo" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-trusty-rel" - category: "chromium.linux|release" - short_name: "tru" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" - category: "chromium.linux|debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" - category: "chromium.linux|debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" - category: "chromium.linux|debug|builder" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Tests (dbg)(1)" - category: "chromium.linux|debug|tester" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Linux" - category: "chromium.linux|cast" - short_name: "vid" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Audio Linux" - category: "chromium.linux|cast" - short_name: "aud" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" - category: "chromium.linux|fuchsia|a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" - category: "chromium.linux|fuchsia|cast" - short_name: "a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" - category: "chromium.linux|fuchsia|cast" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-dbg" - category: "chromium.linux|fuchsia|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Fuchsia (dbg)" - category: "chromium.linux|fuchsia|x64" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia x64" - category: "chromium.linux|fuchsia|x64" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full" - category: "chromium.chromiumos|default" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-rel" - category: "chromium.chromiumos|default" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg" - category: "chromium.chromiumos|default" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-asan-rel" - category: "chromium.chromiumos|simple|release|x64" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-cfi-thin-lto-rel" - category: "chromium.chromiumos|simple|release|x64" - short_name: "cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-dbg" - category: "chromium.chromiumos|simple|debug|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel" - category: "chromium.chromiumos|simple|release|x64" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-dbg" - category: "chromium.chromiumos|simple|debug" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-rel" - category: "chromium.chromiumos|simple|release" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel" - category: "chromium.chromiumos|simple|release" - short_name: "kvn" - } - builders { - name: "buildbucket/luci.chrome.ci/linux-chromeos-google-rel" - category: "chrome" - short_name: "cro" - } - builders { - name: "buildbucket/luci.chrome.ci/linux-google-rel" - category: "chrome" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chrome.ci/mac-google-rel" - category: "chrome" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chrome.ci/win-google-rel" - category: "chrome" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/win-asan" - category: "chromium.memory|win" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" - category: "chromium.memory|mac" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Tests (1)" - category: "chromium.memory|mac" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux TSan Builder" - category: "chromium.memory|linux|TSan v2" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux TSan Tests" - category: "chromium.memory|linux|TSan v2" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Builder" - category: "chromium.memory|linux|asan lsan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Tests (1)" - category: "chromium.memory|linux|asan lsan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan Tests (sandboxed)" - category: "chromium.memory|linux|asan lsan" - short_name: "sbx" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Builder" - category: "chromium.memory|linux|msan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Tests" - category: "chromium.memory|linux|msan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" - category: "chromium.memory|linux|webkit" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" - category: "chromium.memory|linux|webkit" - short_name: "msn" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" - category: "chromium.memory|linux|webkit" - short_name: "lk" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Builder" - category: "chromium.memory|cros|asan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Tests (1)" - category: "chromium.memory|cros|asan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Builder" - category: "chromium.memory|cros|msan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Tests" - category: "chromium.memory|cros|msan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/android-asan" - category: "chromium.memory|android" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/Android CFI" - category: "chromium.memory|cfi" - short_name: "and" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux CFI" - category: "chromium.memory|cfi" - short_name: "lnx" - } -} - -consoles { - header_id: "chromium" - id: "chromium.win" - name: "chromium.win" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Win Builder" - category: "release|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win x64 Builder" - category: "release|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 (32) Tests" - category: "release|tester" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Tests (1)" - category: "release|tester" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win 7 Tests x64 (1)" - category: "release|tester" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64" - category: "release|tester" - short_name: "w10" - } - builders { - name: "buildbucket/luci.chromium.ci/Win x64 Builder (dbg)" - category: "debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg)" - category: "debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Tests (dbg)(1)" - category: "debug|tester" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64 (dbg)" - category: "debug|tester" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.ci/Windows deterministic" - category: "misc" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Win10" - category: "misc" - short_name: "wbk" - } -} - -consoles { - header_id: "chromium" - id: "chromium.mac" - name: "chromium.mac" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder" - category: "release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.10 Tests" - category: "release" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.11 Tests" - category: "release" - short_name: "11" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.12 Tests" - category: "release" - short_name: "12" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.13 Tests" - category: "release" - short_name: "13" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" - category: "release" - short_name: "ret" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" - category: "debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.13 Tests (dbg)" - category: "debug" - short_name: "13" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device" - category: "ios|default" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator" - category: "ios|default" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-full-configs" - category: "ios|default" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-noncq" - category: "ios|default" - short_name: "non" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-xcode-clang" - category: "ios|xcode" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-xcode-clang" - category: "ios|xcode" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-slimnav" - category: "ios|misc" - short_name: "slim" - } -} - -consoles { - header_id: "chromium" - id: "chromium.linux" - name: "chromium.linux" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder" - category: "release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Tests" - category: "release" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-gcc-rel" - category: "release" - short_name: "gcc" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-jumbo-rel" - category: "release" - short_name: "jmb" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux" - category: "release" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Leak Detection Linux" - category: "release" - short_name: "lk" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-ozone-rel" - category: "release" - short_name: "ozo" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-trusty-rel" - category: "release" - short_name: "tru" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" - category: "debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" - category: "debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" - category: "debug|builder" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Tests (dbg)(1)" - category: "debug|tester" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Linux" - category: "cast" - short_name: "vid" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Audio Linux" - category: "cast" - short_name: "aud" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" - category: "fuchsia|a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" - category: "fuchsia|cast" - short_name: "a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" - category: "fuchsia|cast" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-dbg" - category: "fuchsia|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Fuchsia (dbg)" - category: "fuchsia|x64" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia x64" - category: "fuchsia|x64" - short_name: "rel" - } -} - -consoles { - header_id: "chromium" - id: "chromium.chromiumos" - name: "chromium.chromiumos" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full" - category: "default" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-rel" - category: "default" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg" - category: "default" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-asan-rel" - category: "simple|release|x64" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-cfi-thin-lto-rel" - category: "simple|release|x64" - short_name: "cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-dbg" - category: "simple|debug|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel" - category: "simple|release|x64" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-dbg" - category: "simple|debug" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-rel" - category: "simple|release" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel" - category: "simple|release" - short_name: "kvn" - } -} - -consoles { - header_id: "chromium" - id: "chromium.memory" - name: "chromium.memory" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/win-asan" - category: "win" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" - category: "mac" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Tests (1)" - category: "mac" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux TSan Builder" - category: "linux|TSan v2" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux TSan Tests" - category: "linux|TSan v2" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Builder" - category: "linux|asan lsan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Tests (1)" - category: "linux|asan lsan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan Tests (sandboxed)" - category: "linux|asan lsan" - short_name: "sbx" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Builder" - category: "linux|msan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Tests" - category: "linux|msan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" - category: "linux|webkit" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" - category: "linux|webkit" - short_name: "msn" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" - category: "linux|webkit" - short_name: "lk" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Builder" - category: "cros|asan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Tests (1)" - category: "cros|asan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Builder" - category: "cros|msan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Tests" - category: "cros|msan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/android-asan" - category: "android" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/Android CFI" - category: "cfi" - short_name: "and" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux CFI" - category: "cfi" - short_name: "lnx" - } -} - -consoles { - header_id: "chromium" - id: "chromium.fuzz" - name: "chromium.fuzz" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Afl Upload Linux ASan" - category: "afl" - short_name: "afl" - } - builders { - name: "buildbucket/luci.chromium.ci/Win ASan Release" - category: "win asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win ASan Release Media" - category: "win asan" - short_name: "med" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASAN Release" - category: "mac asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASAN Release Media" - category: "mac asan" - short_name: "med" - } - builders { - name: "buildbucket/luci.chromium.ci/ChromiumOS ASAN Release" - short_name: "cro" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Debug" - category: "linux asan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Release" - category: "linux asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Release Media" - category: "linux asan" - short_name: "med" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Debug (32-bit x86 with V8-ARM)" - category: "linux asan|x64 v8-ARM" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Release (32-bit x86 with V8-ARM)" - category: "linux asan|x64 v8-ARM" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Release Media (32-bit x86 with V8-ARM)" - category: "linux asan|x64 v8-ARM" - short_name: "med" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Chrome OS ASan" - category: "libfuzz" - short_name: "chromeos-asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan" - category: "libfuzz" - short_name: "linux32" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan Debug" - category: "libfuzz" - short_name: "linux32-dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan" - category: "libfuzz" - short_name: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan Debug" - category: "libfuzz" - short_name: "linux-dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux MSan" - category: "libfuzz" - short_name: "linux-msan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux UBSan" - category: "libfuzz" - short_name: "linux-ubsan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Mac ASan" - category: "libfuzz" - short_name: "mac-asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Windows ASan" - category: "libfuzz" - short_name: "win-asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan" - category: "libfuzz" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan Debug" - category: "libfuzz" - short_name: "arm-dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan" - category: "libfuzz" - short_name: "arm64" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan Debug" - category: "libfuzz" - short_name: "arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/MSAN Release (chained origins)" - category: "linux msan" - short_name: "org" - } - builders { - name: "buildbucket/luci.chromium.ci/MSAN Release (no origins)" - category: "linux msan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/TSAN Debug" - category: "linux tsan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/TSAN Release" - category: "linux tsan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSan Release" - category: "linux UBSan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSan vptr Release" - category: "linux UBSan" - short_name: "vpt" - } -} - -consoles { - header_id: "chromium" +consoles: < + id: "angle.try" + name: "angle.try" + builders: < + name: "buildbucket/luci.chromium.try/android_angle_deqp_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/android_angle_vk32_deqp_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/android_angle_vk64_deqp_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/android_angle_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/android_angle_vk32_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/android_angle_vk64_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia-angle-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-angle-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_angle_deqp_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_angle_ozone_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/mac-angle-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-32" + > + builders: < + name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-64" + > + builders: < + name: "buildbucket/luci.chromium.try/win-angle-rel-32" + > + builders: < + name: "buildbucket/luci.chromium.try/win-angle-rel-64" + > + builder_view_only: true +> +consoles: < id: "chromium" name: "chromium" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - include_experimental_builds: true - builders { + builders: < name: "buildbucket/luci.chromium.ci/android-archive-dbg" category: "android" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-archive-rel" category: "android" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/linux-archive-dbg" category: "linux" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/linux-archive-rel" category: "linux" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/mac-archive-dbg" category: "mac" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/mac-archive-rel" category: "mac" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/win32-archive-rel" category: "win-rel" short_name: "32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/win-archive-rel" category: "win-rel" short_name: "64" - } -} - -consoles { - header_id: "chromium" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > + include_experimental_builds: true +> +consoles: < id: "chromium.android" name: "chromium.android" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - builders { + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-arm-dbg" category: "cronet|arm" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-arm-rel" category: "cronet|arm" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-arm64-dbg" category: "cronet|arm64" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-arm64-rel" category: "cronet|arm64" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-x86-dbg" category: "cronet|x86" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-x86-rel" category: "cronet|x86" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-asan-arm-rel" category: "cronet|asan" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-kitkat-arm-rel" category: "cronet|test" short_name: "k" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-lollipop-arm-rel" category: "cronet|test" short_name: "l" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-rel" category: "cronet|test" short_name: "m" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-perf-rel" category: "cronet|test|perf" short_name: "m" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-jumbo-rel" category: "builder" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android arm Builder (dbg)" category: "builder|arm" short_name: "32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android arm64 Builder (dbg)" category: "builder|arm" short_name: "64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android x86 Builder (dbg)" category: "builder|x86" short_name: "32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android x64 Builder (dbg)" category: "builder|x86" short_name: "64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Deterministic Android" category: "builder|det" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Deterministic Android (dbg)" category: "builder|det" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/KitKat Phone Tester (dbg)" category: "tester|phone" short_name: "K" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Lollipop Phone Tester" category: "tester|phone" short_name: "L" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Marshmallow 64 bit Tester" category: "tester|phone" short_name: "M" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Nougat Phone Tester" category: "tester|phone" short_name: "N" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Oreo Phone Tester" category: "tester|phone" short_name: "O" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-pie-arm64-dbg" category: "tester|phone" short_name: "P" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/KitKat Tablet Tester" category: "tester|tablet" short_name: "K" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Lollipop Tablet Tester" category: "tester|tablet" short_name: "L" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Marshmallow Tablet Tester" category: "tester|tablet" short_name: "M" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-incremental-dbg" category: "tester|incremental" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android WebView L (dbg)" category: "tester|webview" short_name: "L" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android WebView M (dbg)" category: "tester|webview" short_name: "M" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android WebView N (dbg)" category: "tester|webview" short_name: "N" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android WebView O (dbg)" category: "tester|webview" short_name: "O" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android WebView P (dbg)" category: "tester|webview" short_name: "P" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-kitkat-arm-rel" category: "on_cq" short_name: "K" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-marshmallow-arm64-rel" category: "on_cq" short_name: "M" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Cast Android (dbg)" category: "on_cq" short_name: "cst" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android ASAN (dbg)" category: "on_cq" short_name: "san" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-pie-arm64-rel" category: "on_cq|future" short_name: "P" - } -} - -consoles { - header_id: "chromium" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < id: "chromium.android.fyi" name: "chromium.android.fyi" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - builders { + builders: < name: "buildbucket/luci.chromium.ci/android-bfcache-debug" category: "android" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Memory Infra Tester" category: "Memory" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android WebView P FYI (rel)" category: "webview" short_name: "p-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Android WebView P OOR-CORS FYI (rel)" category: "webview" short_name: "cors" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-marshmallow-x86-fyi-rel" category: "emulator|M|x86" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/android-pie-x86-fyi-rel" category: "emulator|P|x86" short_name: "rel" - } -} - -consoles { - header_id: "chromium" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.chromiumos" + name: "chromium.chromiumos" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full" + category: "default" + short_name: "ful" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-chromeos-rel" + category: "default" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg" + category: "default" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-asan-rel" + category: "simple|release|x64" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-cfi-thin-lto-rel" + category: "simple|release|x64" + short_name: "cfi" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-dbg" + category: "simple|debug|x64" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel" + category: "simple|release|x64" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-dbg" + category: "simple|debug" + short_name: "arm" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-rel" + category: "simple|release" + short_name: "arm" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel" + category: "simple|release" + short_name: "kvn" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < id: "chromium.clang" name: "chromium.clang" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - - builders { + builders: < name: "buildbucket/luci.chromium.ci/ToTLinux" category: "ToT Linux" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chrome.ci/ToTLinuxOfficial" category: "ToT Linux" short_name: "ofi" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTLinux (dbg)" category: "ToT Linux" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTLinuxASan" category: "ToT Linux" short_name: "asn" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTLinuxASanLibfuzzer" category: "ToT Linux" short_name: "fuz" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTLinuxMSan" category: "ToT Linux" short_name: "msn" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTLinuxTSan" category: "ToT Linux" short_name: "tsn" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTLinuxThinLTO" category: "ToT Linux" short_name: "lto" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTLinuxUBSanVptr" category: "ToT Linux" short_name: "usn" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTAndroid" category: "ToT Android" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTAndroid (dbg)" category: "ToT Android" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTAndroid x64" category: "ToT Android" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTAndroid64" category: "ToT Android" short_name: "a64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTAndroidASan" category: "ToT Android" short_name: "asn" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTAndroidCFI" category: "ToT Android" short_name: "cfi" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTAndroidOfficial" category: "ToT Android" short_name: "off" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTMac" category: "ToT Mac" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chrome.ci/ToTMacOfficial" category: "ToT Mac" short_name: "ofi" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTMac (dbg)" category: "ToT Mac" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTMacASan" category: "ToT Mac" short_name: "asn" - } - builders { + > + builders: < name: "buildbucket/luci.chrome.ci/ToTWin" category: "ToT Windows" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chrome.ci/ToTWinOfficial" category: "ToT Windows" short_name: "ofi" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTWin(dbg)" category: "ToT Windows" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTWin(dll)" category: "ToT Windows" short_name: "dll" - } - builders { + > + builders: < name: "buildbucket/luci.chrome.ci/ToTWin64" category: "ToT Windows|x64" short_name: "rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTWin64(dbg)" category: "ToT Windows|x64" short_name: "dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTWin64(dll)" category: "ToT Windows|x64" short_name: "dll" - } - builders { + > + builders: < name: "buildbucket/luci.chrome.ci/ToTWinThinLTO64" category: "ToT Windows|x64" short_name: "lto" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTWinLibcxx64" category: "ToT Windows|x64" short_name: "cxx" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/CrWinAsan" category: "ToT Windows|Asan" short_name: "asn" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/CrWinAsan(dll)" category: "ToT Windows|Asan" short_name: "dll" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTWinASanLibfuzzer" category: "ToT Windows|Asan" short_name: "fuz" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/linux-win_cross-rel" category: "ToT Windows" short_name: "lxw" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTLinuxCoverage" category: "ToT Code Coverage" short_name: "linux" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTMacCoverage" category: "ToT Code Coverage" short_name: "mac" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/CFI Linux CF" category: "CFI|Linux" short_name: "CF" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/CFI Linux ToT" category: "CFI|Linux" short_name: "ToT" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTWinCFI" category: "CFI|Win" short_name: "x86" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTWinCFI64" category: "CFI|Win" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTiOS" category: "iOS" short_name: "sim" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ToTiOSDevice" category: "iOS" short_name: "dev" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/UBSanVptr Linux" short_name: "usn" - } -} - -consoles { - header_id: "chromium" - id: "chromium.fyi.goma" - name: "chromium.fyi.goma" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Win Builder Goma Canary" - category: "win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Canary" - category: "win|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-canary-localoutputcache" - category: "win|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Canary LocalOutputCache" - category: "cl.exe|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Canary" - category: "win7|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Canary" - category: "win7|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Canary" - category: "cl.exe|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder Goma Canary" - category: "mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary" - category: "mac|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary" - category: "mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary (clobber)" - category: "mac|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary-localoutputcache" - category: "mac|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-canary" - category: "cros|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma Canary" - category: "linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary" - category: "linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary-localoutputcache" - category: "linux|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-canary" - category: "android|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-canary-clobber" - category: "ios|rel" - short_name: "clb" - } - # RBE - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-canary" - category: "rbe|linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-ats-canary" - category: "rbe|linux|rel" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma RBE Canary" - category: "rbe|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-rbe-canary" - category: "rbe|cros|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-canary" - category: "rbe|android|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-ats-canary" - category: "rbe|android|dbg" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-rbe-canary" - category: "rbe|mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma RBE Canary (clobber)" - category: "rbe|mac|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-rbe-canary-clobber" - category: "rbe|ios" - short_name: "clb" - } -} - -consoles { - header_id: "chromium" - id: "goma.latest" - name: "goma.latest" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Win Builder Goma Latest Client" - category: "win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Latest Client" - category: "win|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-latest-localoutputcache" - category: "win|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Latest Client LocalOutputCache" - category: "cl.exe|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Latest Client" - category: "win7|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Latest Client" - category: "win7|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Latest Client" - category: "cl.exe|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder Goma Latest Client" - category: "mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Latest Client" - category: "mac|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-latest" - category: "mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Latest Client (clobber)" - category: "mac|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-latest-localoutputcache" - category: "mac|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-latest" - category: "cros|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma Latest Client" - category: "linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-latest" - category: "linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-latest-localoutputcache" - category: "linux|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-latest" - category: "android|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-latest-clobber" - category: "ios" - short_name: "clb" - } - # RBE - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-latest" - category: "rbe|linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-ats-latest" - category: "rbe|linux|rel" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma RBE Latest Client" - category: "rbe|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-rbe-latest" - category: "rbe|cros|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-latest" - category: "rbe|android|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-ats-latest" - category: "rbe|android|dbg" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-rbe-latest" - category: "rbe|mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma RBE Latest Client (clobber)" - category: "rbe|mac|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-rbe-latest-clobber" - category: "rbe|ios" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder Goma RBE Latest Client" - category: "rbe|win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma RBE Latest Client" - category: "rbe|win|dbg" - } -} - -consoles { - header_id: "chromium" - id: "chromium.fyi" - name: "chromium.fyi" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Closure Compilation Linux" - category: "closure_compilation" - } - builders { - name: "buildbucket/luci.chromium.ci/android-code-coverage" - category: "code_coverage" - short_name: "and" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-code-coverage" - category: "code_coverage" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-vm-code-coverage" - category: "code_coverage" - short_name: "vm" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-code-coverage" - category: "code_coverage" - short_name: "lcr" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-code-coverage-generation" - category: "code_coverage" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-code-coverage" - category: "code_coverage" - short_name: "ios" - } - builders { - name: "buildbucket/luci.chromium.ci/win10-code-coverage" - category: "code_coverage" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-cronet" - category: "cronet" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-hermetic-upgrade-rel" - category: "mac" - short_name: "herm" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-osxbeta-rel" - category: "mac" - short_name: "beta" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-jumbo-rel" - category: "mac" - short_name: "jmb" - } - builders { - name: "buildbucket/luci.chromium.ci/win-jumbo-rel" - category: "win" - short_name: "jmb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac deterministic" - category: "deterministic|mac" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac deterministic (dbg)" - category: "deterministic|mac" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel" - category: "fuchsia" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-dbg" - category: "fuchsia" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel" - category: "fuchsia" - } - builders { - name: "buildbucket/luci.chromium.ci/Android Builder (dbg) Goma Canary" - category: "goma|android|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma Canary" - category: "goma|linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary" - category: "goma|linux" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary-localoutputcache" - category: "goma|linux" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary" - category: "goma|mac|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary (clobber)" - category: "goma|mac|debug" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder Goma Canary" - category: "goma|mac" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary" - category: "goma|mac" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary-localoutputcache" - category: "goma|mac" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Canary" - category: "goma|win|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Canary" - category: "goma|win|debug" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder Goma Canary" - category: "goma|win" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-canary-localoutputcache" - category: "goma|win" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Canary" - category: "goma|win" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Canary LocalOutputCache" - category: "goma|win|cl.exe" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Canary" - category: "goma|win|cl.exe" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-canary" - category: "goma|chromeos" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-vm-tests" - category: "chromeos" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel-hw-tests" - category: "chromos" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-canary-clobber" - category: "goma|ios" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-cr-recipe" - category: "iOS" - short_name: "chr" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-webkit-tot" - category: "iOS" - short_name: "wk" - } - builders { - name: "buildbucket/luci.chromium.ci/ios12-beta-simulator" - category: "iOS|iOS12" - short_name: "beta" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-sdk-device" - category: "iOS|iOS13" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-sdk-simulator" - category: "iOS|iOS13" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-beta-simulator" - category: "iOS|iOS13" - short_name: "ios13" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Linux x64" - category: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Mac" - category: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Win x64" - category: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-animation-use-time-delta" - category: "linux|blink" - short_name: "TD" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-heap-concurrent-marking-tsan-rel" - category: "linux|blink" - short_name: "CM" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-heap-verification" - category: "linux|blink" - short_name: "VF" - } - builders { - name: "buildbucket/luci.chromium.ci/VR Linux" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-bfcache-debug" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-oor-cors-rel" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-fieldtrial-rel" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-wpt-fyi-rel" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Android" - category: "mojo" - short_name: "and" - } - builders { - name: "buildbucket/luci.chromium.ci/android-mojo-webview-rel" - category: "mojo" - short_name: "aw" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo ChromiumOS" - category: "mojo" - short_name: "cr" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Linux" - category: "mojo" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-mojo-rel" - category: "mojo" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Windows" - category: "mojo" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-builder" - category: "recipe|staging|linux" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-tests" - category: "recipe|staging|linux" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux remote_run Builder" - category: "remote_run" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux remote_run Tester" - category: "remote_run" - } - builders { - name: "buildbucket/luci.chromium.ci/Site Isolation Android" - category: "site_isolation" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-annotator-rel" - category: "network|traffic|annotations" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/win-annotator-rel" - category: "network|traffic|annotations" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Viz" - category: "viz" - } - builders { - name: "buildbucket/luci.chromium.ci/Win 10 Fast Ring" - category: "win10" - } - builders { - name: "buildbucket/luci.chromium.ci/win-pixel-builder-rel" - category: "win10" - } - builders { - name: "buildbucket/luci.chromium.ci/win-pixel-tester-rel" - category: "win10" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64 1803" - category: "win10|1803" - } - builders { - name: "buildbucket/luci.chromium.ci/win-celab-builder-rel" - category: "celab" - } - builders { - name: "buildbucket/luci.chromium.ci/win-celab-tester-rel" - category: "celab" - } -} - -consoles { - header_id: "chromium" - id: "chromium.goma" - name: "chromium.goma" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - include_experimental_builds: true - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma Staging" - category: "clients5" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma Staging" - category: "clients5" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/CrWinGomaStaging" - category: "clients5" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE ToT" - category: "rbe|tot|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE ToT (ATS)" - category: "rbe|tot|linux|rel" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE ToT" - category: "rbe|tot|mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE ToT" - category: "rbe|tot|win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE ToT" - category: "rbe|tot|android arm|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE ToT (ATS)" - category: "rbe|tot|android arm|rel" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (clobber)" - category: "rbe|staging|linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging" - category: "rbe|staging|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg) (clobber)" - category: "rbe|staging|linux|debug" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg)" - category: "rbe|staging|linux|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging (clobber)" - category: "rbe|staging|mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging" - category: "rbe|staging|mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging (dbg)" - category: "rbe|staging|mac|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Staging" - category: "rbe|staging|win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Staging (clobber)" - category: "rbe|staging|win|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Staging" - category: "rbe|staging|android arm|rel" - } -} - -consoles { - header_id: "chromium" - include_experimental_builds: true - id: "luci.chromium.goma" - name: "luci.chromium.goma" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma Staging" - category: "clients5" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma Staging" - category: "clients5" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/CrWinGomaStaging" - category: "clients5" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (clobber)" - category: "rbe|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging" - category: "rbe|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg) (clobber)" - category: "rbe|debug" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg)" - category: "rbe|debug" - } -} - -consoles { - header_id: "chromium" - id: "chromium.goma.fyi" - name: "chromium.goma.fyi" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - include_experimental_builds: true - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod" - category: "prod|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (clobber)" - category: "prod|linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (dbg)" - category: "prod|linux|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (dbg) (clobber)" - category: "prod|linux|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Prod" - category: "prod|mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod" - category: "prod|win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (clobber)" - category: "prod|win|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (dbg)" - category: "prod|win|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (dbg) (clobber)" - category: "prod|win|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod" - category: "prod|android arm|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (clobber)" - category: "prod|android arm|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (dbg)" - category: "prod|android arm|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (dbg) (clobber)" - category: "prod|android arm|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel (Goma RBE FYI)" - category: "prod|chromium.linux|fuchsia|misc" - short_name: "a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel (Goma RBE FYI)" - category: "prod|chromium.linux|fuchsia|misc" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel (Goma RBE FYI)" - category: "tot|chromium.chromiumos|simple|release|x64" - short_name: "rel" - } -} - -# These are used for monitoring builders that have recently been migrated to -# Goma RBE (See crbug.com/950413). -consoles { - header_id: "chromium" - id: "chromium.goma.migration" - name: "chromium.goma.migration" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - include_experimental_builds: true - builders { - name: "buildbucket/luci.chromium.ci/VR Linux" - category: "week1|linux" - short_name: "vr" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Linux" - category: "week1|linux" - short_name: "mojo" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" - category: "week1|linux|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" - category: "week1|linux|dbg" - short_name: "32bit" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux CFI" - category: "week1|linux|cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/CFI Linux CF" - category: "week1|linux|cfi" - short_name: "cf" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Builder" - category: "week1|linux" - short_name: "msan" - } - builders { - name: "buildbucket/luci.chromium.ci/Afl Upload Linux ASan" - category: "week1|linux" - short_name: "afl-asan" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" - category: "week1|linux|webkit" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" - category: "week1|linux|webkit" - short_name: "leak" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" - category: "week1|linux|webkit" - short_name: "msan" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 32 Vk Release (Pixel 2)" - category: "week2a|android|32" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 32 dEQP Vk Release (Pixel 2)" - category: "week2a|android|32deqp" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 Vk Release (Pixel 2)" - category: "week2a|android|64" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 dEQP Vk Release (Pixel 2)" - category: "week2a|android|64deqp" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (NVIDIA Shield TV)" - category: "week2a|android|rel" - short_name: "shdtv" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5)" - category: "week2a|android|rel" - short_name: "n5" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5X)" - category: "week2a|android|rel" - short_name: "n5x" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6)" - category: "week2a|android|rel" - short_name: "n6" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6P)" - category: "week2a|android|rel" - short_name: "n6p" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 9)" - category: "week2a|android|rel" - short_name: "n9" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Pixel 2)" - category: "week2a|android|rel" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI dEQP Release (Nexus 5X)" - category: "week2a|android|deqp" - short_name: "n5x" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Android" - category: "week2a|android|det" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Android (dbg)" - category: "week2a|android|det" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder" - category: "week2b|android|release" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder (dbg)" - category: "week2b|android|debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder ARM64 (dbg)" - category: "week2b|android|debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder" - category: "week2b|linux|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder (dbg)" - category: "week2b|linux|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder" - category: "week2b|mac|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder (dbg)" - category: "week2b|mac|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Android Builder" - category: "week2b|android" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Linux Builder" - category: "week2b|linux" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Mac Builder" - category: "week2b|mac" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASAN Release" - category: "week2c|mac|asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASAN Release Media" - category: "week2c|mac|asan" - short_name: "media" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" - category: "week2c|mac|asan" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Mac ASan" - category: "week2c|mac|asan" - short_name: "fuzz" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" - category: "week2c|mac" - short_name: "webkit" - } - builders { - name: "buildbucket/luci.chromium.ci/Android CFI" - category: "week2c|android" - short_name: "cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/Site Isolation Android" - category: "week2c|android" - short_name: "isolate" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Android" - category: "week2c|android" - short_name: "mojo" - } - builders { - name: "buildbucket/luci.chromium.ci/Android x64 Builder (dbg)" - category: "week2c|android|dbg" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Android x86 Builder (dbg)" - category: "week2c|android|dbg" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView L (dbg)" - category: "week2c|android|dbg|webview" - short_name: "l" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView M (dbg)" - category: "week2c|android|dbg|webview" - short_name: "m" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView N (dbg)" - category: "week2c|android|dbg|webview" - short_name: "n" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView O (dbg)" - category: "week2c|android|dbg|webview" - short_name: "o" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView P FYI (rel)" - category: "week2c|android|rel|webview" - short_name: "p" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Builder" - category: "week2d|linux|dawn" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Builder" - category: "week2d|linux|dawn" - short_name: "deps" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder" - category: "week2d|linux|gpu|fyi" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder (dbg)" - category: "week2d|linux|gpu|fyi" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Ozone Builder" - category: "week2d|linux|gpu|fyi" - short_name: "ozone" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux dEQP Builder" - category: "week2d|linux|gpu|fyi" - short_name: "deqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI GPU TSAN Release" - category: "week2d|linux|gpu|fyi" - short_name: "tsan" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Linux Builder (dbg)" - category: "week2d|linux|gpu" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Viz" - category: "week2d|linux" - short_name: "viz" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux remote_run Builder" - category: "week2d|linux" - short_name: "rem" - } - builders { - name: "buildbucket/luci.chromium.ci/Closure Compilation Linux" - category: "week2d|linux" - short_name: "clsr" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux" - category: "week2d|linux|det" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" - category: "week2d|linux|det" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Linux x64" - category: "week2d|linux" - short_name: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Builder" - category: "week2d|mac|dawn" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Builder" - category: "week2d|mac|dawn" - short_name: "deps" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder" - category: "week2d|mac|gpu|fyi" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder (dbg)" - category: "week2d|mac|gpu|fyi" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac dEQP Builder" - category: "week2d|mac|gpu|fyi" - short_name: "deqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI GPU ASAN Release" - category: "week2d|mac|gpu|fyi" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Mac Builder (dbg)" - category: "week2d|mac|gpu" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac deterministic" - category: "week2d|mac|det" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac deterministic (dbg)" - category: "week2d|mac|det" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Mac" - category: "week2d|mac" - short_name: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder" - category: "week2.5|linux" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Linux Builder" - category: "week2.5|linux" - short_name: "gpu" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-ozone-rel" - category: "week3a|linux" - short_name: "ozone" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-annotator-rel" - category: "week3a|linux" - short_name: "anno" - } - builders { - name: "buildbucket/luci.chromium.ci/linux_chromium_component_updater" - category: "week3a|linux" - short_name: "cc_upd" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-code-coverage" - category: "week3a|linux" - short_name: "code" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-animation-use-time-delta" - category: "week3a|linux|blink" - short_name: "anim" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-heap-concurrent-marking-tsan-rel" - category: "week3a|linux|blink" - short_name: "tsan" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-heap-verification" - category: "week3a|linux|blink" - short_name: "ver" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-builder" - category: "week3a|linux" - short_name: "crtests" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm-dbg" - category: "week3b|android|cronet|arm" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm-rel" - category: "week3b|android|cronet|arm" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-asan-arm-rel" - category: "week3b|android|cronet|arm" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-kitkat-arm-rel" - category: "week3b|android|cronet|arm" - short_name: "kkat" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-lollipop-arm-rel" - category: "week3b|android|cronet|arm" - short_name: "lpop" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm64-rel" - category: "week3b|android|cronet|arm64" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm64-dbg" - category: "week3b|android|cronet|arm64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-rel" - category: "week3b|android|cronet|arm64" - short_name: "marsh" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-perf-rel" - category: "week3b|android|cronet|arm64" - short_name: "perf" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-x86-rel" - category: "week3b|android|cronet|x86" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-x86-dbg" - category: "week3b|android|cronet|x86" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-incremental-dbg" - category: "week3b|android" - short_name: "inc" - } - builders { - name: "buildbucket/luci.chromium.ci/android-kitkat-arm-rel" - category: "week3b|android" - short_name: "kkat" - } - builders { - name: "buildbucket/luci.chromium.ci/android-mojo-webview-rel" - category: "week3b|android" - short_name: "mojo" - } - builders { - name: "buildbucket/luci.chromium.ci/android-pie-arm64-dbg" - category: "week3b|linux" - short_name: "pie" - } - builders: { - name: "buildbucket/luci.chromium.ci/mac-code-coverage-generation" - category: "week3c|mac" - short_name: "code" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-hermetic-upgrade-rel" - category: "week3c|mac" - short_name: "herm" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-jumbo-rel" - category: "week3c|mac" - short_name: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-mojo-rel" - category: "week3c|mac" - short_name: "mojo" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-osxbeta-rel" - category: "week3c|mac" - short_name: "osx" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder" - category: "week3c|mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" - category: "week3c|mac" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Mac Builder" - category: "week3c|mac" - short_name: "gpu" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan" - category: "week4|linux" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan Debug" - category: "week4|linux" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux MSan" - category: "week4|linux" - short_name: "msan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux UBSan" - category: "week4|linux" - short_name: "ubsan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan" - category: "week4|linux|v8arm" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan Debug" - category: "week4|linux|v8arm" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan" - category: "week4|linux32" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan Debug" - category: "week4|linux32" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan" - category: "week4|linux32|v8arm" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan Debug" - category: "week4|linux32|v8arm" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Debug (32-bit x86 with V8-ARM)" - category: "week5|asan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Release (32-bit x86 with V8-ARM)" - category: "week5|asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Release Media (32-bit x86 with V8-ARM)" - category: "week5|asan" - short_name: "media" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Debug" - category: "week6|asan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Release" - category: "week6|asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Release Media" - category: "week6|asan" - short_name: "media" - } - builders { - name: "buildbucket/luci.chromium.ci/MSAN Release (chained origins)" - category: "week7|msan" - short_name: "chain" - } - builders { - name: "buildbucket/luci.chromium.ci/MSAN Release (no origins)" - category: "week7|msan" - short_name: "none" - } - builders { - name: "buildbucket/luci.chromium.ci/TSAN Release" - category: "week8|tsan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/TSAN Debug" - category: "week8|tsan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSan Release" - category: "week9|ubsan" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSan vptr Release" - category: "week9|ubsan|vptr" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSanVptr Linux" - category: "week9|ubsan|vptr" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Android (dbg)" - category: "week10|android" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Audio Linux" - category: "week10|linux" - short_name: "audio" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Linux" - category: "week10|linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" - category: "week11|fuchsia|arm64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" - category: "week11|fuchsia|arm64" - short_name: "cast" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia x64" - category: "week11|fuchsia|x64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" - category: "week11|fuchsia|x64" - short_name: "cast" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel" - category: "week11|fuchsia|fyi" - short_name: "arm64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-dbg" - category: "week11|fuchsia|fyi" - short_name: "x64 dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel" - category: "week11|fuchsia|fyi" - short_name: "x64 rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-marshmallow-arm64-rel" - category: "week13|android" - short_name: "marsh" - } - builders { - name: "buildbucket/luci.chromium.ci/Android Release (Nexus 5X)" - category: "week13|android" - short_name: "n5x" - } - builders { - name: "buildbucket/luci.chromium.ci/Win ASan Release" - category: "win|week1|asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Win ASan Release Media" - category: "win|week1|asan" - short_name: "media" - } -} - -consoles { - header_id: "chromium" - id: "chromium.gpu" - name: "chromium.gpu" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/GPU Win x64 Builder" - category: "Windows" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Win x64 Builder (dbg)" - category: "Windows" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 x64 Debug (NVIDIA)" - category: "Windows" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 x64 Release (NVIDIA)" - category: "Windows" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Mac Builder" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Mac Builder (dbg)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Debug (Intel)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Release (Intel)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Retina Debug (AMD)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Retina Release (AMD)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Linux Builder" - category: "Linux" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Linux Builder (dbg)" - category: "Linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Debug (NVIDIA)" - category: "Linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Release (NVIDIA)" - category: "Linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Android Release (Nexus 5X)" - category: "Android" - } -} - -consoles { - header_id: "chromium" - id: "chromium.gpu.fyi" - name: "chromium.gpu.fyi" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win Builder" - category: "Windows|Builder|Release" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 Builder" - category: "Windows|Builder|Release" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win dEQP Builder" - category: "Windows|Builder|dEQP" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 dEQP Builder" - category: "Windows|Builder|dEQP" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win Builder (dbg)" - category: "Windows|Builder|Debug" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 Builder (dbg)" - category: "Windows|Builder|Debug" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI XR Win x64 Builder" - category: "Windows|Builder|XR" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Debug (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (Intel HD 630)" - category: "Windows|10|x64|Intel" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (Intel UHD 630)" - category: "Windows|10|x64|Intel" - short_name: "uhd" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release XR Perf (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "xr" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 dEQP Release (Intel HD 630)" - category: "Windows|10|x64|Intel" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 dEQP Release (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Exp Release (Intel HD 630)" - category: "Windows|10|x64|Intel" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Exp Release (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (AMD RX 550)" - category: "Windows|10|x64|AMD" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (NVIDIA GeForce GTX 1660)" - category: "Windows|10|x64|Nvidia" - short_name: "gtx" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 SkiaRenderer GL (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "skgl" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x86 Release (NVIDIA)" - category: "Windows|10|x86|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI Debug (AMD)" - category: "Windows|7|x86|AMD" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI dEQP Release (AMD)" - category: "Windows|7|x86|AMD" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI Release (AMD)" - category: "Windows|7|x86|AMD" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI Release (NVIDIA)" - category: "Windows|7|x86|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI x64 Release (NVIDIA)" - category: "Windows|7|x64|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI x64 dEQP Release (NVIDIA)" - category: "Windows|7|x64|Nvidia" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder" - category: "Mac|Builder" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder (dbg)" - category: "Mac|Builder" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac dEQP Builder" - category: "Mac|Builder" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Debug (Intel)" - category: "Mac|Intel" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Release (Intel)" - category: "Mac|Intel" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI dEQP Release Intel" - category: "Mac|Intel" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Release (Intel)" - category: "Mac|Intel" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Pro FYI Release (AMD)" - category: "Mac|AMD|Pro" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI dEQP Release AMD" - category: "Mac|AMD" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Retina Debug (AMD)" - category: "Mac|AMD|Retina" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Retina Release (AMD)" - category: "Mac|AMD|Retina" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Retina Release (AMD)" - category: "Mac|AMD|Retina" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Retina Debug (NVIDIA)" - category: "Mac|Nvidia" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Retina Release (NVIDIA)" - category: "Mac|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Retina Release (NVIDIA)" - category: "Mac|Nvidia" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI GPU ASAN Release" - category: "Mac" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder" - category: "Linux|Builder" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder (dbg)" - category: "Linux|Builder" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Ozone Builder" - category: "Linux|Builder" - short_name: "ozn" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux dEQP Builder" - category: "Linux|Builder" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Experimental Release (Intel HD 630)" - category: "Linux|Intel" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Release (Intel HD 630)" - category: "Linux|Intel" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Release (Intel UHD 630)" - category: "Linux|Intel" - short_name: "uhd" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI dEQP Release (Intel HD 630)" - category: "Linux|Intel" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Ozone (Intel)" - category: "Linux|Intel" - short_name: "ozn" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Release (AMD R7 240)" - category: "Linux" - short_name: "amd" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Release (NVIDIA)" - category: "Linux|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Experimental Release (NVIDIA)" - category: "Linux|Nvidia" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Debug (NVIDIA)" - category: "Linux|Nvidia" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI dEQP Release (NVIDIA)" - category: "Linux|Nvidia" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI SkiaRenderer Vulkan (Intel HD 630)" - category: "Linux|Intel" - short_name: "skv" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI SkiaRenderer Vulkan (NVIDIA)" - category: "Linux|Nvidia" - short_name: "skv" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI GPU TSAN Release" - category: "Linux" - short_name: "tsn" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5)" - category: "Android|L32" - short_name: "N5" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6)" - category: "Android|L32" - short_name: "N6" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5X)" - category: "Android|M64|QCOM" - short_name: "N5X" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6P)" - category: "Android|M64|QCOM" - short_name: "N6P" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 9)" - category: "Android|M64|NVDA" - short_name: "N9" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (NVIDIA Shield TV)" - category: "Android|N64|NVDA" - short_name: "STV" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Pixel 2)" - category: "Android|P32|QCOM" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 32 Vk Release (Pixel 2)" - category: "Android|vk|Q32" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 Vk Release (Pixel 2)" - category: "Android|vk|Q64" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI dEQP Release (Nexus 5X)" - category: "Android|dqp|M64" - short_name: "N5X" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 32 dEQP Vk Release (Pixel 2)" - category: "Android|dqp|vk|Q32" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 dEQP Vk Release (Pixel 2)" - category: "Android|dqp|vk|Q64" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI SkiaRenderer GL (Nexus 5X)" - category: "Android|skgl|M64" - short_name: "N5X" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI SkiaRenderer Vulkan (Pixel 2)" - category: "Android|skv|P32" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Perf Android 64 Builder" - category: "Android|Perf|Builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 Perf (Pixel 2)" - category: "Android|Perf|Q64" - short_name: "P2" - } -} - -consoles { - header_id: "chromium" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < id: "chromium.dawn" name: "chromium.dawn" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - builders { + builders: < name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Builder" category: "ToT|Linux|Builder" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Release (Intel HD 630)" category: "ToT|Linux|Intel" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Release (NVIDIA)" category: "ToT|Linux|Nvidia" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Builder" category: "ToT|Mac|Builder" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Release (AMD)" category: "ToT|Mac|AMD" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Release (Intel)" category: "ToT|Mac|Intel" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 Builder" category: "ToT|Windows|Builder" short_name: "x86" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 Builder" category: "ToT|Windows|Builder" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 Release (Intel HD 630)" category: "ToT|Windows|Intel" short_name: "x86" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 Release (Intel HD 630)" category: "ToT|Windows|Intel" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 Release (NVIDIA)" category: "ToT|Windows|Nvidia" short_name: "x86" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 Release (NVIDIA)" category: "ToT|Windows|Nvidia" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Builder" category: "DEPS|Linux|Builder" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Release (Intel HD 630)" category: "DEPS|Linux|Intel" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Release (NVIDIA)" category: "DEPS|Linux|Nvidia" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Builder" category: "DEPS|Mac|Builder" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Release (AMD)" category: "DEPS|Mac|AMD" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Release (Intel)" category: "DEPS|Mac|Intel" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 DEPS Builder" category: "DEPS|Windows|Builder" short_name: "x86" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 DEPS Builder" category: "DEPS|Windows|Builder" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 DEPS Release (Intel HD 630)" category: "DEPS|Windows|Intel" short_name: "x86" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 DEPS Release (Intel HD 630)" category: "DEPS|Windows|Intel" short_name: "x64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 DEPS Release (NVIDIA)" category: "DEPS|Windows|Nvidia" short_name: "x86" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 DEPS Release (NVIDIA)" category: "DEPS|Windows|Nvidia" short_name: "x64" - } -} - -consoles { - header_id: "chromium" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.fuzz" + name: "chromium.fuzz" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/Afl Upload Linux ASan" + category: "afl" + short_name: "afl" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win ASan Release" + category: "win asan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win ASan Release Media" + category: "win asan" + short_name: "med" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASAN Release" + category: "mac asan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASAN Release Media" + category: "mac asan" + short_name: "med" + > + builders: < + name: "buildbucket/luci.chromium.ci/ChromiumOS ASAN Release" + short_name: "cro" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASAN Debug" + category: "linux asan" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASAN Release" + category: "linux asan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASAN Release Media" + category: "linux asan" + short_name: "med" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASan Debug (32-bit x86 with V8-ARM)" + category: "linux asan|x64 v8-ARM" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASan Release (32-bit x86 with V8-ARM)" + category: "linux asan|x64 v8-ARM" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASan Release Media (32-bit x86 with V8-ARM)" + category: "linux asan|x64 v8-ARM" + short_name: "med" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Chrome OS ASan" + category: "libfuzz" + short_name: "chromeos-asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan" + category: "libfuzz" + short_name: "linux32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan Debug" + category: "libfuzz" + short_name: "linux32-dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan" + category: "libfuzz" + short_name: "linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan Debug" + category: "libfuzz" + short_name: "linux-dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux MSan" + category: "libfuzz" + short_name: "linux-msan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux UBSan" + category: "libfuzz" + short_name: "linux-ubsan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Mac ASan" + category: "libfuzz" + short_name: "mac-asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Windows ASan" + category: "libfuzz" + short_name: "win-asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan" + category: "libfuzz" + short_name: "arm" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan Debug" + category: "libfuzz" + short_name: "arm-dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan" + category: "libfuzz" + short_name: "arm64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan Debug" + category: "libfuzz" + short_name: "arm64-dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/MSAN Release (chained origins)" + category: "linux msan" + short_name: "org" + > + builders: < + name: "buildbucket/luci.chromium.ci/MSAN Release (no origins)" + category: "linux msan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/TSAN Debug" + category: "linux tsan" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/TSAN Release" + category: "linux tsan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/UBSan Release" + category: "linux UBSan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/UBSan vptr Release" + category: "linux UBSan" + short_name: "vpt" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.fyi" + name: "chromium.fyi" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/Closure Compilation Linux" + category: "closure_compilation" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-code-coverage" + category: "code_coverage" + short_name: "and" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-code-coverage" + category: "code_coverage" + short_name: "lnx" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-vm-code-coverage" + category: "code_coverage" + short_name: "vm" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-chromeos-code-coverage" + category: "code_coverage" + short_name: "lcr" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-code-coverage-generation" + category: "code_coverage" + short_name: "mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-code-coverage" + category: "code_coverage" + short_name: "ios" + > + builders: < + name: "buildbucket/luci.chromium.ci/win10-code-coverage" + category: "code_coverage" + short_name: "win" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-cronet" + category: "cronet" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-hermetic-upgrade-rel" + category: "mac" + short_name: "herm" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-osxbeta-rel" + category: "mac" + short_name: "beta" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-jumbo-rel" + category: "mac" + short_name: "jmb" + > + builders: < + name: "buildbucket/luci.chromium.ci/win-jumbo-rel" + category: "win" + short_name: "jmb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac deterministic" + category: "deterministic|mac" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac deterministic (dbg)" + category: "deterministic|mac" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel" + category: "fuchsia" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-dbg" + category: "fuchsia" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel" + category: "fuchsia" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder Goma Canary" + category: "goma|linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary" + category: "goma|linux" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary-localoutputcache" + category: "goma|linux" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary" + category: "goma|mac|debug" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary (clobber)" + category: "goma|mac|debug" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder Goma Canary" + category: "goma|mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary" + category: "goma|mac" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary-localoutputcache" + category: "goma|mac" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Canary" + category: "goma|win|debug" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Canary" + category: "goma|win|debug" + short_name: "7" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder Goma Canary" + category: "goma|win" + > + builders: < + name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-canary-localoutputcache" + category: "goma|win" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Canary" + category: "goma|win" + short_name: "7" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Canary LocalOutputCache" + category: "goma|win|cl.exe" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Canary" + category: "goma|win|cl.exe" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-canary" + category: "goma|chromeos" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-vm-tests" + category: "chromeos" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel-hw-tests" + category: "chromos" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device-goma-canary-clobber" + category: "goma|ios" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-cr-recipe" + category: "iOS" + short_name: "chr" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-webkit-tot" + category: "iOS" + short_name: "wk" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios13-sdk-device" + category: "iOS|iOS13" + short_name: "dev" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios13-sdk-simulator" + category: "iOS|iOS13" + short_name: "sim" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios13-beta-simulator" + category: "iOS|iOS13" + short_name: "ios13" + > + builders: < + name: "buildbucket/luci.chromium.ci/Jumbo Linux x64" + category: "jumbo" + > + builders: < + name: "buildbucket/luci.chromium.ci/Jumbo Mac" + category: "jumbo" + > + builders: < + name: "buildbucket/luci.chromium.ci/Jumbo Win x64" + category: "jumbo" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-blink-animation-use-time-delta" + category: "linux|blink" + short_name: "TD" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-blink-heap-concurrent-marking-tsan-rel" + category: "linux|blink" + short_name: "CM" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-blink-heap-verification" + category: "linux|blink" + short_name: "VF" + > + builders: < + name: "buildbucket/luci.chromium.ci/VR Linux" + category: "linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-bfcache-debug" + category: "linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-oor-cors-rel" + category: "linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-fieldtrial-rel" + category: "linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-wpt-fyi-rel" + category: "linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mojo Android" + category: "mojo" + short_name: "and" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-mojo-webview-rel" + category: "mojo" + short_name: "aw" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mojo ChromiumOS" + category: "mojo" + short_name: "cr" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mojo Linux" + category: "mojo" + short_name: "lnx" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-mojo-rel" + category: "mojo" + short_name: "mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mojo Windows" + category: "mojo" + short_name: "win" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-builder" + category: "recipe|staging|linux" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-tests" + category: "recipe|staging|linux" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux remote_run Builder" + category: "remote_run" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux remote_run Tester" + category: "remote_run" + > + builders: < + name: "buildbucket/luci.chromium.ci/Site Isolation Android" + category: "site_isolation" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-annotator-rel" + category: "network|traffic|annotations" + short_name: "lnx" + > + builders: < + name: "buildbucket/luci.chromium.ci/win-annotator-rel" + category: "network|traffic|annotations" + short_name: "win" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Viz" + category: "viz" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win 10 Fast Ring" + category: "win10" + > + builders: < + name: "buildbucket/luci.chromium.ci/win-pixel-builder-rel" + category: "win10" + > + builders: < + name: "buildbucket/luci.chromium.ci/win-pixel-tester-rel" + category: "win10" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 Tests x64 1803" + category: "win10|1803" + > + builders: < + name: "buildbucket/luci.chromium.ci/win-celab-builder-rel" + category: "celab" + > + builders: < + name: "buildbucket/luci.chromium.ci/win-celab-tester-rel" + category: "celab" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.fyi.goma" + name: "chromium.fyi.goma" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder Goma Canary" + category: "win|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Canary" + category: "win|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-canary-localoutputcache" + category: "win|rel" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Canary LocalOutputCache" + category: "cl.exe|rel" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Canary" + category: "win7|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Canary" + category: "win7|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Canary" + category: "cl.exe|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder Goma Canary" + category: "mac|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary" + category: "mac|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary" + category: "mac|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary (clobber)" + category: "mac|dbg" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary-localoutputcache" + category: "mac|rel" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-canary" + category: "cros|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder Goma Canary" + category: "linux|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary" + category: "linux|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary-localoutputcache" + category: "linux|rel" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-canary" + category: "android|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device-goma-canary-clobber" + category: "ios|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-canary" + category: "rbe|linux|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-ats-canary" + category: "rbe|linux|rel" + short_name: "ats" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder Goma RBE Canary" + category: "rbe|linux|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-rbe-canary" + category: "rbe|cros|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-canary" + category: "rbe|android|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-ats-canary" + category: "rbe|android|dbg" + short_name: "ats" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-rbe-canary" + category: "rbe|mac|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma RBE Canary (clobber)" + category: "rbe|mac|dbg" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device-goma-rbe-canary-clobber" + category: "rbe|ios" + short_name: "clb" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.goma" + name: "chromium.goma" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma Staging" + category: "clients5" + short_name: "lnx" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Mac Goma Staging" + category: "clients5" + short_name: "mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/CrWinGomaStaging" + category: "clients5" + short_name: "win" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE ToT" + category: "rbe|tot|linux|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE ToT (ATS)" + category: "rbe|tot|linux|rel" + short_name: "ats" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE ToT" + category: "rbe|tot|mac|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE ToT" + category: "rbe|tot|win|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE ToT" + category: "rbe|tot|android arm|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE ToT (ATS)" + category: "rbe|tot|android arm|rel" + short_name: "ats" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (clobber)" + category: "rbe|staging|linux|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging" + category: "rbe|staging|linux|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg) (clobber)" + category: "rbe|staging|linux|debug" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg)" + category: "rbe|staging|linux|debug" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging (clobber)" + category: "rbe|staging|mac|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging" + category: "rbe|staging|mac|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging (dbg)" + category: "rbe|staging|mac|debug" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Staging" + category: "rbe|staging|win|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Staging (clobber)" + category: "rbe|staging|win|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Staging" + category: "rbe|staging|android arm|rel" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > + include_experimental_builds: true +> +consoles: < + id: "chromium.goma.fyi" + name: "chromium.goma.fyi" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod" + category: "prod|linux|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (clobber)" + category: "prod|linux|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (dbg)" + category: "prod|linux|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (dbg) (clobber)" + category: "prod|linux|dbg" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Prod" + category: "prod|mac|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod" + category: "prod|win|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (clobber)" + category: "prod|win|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (dbg)" + category: "prod|win|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (dbg) (clobber)" + category: "prod|win|dbg" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod" + category: "prod|android arm|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (clobber)" + category: "prod|android arm|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (dbg)" + category: "prod|android arm|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (dbg) (clobber)" + category: "prod|android arm|dbg" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel (Goma RBE FYI)" + category: "prod|chromium.linux|fuchsia|misc" + short_name: "a64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel (Goma RBE FYI)" + category: "prod|chromium.linux|fuchsia|misc" + short_name: "x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel (Goma RBE FYI)" + category: "tot|chromium.chromiumos|simple|release|x64" + short_name: "rel" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > + include_experimental_builds: true +> +consoles: < + id: "chromium.goma.migration" + name: "chromium.goma.migration" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/VR Linux" + category: "week1|linux" + short_name: "vr" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mojo Linux" + category: "week1|linux" + short_name: "mojo" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" + category: "week1|linux|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" + category: "week1|linux|dbg" + short_name: "32bit" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux CFI" + category: "week1|linux|cfi" + > + builders: < + name: "buildbucket/luci.chromium.ci/CFI Linux CF" + category: "week1|linux|cfi" + short_name: "cf" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux MSan Builder" + category: "week1|linux" + short_name: "msan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Afl Upload Linux ASan" + category: "week1|linux" + short_name: "afl-asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" + category: "week1|linux|webkit" + short_name: "asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" + category: "week1|linux|webkit" + short_name: "leak" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" + category: "week1|linux|webkit" + short_name: "msan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 32 Vk Release (Pixel 2)" + category: "week2a|android|32" + short_name: "p2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 32 dEQP Vk Release (Pixel 2)" + category: "week2a|android|32deqp" + short_name: "p2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 64 Vk Release (Pixel 2)" + category: "week2a|android|64" + short_name: "p2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 64 dEQP Vk Release (Pixel 2)" + category: "week2a|android|64deqp" + short_name: "p2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (NVIDIA Shield TV)" + category: "week2a|android|rel" + short_name: "shdtv" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5)" + category: "week2a|android|rel" + short_name: "n5" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5X)" + category: "week2a|android|rel" + short_name: "n5x" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6)" + category: "week2a|android|rel" + short_name: "n6" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6P)" + category: "week2a|android|rel" + short_name: "n6p" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 9)" + category: "week2a|android|rel" + short_name: "n9" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Pixel 2)" + category: "week2a|android|rel" + short_name: "p2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI dEQP Release (Nexus 5X)" + category: "week2a|android|deqp" + short_name: "n5x" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Android" + category: "week2a|android|det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Android (dbg)" + category: "week2a|android|det" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder" + category: "week2b|android|release" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder (dbg)" + category: "week2b|android|debug|builder" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder ARM64 (dbg)" + category: "week2b|android|debug|builder" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder" + category: "week2b|linux|release" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder (dbg)" + category: "week2b|linux|debug" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder" + category: "week2b|mac|release" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder (dbg)" + category: "week2b|mac|debug" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Android Builder" + category: "week2b|android" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Linux Builder" + category: "week2b|linux" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Mac Builder" + category: "week2b|mac" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASAN Release" + category: "week2c|mac|asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASAN Release Media" + category: "week2c|mac|asan" + short_name: "media" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" + category: "week2c|mac|asan" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Mac ASan" + category: "week2c|mac|asan" + short_name: "fuzz" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" + category: "week2c|mac" + short_name: "webkit" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android CFI" + category: "week2c|android" + short_name: "cfi" + > + builders: < + name: "buildbucket/luci.chromium.ci/Site Isolation Android" + category: "week2c|android" + short_name: "isolate" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mojo Android" + category: "week2c|android" + short_name: "mojo" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android x64 Builder (dbg)" + category: "week2c|android|dbg" + short_name: "x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android x86 Builder (dbg)" + category: "week2c|android|dbg" + short_name: "x86" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android WebView L (dbg)" + category: "week2c|android|dbg|webview" + short_name: "l" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android WebView M (dbg)" + category: "week2c|android|dbg|webview" + short_name: "m" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android WebView N (dbg)" + category: "week2c|android|dbg|webview" + short_name: "n" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android WebView O (dbg)" + category: "week2c|android|dbg|webview" + short_name: "o" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android WebView P FYI (rel)" + category: "week2c|android|rel|webview" + short_name: "p" + > + builders: < + name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Builder" + category: "week2d|linux|dawn" + > + builders: < + name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Builder" + category: "week2d|linux|dawn" + short_name: "deps" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder" + category: "week2d|linux|gpu|fyi" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder (dbg)" + category: "week2d|linux|gpu|fyi" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Linux Ozone Builder" + category: "week2d|linux|gpu|fyi" + short_name: "ozone" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Linux dEQP Builder" + category: "week2d|linux|gpu|fyi" + short_name: "deqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI GPU TSAN Release" + category: "week2d|linux|gpu|fyi" + short_name: "tsan" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Linux Builder (dbg)" + category: "week2d|linux|gpu" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Viz" + category: "week2d|linux" + short_name: "viz" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux remote_run Builder" + category: "week2d|linux" + short_name: "rem" + > + builders: < + name: "buildbucket/luci.chromium.ci/Closure Compilation Linux" + category: "week2d|linux" + short_name: "clsr" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Linux" + category: "week2d|linux|det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" + category: "week2d|linux|det" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Jumbo Linux x64" + category: "week2d|linux" + short_name: "jumbo" + > + builders: < + name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Builder" + category: "week2d|mac|dawn" + > + builders: < + name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Builder" + category: "week2d|mac|dawn" + short_name: "deps" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder" + category: "week2d|mac|gpu|fyi" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder (dbg)" + category: "week2d|mac|gpu|fyi" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Mac dEQP Builder" + category: "week2d|mac|gpu|fyi" + short_name: "deqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI GPU ASAN Release" + category: "week2d|mac|gpu|fyi" + short_name: "asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Mac Builder (dbg)" + category: "week2d|mac|gpu" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac deterministic" + category: "week2d|mac|det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac deterministic (dbg)" + category: "week2d|mac|det" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Jumbo Mac" + category: "week2d|mac" + short_name: "jumbo" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder" + category: "week2.5|linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Linux Builder" + category: "week2.5|linux" + short_name: "gpu" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-ozone-rel" + category: "week3a|linux" + short_name: "ozone" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-annotator-rel" + category: "week3a|linux" + short_name: "anno" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux_chromium_component_updater" + category: "week3a|linux" + short_name: "cc_upd" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-code-coverage" + category: "week3a|linux" + short_name: "code" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-blink-animation-use-time-delta" + category: "week3a|linux|blink" + short_name: "anim" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-blink-heap-concurrent-marking-tsan-rel" + category: "week3a|linux|blink" + short_name: "tsan" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-blink-heap-verification" + category: "week3a|linux|blink" + short_name: "ver" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-builder" + category: "week3a|linux" + short_name: "crtests" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-arm-dbg" + category: "week3b|android|cronet|arm" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-arm-rel" + category: "week3b|android|cronet|arm" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-asan-arm-rel" + category: "week3b|android|cronet|arm" + short_name: "asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-kitkat-arm-rel" + category: "week3b|android|cronet|arm" + short_name: "kkat" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-lollipop-arm-rel" + category: "week3b|android|cronet|arm" + short_name: "lpop" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-arm64-rel" + category: "week3b|android|cronet|arm64" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-arm64-dbg" + category: "week3b|android|cronet|arm64" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-rel" + category: "week3b|android|cronet|arm64" + short_name: "marsh" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-perf-rel" + category: "week3b|android|cronet|arm64" + short_name: "perf" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-x86-rel" + category: "week3b|android|cronet|x86" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-cronet-x86-dbg" + category: "week3b|android|cronet|x86" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-incremental-dbg" + category: "week3b|android" + short_name: "inc" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-kitkat-arm-rel" + category: "week3b|android" + short_name: "kkat" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-mojo-webview-rel" + category: "week3b|android" + short_name: "mojo" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-pie-arm64-dbg" + category: "week3b|linux" + short_name: "pie" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-code-coverage-generation" + category: "week3c|mac" + short_name: "code" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-hermetic-upgrade-rel" + category: "week3c|mac" + short_name: "herm" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-jumbo-rel" + category: "week3c|mac" + short_name: "jumbo" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-mojo-rel" + category: "week3c|mac" + short_name: "mojo" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-osxbeta-rel" + category: "week3c|mac" + short_name: "osx" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder" + category: "week3c|mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" + category: "week3c|mac" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Mac Builder" + category: "week3c|mac" + short_name: "gpu" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan" + category: "week4|linux" + short_name: "asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan Debug" + category: "week4|linux" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux MSan" + category: "week4|linux" + short_name: "msan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux UBSan" + category: "week4|linux" + short_name: "ubsan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan" + category: "week4|linux|v8arm" + short_name: "asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan Debug" + category: "week4|linux|v8arm" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan" + category: "week4|linux32" + short_name: "asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan Debug" + category: "week4|linux32" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan" + category: "week4|linux32|v8arm" + short_name: "asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan Debug" + category: "week4|linux32|v8arm" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASan Debug (32-bit x86 with V8-ARM)" + category: "week5|asan" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASan Release (32-bit x86 with V8-ARM)" + category: "week5|asan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASan Release Media (32-bit x86 with V8-ARM)" + category: "week5|asan" + short_name: "media" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASAN Debug" + category: "week6|asan" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASAN Release" + category: "week6|asan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/ASAN Release Media" + category: "week6|asan" + short_name: "media" + > + builders: < + name: "buildbucket/luci.chromium.ci/MSAN Release (chained origins)" + category: "week7|msan" + short_name: "chain" + > + builders: < + name: "buildbucket/luci.chromium.ci/MSAN Release (no origins)" + category: "week7|msan" + short_name: "none" + > + builders: < + name: "buildbucket/luci.chromium.ci/TSAN Release" + category: "week8|tsan" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/TSAN Debug" + category: "week8|tsan" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/UBSan Release" + category: "week9|ubsan" + > + builders: < + name: "buildbucket/luci.chromium.ci/UBSan vptr Release" + category: "week9|ubsan|vptr" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/UBSanVptr Linux" + category: "week9|ubsan|vptr" + short_name: "lnx" + > + builders: < + name: "buildbucket/luci.chromium.ci/Cast Android (dbg)" + category: "week10|android" + > + builders: < + name: "buildbucket/luci.chromium.ci/Cast Audio Linux" + category: "week10|linux" + short_name: "audio" + > + builders: < + name: "buildbucket/luci.chromium.ci/Cast Linux" + category: "week10|linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" + category: "week11|fuchsia|arm64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" + category: "week11|fuchsia|arm64" + short_name: "cast" + > + builders: < + name: "buildbucket/luci.chromium.ci/Fuchsia x64" + category: "week11|fuchsia|x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" + category: "week11|fuchsia|x64" + short_name: "cast" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel" + category: "week11|fuchsia|fyi" + short_name: "arm64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-dbg" + category: "week11|fuchsia|fyi" + short_name: "x64 dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel" + category: "week11|fuchsia|fyi" + short_name: "x64 rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-marshmallow-arm64-rel" + category: "week13|android" + short_name: "marsh" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android Release (Nexus 5X)" + category: "week13|android" + short_name: "n5x" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win ASan Release" + category: "win|week1|asan" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win ASan Release Media" + category: "win|week1|asan" + short_name: "media" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > + include_experimental_builds: true +> +consoles: < + id: "chromium.gpu" + name: "chromium.gpu" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/GPU Win x64 Builder" + category: "Windows" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Win x64 Builder (dbg)" + category: "Windows" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 x64 Debug (NVIDIA)" + category: "Windows" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 x64 Release (NVIDIA)" + category: "Windows" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Mac Builder" + category: "Mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Mac Builder (dbg)" + category: "Mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Debug (Intel)" + category: "Mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Release (Intel)" + category: "Mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Retina Debug (AMD)" + category: "Mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Retina Release (AMD)" + category: "Mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Linux Builder" + category: "Linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU Linux Builder (dbg)" + category: "Linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Debug (NVIDIA)" + category: "Linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Release (NVIDIA)" + category: "Linux" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android Release (Nexus 5X)" + category: "Android" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.gpu.fyi" + name: "chromium.gpu.fyi" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Win Builder" + category: "Windows|Builder|Release" + short_name: "x86" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 Builder" + category: "Windows|Builder|Release" + short_name: "x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Win dEQP Builder" + category: "Windows|Builder|dEQP" + short_name: "x86" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 dEQP Builder" + category: "Windows|Builder|dEQP" + short_name: "x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Win Builder (dbg)" + category: "Windows|Builder|Debug" + short_name: "x86" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 Builder (dbg)" + category: "Windows|Builder|Debug" + short_name: "x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI XR Win x64 Builder" + category: "Windows|Builder|XR" + short_name: "x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Debug (NVIDIA)" + category: "Windows|10|x64|Nvidia" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (Intel HD 630)" + category: "Windows|10|x64|Intel" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (Intel UHD 630)" + category: "Windows|10|x64|Intel" + short_name: "uhd" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (NVIDIA)" + category: "Windows|10|x64|Nvidia" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release XR Perf (NVIDIA)" + category: "Windows|10|x64|Nvidia" + short_name: "xr" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 dEQP Release (Intel HD 630)" + category: "Windows|10|x64|Intel" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 dEQP Release (NVIDIA)" + category: "Windows|10|x64|Nvidia" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Exp Release (Intel HD 630)" + category: "Windows|10|x64|Intel" + short_name: "exp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Exp Release (NVIDIA)" + category: "Windows|10|x64|Nvidia" + short_name: "exp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (AMD RX 550)" + category: "Windows|10|x64|AMD" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (NVIDIA GeForce GTX 1660)" + category: "Windows|10|x64|Nvidia" + short_name: "gtx" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x64 SkiaRenderer GL (NVIDIA)" + category: "Windows|10|x64|Nvidia" + short_name: "skgl" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 FYI x86 Release (NVIDIA)" + category: "Windows|10|x86|Nvidia" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 FYI Debug (AMD)" + category: "Windows|7|x86|AMD" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 FYI dEQP Release (AMD)" + category: "Windows|7|x86|AMD" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 FYI Release (AMD)" + category: "Windows|7|x86|AMD" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 FYI Release (NVIDIA)" + category: "Windows|7|x86|Nvidia" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 FYI x64 Release (NVIDIA)" + category: "Windows|7|x64|Nvidia" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 FYI x64 dEQP Release (NVIDIA)" + category: "Windows|7|x64|Nvidia" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder" + category: "Mac|Builder" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder (dbg)" + category: "Mac|Builder" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Mac dEQP Builder" + category: "Mac|Builder" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Debug (Intel)" + category: "Mac|Intel" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Release (Intel)" + category: "Mac|Intel" + short_name: "exp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI dEQP Release Intel" + category: "Mac|Intel" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Release (Intel)" + category: "Mac|Intel" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Pro FYI Release (AMD)" + category: "Mac|AMD|Pro" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI dEQP Release AMD" + category: "Mac|AMD" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Retina Debug (AMD)" + category: "Mac|AMD|Retina" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Retina Release (AMD)" + category: "Mac|AMD|Retina" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Retina Release (AMD)" + category: "Mac|AMD|Retina" + short_name: "exp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Retina Debug (NVIDIA)" + category: "Mac|Nvidia" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Retina Release (NVIDIA)" + category: "Mac|Nvidia" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Retina Release (NVIDIA)" + category: "Mac|Nvidia" + short_name: "exp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac FYI GPU ASAN Release" + category: "Mac" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder" + category: "Linux|Builder" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder (dbg)" + category: "Linux|Builder" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Linux Ozone Builder" + category: "Linux|Builder" + short_name: "ozn" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Linux dEQP Builder" + category: "Linux|Builder" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI Experimental Release (Intel HD 630)" + category: "Linux|Intel" + short_name: "exp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI Release (Intel HD 630)" + category: "Linux|Intel" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI Release (Intel UHD 630)" + category: "Linux|Intel" + short_name: "uhd" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI dEQP Release (Intel HD 630)" + category: "Linux|Intel" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI Ozone (Intel)" + category: "Linux|Intel" + short_name: "ozn" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI Release (AMD R7 240)" + category: "Linux" + short_name: "amd" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI Release (NVIDIA)" + category: "Linux|Nvidia" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI Experimental Release (NVIDIA)" + category: "Linux|Nvidia" + short_name: "exp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI Debug (NVIDIA)" + category: "Linux|Nvidia" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI dEQP Release (NVIDIA)" + category: "Linux|Nvidia" + short_name: "dqp" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI SkiaRenderer Vulkan (Intel HD 630)" + category: "Linux|Intel" + short_name: "skv" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI SkiaRenderer Vulkan (NVIDIA)" + category: "Linux|Nvidia" + short_name: "skv" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux FYI GPU TSAN Release" + category: "Linux" + short_name: "tsn" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5)" + category: "Android|L32" + short_name: "N5" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6)" + category: "Android|L32" + short_name: "N6" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5X)" + category: "Android|M64|QCOM" + short_name: "N5X" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6P)" + category: "Android|M64|QCOM" + short_name: "N6P" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 9)" + category: "Android|M64|NVDA" + short_name: "N9" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (NVIDIA Shield TV)" + category: "Android|N64|NVDA" + short_name: "STV" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI Release (Pixel 2)" + category: "Android|P32|QCOM" + short_name: "P2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 32 Vk Release (Pixel 2)" + category: "Android|vk|Q32" + short_name: "P2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 64 Vk Release (Pixel 2)" + category: "Android|vk|Q64" + short_name: "P2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI dEQP Release (Nexus 5X)" + category: "Android|dqp|M64" + short_name: "N5X" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 32 dEQP Vk Release (Pixel 2)" + category: "Android|dqp|vk|Q32" + short_name: "P2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 64 dEQP Vk Release (Pixel 2)" + category: "Android|dqp|vk|Q64" + short_name: "P2" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI SkiaRenderer GL (Nexus 5X)" + category: "Android|skgl|M64" + short_name: "N5X" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI SkiaRenderer Vulkan (Pixel 2)" + category: "Android|skv|P32" + short_name: "P2" + > + builders: < + name: "buildbucket/luci.chromium.ci/GPU FYI Perf Android 64 Builder" + category: "Android|Perf|Builder" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android FYI 64 Perf (Pixel 2)" + category: "Android|Perf|Q64" + short_name: "P2" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.linux" + name: "chromium.linux" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder" + category: "release" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Tests" + category: "release" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-gcc-rel" + category: "release" + short_name: "gcc" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-jumbo-rel" + category: "release" + short_name: "jmb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Linux" + category: "release" + short_name: "det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Leak Detection Linux" + category: "release" + short_name: "lk" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-ozone-rel" + category: "release" + short_name: "ozo" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-trusty-rel" + category: "release" + short_name: "tru" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" + category: "debug|builder" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" + category: "debug|builder" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" + category: "debug|builder" + short_name: "det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Tests (dbg)(1)" + category: "debug|tester" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Cast Linux" + category: "cast" + short_name: "vid" + > + builders: < + name: "buildbucket/luci.chromium.ci/Cast Audio Linux" + category: "cast" + short_name: "aud" + > + builders: < + name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" + category: "fuchsia|a64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" + category: "fuchsia|cast" + short_name: "a64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" + category: "fuchsia|cast" + short_name: "x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-x64-dbg" + category: "fuchsia|x64" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Fuchsia (dbg)" + category: "fuchsia|x64" + short_name: "det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Fuchsia x64" + category: "fuchsia|x64" + short_name: "rel" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.mac" + name: "chromium.mac" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder" + category: "release" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.10 Tests" + category: "release" + short_name: "10" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.11 Tests" + category: "release" + short_name: "11" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.12 Tests" + category: "release" + short_name: "12" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.13 Tests" + category: "release" + short_name: "13" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" + category: "release" + short_name: "ret" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" + category: "debug" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.13 Tests (dbg)" + category: "debug" + short_name: "13" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device" + category: "ios|default" + short_name: "dev" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator" + category: "ios|default" + short_name: "sim" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-full-configs" + category: "ios|default" + short_name: "ful" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-noncq" + category: "ios|default" + short_name: "non" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device-xcode-clang" + category: "ios|xcode" + short_name: "dev" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-xcode-clang" + category: "ios|xcode" + short_name: "sim" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-slimnav" + category: "ios|misc" + short_name: "slim" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.memory" + name: "chromium.memory" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/win-asan" + category: "win" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" + category: "mac" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASan 64 Tests (1)" + category: "mac" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux TSan Builder" + category: "linux|TSan v2" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux TSan Tests" + category: "linux|TSan v2" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ASan LSan Builder" + category: "linux|asan lsan" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ASan LSan Tests (1)" + category: "linux|asan lsan" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ASan Tests (sandboxed)" + category: "linux|asan lsan" + short_name: "sbx" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux MSan Builder" + category: "linux|msan" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux MSan Tests" + category: "linux|msan" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" + category: "linux|webkit" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" + category: "linux|webkit" + short_name: "msn" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" + category: "linux|webkit" + short_name: "lk" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Builder" + category: "cros|asan" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Tests (1)" + category: "cros|asan" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Builder" + category: "cros|msan" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Tests" + category: "cros|msan" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-asan" + category: "android" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android CFI" + category: "cfi" + short_name: "and" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux CFI" + category: "cfi" + short_name: "lnx" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < id: "chromium.webrtc" name: "chromium.webrtc" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - builders { + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Android Builder" category: "android" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Android Tester" category: "android" short_name: "tst" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Linux Builder" category: "linux" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Linux Tester" category: "linux" short_name: "tst" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Mac Builder" category: "mac" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Mac Tester" category: "mac" short_name: "tst" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Win Builder" category: "win" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Win10 Tester" category: "win" short_name: "10" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Win7 Tester" category: "win" short_name: "7" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Win8 Tester" category: "win" short_name: "8" - } -} - -consoles { - header_id: "chromium" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < id: "chromium.webrtc.fyi" name: "chromium.webrtc.fyi" repo_url: "https://webrtc.googlesource.com/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - builders { + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder (dbg)" category: "android|debug|builder" short_name: "32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder ARM64 (dbg)" category: "android|debug|builder" short_name: "64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)" category: "android|debug|tester" short_name: "K" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)" category: "android|debug|tester" short_name: "M" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder" category: "android|release" short_name: "32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder (dbg)" category: "linux|debug" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder" category: "linux|release" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Tester" category: "linux|release" short_name: "tst" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder (dbg)" category: "mac|debug" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder" category: "mac|release" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Tester" category: "mac|release" short_name: "tst" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win Builder (dbg)" category: "win|debug" short_name: "bld" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win Builder" category: "win|release|builder" short_name: "32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win10 Tester" category: "win|release|tester" short_name: "10" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win7 Tester" category: "win|release|tester" short_name: "7" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win8 Tester" category: "win|release|tester" short_name: "8" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI ios-device" category: "ios" short_name: "dev" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator" category: "ios" short_name: "sim" - } -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.android" - name: "tryserver.chromium.android" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "chromium.win" + name: "chromium.win" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/android-opus-kitkat-arm-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android-binary-size" - } - builders { - name: "buildbucket/luci.chromium.try/android_blink_rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_cfi_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_clang_dbg_recipe" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_x64_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_x86_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_cronet" - } - builders { - name: "buildbucket/luci.chromium.try/android-cronet-arm-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_cronet_tester" - } - builders { - name: "buildbucket/luci.chromium.try/android_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-marshmallow-x86-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_unswarmed_pixel_aosp" - } - builders { - name: "buildbucket/luci.chromium.try/cast_shell_android" - } - builders { - name: "buildbucket/luci.chromium.try/linux_android_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android-kitkat-arm-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-5-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-6-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-deqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-skgl-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-6p-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-9-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-n-nvidia-shield-tv-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-skv-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-android-m-nexus-5x-64" - } - builders { - name: "buildbucket/luci.chromium.try/android-deterministic-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-deterministic-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/try-nougat-phone-tester" - } - builders { - name: "buildbucket/luci.chromium.try/android-oreo-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-x86-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-marshmallow-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-nougat-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-oreo-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-dbg" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.chromiumos" - name: "tryserver.chromium.chromiumos" + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder" + category: "release|builder" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win x64 Builder" + category: "release|builder" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 (32) Tests" + category: "release|tester" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Tests (1)" + category: "release|tester" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win 7 Tests x64 (1)" + category: "release|tester" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 Tests x64" + category: "release|tester" + short_name: "w10" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win x64 Builder (dbg)" + category: "debug|builder" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder (dbg)" + category: "debug|builder" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Tests (dbg)(1)" + category: "debug|tester" + short_name: "7" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 Tests x64 (dbg)" + category: "debug|tester" + short_name: "10" + > + builders: < + name: "buildbucket/luci.chromium.ci/Windows deterministic" + category: "misc" + short_name: "det" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Win10" + category: "misc" + short_name: "wbk" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "goma.latest" + name: "goma.latest" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-arm-generic-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-arm-generic-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-kevin-compile-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-kevin-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-chromeos-compile-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/linux-chromeos-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/linux-chromeos-rel" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.linux" - name: "tryserver.chromium.linux" + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder Goma Latest Client" + category: "win|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Latest Client" + category: "win|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-latest-localoutputcache" + category: "win|rel" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Latest Client LocalOutputCache" + category: "cl.exe|rel" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Latest Client" + category: "win7|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Latest Client" + category: "win7|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Latest Client" + category: "cl.exe|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder Goma Latest Client" + category: "mac|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Latest Client" + category: "mac|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-latest" + category: "mac|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Latest Client (clobber)" + category: "mac|dbg" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-latest-localoutputcache" + category: "mac|rel" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-latest" + category: "cros|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder Goma Latest Client" + category: "linux|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-latest" + category: "linux|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-latest-localoutputcache" + category: "linux|rel" + short_name: "loc" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-latest" + category: "android|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device-goma-latest-clobber" + category: "ios" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-latest" + category: "rbe|linux|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-ats-latest" + category: "rbe|linux|rel" + short_name: "ats" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder Goma RBE Latest Client" + category: "rbe|linux|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-rbe-latest" + category: "rbe|cros|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-latest" + category: "rbe|android|dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-ats-latest" + category: "rbe|android|dbg" + short_name: "ats" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-rbe-latest" + category: "rbe|mac|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma RBE Latest Client (clobber)" + category: "rbe|mac|dbg" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device-goma-rbe-latest-clobber" + category: "rbe|ios" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder Goma RBE Latest Client" + category: "rbe|win|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma RBE Latest Client" + category: "rbe|win|dbg" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "luci.chromium.goma" + name: "luci.chromium.goma" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/cast_shell_audio_linux" - } - builders { - name: "buildbucket/luci.chromium.try/cast_shell_linux" - } - builders { - name: "buildbucket/luci.chromium.try/chromium_presubmit" - } - builders { - name: "buildbucket/luci.chromium.try/closure_compilation" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia_arm64" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-arm64-cast" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-compile-x64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-fyi-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-fyi-x64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-fyi-x64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia_x64" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-x64-cast" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-skv" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-skv" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-tsn" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-rel" - } - builders { - name: "buildbucket/luci.chromium.try/layout_test_leak_detection" - } - builders { - name: "buildbucket/luci.chromium.try/leak_detection_linux" - } - builders { - name: "buildbucket/luci.chromium.try/linux-annotator-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-gcc-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-libfuzzer-asan-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-ozone-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-clang-tidy-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/linux-clang-tidy-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-trusty-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_arm" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_analysis" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_cfi_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_msan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_clobber_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_compile_dbg_32_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_component_updater" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_msan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_tsan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_ubsan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_layout_tests_composite_after_paint" - } - builders { - name: "buildbucket/luci.chromium.try/linux_layout_tests_layout_ng_disabled" - } - builders { - name: "buildbucket/luci.chromium.try/linux_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/linux_mojo_chromeos" - } - builders { - name: "buildbucket/luci.chromium.try/linux_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_upload_clang" - } - builders { - name: "buildbucket/luci.chromium.try/linux-viz-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_vr" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.mac" - name: "tryserver.chromium.mac" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-pro-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-asan" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-mac-amd-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-mac-intel-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/ios-device" - } - builders { - name: "buildbucket/luci.chromium.try/ios-device-xcode-clang" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-cr-recipe" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-cronet" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-full-configs" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-noncq" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-xcode-clang" - } - builders { - name: "buildbucket/luci.chromium.try/ios13-beta-simulator" - } - builders { - name: "buildbucket/luci.chromium.try/ios13-sdk-simulator" - } - builders { - name: "buildbucket/luci.chromium.try/ios-slimnav" - } - builders { - name: "buildbucket/luci.chromium.try/mac-osxbeta-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.10" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.10_macviews" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.12_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.13_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_compile_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_compile_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.13_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac_upload_clang" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.win" - name: "tryserver.chromium.win" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win-xr-builder-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dbg-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dqp-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-exp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dbg-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-exp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-skgl-64" - } - builders { - name: "buildbucket/luci.chromium.try/win-libfuzzer-asan-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win7-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win10_chromium_x64_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_archive" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_compile_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_compile_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_x64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/win_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/win_upload_clang" - } - builders { - name: "buildbucket/luci.chromium.try/win_x64_archive" - } - builders { - name: "buildbucket/luci.chromium.try/win-annotator-rel" - } - builder_view_only: true -} - -consoles { - header_id: "" - id: "tryserver.blink" - name: "tryserver.blink" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/linux-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.10-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.11-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.12-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.13-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.13_retina-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win10-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win7-blink-rel" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "angle.try" - name: "angle.try" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/android_angle_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk32_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk64_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk32_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_angle_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_angle_ozone_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-rel-64" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma Staging" + category: "clients5" + short_name: "lnx" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Mac Goma Staging" + category: "clients5" + short_name: "mac" + > + builders: < + name: "buildbucket/luci.chromium.ci/CrWinGomaStaging" + category: "clients5" + short_name: "win" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (clobber)" + category: "rbe|rel" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging" + category: "rbe|rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg) (clobber)" + category: "rbe|debug" + short_name: "clb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg)" + category: "rbe|debug" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > + include_experimental_builds: true +> +consoles: < id: "luci.chromium.try" name: "luci.chromium.try" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { + builders: < name: "buildbucket/luci.chromium.try/android-cronet-arm-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-kitkat-arm-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-coverage-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-marshmallow-x64-fyi-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-oreo-arm64-cts-networkservice-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-pie-arm64-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-fyi-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_archive_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_arm64_dbg_recipe" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_angle_deqp_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_angle_vk32_deqp_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_angle_vk64_deqp_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_angle_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_angle_vk32_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_angle_vk64_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_cfi_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_compile_dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_compile_x64_dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_compile_x86_dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_mojo" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_n5x_swarming_dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android_optional_gpu_tests_rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-webview-marshmallow-arm64-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-webview-nougat-arm64-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-webview-oreo-arm64-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/cast_shell_audio_linux" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/cast_shell_linux" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-cfi-thin-lto-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromeos-arm-generic-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromeos-arm-generic-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromeos-kevin-compile-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromeos-kevin-experimental-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromeos-kevin-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/chromium_presubmit" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/closure_compilation" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/fuchsia-angle-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/fuchsia-compile-x64-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-5-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-6-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-deqp-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-skgl-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-6p-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-9-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-n-nvidia-shield-tv-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-skv-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-dqp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-exp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-skv" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dqp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-exp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-skv" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-tsn" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win-xr-builder-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dbg-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dqp-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-rel-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-dqp-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-dqp-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-exp-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-rel-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dbg-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dqp-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-exp-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-skgl-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-dqp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-pro-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-exp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-asan" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dqp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-exp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-exp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-try-android-m-nexus-5x-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-try-mac-amd-retina-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/gpu-try-mac-intel-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-angle-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-blink-heap-concurrent-marking-tsan-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-blink-heap-verification-try" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-chromeos-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-jumbo-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-libfuzzer-asan-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-ozone-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_android_dbg_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_angle_deqp_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_angle_ozone_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_arm" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_analysis" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_archive_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_asan_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_cfi_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_asan_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_msan_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_clobber_deterministic" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_clobber_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_compile_dbg_32_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_compile_dbg_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_compile_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_component_updater" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-clang-tidy-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-clang-tidy-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_dbg_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_msan_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_tsan_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_chromium_ubsan_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_layout_tests_composite_after_paint" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_layout_tests_layout_ng_disabled" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_mojo" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_mojo_chromeos" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_optional_gpu_tests_rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux_upload_clang" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/linux-viz-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/ios-device" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/ios-device-xcode-clang" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/ios-simulator" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/ios-simulator-cronet" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/ios-simulator-eg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/ios-simulator-xcode-clang" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/ios13-sdk-simulator" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac-angle-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac-jumbo-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.10_macviews" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_chromium_10.10" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_chromium_10.12_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_chromium_10.13_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_chromium_archive_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_chromium_asan_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_chromium_compile_dbg_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_chromium_compile_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_chromium_dbg_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_optional_gpu_tests_rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/mac_upload_clang" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/try-nougat-phone-tester" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-oreo-arm64-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-pie-arm64-dbg" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/android-pie-x86-fyi-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win7-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win10_chromium_x64_dbg_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng_exp" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win-angle-rel-32" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win-angle-rel-64" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win-jumbo-rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_archive" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_chromium_compile_dbg_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_chromium_compile_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_chromium_dbg_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_chromium_x64_rel_ng" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_mojo" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_optional_gpu_tests_rel" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_upload_clang" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win_x64_archive" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.try/win-celab-try-rel" - } + > builder_view_only: true -} - -consoles { - header_id: "chromium" +> +consoles: < + id: "main" + name: "Chromium Main Console" + repo_url: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + manifest_name: "REVISION" + builders: < + name: "buildbucket/luci.chromium.ci/android-archive-dbg" + category: "chromium|android" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-archive-rel" + category: "chromium|android" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-dbg" + category: "chromium|linux" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-archive-rel" + category: "chromium|linux" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-dbg" + category: "chromium|mac" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/mac-archive-rel" + category: "chromium|mac" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/win32-archive-rel" + category: "chromium|win-rel" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/win-archive-rel" + category: "chromium|win-rel" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder" + category: "chromium.win|release|builder" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win x64 Builder" + category: "chromium.win|release|builder" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 (32) Tests" + category: "chromium.win|release|tester" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Tests (1)" + category: "chromium.win|release|tester" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win 7 Tests x64 (1)" + category: "chromium.win|release|tester" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 Tests x64" + category: "chromium.win|release|tester" + short_name: "w10" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win x64 Builder (dbg)" + category: "chromium.win|debug|builder" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win Builder (dbg)" + category: "chromium.win|debug|builder" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win7 Tests (dbg)(1)" + category: "chromium.win|debug|tester" + short_name: "7" + > + builders: < + name: "buildbucket/luci.chromium.ci/Win10 Tests x64 (dbg)" + category: "chromium.win|debug|tester" + short_name: "10" + > + builders: < + name: "buildbucket/luci.chromium.ci/Windows deterministic" + category: "chromium.win|misc" + short_name: "det" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Win10" + category: "chromium.win|misc" + short_name: "wbk" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder" + category: "chromium.mac|release" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.10 Tests" + category: "chromium.mac|release" + short_name: "10" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.11 Tests" + category: "chromium.mac|release" + short_name: "11" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.12 Tests" + category: "chromium.mac|release" + short_name: "12" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.13 Tests" + category: "chromium.mac|release" + short_name: "13" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" + category: "chromium.mac|release" + short_name: "ret" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" + category: "chromium.mac|debug" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac10.13 Tests (dbg)" + category: "chromium.mac|debug" + short_name: "13" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device" + category: "chromium.mac|ios|default" + short_name: "dev" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator" + category: "chromium.mac|ios|default" + short_name: "sim" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-full-configs" + category: "chromium.mac|ios|default" + short_name: "ful" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-noncq" + category: "chromium.mac|ios|default" + short_name: "non" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-device-xcode-clang" + category: "chromium.mac|ios|xcode" + short_name: "dev" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-simulator-xcode-clang" + category: "chromium.mac|ios|xcode" + short_name: "sim" + > + builders: < + name: "buildbucket/luci.chromium.ci/ios-slimnav" + category: "chromium.mac|ios|misc" + short_name: "slim" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder" + category: "chromium.linux|release" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Tests" + category: "chromium.linux|release" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-gcc-rel" + category: "chromium.linux|release" + short_name: "gcc" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-jumbo-rel" + category: "chromium.linux|release" + short_name: "jmb" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Linux" + category: "chromium.linux|release" + short_name: "det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Leak Detection Linux" + category: "chromium.linux|release" + short_name: "lk" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-ozone-rel" + category: "chromium.linux|release" + short_name: "ozo" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-trusty-rel" + category: "chromium.linux|release" + short_name: "tru" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" + category: "chromium.linux|debug|builder" + short_name: "32" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" + category: "chromium.linux|debug|builder" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" + category: "chromium.linux|debug|builder" + short_name: "det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Tests (dbg)(1)" + category: "chromium.linux|debug|tester" + short_name: "64" + > + builders: < + name: "buildbucket/luci.chromium.ci/Cast Linux" + category: "chromium.linux|cast" + short_name: "vid" + > + builders: < + name: "buildbucket/luci.chromium.ci/Cast Audio Linux" + category: "chromium.linux|cast" + short_name: "aud" + > + builders: < + name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" + category: "chromium.linux|fuchsia|a64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" + category: "chromium.linux|fuchsia|cast" + short_name: "a64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" + category: "chromium.linux|fuchsia|cast" + short_name: "x64" + > + builders: < + name: "buildbucket/luci.chromium.ci/fuchsia-x64-dbg" + category: "chromium.linux|fuchsia|x64" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/Deterministic Fuchsia (dbg)" + category: "chromium.linux|fuchsia|x64" + short_name: "det" + > + builders: < + name: "buildbucket/luci.chromium.ci/Fuchsia x64" + category: "chromium.linux|fuchsia|x64" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full" + category: "chromium.chromiumos|default" + short_name: "ful" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-chromeos-rel" + category: "chromium.chromiumos|default" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg" + category: "chromium.chromiumos|default" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-asan-rel" + category: "chromium.chromiumos|simple|release|x64" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-cfi-thin-lto-rel" + category: "chromium.chromiumos|simple|release|x64" + short_name: "cfi" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-dbg" + category: "chromium.chromiumos|simple|debug|x64" + short_name: "dbg" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel" + category: "chromium.chromiumos|simple|release|x64" + short_name: "rel" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-dbg" + category: "chromium.chromiumos|simple|debug" + short_name: "arm" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-rel" + category: "chromium.chromiumos|simple|release" + short_name: "arm" + > + builders: < + name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel" + category: "chromium.chromiumos|simple|release" + short_name: "kvn" + > + builders: < + name: "buildbucket/luci.chrome.ci/linux-chromeos-google-rel" + category: "chrome" + short_name: "cro" + > + builders: < + name: "buildbucket/luci.chrome.ci/linux-google-rel" + category: "chrome" + short_name: "lnx" + > + builders: < + name: "buildbucket/luci.chrome.ci/mac-google-rel" + category: "chrome" + short_name: "mac" + > + builders: < + name: "buildbucket/luci.chrome.ci/win-google-rel" + category: "chrome" + short_name: "win" + > + builders: < + name: "buildbucket/luci.chromium.ci/win-asan" + category: "chromium.memory|win" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" + category: "chromium.memory|mac" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Mac ASan 64 Tests (1)" + category: "chromium.memory|mac" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux TSan Builder" + category: "chromium.memory|linux|TSan v2" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux TSan Tests" + category: "chromium.memory|linux|TSan v2" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ASan LSan Builder" + category: "chromium.memory|linux|asan lsan" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ASan LSan Tests (1)" + category: "chromium.memory|linux|asan lsan" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ASan Tests (sandboxed)" + category: "chromium.memory|linux|asan lsan" + short_name: "sbx" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux MSan Builder" + category: "chromium.memory|linux|msan" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux MSan Tests" + category: "chromium.memory|linux|msan" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" + category: "chromium.memory|linux|webkit" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" + category: "chromium.memory|linux|webkit" + short_name: "msn" + > + builders: < + name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" + category: "chromium.memory|linux|webkit" + short_name: "lk" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Builder" + category: "chromium.memory|cros|asan" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Tests (1)" + category: "chromium.memory|cros|asan" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Builder" + category: "chromium.memory|cros|msan" + short_name: "bld" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Tests" + category: "chromium.memory|cros|msan" + short_name: "tst" + > + builders: < + name: "buildbucket/luci.chromium.ci/android-asan" + category: "chromium.memory|android" + short_name: "asn" + > + builders: < + name: "buildbucket/luci.chromium.ci/Android CFI" + category: "chromium.memory|cfi" + short_name: "and" + > + builders: < + name: "buildbucket/luci.chromium.ci/Linux CFI" + category: "chromium.memory|cfi" + short_name: "lnx" + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < id: "sheriff.ios" name: "iOS Sheriff Console" repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" + refs: "regexp:refs/heads/master" manifest_name: "REVISION" - - builders { + builders: < name: "buildbucket/luci.chromium.ci/ios-device" category: "chromium.mac" short_name: "dev" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios-simulator" category: "chromium.mac" short_name: "sim" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios-simulator-full-configs" category: "chromium.mac" short_name: "ful" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios-simulator-noncq" category: "chromium.mac" short_name: "non" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios-device-xcode-clang" category: "chromium.mac|xcode" short_name: "dev" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios-simulator-xcode-clang" category: "chromium.mac|xcode" short_name: "sim" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios-slimnav" category: "chromium.mac" short_name: "slim" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios13-sdk-device" category: "chromium.fyi|13" short_name: "dev" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios13-sdk-simulator" category: "chromium.fyi|13" short_name: "sim" - } - builders { + > + builders: < name: "buildbucket/luci.chromium.ci/ios13-beta-simulator" category: "chromium.fyi|13" short_name: "ios13" - } -} + > + header: < + oncalls: < + name: "Chromium" + url: "https://rota-ng.appspot.com/legacy/sheriff.json" + > + oncalls: < + name: "Android" + url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" + > + oncalls: < + name: "iOS" + url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" + > + oncalls: < + name: "GPU" + url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" + > + oncalls: < + name: "Angle" + url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" + > + oncalls: < + name: "Perf" + url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" + > + oncalls: < + name: "Perfbot" + url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" + > + oncalls: < + name: "V8" + url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" + > + oncalls: < + name: "Trooper" + url: "https://rota-ng.appspot.com/legacy/trooper.json" + > + links: < + name: "Builds" + links: < + text: "continuous" + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" + alt: "Continuous browser snapshots" + > + links: < + text: "symbols" + url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" + alt: "Windows Symbols" + > + links: < + text: "status" + url: "https://chromium-status.appspot.com/" + alt: "Current tree status" + > + > + links: < + name: "Dashboards" + links: < + text: "perf" + url: "https://chromeperf.appspot.com/" + alt: "Chrome perf dashboard" + > + links: < + text: "flake-portal" + url: "https://analysis.chromium.org/p/chromium/flake-portal" + alt: "New flake portal" + > + links: < + text: "legacy-flakiness" + url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" + alt: "Legacy flakiness dashboard" + > + > + links: < + name: "Chromium" + links: < + text: "source" + url: "https://chromium.googlesource.com/chromium/src" + alt: "Chromium source code repository" + > + links: < + text: "reviews" + url: "https://chromium-review.googlesource.com" + alt: "Chromium code review tool" + > + links: < + text: "bugs" + url: "https://crbug.com" + alt: "Chromium bug tracker" + > + links: < + text: "coverage" + url: "https://analysis.chromium.org/p/chromium/coverage" + alt: "Chromium code coverage dashboard" + > + links: < + text: "dev" + url: "https://dev.chromium.org/Home" + alt: "Chromium developer home page" + > + links: < + text: "support" + url: "https://support.google.com/chrome/#topic=7438008" + alt: "Google Chrome help center" + > + > + links: < + name: "Consoles" + links: < + text: "android" + url: "/p/chromium/g/chromium.android" + alt: "Chromium Android console" + > + links: < + text: "clang" + url: "/p/chromium/g/chromium.clang" + alt: "Chromium Clang console" + > + links: < + text: "dawn" + url: "/p/chromium/g/chromium.dawn" + alt: "Chromium Dawn console" + > + links: < + text: "fuzz" + url: "/p/chromium/g/chromium.fuzz" + alt: "Chromium Fuzz console" + > + links: < + text: "fyi" + url: "/p/chromium/g/chromium.fyi" + alt: "Chromium FYI console" + > + links: < + text: "gpu" + url: "/p/chromium/g/chromium.gpu" + alt: "Chromium GPU console" + > + links: < + text: "perf" + url: "/p/chrome/g/chrome.perf/console" + alt: "Chromium Perf console" + > + links: < + text: "perf.fyi" + url: "/p/chrome/g/chrome.perf.fyi/console" + alt: "Chromium Perf FYI console" + > + links: < + text: "webrtc" + url: "/p/chromium/g/chromium.webrtc" + alt: "Chromium WebRTC console" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/chromium.chromiumos" + alt: "ChromiumOS console" + > + > + links: < + name: "Tryservers" + links: < + text: "android" + url: "/p/chromium/g/tryserver.chromium.android/builders" + alt: "Android" + > + links: < + text: "angle" + url: "/p/chromium/g/angle.try/builders" + alt: "Angle" + > + links: < + text: "blink" + url: "/p/chromium/g/tryserver.blink/builders" + alt: "Blink" + > + links: < + text: "chrome" + url: "/p/chrome/g/tryserver.chrome/builders" + alt: "Chrome" + > + links: < + text: "chromiumos" + url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" + alt: "ChromiumOS" + > + links: < + text: "linux" + url: "/p/chromium/g/tryserver.chromium.linux/builders" + alt: "Linux" + > + links: < + text: "mac" + url: "/p/chromium/g/tryserver.chromium.mac/builders" + alt: "Mac" + > + links: < + text: "win" + url: "/p/chromium/g/tryserver.chromium.win/builders" + alt: "Win" + > + > + links: < + name: "Navigate" + links: < + text: "about" + url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" + alt: "Tour of the console" + > + links: < + text: "customize" + url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" + alt: "Customize this console" + > + > + console_groups: < + title: < + text: "Tree Closers" + url: "https://chromium-status.appspot.com/" + > + console_ids: "chromium/chromium" + console_ids: "chromium/chromium.win" + console_ids: "chromium/chromium.mac" + console_ids: "chromium/chromium.linux" + console_ids: "chromium/chromium.chromiumos" + console_ids: "chrome/chrome" + console_ids: "chromium/chromium.memory" + console_ids: "chromium/chromium.gpu" + > + console_groups: < + console_ids: "chromium/chromium.android" + console_ids: "chrome/chrome.perf" + console_ids: "chromium/chromium.gpu.fyi" + console_ids: "chromium/chromium.fuzz" + > + tree_status_host: "chromium-status.appspot.com" + > +> +consoles: < + id: "tryserver.blink" + name: "tryserver.blink" + builders: < + name: "buildbucket/luci.chromium.try/linux-blink-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/mac10.10-blink-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/mac10.11-blink-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/mac10.12-blink-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/mac10.13-blink-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/mac10.13_retina-blink-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/win10-blink-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/win7-blink-rel" + > + builder_view_only: true +> +consoles: < + id: "tryserver.chromium.android" + name: "tryserver.chromium.android" + builders: < + name: "buildbucket/luci.chromium.try/android-opus-kitkat-arm-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android_archive_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/android-binary-size" + > + builders: < + name: "buildbucket/luci.chromium.try/android_blink_rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android_cfi_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/android_clang_dbg_recipe" + > + builders: < + name: "buildbucket/luci.chromium.try/android_compile_dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android_compile_rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android_compile_x64_dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android_compile_x86_dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android_cronet" + > + builders: < + name: "buildbucket/luci.chromium.try/android-cronet-arm-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android_cronet_tester" + > + builders: < + name: "buildbucket/luci.chromium.try/android_mojo" + > + builders: < + name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android-marshmallow-x86-fyi-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android-pie-arm64-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-fyi-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android_optional_gpu_tests_rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android_unswarmed_pixel_aosp" + > + builders: < + name: "buildbucket/luci.chromium.try/cast_shell_android" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_android_dbg_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/android-kitkat-arm-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-5-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-6-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-deqp-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-skgl-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-6p-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-9-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-n-nvidia-shield-tv-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-skv-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-try-android-m-nexus-5x-64" + > + builders: < + name: "buildbucket/luci.chromium.try/android-deterministic-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android-deterministic-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/try-nougat-phone-tester" + > + builders: < + name: "buildbucket/luci.chromium.try/android-oreo-arm64-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android-pie-arm64-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android-pie-x86-fyi-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/android-webview-marshmallow-arm64-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android-webview-nougat-arm64-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android-webview-oreo-arm64-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-dbg" + > + builder_view_only: true +> +consoles: < + id: "tryserver.chromium.chromiumos" + name: "tryserver.chromium.chromiumos" + builders: < + name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/chromeos-arm-generic-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/chromeos-arm-generic-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/chromeos-kevin-compile-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/chromeos-kevin-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-chromeos-compile-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-chromeos-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-chromeos-rel" + > + builder_view_only: true +> +consoles: < + id: "tryserver.chromium.linux" + name: "tryserver.chromium.linux" + builders: < + name: "buildbucket/luci.chromium.try/cast_shell_audio_linux" + > + builders: < + name: "buildbucket/luci.chromium.try/cast_shell_linux" + > + builders: < + name: "buildbucket/luci.chromium.try/chromium_presubmit" + > + builders: < + name: "buildbucket/luci.chromium.try/closure_compilation" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia_arm64" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia-arm64-cast" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia-compile-x64-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia-fyi-arm64-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia-fyi-x64-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia-fyi-x64-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia_x64" + > + builders: < + name: "buildbucket/luci.chromium.try/fuchsia-x64-cast" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-dqp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-exp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-skv" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dqp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-exp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-skv" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-tsn" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/layout_test_leak_detection" + > + builders: < + name: "buildbucket/luci.chromium.try/leak_detection_linux" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-annotator-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-gcc-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-libfuzzer-asan-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-ozone-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-clang-tidy-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-clang-tidy-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-trusty-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_arm" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_analysis" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_archive_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_asan_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_cfi_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_asan_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_msan_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_clobber_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_compile_dbg_32_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_msan_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_tsan_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_chromium_ubsan_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_layout_tests_composite_after_paint" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_layout_tests_layout_ng_disabled" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_mojo" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_mojo_chromeos" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_optional_gpu_tests_rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_upload_clang" + > + builders: < + name: "buildbucket/luci.chromium.try/linux-viz-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/linux_vr" + > + builder_view_only: true +> +consoles: < + id: "tryserver.chromium.mac" + name: "tryserver.chromium.mac" + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-dqp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-pro-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-exp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-asan" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dqp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-exp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-exp" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-try-mac-amd-retina-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-try-mac-intel-dbg" + > + builders: < + name: "buildbucket/luci.chromium.try/ios-device" + > + builders: < + name: "buildbucket/luci.chromium.try/ios-device-xcode-clang" + > + builders: < + name: "buildbucket/luci.chromium.try/ios-simulator-cr-recipe" + > + builders: < + name: "buildbucket/luci.chromium.try/ios-simulator-cronet" + > + builders: < + name: "buildbucket/luci.chromium.try/ios-simulator-full-configs" + > + builders: < + name: "buildbucket/luci.chromium.try/ios-simulator-noncq" + > + builders: < + name: "buildbucket/luci.chromium.try/ios-simulator-xcode-clang" + > + builders: < + name: "buildbucket/luci.chromium.try/ios13-beta-simulator" + > + builders: < + name: "buildbucket/luci.chromium.try/ios13-sdk-simulator" + > + builders: < + name: "buildbucket/luci.chromium.try/ios-slimnav" + > + builders: < + name: "buildbucket/luci.chromium.try/mac-osxbeta-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/mac-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_chromium_10.10" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_chromium_10.12_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_chromium_10.13_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_chromium_archive_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_chromium_asan_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_chromium_compile_dbg_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_chromium_compile_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_chromium_dbg_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_optional_gpu_tests_rel" + > + builders: < + name: "buildbucket/luci.chromium.try/mac_upload_clang" + > + builder_view_only: true +> +consoles: < + id: "tryserver.chromium.win" + name: "tryserver.chromium.win" + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win-xr-builder-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dbg-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dqp-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-rel-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-dqp-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-dqp-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-exp-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-rel-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dbg-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dqp-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-exp-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-32" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-64" + > + builders: < + name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-skgl-64" + > + builders: < + name: "buildbucket/luci.chromium.try/win-libfuzzer-asan-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/win7-rel" + > + builders: < + name: "buildbucket/luci.chromium.try/win10_chromium_x64_dbg_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/win_archive" + > + builders: < + name: "buildbucket/luci.chromium.try/win_chromium_compile_dbg_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/win_chromium_compile_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/win_chromium_dbg_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/win_chromium_x64_rel_ng" + > + builders: < + name: "buildbucket/luci.chromium.try/win_mojo" + > + builders: < + name: "buildbucket/luci.chromium.try/win_optional_gpu_tests_rel" + > + builders: < + name: "buildbucket/luci.chromium.try/win_upload_clang" + > + builders: < + name: "buildbucket/luci.chromium.try/win_x64_archive" + > + builders: < + name: "buildbucket/luci.chromium.try/win-annotator-rel" + > + builder_view_only: true +> +logo_url: "https://storage.googleapis.com/chrome-infra-public/logo/chromium.svg"
diff --git a/infra/config/generated/luci-scheduler-dev.cfg b/infra/config/generated/luci-scheduler-dev.cfg index aa26630..b60efc6 100644 --- a/infra/config/generated/luci-scheduler-dev.cfg +++ b/infra/config/generated/luci-scheduler-dev.cfg
@@ -1,111 +1,104 @@ -# Defines jobs on luci-scheduler-dev.appspot.com. +# Auto-generated by lucicfg. +# Do not modify manually. # -# For schema of this file and documentation see ProjectConfig message in -# -# https://chromium.googlesource.com/infra/luci/luci-go/+/master/scheduler/appengine/messages/config.proto +# For the schema of this file, see ProjectConfig message: +# https://luci-config.appspot.com/schemas/projects:luci-scheduler.cfg - -acl_sets { - name: "default" - acls { - role: READER - granted_to: "group:all" - } - acls { - role: OWNER - granted_to: "group:project-chromium-admins" - } -} - -################################################################################ -# Master branch - -trigger { +job: < + id: "Android N5 Swarm" + acl_sets: "ci" + buildbucket: < + server: "cr-buildbucket-dev.appspot.com" + bucket: "luci.chromium.ci" + builder: "Android N5 Swarm" + > +> +job: < + id: "Android N5X Swarm" + acl_sets: "ci" + buildbucket: < + server: "cr-buildbucket-dev.appspot.com" + bucket: "luci.chromium.ci" + builder: "Android N5X Swarm" + > +> +job: < + id: "ChromeOS Swarm" + acl_sets: "ci" + buildbucket: < + server: "cr-buildbucket-dev.appspot.com" + bucket: "luci.chromium.ci" + builder: "ChromeOS Swarm" + > +> +job: < + id: "Linux Swarm" + acl_sets: "ci" + buildbucket: < + server: "cr-buildbucket-dev.appspot.com" + bucket: "luci.chromium.ci" + builder: "Linux Swarm" + > +> +job: < + id: "Mac Swarm" + acl_sets: "ci" + buildbucket: < + server: "cr-buildbucket-dev.appspot.com" + bucket: "luci.chromium.ci" + builder: "Mac Swarm" + > +> +job: < + id: "Snapshot Builder" + schedule: "with 300s interval" + acl_sets: "cron" + buildbucket: < + server: "cr-buildbucket-dev.appspot.com" + bucket: "luci.chromium.cron" + builder: "Snapshot Builder" + > +> +job: < + id: "Windows Swarm" + acl_sets: "ci" + buildbucket: < + server: "cr-buildbucket-dev.appspot.com" + bucket: "luci.chromium.ci" + builder: "Windows Swarm" + > +> +trigger: < id: "master-gitiles-trigger" - acl_sets: "default" - - gitiles: { - repo: "https://chromium.googlesource.com/chromium/src.git" - refs: "refs/heads/master" - } - + acl_sets: "ci" triggers: "Android N5 Swarm" triggers: "Android N5X Swarm" triggers: "ChromeOS Swarm" triggers: "Linux Swarm" triggers: "Mac Swarm" triggers: "Windows Swarm" -} - -job { - id: "Android N5 Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Android N5 Swarm" - } -} - -job { - id: "Android N5X Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Android N5X Swarm" - } -} - -job { - id: "ChromeOS Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "ChromeOS Swarm" - } -} - -job { - id: "Linux Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Linux Swarm" - } -} -job { - id: "Mac Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Mac Swarm" - } -} -job { - id: "Windows Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Windows Swarm" - } -} - -################################################################################ -# Cron jobs - -job { - id: "Snapshot Builder" - acl_sets: "default" - buildbucket { - bucket: "luci.chromium.cron" - builder: "Snapshot Builder" - server: "cr-buildbucket-dev.appspot.com" - } - # TODO(smut): Adjust frequency. - schedule: "with 300s interval" -} + gitiles: < + repo: "https://chromium.googlesource.com/chromium/src" + refs: "regexp:refs/heads/master" + > +> +acl_sets: < + name: "ci" + acls: < + role: OWNER + granted_to: "group:project-chromium-admins" + > + acls: < + granted_to: "group:all" + > +> +acl_sets: < + name: "cron" + acls: < + role: OWNER + granted_to: "group:project-chromium-admins" + > + acls: < + granted_to: "group:all" + > +>
diff --git a/infra/config/lint-luci-milo.py b/infra/config/lint-luci-milo.py index 7196423..578ffeb0 100755 --- a/infra/config/lint-luci-milo.py +++ b/infra/config/lint-luci-milo.py
@@ -55,7 +55,7 @@ def main(): project = project_pb2.Project() - with open(os.path.join(THIS_DIR, 'luci-milo.cfg'), 'rb') as f: + with open(os.path.join(THIS_DIR, 'generated', 'luci-milo.cfg'), 'rb') as f: google.protobuf.text_format.Parse(f.read(), project) # Maps subwaterfall name to list of builders on that subwaterfall
diff --git a/infra/config/luci-milo.cfg b/infra/config/luci-milo.cfg deleted file mode 100644 index bd9d7fe..0000000 --- a/infra/config/luci-milo.cfg +++ /dev/null
@@ -1,5379 +0,0 @@ -# See http://luci-config.appspot.com/schemas/projects:luci-milo.cfg for schema -# of this file and documentation. - -logo_url: "https://storage.googleapis.com/chrome-infra-public/logo/chromium.svg" - -headers { - id: "chromium" - oncalls { - name: "Chromium" - url: "https://rota-ng.appspot.com/legacy/sheriff.json" - } - oncalls { - name: "Android" - url: "https://rota-ng.appspot.com/legacy/sheriff_android.json" - } - oncalls { - name: "iOS" - url: "https://rota-ng.appspot.com/legacy/sheriff_ios.json" - } - oncalls { - name: "GPU" - url: "https://rota-ng.appspot.com/legacy/sheriff_gpu.json" - } - oncalls { - name: "Angle" - url: "https://rota-ng.appspot.com/legacy/sheriff_angle.json" - } - oncalls { - name: "Perf" - url: "https://rota-ng.appspot.com/legacy/sheriff_perf.json" - } - oncalls { - name: "Perfbot" - url: "https://rota-ng.appspot.com/legacy/sheriff_perfbot.json" - } - oncalls { - name: "V8" - url: "https://rota-ng.appspot.com/legacy/sheriff_v8.json" - } - oncalls { - name: "Trooper" - url: "https://rota-ng.appspot.com/legacy/trooper.json" - } - links { - name: "Builds" - links { - text: "continuous" - url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html" - alt: "Continuous browser snapshots" - } - links { - text: "symbols" - url: "https://www.chromium.org/developers/how-tos/debugging-on-windows" - alt: "Windows Symbols" - } - links { - text: "status" - url: "https://chromium-status.appspot.com/" - alt: "Current tree status" - } - } - links { - name: "Dashboards" - links { - text: "perf" - url: "https://chromeperf.appspot.com/" - alt: "Chrome perf dashboard" - } - links { - text: "flake-portal" - url: "https://analysis.chromium.org/p/chromium/flake-portal" - alt: "New flake portal" - } - links { - text: "legacy-flakiness" - url: "https://test-results.appspot.com/dashboards/flakiness_dashboard.html" - alt: "Legacy flakiness dashboard" - } - } - links { - name: "Chromium" - links { - text: "source" - url: "https://chromium.googlesource.com/chromium/src" - alt: "Chromium source code repository" - } - links { - text: "reviews" - url: "https://chromium-review.googlesource.com" - alt: "Chromium code review tool" - } - links { - text: "bugs" - url: "https://crbug.com" - alt: "Chromium bug tracker" - } - links { - text: "coverage" - url: "https://analysis.chromium.org/p/chromium/coverage" - alt: "Chromium code coverage dashboard" - } - links { - text: "dev" - url: "https://dev.chromium.org/Home" - alt: "Chromium developer home page" - } - links { - text: "support" - url: "https://support.google.com/chrome/#topic=7438008" - alt: "Google Chrome help center" - } - } - links { - name: "Consoles" - links { - text: "android" - url: "/p/chromium/g/chromium.android" - alt: "Chromium Android console" - } - links { - text: "clang" - url: "/p/chromium/g/chromium.clang" - alt: "Chromium Clang console" - } - links { - text: "dawn" - url: "/p/chromium/g/chromium.dawn" - alt: "Chromium Dawn console" - } - links { - text: "fuzz" - url: "/p/chromium/g/chromium.fuzz" - alt: "Chromium Fuzz console" - } - links { - text: "fyi" - url: "/p/chromium/g/chromium.fyi" - alt: "Chromium FYI console" - } - links { - text: "gpu" - url: "/p/chromium/g/chromium.gpu" - alt: "Chromium GPU console" - } - links { - text: "perf" - url: "/p/chrome/g/chrome.perf/console" - alt: "Chromium Perf console" - } - links { - text: "perf.fyi" - url: "/p/chrome/g/chrome.perf.fyi/console" - alt: "Chromium Perf FYI console" - } - links { - text: "webrtc" - url: "/p/chromium/g/chromium.webrtc" - alt: "Chromium WebRTC console" - } - links { - text: "chromiumos" - url: "/p/chromium/g/chromium.chromiumos" - alt: "ChromiumOS console" - } - } - links { - name: "Tryservers" - links { - text: "android" - url: "/p/chromium/g/tryserver.chromium.android/builders" - alt: "Android" - } - links { - text: "angle" - url: "/p/chromium/g/angle.try/builders" - alt: "Angle" - } - links { - text: "blink" - url: "/p/chromium/g/tryserver.blink/builders" - alt: "Blink" - } - links { - text: "chrome" - url: "/p/chrome/g/tryserver.chrome/builders" - alt: "Chrome" - } - links { - text: "chromiumos" - url: "/p/chromium/g/tryserver.chromium.chromiumos/builders" - alt: "ChromiumOS" - } - links { - text: "linux" - url: "/p/chromium/g/tryserver.chromium.linux/builders" - alt: "Linux" - } - links { - text: "mac" - url: "/p/chromium/g/tryserver.chromium.mac/builders" - alt: "Mac" - } - links { - text: "win" - url: "/p/chromium/g/tryserver.chromium.win/builders" - alt: "Win" - } - } - links { - name: "Navigate" - links { - text: "about" - url: "http://dev.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot" - alt: "Tour of the console" - } - links { - text: "customize" - url: "https://chromium.googlesource.com/chromium/src/+/master/infra/config/luci-milo.cfg" - alt: "Customize this console" - } - } - console_groups { - title { - text: "Tree Closers" - url: "https://chromium-status.appspot.com/" - } - console_ids: "chromium/chromium" - console_ids: "chromium/chromium.win" - console_ids: "chromium/chromium.mac" - console_ids: "chromium/chromium.linux" - console_ids: "chromium/chromium.chromiumos" - console_ids: "chrome/chrome" - console_ids: "chromium/chromium.memory" - console_ids: "chromium/chromium.gpu" - } - console_groups { - console_ids: "chromium/chromium.android" - console_ids: "chrome/chrome.perf" - console_ids: "chromium/chromium.gpu.fyi" - console_ids: "chromium/chromium.fuzz" - } - tree_status_host: "chromium-status.appspot.com" -} - -consoles { - header_id: "chromium" - id: "main" - name: "Chromium Main Console" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg" - category: "chromium|android" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-rel" - category: "chromium|android" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-dbg" - category: "chromium|linux" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel" - category: "chromium|linux" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-dbg" - category: "chromium|mac" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel" - category: "chromium|mac" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel" - category: "chromium|win-rel" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/win-archive-rel" - category: "chromium|win-rel" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder" - category: "chromium.win|release|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win x64 Builder" - category: "chromium.win|release|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 (32) Tests" - category: "chromium.win|release|tester" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Tests (1)" - category: "chromium.win|release|tester" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win 7 Tests x64 (1)" - category: "chromium.win|release|tester" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64" - category: "chromium.win|release|tester" - short_name: "w10" - } - builders { - name: "buildbucket/luci.chromium.ci/Win x64 Builder (dbg)" - category: "chromium.win|debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg)" - category: "chromium.win|debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Tests (dbg)(1)" - category: "chromium.win|debug|tester" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64 (dbg)" - category: "chromium.win|debug|tester" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.ci/Windows deterministic" - category: "chromium.win|misc" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Win10" - category: "chromium.win|misc" - short_name: "wbk" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder" - category: "chromium.mac|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.10 Tests" - category: "chromium.mac|release" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.11 Tests" - category: "chromium.mac|release" - short_name: "11" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.12 Tests" - category: "chromium.mac|release" - short_name: "12" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.13 Tests" - category: "chromium.mac|release" - short_name: "13" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" - category: "chromium.mac|release" - short_name: "ret" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" - category: "chromium.mac|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.13 Tests (dbg)" - category: "chromium.mac|debug" - short_name: "13" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device" - category: "chromium.mac|ios|default" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator" - category: "chromium.mac|ios|default" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-full-configs" - category: "chromium.mac|ios|default" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-noncq" - category: "chromium.mac|ios|default" - short_name: "non" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-xcode-clang" - category: "chromium.mac|ios|xcode" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-xcode-clang" - category: "chromium.mac|ios|xcode" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-slimnav" - category: "chromium.mac|ios|misc" - short_name: "slim" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder" - category: "chromium.linux|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Tests" - category: "chromium.linux|release" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-gcc-rel" - category: "chromium.linux|release" - short_name: "gcc" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-jumbo-rel" - category: "chromium.linux|release" - short_name: "jmb" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux" - category: "chromium.linux|release" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Leak Detection Linux" - category: "chromium.linux|release" - short_name: "lk" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-ozone-rel" - category: "chromium.linux|release" - short_name: "ozo" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-trusty-rel" - category: "chromium.linux|release" - short_name: "tru" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" - category: "chromium.linux|debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" - category: "chromium.linux|debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" - category: "chromium.linux|debug|builder" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Tests (dbg)(1)" - category: "chromium.linux|debug|tester" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Linux" - category: "chromium.linux|cast" - short_name: "vid" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Audio Linux" - category: "chromium.linux|cast" - short_name: "aud" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" - category: "chromium.linux|fuchsia|a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" - category: "chromium.linux|fuchsia|cast" - short_name: "a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" - category: "chromium.linux|fuchsia|cast" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-dbg" - category: "chromium.linux|fuchsia|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Fuchsia (dbg)" - category: "chromium.linux|fuchsia|x64" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia x64" - category: "chromium.linux|fuchsia|x64" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full" - category: "chromium.chromiumos|default" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-rel" - category: "chromium.chromiumos|default" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg" - category: "chromium.chromiumos|default" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-asan-rel" - category: "chromium.chromiumos|simple|release|x64" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-cfi-thin-lto-rel" - category: "chromium.chromiumos|simple|release|x64" - short_name: "cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-dbg" - category: "chromium.chromiumos|simple|debug|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel" - category: "chromium.chromiumos|simple|release|x64" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-dbg" - category: "chromium.chromiumos|simple|debug" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-rel" - category: "chromium.chromiumos|simple|release" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel" - category: "chromium.chromiumos|simple|release" - short_name: "kvn" - } - builders { - name: "buildbucket/luci.chrome.ci/linux-chromeos-google-rel" - category: "chrome" - short_name: "cro" - } - builders { - name: "buildbucket/luci.chrome.ci/linux-google-rel" - category: "chrome" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chrome.ci/mac-google-rel" - category: "chrome" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chrome.ci/win-google-rel" - category: "chrome" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/win-asan" - category: "chromium.memory|win" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" - category: "chromium.memory|mac" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Tests (1)" - category: "chromium.memory|mac" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux TSan Builder" - category: "chromium.memory|linux|TSan v2" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux TSan Tests" - category: "chromium.memory|linux|TSan v2" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Builder" - category: "chromium.memory|linux|asan lsan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Tests (1)" - category: "chromium.memory|linux|asan lsan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan Tests (sandboxed)" - category: "chromium.memory|linux|asan lsan" - short_name: "sbx" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Builder" - category: "chromium.memory|linux|msan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Tests" - category: "chromium.memory|linux|msan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" - category: "chromium.memory|linux|webkit" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" - category: "chromium.memory|linux|webkit" - short_name: "msn" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" - category: "chromium.memory|linux|webkit" - short_name: "lk" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Builder" - category: "chromium.memory|cros|asan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Tests (1)" - category: "chromium.memory|cros|asan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Builder" - category: "chromium.memory|cros|msan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Tests" - category: "chromium.memory|cros|msan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/android-asan" - category: "chromium.memory|android" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/Android CFI" - category: "chromium.memory|cfi" - short_name: "and" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux CFI" - category: "chromium.memory|cfi" - short_name: "lnx" - } -} - -consoles { - header_id: "chromium" - id: "chromium.win" - name: "chromium.win" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Win Builder" - category: "release|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win x64 Builder" - category: "release|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 (32) Tests" - category: "release|tester" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Tests (1)" - category: "release|tester" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win 7 Tests x64 (1)" - category: "release|tester" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64" - category: "release|tester" - short_name: "w10" - } - builders { - name: "buildbucket/luci.chromium.ci/Win x64 Builder (dbg)" - category: "debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg)" - category: "debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Tests (dbg)(1)" - category: "debug|tester" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64 (dbg)" - category: "debug|tester" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.ci/Windows deterministic" - category: "misc" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Win10" - category: "misc" - short_name: "wbk" - } -} - -consoles { - header_id: "chromium" - id: "chromium.mac" - name: "chromium.mac" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder" - category: "release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.10 Tests" - category: "release" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.11 Tests" - category: "release" - short_name: "11" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.12 Tests" - category: "release" - short_name: "12" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.13 Tests" - category: "release" - short_name: "13" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" - category: "release" - short_name: "ret" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" - category: "debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac10.13 Tests (dbg)" - category: "debug" - short_name: "13" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device" - category: "ios|default" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator" - category: "ios|default" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-full-configs" - category: "ios|default" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-noncq" - category: "ios|default" - short_name: "non" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-xcode-clang" - category: "ios|xcode" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-xcode-clang" - category: "ios|xcode" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-slimnav" - category: "ios|misc" - short_name: "slim" - } -} - -consoles { - header_id: "chromium" - id: "chromium.linux" - name: "chromium.linux" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder" - category: "release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Tests" - category: "release" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-gcc-rel" - category: "release" - short_name: "gcc" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-jumbo-rel" - category: "release" - short_name: "jmb" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux" - category: "release" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Leak Detection Linux" - category: "release" - short_name: "lk" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-ozone-rel" - category: "release" - short_name: "ozo" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-trusty-rel" - category: "release" - short_name: "tru" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" - category: "debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" - category: "debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" - category: "debug|builder" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Tests (dbg)(1)" - category: "debug|tester" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Linux" - category: "cast" - short_name: "vid" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Audio Linux" - category: "cast" - short_name: "aud" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" - category: "fuchsia|a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" - category: "fuchsia|cast" - short_name: "a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" - category: "fuchsia|cast" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-dbg" - category: "fuchsia|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Fuchsia (dbg)" - category: "fuchsia|x64" - short_name: "det" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia x64" - category: "fuchsia|x64" - short_name: "rel" - } -} - -consoles { - header_id: "chromium" - id: "chromium.chromiumos" - name: "chromium.chromiumos" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full" - category: "default" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-rel" - category: "default" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg" - category: "default" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-asan-rel" - category: "simple|release|x64" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-cfi-thin-lto-rel" - category: "simple|release|x64" - short_name: "cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-dbg" - category: "simple|debug|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel" - category: "simple|release|x64" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-dbg" - category: "simple|debug" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-arm-generic-rel" - category: "simple|release" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel" - category: "simple|release" - short_name: "kvn" - } -} - -consoles { - header_id: "chromium" - id: "chromium.memory" - name: "chromium.memory" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/win-asan" - category: "win" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" - category: "mac" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Tests (1)" - category: "mac" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux TSan Builder" - category: "linux|TSan v2" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux TSan Tests" - category: "linux|TSan v2" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Builder" - category: "linux|asan lsan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Tests (1)" - category: "linux|asan lsan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan Tests (sandboxed)" - category: "linux|asan lsan" - short_name: "sbx" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Builder" - category: "linux|msan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Tests" - category: "linux|msan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" - category: "linux|webkit" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" - category: "linux|webkit" - short_name: "msn" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" - category: "linux|webkit" - short_name: "lk" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Builder" - category: "cros|asan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Chromium OS ASan LSan Tests (1)" - category: "cros|asan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Builder" - category: "cros|msan" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ChromiumOS MSan Tests" - category: "cros|msan" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/android-asan" - category: "android" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/Android CFI" - category: "cfi" - short_name: "and" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux CFI" - category: "cfi" - short_name: "lnx" - } -} - -consoles { - header_id: "chromium" - id: "chromium.fuzz" - name: "chromium.fuzz" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Afl Upload Linux ASan" - category: "afl" - short_name: "afl" - } - builders { - name: "buildbucket/luci.chromium.ci/Win ASan Release" - category: "win asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win ASan Release Media" - category: "win asan" - short_name: "med" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASAN Release" - category: "mac asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASAN Release Media" - category: "mac asan" - short_name: "med" - } - builders { - name: "buildbucket/luci.chromium.ci/ChromiumOS ASAN Release" - short_name: "cro" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Debug" - category: "linux asan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Release" - category: "linux asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Release Media" - category: "linux asan" - short_name: "med" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Debug (32-bit x86 with V8-ARM)" - category: "linux asan|x64 v8-ARM" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Release (32-bit x86 with V8-ARM)" - category: "linux asan|x64 v8-ARM" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Release Media (32-bit x86 with V8-ARM)" - category: "linux asan|x64 v8-ARM" - short_name: "med" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Chrome OS ASan" - category: "libfuzz" - short_name: "chromeos-asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan" - category: "libfuzz" - short_name: "linux32" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan Debug" - category: "libfuzz" - short_name: "linux32-dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan" - category: "libfuzz" - short_name: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan Debug" - category: "libfuzz" - short_name: "linux-dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux MSan" - category: "libfuzz" - short_name: "linux-msan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux UBSan" - category: "libfuzz" - short_name: "linux-ubsan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Mac ASan" - category: "libfuzz" - short_name: "mac-asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Windows ASan" - category: "libfuzz" - short_name: "win-asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan" - category: "libfuzz" - short_name: "arm" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan Debug" - category: "libfuzz" - short_name: "arm-dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan" - category: "libfuzz" - short_name: "arm64" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan Debug" - category: "libfuzz" - short_name: "arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/MSAN Release (chained origins)" - category: "linux msan" - short_name: "org" - } - builders { - name: "buildbucket/luci.chromium.ci/MSAN Release (no origins)" - category: "linux msan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/TSAN Debug" - category: "linux tsan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/TSAN Release" - category: "linux tsan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSan Release" - category: "linux UBSan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSan vptr Release" - category: "linux UBSan" - short_name: "vpt" - } -} - -consoles { - header_id: "chromium" - id: "chromium" - name: "chromium" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - include_experimental_builds: true - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg" - category: "android" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-rel" - category: "android" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-dbg" - category: "linux" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel" - category: "linux" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-dbg" - category: "mac" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel" - category: "mac" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel" - category: "win-rel" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/win-archive-rel" - category: "win-rel" - short_name: "64" - } -} - -consoles { - header_id: "chromium" - id: "chromium.android" - name: "chromium.android" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm-dbg" - category: "cronet|arm" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm-rel" - category: "cronet|arm" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm64-dbg" - category: "cronet|arm64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm64-rel" - category: "cronet|arm64" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-x86-dbg" - category: "cronet|x86" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-x86-rel" - category: "cronet|x86" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-asan-arm-rel" - category: "cronet|asan" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-kitkat-arm-rel" - category: "cronet|test" - short_name: "k" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-lollipop-arm-rel" - category: "cronet|test" - short_name: "l" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-rel" - category: "cronet|test" - short_name: "m" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-perf-rel" - category: "cronet|test|perf" - short_name: "m" - } - builders { - name: "buildbucket/luci.chromium.ci/android-jumbo-rel" - category: "builder" - } - builders { - name: "buildbucket/luci.chromium.ci/Android arm Builder (dbg)" - category: "builder|arm" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Android arm64 Builder (dbg)" - category: "builder|arm" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Android x86 Builder (dbg)" - category: "builder|x86" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.ci/Android x64 Builder (dbg)" - category: "builder|x86" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Android" - category: "builder|det" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Android (dbg)" - category: "builder|det" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/KitKat Phone Tester (dbg)" - category: "tester|phone" - short_name: "K" - } - builders { - name: "buildbucket/luci.chromium.ci/Lollipop Phone Tester" - category: "tester|phone" - short_name: "L" - } - builders { - name: "buildbucket/luci.chromium.ci/Marshmallow 64 bit Tester" - category: "tester|phone" - short_name: "M" - } - builders { - name: "buildbucket/luci.chromium.ci/Nougat Phone Tester" - category: "tester|phone" - short_name: "N" - } - builders { - name: "buildbucket/luci.chromium.ci/Oreo Phone Tester" - category: "tester|phone" - short_name: "O" - } - builders { - name: "buildbucket/luci.chromium.ci/android-pie-arm64-dbg" - category: "tester|phone" - short_name: "P" - } - builders { - name: "buildbucket/luci.chromium.ci/KitKat Tablet Tester" - category: "tester|tablet" - short_name: "K" - } - builders { - name: "buildbucket/luci.chromium.ci/Lollipop Tablet Tester" - category: "tester|tablet" - short_name: "L" - } - builders { - name: "buildbucket/luci.chromium.ci/Marshmallow Tablet Tester" - category: "tester|tablet" - short_name: "M" - } - builders { - name: "buildbucket/luci.chromium.ci/android-incremental-dbg" - category: "tester|incremental" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView L (dbg)" - category: "tester|webview" - short_name: "L" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView M (dbg)" - category: "tester|webview" - short_name: "M" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView N (dbg)" - category: "tester|webview" - short_name: "N" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView O (dbg)" - category: "tester|webview" - short_name: "O" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView P (dbg)" - category: "tester|webview" - short_name: "P" - } - builders { - name: "buildbucket/luci.chromium.ci/android-kitkat-arm-rel" - category: "on_cq" - short_name: "K" - } - builders { - name: "buildbucket/luci.chromium.ci/android-marshmallow-arm64-rel" - category: "on_cq" - short_name: "M" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Android (dbg)" - category: "on_cq" - short_name: "cst" - } - builders { - name: "buildbucket/luci.chromium.ci/Android ASAN (dbg)" - category: "on_cq" - short_name: "san" - } - builders { - name: "buildbucket/luci.chromium.ci/android-pie-arm64-rel" - category: "on_cq|future" - short_name: "P" - } -} - -consoles { - header_id: "chromium" - id: "chromium.android.fyi" - name: "chromium.android.fyi" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/android-bfcache-debug" - category: "android" - } - builders { - name: "buildbucket/luci.chromium.ci/Memory Infra Tester" - category: "Memory" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView P FYI (rel)" - category: "webview" - short_name: "p-rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView P OOR-CORS FYI (rel)" - category: "webview" - short_name: "cors" - } - builders { - name: "buildbucket/luci.chromium.ci/android-marshmallow-x86-fyi-rel" - category: "emulator|M|x86" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-pie-x86-fyi-rel" - category: "emulator|P|x86" - short_name: "rel" - } -} - -consoles { - header_id: "chromium" - id: "chromium.clang" - name: "chromium.clang" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - - builders { - name: "buildbucket/luci.chromium.ci/ToTLinux" - category: "ToT Linux" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chrome.ci/ToTLinuxOfficial" - category: "ToT Linux" - short_name: "ofi" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTLinux (dbg)" - category: "ToT Linux" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTLinuxASan" - category: "ToT Linux" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTLinuxASanLibfuzzer" - category: "ToT Linux" - short_name: "fuz" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTLinuxMSan" - category: "ToT Linux" - short_name: "msn" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTLinuxTSan" - category: "ToT Linux" - short_name: "tsn" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTLinuxThinLTO" - category: "ToT Linux" - short_name: "lto" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTLinuxUBSanVptr" - category: "ToT Linux" - short_name: "usn" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTAndroid" - category: "ToT Android" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTAndroid (dbg)" - category: "ToT Android" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTAndroid x64" - category: "ToT Android" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTAndroid64" - category: "ToT Android" - short_name: "a64" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTAndroidASan" - category: "ToT Android" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTAndroidCFI" - category: "ToT Android" - short_name: "cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTAndroidOfficial" - category: "ToT Android" - short_name: "off" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTMac" - category: "ToT Mac" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chrome.ci/ToTMacOfficial" - category: "ToT Mac" - short_name: "ofi" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTMac (dbg)" - category: "ToT Mac" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTMacASan" - category: "ToT Mac" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chrome.ci/ToTWin" - category: "ToT Windows" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chrome.ci/ToTWinOfficial" - category: "ToT Windows" - short_name: "ofi" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTWin(dbg)" - category: "ToT Windows" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTWin(dll)" - category: "ToT Windows" - short_name: "dll" - } - builders { - name: "buildbucket/luci.chrome.ci/ToTWin64" - category: "ToT Windows|x64" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTWin64(dbg)" - category: "ToT Windows|x64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTWin64(dll)" - category: "ToT Windows|x64" - short_name: "dll" - } - builders { - name: "buildbucket/luci.chrome.ci/ToTWinThinLTO64" - category: "ToT Windows|x64" - short_name: "lto" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTWinLibcxx64" - category: "ToT Windows|x64" - short_name: "cxx" - } - builders { - name: "buildbucket/luci.chromium.ci/CrWinAsan" - category: "ToT Windows|Asan" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/CrWinAsan(dll)" - category: "ToT Windows|Asan" - short_name: "dll" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTWinASanLibfuzzer" - category: "ToT Windows|Asan" - short_name: "fuz" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-win_cross-rel" - category: "ToT Windows" - short_name: "lxw" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTLinuxCoverage" - category: "ToT Code Coverage" - short_name: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTMacCoverage" - category: "ToT Code Coverage" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/CFI Linux CF" - category: "CFI|Linux" - short_name: "CF" - } - builders { - name: "buildbucket/luci.chromium.ci/CFI Linux ToT" - category: "CFI|Linux" - short_name: "ToT" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTWinCFI" - category: "CFI|Win" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTWinCFI64" - category: "CFI|Win" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTiOS" - category: "iOS" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ToTiOSDevice" - category: "iOS" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSanVptr Linux" - short_name: "usn" - } -} - -consoles { - header_id: "chromium" - id: "chromium.fyi.goma" - name: "chromium.fyi.goma" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Win Builder Goma Canary" - category: "win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Canary" - category: "win|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-canary-localoutputcache" - category: "win|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Canary LocalOutputCache" - category: "cl.exe|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Canary" - category: "win7|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Canary" - category: "win7|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Canary" - category: "cl.exe|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder Goma Canary" - category: "mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary" - category: "mac|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary" - category: "mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary (clobber)" - category: "mac|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary-localoutputcache" - category: "mac|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-canary" - category: "cros|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma Canary" - category: "linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary" - category: "linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary-localoutputcache" - category: "linux|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-canary" - category: "android|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-canary-clobber" - category: "ios|rel" - short_name: "clb" - } - # RBE - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-canary" - category: "rbe|linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-ats-canary" - category: "rbe|linux|rel" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma RBE Canary" - category: "rbe|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-rbe-canary" - category: "rbe|cros|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-canary" - category: "rbe|android|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-ats-canary" - category: "rbe|android|dbg" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-rbe-canary" - category: "rbe|mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma RBE Canary (clobber)" - category: "rbe|mac|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-rbe-canary-clobber" - category: "rbe|ios" - short_name: "clb" - } -} - -consoles { - header_id: "chromium" - id: "goma.latest" - name: "goma.latest" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Win Builder Goma Latest Client" - category: "win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Latest Client" - category: "win|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-latest-localoutputcache" - category: "win|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Latest Client LocalOutputCache" - category: "cl.exe|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Latest Client" - category: "win7|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Latest Client" - category: "win7|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Latest Client" - category: "cl.exe|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder Goma Latest Client" - category: "mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Latest Client" - category: "mac|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-latest" - category: "mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Latest Client (clobber)" - category: "mac|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-latest-localoutputcache" - category: "mac|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-latest" - category: "cros|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma Latest Client" - category: "linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-latest" - category: "linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-latest-localoutputcache" - category: "linux|rel" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-latest" - category: "android|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-latest-clobber" - category: "ios" - short_name: "clb" - } - # RBE - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-latest" - category: "rbe|linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-rbe-ats-latest" - category: "rbe|linux|rel" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma RBE Latest Client" - category: "rbe|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-rbe-latest" - category: "rbe|cros|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-latest" - category: "rbe|android|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-archive-dbg-goma-rbe-ats-latest" - category: "rbe|android|dbg" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-rbe-latest" - category: "rbe|mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma RBE Latest Client (clobber)" - category: "rbe|mac|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-rbe-latest-clobber" - category: "rbe|ios" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder Goma RBE Latest Client" - category: "rbe|win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma RBE Latest Client" - category: "rbe|win|dbg" - } -} - -consoles { - header_id: "chromium" - id: "chromium.fyi" - name: "chromium.fyi" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Closure Compilation Linux" - category: "closure_compilation" - } - builders { - name: "buildbucket/luci.chromium.ci/android-code-coverage" - category: "code_coverage" - short_name: "and" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-code-coverage" - category: "code_coverage" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-vm-code-coverage" - category: "code_coverage" - short_name: "vm" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-code-coverage" - category: "code_coverage" - short_name: "lcr" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-code-coverage-generation" - category: "code_coverage" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-code-coverage" - category: "code_coverage" - short_name: "ios" - } - builders { - name: "buildbucket/luci.chromium.ci/win10-code-coverage" - category: "code_coverage" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-cronet" - category: "cronet" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-hermetic-upgrade-rel" - category: "mac" - short_name: "herm" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-osxbeta-rel" - category: "mac" - short_name: "beta" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-jumbo-rel" - category: "mac" - short_name: "jmb" - } - builders { - name: "buildbucket/luci.chromium.ci/win-jumbo-rel" - category: "win" - short_name: "jmb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac deterministic" - category: "deterministic|mac" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac deterministic (dbg)" - category: "deterministic|mac" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel" - category: "fuchsia" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-dbg" - category: "fuchsia" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel" - category: "fuchsia" - } - builders { - name: "buildbucket/luci.chromium.ci/Android Builder (dbg) Goma Canary" - category: "goma|android|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder Goma Canary" - category: "goma|linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary" - category: "goma|linux" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-archive-rel-goma-canary-localoutputcache" - category: "goma|linux" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary" - category: "goma|mac|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg) Goma Canary (clobber)" - category: "goma|mac|debug" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder Goma Canary" - category: "goma|mac" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary" - category: "goma|mac" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-archive-rel-goma-canary-localoutputcache" - category: "goma|mac" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder (dbg) Goma Canary" - category: "goma|win|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder (dbg) Goma Canary" - category: "goma|win|debug" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.ci/Win Builder Goma Canary" - category: "goma|win" - } - builders { - name: "buildbucket/luci.chromium.ci/win32-archive-rel-goma-canary-localoutputcache" - category: "goma|win" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 Builder Goma Canary" - category: "goma|win" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.ci/Win cl.exe Goma Canary LocalOutputCache" - category: "goma|win|cl.exe" - short_name: "loc" - } - builders { - name: "buildbucket/luci.chromium.ci/WinMSVC64 Goma Canary" - category: "goma|win|cl.exe" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-goma-canary" - category: "goma|chromeos" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel-vm-tests" - category: "chromeos" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-kevin-rel-hw-tests" - category: "chromos" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-goma-canary-clobber" - category: "goma|ios" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-cr-recipe" - category: "iOS" - short_name: "chr" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-webkit-tot" - category: "iOS" - short_name: "wk" - } - builders { - name: "buildbucket/luci.chromium.ci/ios12-beta-simulator" - category: "iOS|iOS12" - short_name: "beta" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-sdk-device" - category: "iOS|iOS13" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-sdk-simulator" - category: "iOS|iOS13" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-beta-simulator" - category: "iOS|iOS13" - short_name: "ios13" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Linux x64" - category: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Mac" - category: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Win x64" - category: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-animation-use-time-delta" - category: "linux|blink" - short_name: "TD" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-heap-concurrent-marking-tsan-rel" - category: "linux|blink" - short_name: "CM" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-heap-verification" - category: "linux|blink" - short_name: "VF" - } - builders { - name: "buildbucket/luci.chromium.ci/VR Linux" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-bfcache-debug" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-oor-cors-rel" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-fieldtrial-rel" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-wpt-fyi-rel" - category: "linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Android" - category: "mojo" - short_name: "and" - } - builders { - name: "buildbucket/luci.chromium.ci/android-mojo-webview-rel" - category: "mojo" - short_name: "aw" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo ChromiumOS" - category: "mojo" - short_name: "cr" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Linux" - category: "mojo" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-mojo-rel" - category: "mojo" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Windows" - category: "mojo" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-builder" - category: "recipe|staging|linux" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-tests" - category: "recipe|staging|linux" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux remote_run Builder" - category: "remote_run" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux remote_run Tester" - category: "remote_run" - } - builders { - name: "buildbucket/luci.chromium.ci/Site Isolation Android" - category: "site_isolation" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-annotator-rel" - category: "network|traffic|annotations" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/win-annotator-rel" - category: "network|traffic|annotations" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Viz" - category: "viz" - } - builders { - name: "buildbucket/luci.chromium.ci/Win 10 Fast Ring" - category: "win10" - } - builders { - name: "buildbucket/luci.chromium.ci/win-pixel-builder-rel" - category: "win10" - } - builders { - name: "buildbucket/luci.chromium.ci/win-pixel-tester-rel" - category: "win10" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 Tests x64 1803" - category: "win10|1803" - } - builders { - name: "buildbucket/luci.chromium.ci/win-celab-builder-rel" - category: "celab" - } - builders { - name: "buildbucket/luci.chromium.ci/win-celab-tester-rel" - category: "celab" - } -} - -consoles { - header_id: "chromium" - id: "chromium.goma" - name: "chromium.goma" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - include_experimental_builds: true - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma Staging" - category: "clients5" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma Staging" - category: "clients5" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/CrWinGomaStaging" - category: "clients5" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE ToT" - category: "rbe|tot|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE ToT (ATS)" - category: "rbe|tot|linux|rel" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE ToT" - category: "rbe|tot|mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE ToT" - category: "rbe|tot|win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE ToT" - category: "rbe|tot|android arm|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE ToT (ATS)" - category: "rbe|tot|android arm|rel" - short_name: "ats" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (clobber)" - category: "rbe|staging|linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging" - category: "rbe|staging|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg) (clobber)" - category: "rbe|staging|linux|debug" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg)" - category: "rbe|staging|linux|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging (clobber)" - category: "rbe|staging|mac|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging" - category: "rbe|staging|mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Staging (dbg)" - category: "rbe|staging|mac|debug" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Staging" - category: "rbe|staging|win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Staging (clobber)" - category: "rbe|staging|win|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Staging" - category: "rbe|staging|android arm|rel" - } -} - -consoles { - header_id: "chromium" - include_experimental_builds: true - id: "luci.chromium.goma" - name: "luci.chromium.goma" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma Staging" - category: "clients5" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma Staging" - category: "clients5" - short_name: "mac" - } - builders { - name: "buildbucket/luci.chromium.ci/CrWinGomaStaging" - category: "clients5" - short_name: "win" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (clobber)" - category: "rbe|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging" - category: "rbe|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg) (clobber)" - category: "rbe|debug" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Staging (dbg)" - category: "rbe|debug" - } -} - -consoles { - header_id: "chromium" - id: "chromium.goma.fyi" - name: "chromium.goma.fyi" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - include_experimental_builds: true - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod" - category: "prod|linux|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (clobber)" - category: "prod|linux|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (dbg)" - category: "prod|linux|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Linux Goma RBE Prod (dbg) (clobber)" - category: "prod|linux|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Mac Goma RBE Prod" - category: "prod|mac|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod" - category: "prod|win|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (clobber)" - category: "prod|win|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (dbg)" - category: "prod|win|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Win Goma RBE Prod (dbg) (clobber)" - category: "prod|win|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod" - category: "prod|android arm|rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (clobber)" - category: "prod|android arm|rel" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (dbg)" - category: "prod|android arm|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Chromium Android ARM 32-bit Goma RBE Prod (dbg) (clobber)" - category: "prod|android arm|dbg" - short_name: "clb" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel (Goma RBE FYI)" - category: "prod|chromium.linux|fuchsia|misc" - short_name: "a64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel (Goma RBE FYI)" - category: "prod|chromium.linux|fuchsia|misc" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel (Goma RBE FYI)" - category: "tot|chromium.chromiumos|simple|release|x64" - short_name: "rel" - } -} - -# These are used for monitoring builders that have recently been migrated to -# Goma RBE (See crbug.com/950413). -consoles { - header_id: "chromium" - id: "chromium.goma.migration" - name: "chromium.goma.migration" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - include_experimental_builds: true - builders { - name: "buildbucket/luci.chromium.ci/VR Linux" - category: "week1|linux" - short_name: "vr" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Linux" - category: "week1|linux" - short_name: "mojo" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)" - category: "week1|linux|dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder (dbg)(32)" - category: "week1|linux|dbg" - short_name: "32bit" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux CFI" - category: "week1|linux|cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/CFI Linux CF" - category: "week1|linux|cfi" - short_name: "cf" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux MSan Builder" - category: "week1|linux" - short_name: "msan" - } - builders { - name: "buildbucket/luci.chromium.ci/Afl Upload Linux ASan" - category: "week1|linux" - short_name: "afl-asan" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux ASAN" - category: "week1|linux|webkit" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux Leak" - category: "week1|linux|webkit" - short_name: "leak" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Linux MSAN" - category: "week1|linux|webkit" - short_name: "msan" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 32 Vk Release (Pixel 2)" - category: "week2a|android|32" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 32 dEQP Vk Release (Pixel 2)" - category: "week2a|android|32deqp" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 Vk Release (Pixel 2)" - category: "week2a|android|64" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 dEQP Vk Release (Pixel 2)" - category: "week2a|android|64deqp" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (NVIDIA Shield TV)" - category: "week2a|android|rel" - short_name: "shdtv" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5)" - category: "week2a|android|rel" - short_name: "n5" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5X)" - category: "week2a|android|rel" - short_name: "n5x" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6)" - category: "week2a|android|rel" - short_name: "n6" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6P)" - category: "week2a|android|rel" - short_name: "n6p" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 9)" - category: "week2a|android|rel" - short_name: "n9" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Pixel 2)" - category: "week2a|android|rel" - short_name: "p2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI dEQP Release (Nexus 5X)" - category: "week2a|android|deqp" - short_name: "n5x" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Android" - category: "week2a|android|det" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Android (dbg)" - category: "week2a|android|det" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder" - category: "week2b|android|release" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder (dbg)" - category: "week2b|android|debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder ARM64 (dbg)" - category: "week2b|android|debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder" - category: "week2b|linux|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder (dbg)" - category: "week2b|linux|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder" - category: "week2b|mac|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder (dbg)" - category: "week2b|mac|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Android Builder" - category: "week2b|android" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Linux Builder" - category: "week2b|linux" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Mac Builder" - category: "week2b|mac" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASAN Release" - category: "week2c|mac|asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASAN Release Media" - category: "week2c|mac|asan" - short_name: "media" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac ASan 64 Builder" - category: "week2c|mac|asan" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Mac ASan" - category: "week2c|mac|asan" - short_name: "fuzz" - } - builders { - name: "buildbucket/luci.chromium.ci/WebKit Mac10.13 (retina)" - category: "week2c|mac" - short_name: "webkit" - } - builders { - name: "buildbucket/luci.chromium.ci/Android CFI" - category: "week2c|android" - short_name: "cfi" - } - builders { - name: "buildbucket/luci.chromium.ci/Site Isolation Android" - category: "week2c|android" - short_name: "isolate" - } - builders { - name: "buildbucket/luci.chromium.ci/Mojo Android" - category: "week2c|android" - short_name: "mojo" - } - builders { - name: "buildbucket/luci.chromium.ci/Android x64 Builder (dbg)" - category: "week2c|android|dbg" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Android x86 Builder (dbg)" - category: "week2c|android|dbg" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView L (dbg)" - category: "week2c|android|dbg|webview" - short_name: "l" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView M (dbg)" - category: "week2c|android|dbg|webview" - short_name: "m" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView N (dbg)" - category: "week2c|android|dbg|webview" - short_name: "n" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView O (dbg)" - category: "week2c|android|dbg|webview" - short_name: "o" - } - builders { - name: "buildbucket/luci.chromium.ci/Android WebView P FYI (rel)" - category: "week2c|android|rel|webview" - short_name: "p" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Builder" - category: "week2d|linux|dawn" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Builder" - category: "week2d|linux|dawn" - short_name: "deps" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder" - category: "week2d|linux|gpu|fyi" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder (dbg)" - category: "week2d|linux|gpu|fyi" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Ozone Builder" - category: "week2d|linux|gpu|fyi" - short_name: "ozone" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux dEQP Builder" - category: "week2d|linux|gpu|fyi" - short_name: "deqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI GPU TSAN Release" - category: "week2d|linux|gpu|fyi" - short_name: "tsan" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Linux Builder (dbg)" - category: "week2d|linux|gpu" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Viz" - category: "week2d|linux" - short_name: "viz" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux remote_run Builder" - category: "week2d|linux" - short_name: "rem" - } - builders { - name: "buildbucket/luci.chromium.ci/Closure Compilation Linux" - category: "week2d|linux" - short_name: "clsr" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux" - category: "week2d|linux|det" - } - builders { - name: "buildbucket/luci.chromium.ci/Deterministic Linux (dbg)" - category: "week2d|linux|det" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Linux x64" - category: "week2d|linux" - short_name: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Builder" - category: "week2d|mac|dawn" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Builder" - category: "week2d|mac|dawn" - short_name: "deps" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder" - category: "week2d|mac|gpu|fyi" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder (dbg)" - category: "week2d|mac|gpu|fyi" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac dEQP Builder" - category: "week2d|mac|gpu|fyi" - short_name: "deqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI GPU ASAN Release" - category: "week2d|mac|gpu|fyi" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Mac Builder (dbg)" - category: "week2d|mac|gpu" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac deterministic" - category: "week2d|mac|det" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac deterministic (dbg)" - category: "week2d|mac|det" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Jumbo Mac" - category: "week2d|mac" - short_name: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Builder" - category: "week2.5|linux" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Linux Builder" - category: "week2.5|linux" - short_name: "gpu" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-ozone-rel" - category: "week3a|linux" - short_name: "ozone" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-annotator-rel" - category: "week3a|linux" - short_name: "anno" - } - builders { - name: "buildbucket/luci.chromium.ci/linux_chromium_component_updater" - category: "week3a|linux" - short_name: "cc_upd" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-code-coverage" - category: "week3a|linux" - short_name: "code" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-animation-use-time-delta" - category: "week3a|linux|blink" - short_name: "anim" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-heap-concurrent-marking-tsan-rel" - category: "week3a|linux|blink" - short_name: "tsan" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-blink-heap-verification" - category: "week3a|linux|blink" - short_name: "ver" - } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromium-tests-staging-builder" - category: "week3a|linux" - short_name: "crtests" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm-dbg" - category: "week3b|android|cronet|arm" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm-rel" - category: "week3b|android|cronet|arm" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-asan-arm-rel" - category: "week3b|android|cronet|arm" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-kitkat-arm-rel" - category: "week3b|android|cronet|arm" - short_name: "kkat" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-lollipop-arm-rel" - category: "week3b|android|cronet|arm" - short_name: "lpop" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm64-rel" - category: "week3b|android|cronet|arm64" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-arm64-dbg" - category: "week3b|android|cronet|arm64" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-rel" - category: "week3b|android|cronet|arm64" - short_name: "marsh" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-marshmallow-arm64-perf-rel" - category: "week3b|android|cronet|arm64" - short_name: "perf" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-x86-rel" - category: "week3b|android|cronet|x86" - } - builders { - name: "buildbucket/luci.chromium.ci/android-cronet-x86-dbg" - category: "week3b|android|cronet|x86" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/android-incremental-dbg" - category: "week3b|android" - short_name: "inc" - } - builders { - name: "buildbucket/luci.chromium.ci/android-kitkat-arm-rel" - category: "week3b|android" - short_name: "kkat" - } - builders { - name: "buildbucket/luci.chromium.ci/android-mojo-webview-rel" - category: "week3b|android" - short_name: "mojo" - } - builders { - name: "buildbucket/luci.chromium.ci/android-pie-arm64-dbg" - category: "week3b|linux" - short_name: "pie" - } - builders: { - name: "buildbucket/luci.chromium.ci/mac-code-coverage-generation" - category: "week3c|mac" - short_name: "code" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-hermetic-upgrade-rel" - category: "week3c|mac" - short_name: "herm" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-jumbo-rel" - category: "week3c|mac" - short_name: "jumbo" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-mojo-rel" - category: "week3c|mac" - short_name: "mojo" - } - builders { - name: "buildbucket/luci.chromium.ci/mac-osxbeta-rel" - category: "week3c|mac" - short_name: "osx" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder" - category: "week3c|mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Builder (dbg)" - category: "week3c|mac" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Mac Builder" - category: "week3c|mac" - short_name: "gpu" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan" - category: "week4|linux" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux ASan Debug" - category: "week4|linux" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux MSan" - category: "week4|linux" - short_name: "msan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux UBSan" - category: "week4|linux" - short_name: "ubsan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan" - category: "week4|linux|v8arm" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux V8-ARM64 ASan Debug" - category: "week4|linux|v8arm" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan" - category: "week4|linux32" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 ASan Debug" - category: "week4|linux32" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan" - category: "week4|linux32|v8arm" - short_name: "asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Libfuzzer Upload Linux32 V8-ARM ASan Debug" - category: "week4|linux32|v8arm" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Debug (32-bit x86 with V8-ARM)" - category: "week5|asan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Release (32-bit x86 with V8-ARM)" - category: "week5|asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ASan Release Media (32-bit x86 with V8-ARM)" - category: "week5|asan" - short_name: "media" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Debug" - category: "week6|asan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Release" - category: "week6|asan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/ASAN Release Media" - category: "week6|asan" - short_name: "media" - } - builders { - name: "buildbucket/luci.chromium.ci/MSAN Release (chained origins)" - category: "week7|msan" - short_name: "chain" - } - builders { - name: "buildbucket/luci.chromium.ci/MSAN Release (no origins)" - category: "week7|msan" - short_name: "none" - } - builders { - name: "buildbucket/luci.chromium.ci/TSAN Release" - category: "week8|tsan" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/TSAN Debug" - category: "week8|tsan" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSan Release" - category: "week9|ubsan" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSan vptr Release" - category: "week9|ubsan|vptr" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/UBSanVptr Linux" - category: "week9|ubsan|vptr" - short_name: "lnx" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Android (dbg)" - category: "week10|android" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Audio Linux" - category: "week10|linux" - short_name: "audio" - } - builders { - name: "buildbucket/luci.chromium.ci/Cast Linux" - category: "week10|linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" - category: "week11|fuchsia|arm64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast" - category: "week11|fuchsia|arm64" - short_name: "cast" - } - builders { - name: "buildbucket/luci.chromium.ci/Fuchsia x64" - category: "week11|fuchsia|x64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast" - category: "week11|fuchsia|x64" - short_name: "cast" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-rel" - category: "week11|fuchsia|fyi" - short_name: "arm64" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-dbg" - category: "week11|fuchsia|fyi" - short_name: "x64 dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-rel" - category: "week11|fuchsia|fyi" - short_name: "x64 rel" - } - builders { - name: "buildbucket/luci.chromium.ci/android-marshmallow-arm64-rel" - category: "week13|android" - short_name: "marsh" - } - builders { - name: "buildbucket/luci.chromium.ci/Android Release (Nexus 5X)" - category: "week13|android" - short_name: "n5x" - } - builders { - name: "buildbucket/luci.chromium.ci/Win ASan Release" - category: "win|week1|asan" - } - builders { - name: "buildbucket/luci.chromium.ci/Win ASan Release Media" - category: "win|week1|asan" - short_name: "media" - } -} - -consoles { - header_id: "chromium" - id: "chromium.gpu" - name: "chromium.gpu" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/GPU Win x64 Builder" - category: "Windows" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Win x64 Builder (dbg)" - category: "Windows" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 x64 Debug (NVIDIA)" - category: "Windows" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 x64 Release (NVIDIA)" - category: "Windows" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Mac Builder" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Mac Builder (dbg)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Debug (Intel)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Release (Intel)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Retina Debug (AMD)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Retina Release (AMD)" - category: "Mac" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Linux Builder" - category: "Linux" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU Linux Builder (dbg)" - category: "Linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Debug (NVIDIA)" - category: "Linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux Release (NVIDIA)" - category: "Linux" - } - builders { - name: "buildbucket/luci.chromium.ci/Android Release (Nexus 5X)" - category: "Android" - } -} - -consoles { - header_id: "chromium" - id: "chromium.gpu.fyi" - name: "chromium.gpu.fyi" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win Builder" - category: "Windows|Builder|Release" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 Builder" - category: "Windows|Builder|Release" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win dEQP Builder" - category: "Windows|Builder|dEQP" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 dEQP Builder" - category: "Windows|Builder|dEQP" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win Builder (dbg)" - category: "Windows|Builder|Debug" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Win x64 Builder (dbg)" - category: "Windows|Builder|Debug" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI XR Win x64 Builder" - category: "Windows|Builder|XR" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Debug (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (Intel HD 630)" - category: "Windows|10|x64|Intel" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (Intel UHD 630)" - category: "Windows|10|x64|Intel" - short_name: "uhd" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release XR Perf (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "xr" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 dEQP Release (Intel HD 630)" - category: "Windows|10|x64|Intel" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 dEQP Release (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Exp Release (Intel HD 630)" - category: "Windows|10|x64|Intel" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Exp Release (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (AMD RX 550)" - category: "Windows|10|x64|AMD" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 Release (NVIDIA GeForce GTX 1660)" - category: "Windows|10|x64|Nvidia" - short_name: "gtx" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x64 SkiaRenderer GL (NVIDIA)" - category: "Windows|10|x64|Nvidia" - short_name: "skgl" - } - builders { - name: "buildbucket/luci.chromium.ci/Win10 FYI x86 Release (NVIDIA)" - category: "Windows|10|x86|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI Debug (AMD)" - category: "Windows|7|x86|AMD" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI dEQP Release (AMD)" - category: "Windows|7|x86|AMD" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI Release (AMD)" - category: "Windows|7|x86|AMD" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI Release (NVIDIA)" - category: "Windows|7|x86|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI x64 Release (NVIDIA)" - category: "Windows|7|x64|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Win7 FYI x64 dEQP Release (NVIDIA)" - category: "Windows|7|x64|Nvidia" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder" - category: "Mac|Builder" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac Builder (dbg)" - category: "Mac|Builder" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Mac dEQP Builder" - category: "Mac|Builder" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Debug (Intel)" - category: "Mac|Intel" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Release (Intel)" - category: "Mac|Intel" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI dEQP Release Intel" - category: "Mac|Intel" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Release (Intel)" - category: "Mac|Intel" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac Pro FYI Release (AMD)" - category: "Mac|AMD|Pro" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI dEQP Release AMD" - category: "Mac|AMD" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Retina Debug (AMD)" - category: "Mac|AMD|Retina" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Retina Release (AMD)" - category: "Mac|AMD|Retina" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Retina Release (AMD)" - category: "Mac|AMD|Retina" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Retina Debug (NVIDIA)" - category: "Mac|Nvidia" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Retina Release (NVIDIA)" - category: "Mac|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI Experimental Retina Release (NVIDIA)" - category: "Mac|Nvidia" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Mac FYI GPU ASAN Release" - category: "Mac" - short_name: "asn" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder" - category: "Linux|Builder" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Builder (dbg)" - category: "Linux|Builder" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux Ozone Builder" - category: "Linux|Builder" - short_name: "ozn" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Linux dEQP Builder" - category: "Linux|Builder" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Experimental Release (Intel HD 630)" - category: "Linux|Intel" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Release (Intel HD 630)" - category: "Linux|Intel" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Release (Intel UHD 630)" - category: "Linux|Intel" - short_name: "uhd" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI dEQP Release (Intel HD 630)" - category: "Linux|Intel" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Ozone (Intel)" - category: "Linux|Intel" - short_name: "ozn" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Release (AMD R7 240)" - category: "Linux" - short_name: "amd" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Release (NVIDIA)" - category: "Linux|Nvidia" - short_name: "rel" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Experimental Release (NVIDIA)" - category: "Linux|Nvidia" - short_name: "exp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI Debug (NVIDIA)" - category: "Linux|Nvidia" - short_name: "dbg" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI dEQP Release (NVIDIA)" - category: "Linux|Nvidia" - short_name: "dqp" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI SkiaRenderer Vulkan (Intel HD 630)" - category: "Linux|Intel" - short_name: "skv" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI SkiaRenderer Vulkan (NVIDIA)" - category: "Linux|Nvidia" - short_name: "skv" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux FYI GPU TSAN Release" - category: "Linux" - short_name: "tsn" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5)" - category: "Android|L32" - short_name: "N5" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6)" - category: "Android|L32" - short_name: "N6" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 5X)" - category: "Android|M64|QCOM" - short_name: "N5X" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 6P)" - category: "Android|M64|QCOM" - short_name: "N6P" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Nexus 9)" - category: "Android|M64|NVDA" - short_name: "N9" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (NVIDIA Shield TV)" - category: "Android|N64|NVDA" - short_name: "STV" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI Release (Pixel 2)" - category: "Android|P32|QCOM" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 32 Vk Release (Pixel 2)" - category: "Android|vk|Q32" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 Vk Release (Pixel 2)" - category: "Android|vk|Q64" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI dEQP Release (Nexus 5X)" - category: "Android|dqp|M64" - short_name: "N5X" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 32 dEQP Vk Release (Pixel 2)" - category: "Android|dqp|vk|Q32" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 dEQP Vk Release (Pixel 2)" - category: "Android|dqp|vk|Q64" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI SkiaRenderer GL (Nexus 5X)" - category: "Android|skgl|M64" - short_name: "N5X" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI SkiaRenderer Vulkan (Pixel 2)" - category: "Android|skv|P32" - short_name: "P2" - } - builders { - name: "buildbucket/luci.chromium.ci/GPU FYI Perf Android 64 Builder" - category: "Android|Perf|Builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.ci/Android FYI 64 Perf (Pixel 2)" - category: "Android|Perf|Q64" - short_name: "P2" - } -} - -consoles { - header_id: "chromium" - id: "chromium.dawn" - name: "chromium.dawn" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Builder" - category: "ToT|Linux|Builder" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Release (Intel HD 630)" - category: "ToT|Linux|Intel" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 Release (NVIDIA)" - category: "ToT|Linux|Nvidia" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Builder" - category: "ToT|Mac|Builder" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Release (AMD)" - category: "ToT|Mac|AMD" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 Release (Intel)" - category: "ToT|Mac|Intel" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 Builder" - category: "ToT|Windows|Builder" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 Builder" - category: "ToT|Windows|Builder" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 Release (Intel HD 630)" - category: "ToT|Windows|Intel" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 Release (Intel HD 630)" - category: "ToT|Windows|Intel" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 Release (NVIDIA)" - category: "ToT|Windows|Nvidia" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 Release (NVIDIA)" - category: "ToT|Windows|Nvidia" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Builder" - category: "DEPS|Linux|Builder" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Release (Intel HD 630)" - category: "DEPS|Linux|Intel" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Linux x64 DEPS Release (NVIDIA)" - category: "DEPS|Linux|Nvidia" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Builder" - category: "DEPS|Mac|Builder" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Release (AMD)" - category: "DEPS|Mac|AMD" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Mac x64 DEPS Release (Intel)" - category: "DEPS|Mac|Intel" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 DEPS Builder" - category: "DEPS|Windows|Builder" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 DEPS Builder" - category: "DEPS|Windows|Builder" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 DEPS Release (Intel HD 630)" - category: "DEPS|Windows|Intel" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 DEPS Release (Intel HD 630)" - category: "DEPS|Windows|Intel" - short_name: "x64" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x86 DEPS Release (NVIDIA)" - category: "DEPS|Windows|Nvidia" - short_name: "x86" - } - builders { - name: "buildbucket/luci.chromium.ci/Dawn Win10 x64 DEPS Release (NVIDIA)" - category: "DEPS|Windows|Nvidia" - short_name: "x64" - } -} - -consoles { - header_id: "chromium" - id: "chromium.webrtc" - name: "chromium.webrtc" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Android Builder" - category: "android" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Android Tester" - category: "android" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Linux Builder" - category: "linux" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Linux Tester" - category: "linux" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Mac Builder" - category: "mac" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Mac Tester" - category: "mac" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Win Builder" - category: "win" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Win10 Tester" - category: "win" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Win7 Tester" - category: "win" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.webrtc/WebRTC Chromium Win8 Tester" - category: "win" - short_name: "8" - } -} - -consoles { - header_id: "chromium" - id: "chromium.webrtc.fyi" - name: "chromium.webrtc.fyi" - repo_url: "https://webrtc.googlesource.com/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder (dbg)" - category: "android|debug|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder ARM64 (dbg)" - category: "android|debug|builder" - short_name: "64" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Tests (dbg) (K Nexus5)" - category: "android|debug|tester" - short_name: "K" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Tests (dbg) (M Nexus5X)" - category: "android|debug|tester" - short_name: "M" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Android Builder" - category: "android|release" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder (dbg)" - category: "linux|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Builder" - category: "linux|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Linux Tester" - category: "linux|release" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder (dbg)" - category: "mac|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Builder" - category: "mac|release" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Mac Tester" - category: "mac|release" - short_name: "tst" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win Builder (dbg)" - category: "win|debug" - short_name: "bld" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win Builder" - category: "win|release|builder" - short_name: "32" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win10 Tester" - category: "win|release|tester" - short_name: "10" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win7 Tester" - category: "win|release|tester" - short_name: "7" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI Win8 Tester" - category: "win|release|tester" - short_name: "8" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI ios-device" - category: "ios" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.webrtc.fyi/WebRTC Chromium FYI ios-simulator" - category: "ios" - short_name: "sim" - } -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.android" - name: "tryserver.chromium.android" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/android-opus-kitkat-arm-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android-binary-size" - } - builders { - name: "buildbucket/luci.chromium.try/android_blink_rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_cfi_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_clang_dbg_recipe" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_x64_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_x86_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_cronet" - } - builders { - name: "buildbucket/luci.chromium.try/android-cronet-arm-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_cronet_tester" - } - builders { - name: "buildbucket/luci.chromium.try/android_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-marshmallow-x86-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_unswarmed_pixel_aosp" - } - builders { - name: "buildbucket/luci.chromium.try/cast_shell_android" - } - builders { - name: "buildbucket/luci.chromium.try/linux_android_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android-kitkat-arm-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-5-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-6-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-deqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-skgl-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-6p-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-9-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-n-nvidia-shield-tv-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-skv-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-android-m-nexus-5x-64" - } - builders { - name: "buildbucket/luci.chromium.try/android-deterministic-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-deterministic-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/try-nougat-phone-tester" - } - builders { - name: "buildbucket/luci.chromium.try/android-oreo-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-x86-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-marshmallow-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-nougat-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-oreo-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-dbg" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.chromiumos" - name: "tryserver.chromium.chromiumos" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-arm-generic-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-arm-generic-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-kevin-compile-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-kevin-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-chromeos-compile-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/linux-chromeos-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/linux-chromeos-rel" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.linux" - name: "tryserver.chromium.linux" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/cast_shell_audio_linux" - } - builders { - name: "buildbucket/luci.chromium.try/cast_shell_linux" - } - builders { - name: "buildbucket/luci.chromium.try/chromium_presubmit" - } - builders { - name: "buildbucket/luci.chromium.try/closure_compilation" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia_arm64" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-arm64-cast" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-compile-x64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-fyi-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-fyi-x64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-fyi-x64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia_x64" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-x64-cast" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-skv" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-skv" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-tsn" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-rel" - } - builders { - name: "buildbucket/luci.chromium.try/layout_test_leak_detection" - } - builders { - name: "buildbucket/luci.chromium.try/leak_detection_linux" - } - builders { - name: "buildbucket/luci.chromium.try/linux-annotator-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-gcc-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-libfuzzer-asan-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-ozone-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-clang-tidy-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/linux-clang-tidy-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-trusty-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_arm" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_analysis" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_cfi_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_msan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_clobber_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_compile_dbg_32_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_component_updater" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_msan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_tsan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_ubsan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_layout_tests_composite_after_paint" - } - builders { - name: "buildbucket/luci.chromium.try/linux_layout_tests_layout_ng_disabled" - } - builders { - name: "buildbucket/luci.chromium.try/linux_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/linux_mojo_chromeos" - } - builders { - name: "buildbucket/luci.chromium.try/linux_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_upload_clang" - } - builders { - name: "buildbucket/luci.chromium.try/linux-viz-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_vr" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.mac" - name: "tryserver.chromium.mac" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-pro-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-asan" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-mac-amd-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-mac-intel-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/ios-device" - } - builders { - name: "buildbucket/luci.chromium.try/ios-device-xcode-clang" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-cr-recipe" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-cronet" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-full-configs" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-noncq" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-xcode-clang" - } - builders { - name: "buildbucket/luci.chromium.try/ios13-beta-simulator" - } - builders { - name: "buildbucket/luci.chromium.try/ios13-sdk-simulator" - } - builders { - name: "buildbucket/luci.chromium.try/ios-slimnav" - } - builders { - name: "buildbucket/luci.chromium.try/mac-osxbeta-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.10" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.10_macviews" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.12_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.13_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_compile_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_compile_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.13_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac_upload_clang" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "tryserver.chromium.win" - name: "tryserver.chromium.win" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win-xr-builder-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dbg-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dqp-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-exp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dbg-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-exp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-skgl-64" - } - builders { - name: "buildbucket/luci.chromium.try/win-libfuzzer-asan-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win7-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win10_chromium_x64_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_archive" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_compile_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_compile_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_x64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/win_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/win_upload_clang" - } - builders { - name: "buildbucket/luci.chromium.try/win_x64_archive" - } - builders { - name: "buildbucket/luci.chromium.try/win-annotator-rel" - } - builder_view_only: true -} - -consoles { - header_id: "" - id: "tryserver.blink" - name: "tryserver.blink" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/linux-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.10-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.11-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.12-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.13-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac10.13_retina-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win10-blink-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win7-blink-rel" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "angle.try" - name: "angle.try" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/android_angle_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk32_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk64_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk32_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_angle_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_angle_ozone_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-rel-64" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "luci.chromium.try" - name: "luci.chromium.try" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - builders { - name: "buildbucket/luci.chromium.try/android-cronet-arm-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-kitkat-arm-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-coverage-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-marshmallow-x64-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-oreo-arm64-cts-networkservice-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-arm64-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/android_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_arm64_dbg_recipe" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk32_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk64_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk32_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_angle_vk64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_cfi_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_x64_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_compile_x86_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/android_n5x_swarming_dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-marshmallow-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-nougat-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-oreo-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-webview-pie-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/cast_shell_audio_linux" - } - builders { - name: "buildbucket/luci.chromium.try/cast_shell_linux" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-cfi-thin-lto-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-arm-generic-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-arm-generic-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-kevin-compile-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-kevin-experimental-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromeos-kevin-rel" - } - builders { - name: "buildbucket/luci.chromium.try/chromium_presubmit" - } - builders { - name: "buildbucket/luci.chromium.try/closure_compilation" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/fuchsia-compile-x64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-5-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-6-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-deqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-skgl-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-6p-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-9-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-n-nvidia-shield-tv-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-p-pixel-2-skv-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-deqp-vk-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-q-pixel-2-vk-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-intel-skv" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-skv" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-linux-nvidia-tsn" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win-xr-builder-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dbg-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-dqp-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-amd-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win7-nvidia-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-exp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-intel-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dbg-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-dqp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-exp-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-win10-nvidia-skgl-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-pro-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-amd-retina-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-asan" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-dqp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-intel-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-exp" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-fyi-try-mac-nvidia-retina-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-android-m-nexus-5x-64" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-linux-nvidia-rel" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-mac-amd-retina-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/gpu-try-mac-intel-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/linux-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-blink-heap-concurrent-marking-tsan-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-blink-heap-verification-try" - } - builders { - name: "buildbucket/luci.chromium.try/linux-chromeos-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-jumbo-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-libfuzzer-asan-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-ozone-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_android_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_angle_deqp_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_angle_ozone_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_arm" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_analysis" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_cfi_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_chromeos_msan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_clobber_deterministic" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_clobber_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_compile_dbg_32_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_compile_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_compile_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_component_updater" - } - builders { - name: "buildbucket/luci.chromium.try/linux-clang-tidy-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/linux-clang-tidy-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux-rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_msan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_tsan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_chromium_ubsan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/linux_layout_tests_composite_after_paint" - } - builders { - name: "buildbucket/luci.chromium.try/linux_layout_tests_layout_ng_disabled" - } - builders { - name: "buildbucket/luci.chromium.try/linux_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/linux_mojo_chromeos" - } - builders { - name: "buildbucket/luci.chromium.try/linux_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/linux_upload_clang" - } - builders { - name: "buildbucket/luci.chromium.try/linux-viz-rel" - } - builders { - name: "buildbucket/luci.chromium.try/ios-device" - } - builders { - name: "buildbucket/luci.chromium.try/ios-device-xcode-clang" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-cronet" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-eg" - } - builders { - name: "buildbucket/luci.chromium.try/ios-simulator-xcode-clang" - } - builders { - name: "buildbucket/luci.chromium.try/ios13-sdk-simulator" - } - builders { - name: "buildbucket/luci.chromium.try/mac-angle-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac-jumbo-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac-rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.10_macviews" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.10" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.12_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_10.13_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_archive_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_asan_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_compile_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_compile_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_chromium_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/mac_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/mac_upload_clang" - } - builders { - name: "buildbucket/luci.chromium.try/try-nougat-phone-tester" - } - builders { - name: "buildbucket/luci.chromium.try/android-oreo-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-arm64-dbg" - } - builders { - name: "buildbucket/luci.chromium.try/android-pie-x86-fyi-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win7-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win10_chromium_x64_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng_exp" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-deqp-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-rel-32" - } - builders { - name: "buildbucket/luci.chromium.try/win-angle-rel-64" - } - builders { - name: "buildbucket/luci.chromium.try/win-jumbo-rel" - } - builders { - name: "buildbucket/luci.chromium.try/win_archive" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_compile_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_compile_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_dbg_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_chromium_x64_rel_ng" - } - builders { - name: "buildbucket/luci.chromium.try/win_mojo" - } - builders { - name: "buildbucket/luci.chromium.try/win_optional_gpu_tests_rel" - } - builders { - name: "buildbucket/luci.chromium.try/win_upload_clang" - } - builders { - name: "buildbucket/luci.chromium.try/win_x64_archive" - } - builders { - name: "buildbucket/luci.chromium.try/win-celab-try-rel" - } - builder_view_only: true -} - -consoles { - header_id: "chromium" - id: "sheriff.ios" - name: "iOS Sheriff Console" - repo_url: "https://chromium.googlesource.com/chromium/src" - refs: "refs/heads/master" - manifest_name: "REVISION" - - builders { - name: "buildbucket/luci.chromium.ci/ios-device" - category: "chromium.mac" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator" - category: "chromium.mac" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-full-configs" - category: "chromium.mac" - short_name: "ful" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-noncq" - category: "chromium.mac" - short_name: "non" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-device-xcode-clang" - category: "chromium.mac|xcode" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-simulator-xcode-clang" - category: "chromium.mac|xcode" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios-slimnav" - category: "chromium.mac" - short_name: "slim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-sdk-device" - category: "chromium.fyi|13" - short_name: "dev" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-sdk-simulator" - category: "chromium.fyi|13" - short_name: "sim" - } - builders { - name: "buildbucket/luci.chromium.ci/ios13-beta-simulator" - category: "chromium.fyi|13" - short_name: "ios13" - } -}
diff --git a/infra/config/luci-scheduler-dev.cfg b/infra/config/luci-scheduler-dev.cfg deleted file mode 100644 index aa26630..0000000 --- a/infra/config/luci-scheduler-dev.cfg +++ /dev/null
@@ -1,111 +0,0 @@ -# Defines jobs on luci-scheduler-dev.appspot.com. -# -# For schema of this file and documentation see ProjectConfig message in -# -# https://chromium.googlesource.com/infra/luci/luci-go/+/master/scheduler/appengine/messages/config.proto - - -acl_sets { - name: "default" - acls { - role: READER - granted_to: "group:all" - } - acls { - role: OWNER - granted_to: "group:project-chromium-admins" - } -} - -################################################################################ -# Master branch - -trigger { - id: "master-gitiles-trigger" - acl_sets: "default" - - gitiles: { - repo: "https://chromium.googlesource.com/chromium/src.git" - refs: "refs/heads/master" - } - - triggers: "Android N5 Swarm" - triggers: "Android N5X Swarm" - triggers: "ChromeOS Swarm" - triggers: "Linux Swarm" - triggers: "Mac Swarm" - triggers: "Windows Swarm" -} - -job { - id: "Android N5 Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Android N5 Swarm" - } -} - -job { - id: "Android N5X Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Android N5X Swarm" - } -} - -job { - id: "ChromeOS Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "ChromeOS Swarm" - } -} - -job { - id: "Linux Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Linux Swarm" - } -} -job { - id: "Mac Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Mac Swarm" - } -} -job { - id: "Windows Swarm" - acl_sets: "default" - buildbucket: { - server: "cr-buildbucket-dev.appspot.com" - bucket: "luci.chromium.ci" - builder: "Windows Swarm" - } -} - -################################################################################ -# Cron jobs - -job { - id: "Snapshot Builder" - acl_sets: "default" - buildbucket { - bucket: "luci.chromium.cron" - builder: "Snapshot Builder" - server: "cr-buildbucket-dev.appspot.com" - } - # TODO(smut): Adjust frequency. - schedule: "with 300s interval" -}
diff --git a/infra/config/main.star b/infra/config/main.star index bd588ea0..72ce009 100755 --- a/infra/config/main.star +++ b/infra/config/main.star
@@ -22,7 +22,6 @@ # Copy the not-yet migrated files to the generated outputs # TODO(https://crbug.com/1011908) Migrate the configuration in these files to starlark [lucicfg.emit(dest = f, data = io.read_file(f)) for f in ( - 'luci-milo.cfg', # TODO(https://crbug.com/1015148) lucicfg generates luci-notify.cfg very # differently from our hand-written file and doesn't do any normalization # for luci-notify.cfg so the semantic diff is large and confusing @@ -45,6 +44,7 @@ name = 'chromium', buildbucket = 'cr-buildbucket.appspot.com', logdog = 'luci-logdog.appspot.com', + milo = 'luci-milo.appspot.com', swarming = 'chromium-swarm.appspot.com', acls = [ acl.entry( @@ -71,10 +71,47 @@ gs_bucket = 'chromium-luci-logdog', ) +luci.milo( + logo = 'https://storage.googleapis.com/chrome-infra-public/logo/chromium.svg', +) + exec('//buckets/ci.star') exec('//buckets/findit.star') exec('//buckets/try.star') exec('//buckets/webrtc.star') exec('//buckets/webrtc.fyi.star') +exec('//consoles/angle.try.star') +exec('//consoles/chromium.star') +exec('//consoles/chromium.android.star') +exec('//consoles/chromium.android.fyi.star') +exec('//consoles/chromium.chromiumos.star') +exec('//consoles/chromium.clang.star') +exec('//consoles/chromium.dawn.star') +exec('//consoles/chromium.fuzz.star') +exec('//consoles/chromium.fyi.star') +exec('//consoles/chromium.fyi.goma.star') +exec('//consoles/chromium.goma.star') +exec('//consoles/chromium.goma.fyi.star') +exec('//consoles/chromium.goma.migration.star') +exec('//consoles/chromium.gpu.star') +exec('//consoles/chromium.gpu.fyi.star') +exec('//consoles/chromium.linux.star') +exec('//consoles/chromium.mac.star') +exec('//consoles/chromium.memory.star') +exec('//consoles/chromium.webrtc.star') +exec('//consoles/chromium.webrtc.fyi.star') +exec('//consoles/chromium.win.star') +exec('//consoles/goma.latest.star') +exec('//consoles/luci.chromium.goma.star') +exec('//consoles/luci.chromium.try.star') +exec('//consoles/main.star') +exec('//consoles/sheriff.ios.star') +exec('//consoles/tryserver.blink.star') +exec('//consoles/tryserver.chromium.android.star') +exec('//consoles/tryserver.chromium.chromiumos.star') +exec('//consoles/tryserver.chromium.linux.star') +exec('//consoles/tryserver.chromium.mac.star') +exec('//consoles/tryserver.chromium.win.star') + exec('//cq-builders-md.star')
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/keyboard_observer_egtest.mm b/ios/chrome/browser/ui/autofill/manual_fill/keyboard_observer_egtest.mm index 1d4ac33..2f24a46 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/keyboard_observer_egtest.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/keyboard_observer_egtest.mm
@@ -110,7 +110,8 @@ } // Tests the observer correctly identifies when the keyboard stays on screen. -- (void)testKeyboardDidStayOnScreen { +// TODO(crbug.com/1015550) keyboardDidStayOnScreen is not called on iOS13. +- (void)DISABLED_testKeyboardDidStayOnScreen { // Opening the keyboard from a webview blocks EarlGrey's synchronization. ScopedSynchronizationDisabler disabler; // Brings up the keyboard by tapping on one of the form's field.
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_view_ios.h b/ios/chrome/browser/ui/omnibox/omnibox_view_ios.h index 7a994f1..2c47eedb 100644 --- a/ios/chrome/browser/ui/omnibox/omnibox_view_ios.h +++ b/ios/chrome/browser/ui/omnibox/omnibox_view_ios.h
@@ -84,7 +84,7 @@ void GetSelectionBounds(base::string16::size_type* start, base::string16::size_type* end) const override; void SelectAll(bool reversed) override {} - void SetFocus() override {} + void SetFocus(bool is_user_initiated) override {} void ApplyCaretVisibility() override {} void OnInlineAutocompleteTextCleared() override {} void OnRevertTemporaryText(const base::string16& display_text,
diff --git a/ios/chrome/browser/ui/safe_mode/BUILD.gn b/ios/chrome/browser/ui/safe_mode/BUILD.gn index 6e79c33..b2a04a3 100644 --- a/ios/chrome/browser/ui/safe_mode/BUILD.gn +++ b/ios/chrome/browser/ui/safe_mode/BUILD.gn
@@ -30,12 +30,14 @@ source_set("eg_tests") { configs += [ "//build/config/compiler:enable_arc" ] + defines = [ "CHROME_EARL_GREY_1" ] testonly = true sources = [ "safe_mode_egtest.mm", ] deps = [ ":safe_mode", + ":test_support", "//base", "//ios/chrome/app:app_internal", "//ios/chrome/app/strings", @@ -44,10 +46,77 @@ "//ios/chrome/test/app:test_support", "//ios/chrome/test/base", "//ios/chrome/test/earl_grey:test_support", + "//ios/testing/earl_grey:earl_grey_support", "//ios/third_party/earl_grey:earl_grey+link", ] } +source_set("test_support") { + defines = [ "CHROME_EARL_GREY_1" ] + configs += [ "//build/config/compiler:enable_arc" ] + testonly = true + sources = [ + "safe_mode_app_interface.h", + "safe_mode_app_interface.mm", + ] + deps = [ + ":safe_mode", + "//ios/chrome/test/app:test_support", + ] +} + +source_set("eg_app_support+eg2") { + defines = [ "CHROME_EARL_GREY_2" ] + configs += [ + "//build/config/compiler:enable_arc", + "//build/config/ios:xctest_config", + ] + testonly = true + sources = [ + "safe_mode_app_interface.h", + "safe_mode_app_interface.mm", + ] + deps = [ + ":safe_mode", + "//ios/chrome/test/app:test_support", + ] +} + +source_set("eg_test_support+eg2") { + defines = [ "CHROME_EARL_GREY_2" ] + configs += [ + "//build/config/compiler:enable_arc", + "//build/config/ios:xctest_config", + ] + testonly = true + + sources = [ + "safe_mode_app_interface.h", + ] +} + +source_set("eg2_tests") { + defines = [ "CHROME_EARL_GREY_2" ] + configs += [ + "//build/config/compiler:enable_arc", + "//build/config/ios:xctest_config", + ] + testonly = true + sources = [ + "safe_mode_egtest.mm", + ] + deps = [ + ":eg_test_support+eg2", + "//base:base", + "//ios/chrome/app/strings:ios_chromium_strings_grit", + "//ios/chrome/test/base:base", + "//ios/chrome/test/earl_grey:eg_test_support+eg2", + "//ios/testing/earl_grey:eg_test_support+eg2", + "//ios/third_party/earl_grey2:test_lib", + ] + libs = [ "UIKit.framework" ] +} + source_set("unit_tests") { configs += [ "//build/config/compiler:enable_arc" ] testonly = true
diff --git a/ios/chrome/browser/ui/safe_mode/safe_mode_app_interface.h b/ios/chrome/browser/ui/safe_mode/safe_mode_app_interface.h new file mode 100644 index 0000000..02f4f9c --- /dev/null +++ b/ios/chrome/browser/ui/safe_mode/safe_mode_app_interface.h
@@ -0,0 +1,20 @@ +// 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 IOS_CHROME_BROWSER_UI_SAFE_MODE_SAFE_MODE_APP_INTERFACE_H_ +#define IOS_CHROME_BROWSER_UI_SAFE_MODE_SAFE_MODE_APP_INTERFACE_H_ + +#import <UIKit/UIKit.h> + +// EarlGreyScopedBlockSwizzlerAppInterface contains the app-side +// implementation for helpers. These helpers are compiled into +// the app binary and can be called from either app or test code. +@interface SafeModeAppInterface : NSObject + +// Presents the SafeModeViewController UI. ++ (void)presentSafeMode; + +@end + +#endif // IOS_CHROME_BROWSER_UI_SAFE_MODE_SAFE_MODE_APP_INTERFACE_H_
diff --git a/ios/chrome/browser/ui/safe_mode/safe_mode_app_interface.mm b/ios/chrome/browser/ui/safe_mode/safe_mode_app_interface.mm new file mode 100644 index 0000000..302fa23 --- /dev/null +++ b/ios/chrome/browser/ui/safe_mode/safe_mode_app_interface.mm
@@ -0,0 +1,25 @@ +// 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 "ios/chrome/browser/ui/safe_mode/safe_mode_app_interface.h" + +#import "ios/chrome/browser/ui/safe_mode/safe_mode_view_controller.h" +#import "ios/chrome/test/app/chrome_test_util.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@implementation SafeModeAppInterface + ++ (void)presentSafeMode { + SafeModeViewController* safeModeController = + [[SafeModeViewController alloc] initWithDelegate:nil]; + [chrome_test_util::GetActiveViewController() + presentViewController:safeModeController + animated:NO + completion:nil]; +} + +@end
diff --git a/ios/chrome/browser/ui/safe_mode/safe_mode_egtest.mm b/ios/chrome/browser/ui/safe_mode/safe_mode_egtest.mm index b662928d..881aff5 100644 --- a/ios/chrome/browser/ui/safe_mode/safe_mode_egtest.mm +++ b/ios/chrome/browser/ui/safe_mode/safe_mode_egtest.mm
@@ -2,61 +2,61 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import <EarlGrey/EarlGrey.h> -#import <XCTest/XCTest.h> - +#include "base/feature_list.h" #include "base/ios/ios_util.h" #include "base/logging.h" #include "base/mac/foundation_util.h" -#import "ios/chrome/browser/ui/safe_mode/safe_mode_view_controller.h" -#include "ios/chrome/browser/ui/util/ui_util.h" +#include "ios/chrome/browser/ui/safe_mode/safe_mode_app_interface.h" #include "ios/chrome/grit/ios_chromium_strings.h" -#import "ios/chrome/test/app/chrome_test_util.h" #import "ios/chrome/test/base/scoped_block_swizzler.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" +#import "ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h" +#import "ios/chrome/test/earl_grey/chrome_matchers.h" #import "ios/chrome/test/earl_grey/chrome_test_case.h" +#import "ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler.h" +#import "ios/testing/earl_grey/app_launch_manager.h" +#import "ios/testing/earl_grey/earl_grey_test.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." #endif +#if defined(CHROME_EARL_GREY_2) +GREY_STUB_CLASS_IN_APP_MAIN_QUEUE(SafeModeAppInterface) +#endif // defined(CHROME_EARL_GREY_2) + +using chrome_test_util::ButtonWithAccessibilityLabel; + namespace { // Verifies that |message| is displayed. void AssertMessageOnPage(NSString* message) { - id<GREYMatcher> messageMatcher = [GREYMatchers matcherForText:message]; + id<GREYMatcher> messageMatcher = + grey_allOf(grey_text(message), grey_kindOfClass([UILabel class]), + grey_sufficientlyVisible(), nil); [[EarlGrey selectElementWithMatcher:messageMatcher] assertWithMatcher:grey_notNil()]; } // Verifies that |message| is not displayed. void AssertMessageNotOnPage(NSString* message) { - id<GREYMatcher> messageMatcher = [GREYMatchers matcherForText:message]; + id<GREYMatcher> messageMatcher = + grey_allOf(grey_text(message), grey_kindOfClass([UILabel class]), + grey_sufficientlyVisible(), nil); [[EarlGrey selectElementWithMatcher:messageMatcher] assertWithMatcher:grey_nil()]; } // Verifies that the button to reload chrome is displayed. void AssertTryAgainButtonOnPage() { - NSString* tryAgain = - NSLocalizedString(@"IDS_IOS_SAFE_MODE_RELOAD_CHROME", @""); - // This is uppercased to match MDC button label convention. - NSString* tryAgainPrimaryAction = - [tryAgain uppercaseStringWithLocale:[NSLocale currentLocale]]; - id<GREYMatcher> tryAgainMatcher = - [GREYMatchers matcherForButtonTitle:tryAgainPrimaryAction]; + id<GREYMatcher> tryAgainMatcher = ButtonWithAccessibilityLabel( + NSLocalizedString(@"IDS_IOS_SAFE_MODE_RELOAD_CHROME", @"")); [[EarlGrey selectElementWithMatcher:tryAgainMatcher] assertWithMatcher:grey_notNil()]; } } // namespace -// Expose internal class methods for swizzling. -@interface SafeModeViewController (Testing) -+ (BOOL)detectedThirdPartyMods; -+ (BOOL)hasReportToUpload; -- (NSArray*)startupCrashModules; -@end // Tests the display of Safe Mode Controller under different error states of // jailbroken-ness and whether a crash dump was saved. @@ -65,33 +65,18 @@ @implementation SafeModeTestCase -// Per crbug.com/845186, Disable flakey iPad Retina tests that are limited -// to iOS 10.2. -+ (NSArray*)testInvocations { -#if TARGET_IPHONE_SIMULATOR - if ([ChromeEarlGrey isIPadIdiom] && !base::ios::IsRunningOnOrLater(10, 3, 0)) - return @[]; -#endif // TARGET_IPHONE_SIMULATOR - return [super testInvocations]; -} - // Tests that Safe Mode crash upload screen is displayed when there are crash // reports to upload. - (void)testSafeModeSendingCrashReport { // Mocks the +hasReportToUpload method by swizzling to return positively that // there are crash reports to upload. - ScopedBlockSwizzler hasReport([SafeModeViewController class], - @selector(hasReportToUpload), ^{ - return YES; - }); + // TODO(crbug.com/1015272): Consider moving from swizzling to a delegate. + EarlGreyScopedBlockSwizzler hasReport(@"SafeModeViewController", + @"hasReportToUpload", ^{ + return YES; + }); + [SafeModeAppInterface presentSafeMode]; - // Instantiates a Safe Mode controller and displays it. - SafeModeViewController* safeModeController = - [[SafeModeViewController alloc] initWithDelegate:nil]; - [chrome_test_util::GetActiveViewController() - presentViewController:safeModeController - animated:NO - completion:nil]; // Verifies screen content that shows that crash report is being uploaded. AssertMessageOnPage(NSLocalizedString(@"IDS_IOS_SAFE_MODE_AW_SNAP", @"")); AssertMessageOnPage( @@ -106,23 +91,17 @@ - (void)testSafeModeDetectedThirdPartyMods { // Mocks the +detectedThirdPartyMods method by swizzling to return positively // that device appears to be jailbroken and contains third party mods. - ScopedBlockSwizzler thirdParty([SafeModeViewController class], - @selector(detectedThirdPartyMods), ^{ - return YES; - }); + // TODO(crbug.com/1015272): Consider moving from swizzling to a delegate. + EarlGreyScopedBlockSwizzler thirdParty(@"SafeModeViewController", + @"detectedThirdPartyMods", ^{ + return YES; + }); // Returns an empty list to simulate no known mods detected. - ScopedBlockSwizzler badModules([SafeModeViewController class], - @selector(startupCrashModules), ^{ - return @[]; - }); - - // Instantiates a Safe Mode controller and displays it. - SafeModeViewController* safeModeController = - [[SafeModeViewController alloc] initWithDelegate:nil]; - [chrome_test_util::GetActiveViewController() - presentViewController:safeModeController - animated:NO - completion:nil]; + EarlGreyScopedBlockSwizzler badModules(@"SafeModeViewController", + @"startupCrashModules", ^{ + return @[]; + }); + [SafeModeAppInterface presentSafeMode]; // Verifies screen content that does not show crash report being uploaded. // When devices are jailbroken, the crash reports are not very useful. AssertMessageOnPage(NSLocalizedString(@"IDS_IOS_SAFE_MODE_AW_SNAP", @"")); @@ -139,27 +118,22 @@ - (void)testSafeModeBothThirdPartyModsAndHasReport { // Mocks the +detectedThirdPartyMods method by swizzling to return positively // that device appears to be jailbroken and contains third party mods. - ScopedBlockSwizzler thirdParty([SafeModeViewController class], - @selector(detectedThirdPartyMods), ^{ - return YES; - }); + // TODO(crbug.com/1015272): Consider moving from swizzling to a delegate. + EarlGreyScopedBlockSwizzler thirdParty(@"SafeModeViewController", + @"detectedThirdPartyMods", ^{ + return YES; + }); // Mocked list of bad jailbroken mods. These will be checked later. NSArray* badModulesList = @[ @"iAmBad", @"MJackson" ]; - ScopedBlockSwizzler badModules([SafeModeViewController class], - @selector(startupCrashModules), ^{ - return badModulesList; - }); - ScopedBlockSwizzler hasReport([SafeModeViewController class], - @selector(hasReportToUpload), ^{ - return YES; - }); - // Instantiates a Safe Mode controller and displays it. - SafeModeViewController* safeModeController = - [[SafeModeViewController alloc] initWithDelegate:nil]; - [chrome_test_util::GetActiveViewController() - presentViewController:safeModeController - animated:NO - completion:nil]; + EarlGreyScopedBlockSwizzler badModules(@"SafeModeViewController", + @"startupCrashModules", ^{ + return badModulesList; + }); + EarlGreyScopedBlockSwizzler hasReport(@"SafeModeViewController", + @"hasReportToUpload", ^{ + return YES; + }); + [SafeModeAppInterface presentSafeMode]; // Verifies screen content that does not show crash report being uploaded. // When devices are jailbroken, the crash reports are not very useful. AssertMessageOnPage(NSLocalizedString(@"IDS_IOS_SAFE_MODE_AW_SNAP", @""));
diff --git a/ios/chrome/browser/ui/side_swipe/BUILD.gn b/ios/chrome/browser/ui/side_swipe/BUILD.gn index fd3d116..4217ce6 100644 --- a/ios/chrome/browser/ui/side_swipe/BUILD.gn +++ b/ios/chrome/browser/ui/side_swipe/BUILD.gn
@@ -71,6 +71,7 @@ source_set("eg_tests") { configs += [ "//build/config/compiler:enable_arc" ] + defines = [ "CHROME_EARL_GREY_1" ] testonly = true sources = [ "side_swipe_egtest.mm", @@ -90,3 +91,24 @@ ] libs = [ "XCTest.framework" ] } + +source_set("eg2_tests") { + defines = [ "CHROME_EARL_GREY_2" ] + configs += [ + "//build/config/compiler:enable_arc", + "//build/config/ios:xctest_config", + ] + testonly = true + sources = [ + "side_swipe_egtest.mm", + ] + deps = [ + "//base", + "//ios/chrome/test/earl_grey:eg_test_support+eg2", + "//ios/testing/earl_grey:eg_test_support+eg2", + "//ios/third_party/earl_grey2:test_lib", + "//ios/web/public/test/http_server", + "//net:test_support", + ] + libs = [ "UIKit.framework" ] +}
diff --git a/ios/chrome/browser/ui/side_swipe/side_swipe_egtest.mm b/ios/chrome/browser/ui/side_swipe/side_swipe_egtest.mm index 51067b9..bc17f47 100644 --- a/ios/chrome/browser/ui/side_swipe/side_swipe_egtest.mm +++ b/ios/chrome/browser/ui/side_swipe/side_swipe_egtest.mm
@@ -2,17 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import <EarlGrey/EarlGrey.h> -#import <XCTest/XCTest.h> - -#import "ios/chrome/browser/ui/toolbar/primary_toolbar_view.h" -#import "ios/chrome/browser/ui/toolbar/secondary_toolbar_view.h" -#import "ios/chrome/browser/ui/util/uikit_ui_util.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" #import "ios/chrome/test/earl_grey/chrome_matchers.h" #import "ios/chrome/test/earl_grey/chrome_test_case.h" #include "ios/testing/earl_grey/disabled_test_macros.h" +#import "ios/testing/earl_grey/earl_grey_test.h" #include "net/test/embedded_test_server/default_handlers.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -29,24 +24,24 @@ // Tests that swiping horizontally on the bottom toolbar is changing tab. - (void)testSideSwipeBottomToolbar { - if (!IsSplitToolbarMode()) { + if (![ChromeEarlGrey isSplitToolbarMode]) { EARL_GREY_TEST_SKIPPED( @"This tests should only be tested if the secondary toolbar is " @"present"); } - [self checkSideSwipeOnToolbarClass:[SecondaryToolbarView class]]; + [self checkSideSwipeOnToolbarClassName:@"SecondaryToolbarView"]; } // Tests that swiping horizontally on the top toolbar is changing tab. - (void)testSideSwipeTopToolbar { - [self checkSideSwipeOnToolbarClass:[PrimaryToolbarView class]]; + [self checkSideSwipeOnToolbarClassName:@"PrimaryToolbarView"]; } #pragma mark - Helpers // Checks that side swipe on an element of class |klass| is working to change // tab. -- (void)checkSideSwipeOnToolbarClass:(Class)klass { +- (void)checkSideSwipeOnToolbarClassName:(NSString*)className { // Setup the server. net::test_server::RegisterDefaultHandlers(self.testServer); GREYAssertTrue(self.testServer->Start(), @"Test server failed to start."); @@ -63,7 +58,7 @@ [ChromeEarlGrey waitForWebStateContainingText:"Default response"]; // Side swipe on the toolbar. - [[EarlGrey selectElementWithMatcher:grey_kindOfClass(klass)] + [[EarlGrey selectElementWithMatcher:grey_kindOfClassName(className)] performAction:grey_swipeSlowInDirection(kGREYDirectionRight)]; // Check that we swiped back to our web page.
diff --git a/ios/chrome/test/earl_grey/BUILD.gn b/ios/chrome/test/earl_grey/BUILD.gn index d33b24a..3b42ea3 100644 --- a/ios/chrome/test/earl_grey/BUILD.gn +++ b/ios/chrome/test/earl_grey/BUILD.gn
@@ -212,6 +212,10 @@ "chrome_test_case.mm", "chrome_test_case_app_interface.h", "chrome_test_case_app_interface.mm", + "earl_grey_scoped_block_swizzler.h", + "earl_grey_scoped_block_swizzler.mm", + "earl_grey_scoped_block_swizzler_app_interface.h", + "earl_grey_scoped_block_swizzler_app_interface.mm", "hardware_keyboard_util.h", "hardware_keyboard_util.mm", "scoped_block_popups_pref.h", @@ -248,6 +252,8 @@ "//ios/chrome/browser/ui/payments:payments_ui", "//ios/chrome/browser/ui/popup_menu:constants", "//ios/chrome/browser/ui/recent_tabs:recent_tabs_ui_constants", + "//ios/chrome/browser/ui/safe_mode", + "//ios/chrome/browser/ui/safe_mode:test_support", "//ios/chrome/browser/ui/settings:settings", "//ios/chrome/browser/ui/settings/autofill", "//ios/chrome/browser/ui/settings/autofill:feature_flags", @@ -267,6 +273,7 @@ "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web:tab_id_tab_helper", "//ios/chrome/test/app:test_support", + "//ios/chrome/test/base", "//ios/testing:verify_custom_webkit", "//ios/testing/earl_grey:earl_grey_support", "//ios/third_party/material_components_ios", @@ -329,6 +336,8 @@ "chrome_matchers_app_interface.mm", "chrome_test_case_app_interface.h", "chrome_test_case_app_interface.mm", + "earl_grey_scoped_block_swizzler_app_interface.h", + "earl_grey_scoped_block_swizzler_app_interface.mm", "hardware_keyboard_util.h", "hardware_keyboard_util.mm", ] @@ -360,6 +369,8 @@ "//ios/chrome/browser/ui/payments:payments_ui", "//ios/chrome/browser/ui/popup_menu:constants", "//ios/chrome/browser/ui/recent_tabs:recent_tabs_ui_constants", + "//ios/chrome/browser/ui/safe_mode", + "//ios/chrome/browser/ui/safe_mode:eg_app_support+eg2", "//ios/chrome/browser/ui/settings:settings", "//ios/chrome/browser/ui/settings/autofill", "//ios/chrome/browser/ui/settings/autofill:feature_flags", @@ -377,6 +388,7 @@ "//ios/chrome/browser/ui/util", "//ios/chrome/browser/web:tab_id_tab_helper", "//ios/chrome/test/app:test_support", + "//ios/chrome/test/base", "//ios/testing:nserror_support", "//ios/testing:verify_custom_webkit", "//ios/testing/earl_grey:eg_app_support+eg2", @@ -422,6 +434,9 @@ "chrome_test_case.h", "chrome_test_case.mm", "chrome_test_case_app_interface.h", + "earl_grey_scoped_block_swizzler.h", + "earl_grey_scoped_block_swizzler.mm", + "earl_grey_scoped_block_swizzler_app_interface.h", "scoped_block_popups_pref.h", "scoped_block_popups_pref.mm", ] @@ -435,6 +450,7 @@ "//ios/chrome/app/strings", "//ios/chrome/browser/ui/popup_menu:constants", "//ios/chrome/browser/ui/recent_tabs:recent_tabs_ui_constants", + "//ios/chrome/browser/ui/safe_mode:eg_test_support+eg2", "//ios/chrome/browser/ui/tab_grid:tab_grid_ui_constants", "//ios/chrome/browser/ui/tab_grid/grid:grid_ui_constants", "//ios/testing:http_server_bundle_data",
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.h b/ios/chrome/test/earl_grey/chrome_earl_grey.h index 3e54c93..74e903a6 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey.h +++ b/ios/chrome/test/earl_grey/chrome_earl_grey.h
@@ -47,6 +47,14 @@ // horizontal size class. - (BOOL)isCompactWidth; +// Returns YES if the main application window's rootViewController has a compact +// vertical size class. +- (BOOL)isCompactHeight; + +// Returns whether the toolbar is split between top and bottom toolbar or if it +// is displayed as only one toolbar. +- (BOOL)isSplitToolbarMode; + #pragma mark - History Utilities (EG2) // Clears browsing history. Raises an EarlGrey exception if history is not // cleared within a timeout.
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.mm b/ios/chrome/test/earl_grey/chrome_earl_grey.mm index fa47db75..044dd318 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
@@ -78,18 +78,33 @@ } - (BOOL)isCompactWidth { -#if defined(CHROME_EARL_GREY_1) UIUserInterfaceSizeClass horizontalSpace = +#if defined(CHROME_EARL_GREY_1) [[[[UIApplication sharedApplication] keyWindow] traitCollection] horizontalSizeClass]; #elif defined(CHROME_EARL_GREY_2) - UIUserInterfaceSizeClass horizontalSpace = [[[[GREY_REMOTE_CLASS_IN_APP(UIApplication) sharedApplication] keyWindow] traitCollection] horizontalSizeClass]; #endif return horizontalSpace == UIUserInterfaceSizeClassCompact; } +- (BOOL)isCompactHeight { + UIUserInterfaceSizeClass verticalSpace = +#if defined(CHROME_EARL_GREY_1) + [[[[UIApplication sharedApplication] keyWindow] traitCollection] + verticalSizeClass]; +#elif defined(CHROME_EARL_GREY_2) + [[[[GREY_REMOTE_CLASS_IN_APP(UIApplication) sharedApplication] keyWindow] + traitCollection] verticalSizeClass]; +#endif + return verticalSpace == UIUserInterfaceSizeClassCompact; +} + +- (BOOL)isSplitToolbarMode { + return [self isCompactWidth] && ![self isCompactHeight]; +} + #pragma mark - History Utilities (EG2) - (void)clearBrowsingHistory {
diff --git a/ios/chrome/test/earl_grey/chrome_test_case.mm b/ios/chrome/test/earl_grey/chrome_test_case.mm index c5748f9..c314f30 100644 --- a/ios/chrome/test/earl_grey/chrome_test_case.mm +++ b/ios/chrome/test/earl_grey/chrome_test_case.mm
@@ -108,12 +108,6 @@ } // namespace -// Category for overriding private methods on XCTestCase. See crbug.com/991338 -// for more information. -@interface XCTestCase (Private) -- (void)_recordFailure:(id)arg1; -@end - #if defined(CHROME_EARL_GREY_2) GREY_STUB_CLASS_IN_APP_MAIN_QUEUE(ChromeTestCaseAppInterface) #endif @@ -194,16 +188,6 @@ } } -- (void)_recordFailure:(id)arg1 { - if (@available(iOS 13, *)) { - // _recordFailure internally spends a very long time symbolicating - // on iOS13. Skipping this seems to be safe. See crbug.com/991338 - // for more information. - } else { - [super _recordFailure:arg1]; - } -} - #if defined(CHROME_EARL_GREY_1) + (void)setUp { [super setUp];
diff --git a/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler.h b/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler.h new file mode 100644 index 0000000..780ae3a --- /dev/null +++ b/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler.h
@@ -0,0 +1,30 @@ +// 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 IOS_CHROME_TEST_EARL_GREY_EARL_GREY_SCOPED_BLOCK_SWIZZLER_H_ +#define IOS_CHROME_TEST_EARL_GREY_EARL_GREY_SCOPED_BLOCK_SWIZZLER_H_ + +#import <UIKit/UIKit.h> + +#include "base/macros.h" + +// Helper class that wraps ScopedBlockSwizzler for use in EG1 and EG2 tests. +class EarlGreyScopedBlockSwizzler { + public: + // Constructs a new ScopedBlockSwizzler via the + // EarlGreyScopedBlockSwizzlerAppInterface interface. + EarlGreyScopedBlockSwizzler(NSString* target, NSString* selector, id block); + + // Destroys the ScopedBlockSwizzler object via the + // EarlGreyScopedBlockSwizzlerAppInterface interface. + virtual ~EarlGreyScopedBlockSwizzler(); + + private: + // id used to track creation and destruction of swizzled block. + int unique_id_ = 0; + + DISALLOW_COPY_AND_ASSIGN(EarlGreyScopedBlockSwizzler); +}; + +#endif // IOS_CHROME_TEST_EARL_GREY_EARL_GREY_SCOPED_BLOCK_SWIZZLER_H_
diff --git a/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler.mm b/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler.mm new file mode 100644 index 0000000..791d041 --- /dev/null +++ b/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler.mm
@@ -0,0 +1,29 @@ +// 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 "ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler.h" + +#include "ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler_app_interface.h" +#import "ios/testing/earl_grey/earl_grey_test.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +#if defined(CHROME_EARL_GREY_2) +GREY_STUB_CLASS_IN_APP_MAIN_QUEUE(EarlGreyScopedBlockSwizzlerAppInterface) +#endif // defined(CHROME_EARL_GREY_2) + +EarlGreyScopedBlockSwizzler::EarlGreyScopedBlockSwizzler(NSString* target, + NSString* selector, + id block) + : unique_id_([EarlGreyScopedBlockSwizzlerAppInterface + createScopedBlockSwizzlerForTarget:target + withSelector:selector + withBlock:block]) {} + +EarlGreyScopedBlockSwizzler::~EarlGreyScopedBlockSwizzler() { + [EarlGreyScopedBlockSwizzlerAppInterface + deleteScopedBlockSwizzlerForID:unique_id_]; +}
diff --git a/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler_app_interface.h b/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler_app_interface.h new file mode 100644 index 0000000..77f4364 --- /dev/null +++ b/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler_app_interface.h
@@ -0,0 +1,26 @@ +// 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 IOS_CHROME_TEST_EARL_GREY_EARL_GREY_SCOPED_BLOCK_SWIZZLER_APP_INTERFACE_H_ +#define IOS_CHROME_TEST_EARL_GREY_EARL_GREY_SCOPED_BLOCK_SWIZZLER_APP_INTERFACE_H_ + +#import <UIKit/UIKit.h> + +// EarlGreyScopedBlockSwizzlerAppInterface contains the app-side +// implementation for helpers. These helpers are compiled into +// the app binary and can be called from either app or test code. +@interface EarlGreyScopedBlockSwizzlerAppInterface : NSObject + +// Creates and retains a ScopedBlockSwizzler. Returns a unique id to be used +// to delete that ScopedBlockSwizzler. ++ (int)createScopedBlockSwizzlerForTarget:(NSString*)target + withSelector:(NSString*)selector + withBlock:(id)block; + +// Deletes a ScopedBlockSwizzler based on it's unique id. ++ (void)deleteScopedBlockSwizzlerForID:(int)uniqueID; + +@end + +#endif // IOS_CHROME_TEST_EARL_GREY_EARL_GREY_SCOPED_BLOCK_SWIZZLER_APP_INTERFACE_H_
diff --git a/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler_app_interface.mm b/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler_app_interface.mm new file mode 100644 index 0000000..8dc9078 --- /dev/null +++ b/ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler_app_interface.mm
@@ -0,0 +1,79 @@ +// 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 "ios/chrome/test/earl_grey/earl_grey_scoped_block_swizzler_app_interface.h" + +#include <map> + +#include "base/logging.h" +#include "ios/chrome/test/base/scoped_block_swizzler.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@interface EarlGreyScopedBlockSwizzlerHelper : NSObject { + // Unique IDs used with an EG2 safe basic type that can be used to later + // delete the ScopedBlockSwizzler. + int _swizzledIDs; + + // Map of ScopedBlockSwizzler-ed objects, with a tracking int. + std::map<int, std::unique_ptr<ScopedBlockSwizzler>> _map; +} + +// Inserts and removes from |map|. +- (int)insertScopedBlockSwizzler:(std::unique_ptr<ScopedBlockSwizzler>)swizzler; +- (void)removeScopedBlockSwizzler:(int)uniqueID; +@end + +@implementation EarlGreyScopedBlockSwizzlerHelper + +- (instancetype)init { + if ((self = [super init])) { + _swizzledIDs = 0; + } + return self; +} + ++ (instancetype)sharedInstance { + static EarlGreyScopedBlockSwizzlerHelper* instance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + instance = [[EarlGreyScopedBlockSwizzlerHelper alloc] init]; + }); + return instance; +} + +- (int)insertScopedBlockSwizzler: + (std::unique_ptr<ScopedBlockSwizzler>)swizzler { + _map[++_swizzledIDs] = std::move(swizzler); + return _swizzledIDs; +} + +- (void)removeScopedBlockSwizzler:(int)uniqueID { + DCHECK(_map[uniqueID]); + _map.erase(uniqueID); +} + +@end + +@implementation EarlGreyScopedBlockSwizzlerAppInterface + ++ (int)createScopedBlockSwizzlerForTarget:(NSString*)targetString + withSelector:(NSString*)selectorString + withBlock:(id)block { + Class target = NSClassFromString(targetString); + SEL selector = NSSelectorFromString(selectorString); + auto helper = [EarlGreyScopedBlockSwizzlerHelper sharedInstance]; + auto swizzler = + std::make_unique<ScopedBlockSwizzler>(target, selector, block); + return [helper insertScopedBlockSwizzler:std::move(swizzler)]; +} + ++ (void)deleteScopedBlockSwizzlerForID:(int)uniqueID { + auto helper = [EarlGreyScopedBlockSwizzlerHelper sharedInstance]; + [helper removeScopedBlockSwizzler:uniqueID]; +} + +@end
diff --git a/ios/chrome/test/earl_grey2/BUILD.gn b/ios/chrome/test/earl_grey2/BUILD.gn index 397d6570..6cc65c5 100644 --- a/ios/chrome/test/earl_grey2/BUILD.gn +++ b/ios/chrome/test/earl_grey2/BUILD.gn
@@ -57,7 +57,9 @@ "//ios/chrome/browser/ui/open_in:eg2_tests", "//ios/chrome/browser/ui/page_info:eg2_tests", "//ios/chrome/browser/ui/sad_tab:eg2_tests", + "//ios/chrome/browser/ui/safe_mode:eg2_tests", "//ios/chrome/browser/ui/settings/autofill:eg2_tests", + "//ios/chrome/browser/ui/side_swipe:eg2_tests", "//ios/chrome/browser/ui/tabs:eg2_tests", "//ios/chrome/browser/ui/toolbar:eg2_tests", ]
diff --git a/ios/net/cookies/cookie_store_ios.h b/ios/net/cookies/cookie_store_ios.h index 93724785..d0b1ebc5 100644 --- a/ios/net/cookies/cookie_store_ios.h +++ b/ios/net/cookies/cookie_store_ios.h
@@ -125,8 +125,7 @@ private: using CookieChangeCallbackList = - base::CallbackList<void(const CanonicalCookie& cookie, - CookieChangeCause cause)>; + base::CallbackList<void(const CookieChangeInfo&)>; class Subscription : public base::LinkNode<Subscription>, public CookieChangeSubscription {
diff --git a/ios/net/cookies/cookie_store_ios.mm b/ios/net/cookies/cookie_store_ios.mm index 97dd12d1..6fa47ea 100644 --- a/ios/net/cookies/cookie_store_ios.mm +++ b/ios/net/cookies/cookie_store_ios.mm
@@ -605,7 +605,10 @@ CookieChangeCallbackList* callbacks = hook_map_[key].get(); for (const auto& cookie : cookies) { DCHECK_EQ(name, cookie.Name()); - callbacks->Notify(cookie, cause); + // TODO(crbug.com/978172): Support CookieAccessSemantics values on iOS and + // use it to check IncludeForRequestURL before notifying? + callbacks->Notify(net::CookieChangeInfo( + cookie, net::CookieAccessSemantics::UNKNOWN, cause)); } }
diff --git a/ios/net/cookies/cookie_store_ios_test_util.h b/ios/net/cookies/cookie_store_ios_test_util.h index 1febf66..2eee97e7 100644 --- a/ios/net/cookies/cookie_store_ios_test_util.h +++ b/ios/net/cookies/cookie_store_ios_test_util.h
@@ -76,8 +76,7 @@ void RecordCookieChanges(std::vector<net::CanonicalCookie>* out_cookies, std::vector<bool>* out_removes, - const net::CanonicalCookie& cookie, - net::CookieChangeCause cause); + const net::CookieChangeInfo& change); // Sets a cookie. void SetCookie(const std::string& cookie_line,
diff --git a/ios/net/cookies/cookie_store_ios_test_util.mm b/ios/net/cookies/cookie_store_ios_test_util.mm index 66312bd9..0240b43c 100644 --- a/ios/net/cookies/cookie_store_ios_test_util.mm +++ b/ios/net/cookies/cookie_store_ios_test_util.mm
@@ -121,12 +121,11 @@ void RecordCookieChanges(std::vector<net::CanonicalCookie>* out_cookies, std::vector<bool>* out_removes, - const net::CanonicalCookie& cookie, - net::CookieChangeCause cause) { + const net::CookieChangeInfo& change) { DCHECK(out_cookies); - out_cookies->push_back(cookie); + out_cookies->push_back(change.cookie); if (out_removes) - out_removes->push_back(net::CookieChangeCauseIsDeletion(cause)); + out_removes->push_back(net::CookieChangeCauseIsDeletion(change.cause)); } void SetCookie(const std::string& cookie_line,
diff --git a/ios/web/web_state/js/resources/navigation.js b/ios/web/web_state/js/resources/navigation.js index b7770d4..58ebe85 100644 --- a/ios/web/web_state/js/resources/navigation.js +++ b/ios/web/web_state/js/resources/navigation.js
@@ -63,6 +63,14 @@ originalWindowHistoryReplaceState.call(history, stateObject, '', url); }; +function DataCloneError() { + // The name and code for this error are defined by the WebIDL spec. See + // https://heycam.github.io/webidl/#datacloneerror + this.name = 'DataCloneError'; + this.code = 25; + this.message = "Cyclic structures are not supported."; +} + /** * Intercepts window.history methods so native code can differentiate between * same-document navigation that are state navigations vs. hash navigations. @@ -73,10 +81,18 @@ */ window.history.pushState = function(stateObject, pageTitle, pageUrl) { __gCrWeb.message.invokeOnHost({'command': 'navigation.willChangeState'}); - // Calling stringify() on undefined causes a JSON parse error. - var serializedState = typeof (stateObject) == 'undefined' ? - '' : - __gCrWeb.common.JSONStringify(stateObject); + + // JSONStringify throws an exception when given a cyclical object. This + // internal implementation detail should not be exposed to callers of + // pushState. Instead, throw a standard exception when stringification fails. + try { + // Calling stringify() on undefined causes a JSON parse error. + var serializedState = typeof (stateObject) == 'undefined' ? + '' : + __gCrWeb.common.JSONStringify(stateObject); + } catch (e) { + throw new DataCloneError(); + } pageUrl = pageUrl || window.location.href; originalWindowHistoryPushState.call(history, stateObject, pageTitle, pageUrl); __gCrWeb.message.invokeOnHost({ @@ -90,10 +106,18 @@ window.history.replaceState = function(stateObject, pageTitle, pageUrl) { __gCrWeb.message.invokeOnHost({'command': 'navigation.willChangeState'}); - // Calling stringify() on undefined causes a JSON parse error. - var serializedState = typeof (stateObject) == 'undefined' ? - '' : - __gCrWeb.common.JSONStringify(stateObject); + // JSONStringify throws an exception when given a cyclical object. This + // internal implementation detail should not be exposed to callers of + // replaceState. Instead, throw a standard exception when stringification + // fails. + try { + // Calling stringify() on undefined causes a JSON parse error. + var serializedState = typeof (stateObject) == 'undefined' ? + '' : + __gCrWeb.common.JSONStringify(stateObject); + } catch (e) { + throw new DataCloneError(); + } pageUrl = pageUrl || window.location.href; originalWindowHistoryReplaceState.call( history, stateObject, pageTitle, pageUrl);
diff --git a/mojo/public/cpp/bindings/connector.h b/mojo/public/cpp/bindings/connector.h index f97cfcd1..761f06e7 100644 --- a/mojo/public/cpp/bindings/connector.h +++ b/mojo/public/cpp/bindings/connector.h
@@ -227,6 +227,13 @@ // validation). bool DispatchMessage(Message message); + // Posts a task to dispatch the next message in |dispatch_queue_|. These two + // functions keep |num_pending_dispatch_tasks_| up to date, so as to allow + // bounding the number of posted tasks when the Connector is e.g. paused and + // resumed repeatedly. + void PostDispatchNextMessageInQueue(); + void CallDispatchNextMessageInQueue(); + // Used to schedule dispatch of a single message from the front of // |dispatch_queue_|. Returns |true| if the dispatch succeeded and |false| // otherwise (e.g. if the message failed validation). @@ -328,6 +335,9 @@ // nested dispatch operations. bool is_dispatching_ = false; + // The number of outstanding tasks for CallDispatchNextMessageInQueue. + size_t num_pending_dispatch_tasks_ = 0; + #if defined(ENABLE_IPC_FUZZER) std::unique_ptr<MessageReceiver> message_dumper_; #endif
diff --git a/mojo/public/cpp/bindings/lib/connector.cc b/mojo/public/cpp/bindings/lib/connector.cc index 8ffd3a0..f29ee91 100644 --- a/mojo/public/cpp/bindings/lib/connector.cc +++ b/mojo/public/cpp/bindings/lib/connector.cc
@@ -359,12 +359,8 @@ if (!weak_self) return; } else { - for (size_t i = 0; i < dispatch_queue_.size(); ++i) { - task_runner_->PostTask( - FROM_HERE, base::BindOnce(base::IgnoreResult( - &Connector::DispatchNextMessageInQueue), - weak_self_)); - } + while (num_pending_dispatch_tasks_ < dispatch_queue_.size()) + PostDispatchNextMessageInQueue(); } paused_ = false; @@ -619,6 +615,19 @@ return true; } +void Connector::PostDispatchNextMessageInQueue() { + DCHECK_LT(num_pending_dispatch_tasks_, dispatch_queue_.size()); + ++num_pending_dispatch_tasks_; + task_runner_->PostTask( + FROM_HERE, + base::BindOnce(&Connector::CallDispatchNextMessageInQueue, weak_self_)); +} + +void Connector::CallDispatchNextMessageInQueue() { + --num_pending_dispatch_tasks_; + DispatchNextMessageInQueue(); +} + bool Connector::DispatchNextMessageInQueue() { if (error_ || paused_) return false; @@ -681,10 +690,8 @@ return; } else { dispatch_queue_.push(std::move(message)); - task_runner_->PostTask( - FROM_HERE, base::BindOnce(base::IgnoreResult( - &Connector::DispatchNextMessageInQueue), - weak_self_)); + if (num_pending_dispatch_tasks_ < dispatch_queue_.size()) + PostDispatchNextMessageInQueue(); } first_message_in_batch = false;
diff --git a/net/cookies/cookie_change_dispatcher.cc b/net/cookies/cookie_change_dispatcher.cc index c6cdf324..07c6457 100644 --- a/net/cookies/cookie_change_dispatcher.cc +++ b/net/cookies/cookie_change_dispatcher.cc
@@ -34,6 +34,15 @@ return cause_string; } +CookieChangeInfo::CookieChangeInfo() = default; + +CookieChangeInfo::CookieChangeInfo(const CanonicalCookie& cookie, + CookieAccessSemantics access_semantics, + CookieChangeCause cause) + : cookie(cookie), access_semantics(access_semantics), cause(cause) {} + +CookieChangeInfo::~CookieChangeInfo() = default; + bool CookieChangeCauseIsDeletion(CookieChangeCause cause) { return cause != CookieChangeCause::INSERTED; }
diff --git a/net/cookies/cookie_change_dispatcher.h b/net/cookies/cookie_change_dispatcher.h index c05a6db5..c1b7f51 100644 --- a/net/cookies/cookie_change_dispatcher.h +++ b/net/cookies/cookie_change_dispatcher.h
@@ -38,6 +38,23 @@ EXPIRED_OVERWRITE }; +struct NET_EXPORT CookieChangeInfo { + CookieChangeInfo(); + CookieChangeInfo(const CanonicalCookie& cookie, + CookieAccessSemantics access_semantics, + CookieChangeCause cause); + ~CookieChangeInfo(); + + // The cookie that changed. + CanonicalCookie cookie; + + // The access semantics of the cookie at the time of the change. + CookieAccessSemantics access_semantics = CookieAccessSemantics::UNKNOWN; + + // The reason for the change. + CookieChangeCause cause = CookieChangeCause::EXPLICIT; +}; + // Return a string corresponding to the change cause. For debugging/logging. NET_EXPORT const char* CookieChangeCauseToString(CookieChangeCause cause); @@ -48,6 +65,7 @@ // Called when a cookie is changed in a CookieStore. // // Receives the CanonicalCookie which was added to or removed from the store, +// the CookieAccessSemantics of the cookie at the time of the change event, // and a CookieStore::ChangeCause indicating if the cookie was added, updated, // or removed. // @@ -58,8 +76,7 @@ // The callback must not synchronously modify any cookie in the CookieStore // whose change it is observing. using CookieChangeCallback = - base::RepeatingCallback<void(const CanonicalCookie& cookie, - CookieChangeCause cause)>; + base::RepeatingCallback<void(const CookieChangeInfo&)>; // Records a listener's interest in CookieStore changes. //
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc index adbda8bd..5e5b106 100644 --- a/net/cookies/cookie_monster.cc +++ b/net/cookies/cookie_monster.cc
@@ -1155,7 +1155,10 @@ type_sample |= cc_ptr->IsSecure() ? 1 << COOKIE_TYPE_SECURE : 0; histogram_cookie_type_->Add(type_sample); - change_dispatcher_.DispatchChange(*cc_ptr, CookieChangeCause::INSERTED, true); + change_dispatcher_.DispatchChange( + CookieChangeInfo(*cc_ptr, GetAccessSemanticsForCookie(*cc_ptr), + CookieChangeCause::INSERTED), + true); return inserted; } @@ -1355,7 +1358,9 @@ sync_to_store) { store_->DeleteCookie(*cc); } - change_dispatcher_.DispatchChange(*cc, mapping.cause, mapping.notify); + change_dispatcher_.DispatchChange( + CookieChangeInfo(*cc, GetAccessSemanticsForCookie(*cc), mapping.cause), + mapping.notify); cookies_.erase(it); }
diff --git a/net/cookies/cookie_monster_change_dispatcher.cc b/net/cookies/cookie_monster_change_dispatcher.cc index f15c1c9..28cfe347 100644 --- a/net/cookies/cookie_monster_change_dispatcher.cc +++ b/net/cookies/cookie_monster_change_dispatcher.cc
@@ -49,32 +49,33 @@ } void CookieMonsterChangeDispatcher::Subscription::DispatchChange( - const net::CanonicalCookie& cookie, - net::CookieChangeCause change_cause) { + const CookieChangeInfo& change) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + const CanonicalCookie& cookie = change.cookie; + // The net::CookieOptions are hard-coded for now, but future APIs may set // different options. For example, JavaScript observers will not be allowed to // see HTTP-only changes. if (!url_.is_empty() && - !cookie.IncludeForRequestURL(url_, CookieOptions::MakeAllInclusive()) + !cookie + .IncludeForRequestURL(url_, CookieOptions::MakeAllInclusive(), + change.access_semantics) .IsInclude()) { return; } // TODO(mmenke, pwnall): Run callbacks synchronously? task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&Subscription::DoDispatchChange, - weak_ptr_factory_.GetWeakPtr(), cookie, change_cause)); + FROM_HERE, base::BindOnce(&Subscription::DoDispatchChange, + weak_ptr_factory_.GetWeakPtr(), change)); } void CookieMonsterChangeDispatcher::Subscription::DoDispatchChange( - const net::CanonicalCookie& cookie, - net::CookieChangeCause change_cause) const { + const CookieChangeInfo& change) const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - callback_.Run(cookie, change_cause); + callback_.Run(change); } CookieMonsterChangeDispatcher::CookieMonsterChangeDispatcher() {} @@ -151,19 +152,17 @@ } void CookieMonsterChangeDispatcher::DispatchChange( - const CanonicalCookie& cookie, - CookieChangeCause cause, + const CookieChangeInfo& change, bool notify_global_hooks) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - DispatchChangeToDomainKey(cookie, cause, DomainKey(cookie.Domain())); + DispatchChangeToDomainKey(change, DomainKey(change.cookie.Domain())); if (notify_global_hooks) - DispatchChangeToDomainKey(cookie, cause, std::string(kGlobalDomainKey)); + DispatchChangeToDomainKey(change, std::string(kGlobalDomainKey)); } void CookieMonsterChangeDispatcher::DispatchChangeToDomainKey( - const CanonicalCookie& cookie, - CookieChangeCause cause, + const CookieChangeInfo& change, const std::string& domain_key) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -171,14 +170,12 @@ if (it == cookie_domain_map_.end()) return; - DispatchChangeToNameKey(cookie, cause, it->second, NameKey(cookie.Name())); - DispatchChangeToNameKey(cookie, cause, it->second, - std::string(kGlobalNameKey)); + DispatchChangeToNameKey(change, it->second, NameKey(change.cookie.Name())); + DispatchChangeToNameKey(change, it->second, std::string(kGlobalNameKey)); } void CookieMonsterChangeDispatcher::DispatchChangeToNameKey( - const CanonicalCookie& cookie, - CookieChangeCause cause, + const CookieChangeInfo& change, CookieNameMap& cookie_name_map, const std::string& name_key) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -190,7 +187,7 @@ SubscriptionList& subscription_list = it->second; for (base::LinkNode<Subscription>* node = subscription_list.head(); node != subscription_list.end(); node = node->next()) { - node->value()->DispatchChange(cookie, cause); + node->value()->DispatchChange(change); } }
diff --git a/net/cookies/cookie_monster_change_dispatcher.h b/net/cookies/cookie_monster_change_dispatcher.h index 152f1461..79f73969 100644 --- a/net/cookies/cookie_monster_change_dispatcher.h +++ b/net/cookies/cookie_monster_change_dispatcher.h
@@ -22,14 +22,11 @@ namespace net { -class CanonicalCookie; - // CookieChangeDispatcher implementation used by CookieMonster. class CookieMonsterChangeDispatcher : public CookieChangeDispatcher { public: using CookieChangeCallbackList = - base::CallbackList<void(const CanonicalCookie& cookie, - CookieChangeCause cause)>; + base::CallbackList<void(const CookieChangeInfo&)>; CookieMonsterChangeDispatcher(); ~CookieMonsterChangeDispatcher() override; @@ -58,9 +55,7 @@ // global hooks in addition to the per-cookie hooks. // // TODO(pwnall): Remove |notify_global_hooks| and fix consumers. - void DispatchChange(const CanonicalCookie& cookie, - CookieChangeCause cause, - bool notify_global_hooks); + void DispatchChange(const CookieChangeInfo& change, bool notify_global_hooks); private: class Subscription : public base::LinkNode<Subscription>, @@ -84,8 +79,7 @@ const std::string& name_key() const { return name_key_; } // Dispatches a cookie change notification if the listener is interested. - void DispatchChange(const net::CanonicalCookie& cookie, - net::CookieChangeCause change_cause); + void DispatchChange(const CookieChangeInfo& change); private: base::WeakPtr<CookieMonsterChangeDispatcher> change_dispatcher_; @@ -94,8 +88,7 @@ const GURL url_; // empty() means no URL-based filtering. const net::CookieChangeCallback callback_; - void DoDispatchChange(const net::CanonicalCookie& cookie, - net::CookieChangeCause change_cause) const; + void DoDispatchChange(const CookieChangeInfo& change) const; // Used to post DoDispatchChange() calls to this subscription's thread. scoped_refptr<base::SingleThreadTaskRunner> task_runner_; @@ -124,12 +117,10 @@ // exceed eTLD+1, so we stop there. using CookieDomainMap = std::map<std::string, CookieNameMap>; - void DispatchChangeToDomainKey(const CanonicalCookie& cookie, - CookieChangeCause cause, + void DispatchChangeToDomainKey(const CookieChangeInfo& change, const std::string& domain_key); - void DispatchChangeToNameKey(const CanonicalCookie& cookie, - CookieChangeCause cause, + void DispatchChangeToNameKey(const CookieChangeInfo& change, CookieNameMap& name_map, const std::string& name_key);
diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc index db86678..4646e34f 100644 --- a/net/cookies/cookie_monster_unittest.cc +++ b/net/cookies/cookie_monster_unittest.cc
@@ -3572,12 +3572,11 @@ void RecordCookieChanges(std::vector<CanonicalCookie>* out_cookies, std::vector<CookieChangeCause>* out_causes, - const CanonicalCookie& cookie, - CookieChangeCause cause) { + const CookieChangeInfo& change) { DCHECK(out_cookies); - out_cookies->push_back(cookie); + out_cookies->push_back(change.cookie); if (out_causes) - out_causes->push_back(cause); + out_causes->push_back(change.cause); } TEST_F(CookieMonsterNotificationTest, GlobalNotBroadcast) {
diff --git a/net/cookies/cookie_store_change_unittest.h b/net/cookies/cookie_store_change_unittest.h index 00b0491..c6df422ee 100644 --- a/net/cookies/cookie_store_change_unittest.h +++ b/net/cookies/cookie_store_change_unittest.h
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "net/cookies/canonical_cookie.h" #include "net/cookies/cookie_change_dispatcher_test_helpers.h" +#include "net/cookies/cookie_constants.h" #include "net/cookies/cookie_store.h" #include "net/cookies/cookie_store_unittest.h" #include "testing/gtest/include/gtest/gtest.h" @@ -17,25 +18,24 @@ namespace { -using CookieChange = std::pair<CanonicalCookie, CookieChangeCause>; - // Used to sort CookieChanges when testing stores without exact change ordering. // // The ordering relation must match the order in which the tests below issue // cookie calls. Changes to this method should be tested by running the tests // below with CookieMonsterTestTraits::has_exact_change_ordering set to both // true and false. -bool CookieChangeLessThan(const CookieChange& lhs, const CookieChange& rhs) { - if (lhs.first.Name() != rhs.first.Name()) - return lhs.first.Name() < rhs.first.Name(); +bool CookieChangeLessThan(const CookieChangeInfo& lhs, + const CookieChangeInfo& rhs) { + if (lhs.cookie.Name() != rhs.cookie.Name()) + return lhs.cookie.Name() < rhs.cookie.Name(); - if (lhs.first.Value() != rhs.first.Value()) - return lhs.first.Value() < rhs.first.Value(); + if (lhs.cookie.Value() != rhs.cookie.Value()) + return lhs.cookie.Value() < rhs.cookie.Value(); - if (lhs.first.Domain() != rhs.first.Domain()) - return lhs.first.Domain() < rhs.first.Domain(); + if (lhs.cookie.Domain() != rhs.cookie.Domain()) + return lhs.cookie.Domain() < rhs.cookie.Domain(); - return lhs.second < rhs.second; + return lhs.cause < rhs.cause; } } // namespace @@ -83,11 +83,15 @@ << "expected a deletion cause, got " << actual_cause; } - static void OnCookieChange(std::vector<CookieChange>* changes, - const CanonicalCookie& cookie, - CookieChangeCause cause) { - CookieChange notification(cookie, cause); + bool IsExpectedAccessSemantics(net::CookieAccessSemantics expected_semantics, + net::CookieAccessSemantics actual_semantics) { + if (CookieStoreTestTraits::supports_cookie_access_semantics) + return expected_semantics == actual_semantics; + return actual_semantics == net::CookieAccessSemantics::UNKNOWN; + } + static void OnCookieChange(std::vector<CookieChangeInfo>* changes, + const CookieChangeInfo& notification) { if (CookieStoreTestTraits::has_exact_change_ordering) { changes->push_back(notification); } else { @@ -120,7 +124,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -134,7 +138,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; this->SetCookie(cs, this->http_www_foo_.url(), "A=B"); this->DeliverChangeNotifications(); std::unique_ptr<CookieChangeSubscription> subscription( @@ -150,7 +154,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -162,11 +166,12 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); } TYPED_TEST_P(CookieStoreChangeGlobalTest, InsertMany) { @@ -174,7 +179,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -193,32 +198,36 @@ EXPECT_EQ("G=H", this->GetCookies(cs, this->http_bar_com_.url())); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); - EXPECT_EQ("C", cookie_changes[1].first.Name()); - EXPECT_EQ("D", cookie_changes[1].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); + EXPECT_EQ("C", cookie_changes[1].cookie.Name()); + EXPECT_EQ("D", cookie_changes[1].cookie.Value()); ASSERT_LE(3u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[2].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[2].second)); - EXPECT_EQ("E", cookie_changes[2].first.Name()); - EXPECT_EQ("F", cookie_changes[2].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[2].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[2].cause)); + EXPECT_EQ("E", cookie_changes[2].cookie.Name()); + EXPECT_EQ("F", cookie_changes[2].cookie.Value()); ASSERT_LE(4u, cookie_changes.size()); - EXPECT_EQ(this->http_bar_com_.url().host(), cookie_changes[3].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[3].second)); - EXPECT_EQ("G", cookie_changes[3].first.Name()); - EXPECT_EQ("H", cookie_changes[3].first.Value()); + EXPECT_EQ(this->http_bar_com_.url().host(), + cookie_changes[3].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[3].cause)); + EXPECT_EQ("G", cookie_changes[3].cookie.Name()); + EXPECT_EQ("H", cookie_changes[3].cookie.Value()); EXPECT_EQ(4u, cookie_changes.size()); } @@ -228,7 +237,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -243,11 +252,12 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[0].second)); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[0].cause)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); } TYPED_TEST_P(CookieStoreChangeGlobalTest, DeleteTwo) { @@ -255,7 +265,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -282,18 +292,20 @@ EXPECT_EQ("", this->GetCookies(cs, this->http_bar_com_.url())); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[0].second)); - EXPECT_EQ("C", cookie_changes[0].first.Name()); - EXPECT_EQ("D", cookie_changes[0].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[0].cause)); + EXPECT_EQ("C", cookie_changes[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes[0].cookie.Value()); ASSERT_EQ(2u, cookie_changes.size()); - EXPECT_EQ(this->http_bar_com_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[1].second)); - EXPECT_EQ("G", cookie_changes[1].first.Name()); - EXPECT_EQ("H", cookie_changes[1].first.Value()); + EXPECT_EQ(this->http_bar_com_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[1].cause)); + EXPECT_EQ("G", cookie_changes[1].cookie.Name()); + EXPECT_EQ("H", cookie_changes[1].cookie.Value()); } TYPED_TEST_P(CookieStoreChangeGlobalTest, Overwrite) { @@ -301,7 +313,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -320,18 +332,20 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[0].second)); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + cookie_changes[0].cause)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); - EXPECT_EQ("A", cookie_changes[1].first.Name()); - EXPECT_EQ("C", cookie_changes[1].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); + EXPECT_EQ("A", cookie_changes[1].cookie.Name()); + EXPECT_EQ("C", cookie_changes[1].cookie.Value()); EXPECT_EQ(2u, cookie_changes.size()); } @@ -342,7 +356,7 @@ // Insert a cookie "A" for path "/path1" CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -354,12 +368,13 @@ this->SetCookie(cs, this->http_www_foo_.url(), "A=B; path=/path1")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_FALSE(cookie_changes[0].first.IsHttpOnly()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_FALSE(cookie_changes[0].cookie.IsHttpOnly()); cookie_changes.clear(); // Insert a cookie "A" for path "/path1", that is httponly. This should @@ -372,20 +387,22 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[0].second)); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_FALSE(cookie_changes[0].first.IsHttpOnly()); + cookie_changes[0].cause)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_FALSE(cookie_changes[0].cookie.IsHttpOnly()); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); - EXPECT_EQ("A", cookie_changes[1].first.Name()); - EXPECT_EQ("C", cookie_changes[1].first.Value()); - EXPECT_TRUE(cookie_changes[1].first.IsHttpOnly()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); + EXPECT_EQ("A", cookie_changes[1].cookie.Name()); + EXPECT_EQ("C", cookie_changes[1].cookie.Value()); + EXPECT_TRUE(cookie_changes[1].cookie.IsHttpOnly()); EXPECT_EQ(2u, cookie_changes.size()); } @@ -396,7 +413,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -408,8 +425,8 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); cookie_changes.clear(); // De-register the subscription. @@ -430,13 +447,13 @@ CookieStore* cs = this->GetCookieStore(); // Register two subscriptions. - std::vector<CookieChange> cookie_changes_1; + std::vector<CookieChangeInfo> cookie_changes_1; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, base::Unretained(&cookie_changes_1))); - std::vector<CookieChange> cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription2 = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -449,13 +466,13 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); cookie_changes_1.clear(); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("A", cookie_changes_2[0].first.Name()); - EXPECT_EQ("B", cookie_changes_2[0].first.Value()); + EXPECT_EQ("A", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_2[0].cookie.Value()); cookie_changes_2.clear(); // De-register the second subscription. @@ -466,8 +483,8 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "C=D")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("C", cookie_changes_1[0].first.Name()); - EXPECT_EQ("D", cookie_changes_1[0].first.Value()); + EXPECT_EQ("C", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes_1[0].cookie.Value()); cookie_changes_1.clear(); ASSERT_EQ(0u, cookie_changes_2.size()); @@ -486,7 +503,7 @@ // DeliverChangeNotifications() must NOT be called before the subscription is // established. - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -496,8 +513,8 @@ this->DeliverChangeNotifications(); EXPECT_LE(1u, cookie_changes.size()); - EXPECT_EQ("C", cookie_changes[0].first.Name()); - EXPECT_EQ("D", cookie_changes[0].first.Value()); + EXPECT_EQ("C", cookie_changes[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes[0].cookie.Value()); ASSERT_EQ(1u, cookie_changes.size()); } @@ -511,7 +528,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -523,8 +540,8 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); cookie_changes.clear(); // Insert a cookie, confirm it is not seen, deregister the subscription, run @@ -554,7 +571,7 @@ CookieStore* cs = this->GetCookieStore(); // Register two subscriptions. - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -572,13 +589,13 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); cookie_changes_1.clear(); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("A", cookie_changes_2[0].first.Name()); - EXPECT_EQ("B", cookie_changes_2[0].first.Value()); + EXPECT_EQ("A", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_2[0].cookie.Value()); cookie_changes_2.clear(); // Insert a cookie, confirm it is not seen, deregister a subscription, run @@ -598,8 +615,8 @@ subscription2.reset(); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("C", cookie_changes_1[0].first.Name()); - EXPECT_EQ("D", cookie_changes_1[0].first.Value()); + EXPECT_EQ("C", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes_1[0].cookie.Value()); // No late notification was received. ASSERT_EQ(0u, cookie_changes_2.size()); @@ -612,7 +629,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, @@ -627,12 +644,60 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1U, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); ASSERT_EQ(1U, cookie_changes_2.size()); - EXPECT_EQ("A", cookie_changes_2[0].first.Name()); - EXPECT_EQ("B", cookie_changes_2[0].first.Value()); + EXPECT_EQ("A", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_2[0].cookie.Value()); +} + +TYPED_TEST_P(CookieStoreChangeGlobalTest, ChangeIncludesCookieAccessSemantics) { + if (!TypeParam::supports_global_cookie_tracking) + return; + + CookieStore* cs = this->GetCookieStore(); + // if !supports_cookie_access_semantics, the delegate will be stored but will + // not be used. + auto access_delegate = std::make_unique<TestCookieAccessDelegate>(); + access_delegate->SetExpectationForCookieDomain("domain1.test", + CookieAccessSemantics::LEGACY); + access_delegate->SetExpectationForCookieDomain( + "domain2.test", CookieAccessSemantics::NONLEGACY); + access_delegate->SetExpectationForCookieDomain( + "domain3.test", CookieAccessSemantics::UNKNOWN); + cs->SetCookieAccessDelegate(std::move(access_delegate)); + + std::vector<CookieChangeInfo> cookie_changes; + std::unique_ptr<CookieChangeSubscription> subscription = + cs->GetChangeDispatcher().AddCallbackForAllChanges(base::BindRepeating( + &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, + base::Unretained(&cookie_changes))); + + this->CreateAndSetCookie(cs, GURL("http://domain1.test"), "cookie=1", + CookieOptions::MakeAllInclusive()); + this->CreateAndSetCookie(cs, GURL("http://domain2.test"), "cookie=1", + CookieOptions::MakeAllInclusive()); + this->CreateAndSetCookie(cs, GURL("http://domain3.test"), "cookie=1", + CookieOptions::MakeAllInclusive()); + this->CreateAndSetCookie(cs, GURL("http://domain4.test"), "cookie=1", + CookieOptions::MakeAllInclusive()); + this->DeliverChangeNotifications(); + + ASSERT_EQ(4u, cookie_changes.size()); + + EXPECT_EQ("domain1.test", cookie_changes[0].cookie.Domain()); + EXPECT_TRUE(this->IsExpectedAccessSemantics( + CookieAccessSemantics::LEGACY, cookie_changes[0].access_semantics)); + EXPECT_EQ("domain2.test", cookie_changes[1].cookie.Domain()); + EXPECT_TRUE(this->IsExpectedAccessSemantics( + CookieAccessSemantics::NONLEGACY, cookie_changes[1].access_semantics)); + EXPECT_EQ("domain3.test", cookie_changes[2].cookie.Domain()); + EXPECT_TRUE(this->IsExpectedAccessSemantics( + CookieAccessSemantics::UNKNOWN, cookie_changes[2].access_semantics)); + EXPECT_EQ("domain4.test", cookie_changes[3].cookie.Domain()); + EXPECT_TRUE(this->IsExpectedAccessSemantics( + CookieAccessSemantics::UNKNOWN, cookie_changes[3].access_semantics)); } TYPED_TEST_P(CookieStoreChangeUrlTest, NoCookie) { @@ -640,7 +705,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -656,7 +721,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; this->SetCookie(cs, this->http_www_foo_.url(), "A=B"); this->DeliverChangeNotifications(); std::unique_ptr<CookieChangeSubscription> subscription = @@ -674,7 +739,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -688,11 +753,12 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); } TYPED_TEST_P(CookieStoreChangeUrlTest, InsertMany) { @@ -700,7 +766,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -713,25 +779,28 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); - EXPECT_EQ("C", cookie_changes[1].first.Name()); - EXPECT_EQ("D", cookie_changes[1].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); + EXPECT_EQ("C", cookie_changes[1].cookie.Name()); + EXPECT_EQ("D", cookie_changes[1].cookie.Value()); ASSERT_LE(3u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[2].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[2].second)); - EXPECT_EQ("E", cookie_changes[2].first.Name()); - EXPECT_EQ("F", cookie_changes[2].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[2].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[2].cause)); + EXPECT_EQ("E", cookie_changes[2].cookie.Name()); + EXPECT_EQ("F", cookie_changes[2].cookie.Value()); EXPECT_EQ(3u, cookie_changes.size()); } @@ -741,7 +810,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->www_foo_foo_.url(), @@ -762,28 +831,30 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_EQ("/", cookie_changes[0].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes[0].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ("I", cookie_changes[1].first.Name()); - EXPECT_EQ("J", cookie_changes[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes[1].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); + EXPECT_EQ("I", cookie_changes[1].cookie.Name()); + EXPECT_EQ("J", cookie_changes[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[1].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); ASSERT_LE(3u, cookie_changes.size()); - EXPECT_EQ("K", cookie_changes[2].first.Name()); - EXPECT_EQ("L", cookie_changes[2].first.Value()); - EXPECT_EQ("/", cookie_changes[2].first.Path()); - EXPECT_EQ(".foo.com", cookie_changes[2].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[2].second)); + EXPECT_EQ("K", cookie_changes[2].cookie.Name()); + EXPECT_EQ("L", cookie_changes[2].cookie.Value()); + EXPECT_EQ("/", cookie_changes[2].cookie.Path()); + EXPECT_EQ(".foo.com", cookie_changes[2].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[2].cause)); EXPECT_EQ(3u, cookie_changes.size()); } @@ -793,7 +864,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -810,11 +881,12 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - ASSERT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[0].second)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + ASSERT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[0].cause)); } TYPED_TEST_P(CookieStoreChangeUrlTest, DeleteTwo) { @@ -822,7 +894,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -850,18 +922,20 @@ EXPECT_EQ("A=B; E=F", this->GetCookies(cs, this->http_www_foo_.url())); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[0].second)); - EXPECT_EQ("C", cookie_changes[0].first.Name()); - EXPECT_EQ("D", cookie_changes[0].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[0].cause)); + EXPECT_EQ("C", cookie_changes[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes[0].cookie.Value()); ASSERT_EQ(2u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[1].second)); - EXPECT_EQ("G", cookie_changes[1].first.Name()); - EXPECT_EQ("H", cookie_changes[1].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[1].cause)); + EXPECT_EQ("G", cookie_changes[1].cookie.Name()); + EXPECT_EQ("H", cookie_changes[1].cookie.Value()); } TYPED_TEST_P(CookieStoreChangeUrlTest, DeleteFiltering) { @@ -869,7 +943,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->www_foo_foo_.url(), @@ -902,28 +976,30 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_EQ("/", cookie_changes[0].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[0].second)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes[0].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[0].cause)); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ("I", cookie_changes[1].first.Name()); - EXPECT_EQ("J", cookie_changes[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes[1].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[1].second)); + EXPECT_EQ("I", cookie_changes[1].cookie.Name()); + EXPECT_EQ("J", cookie_changes[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[1].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[1].cause)); ASSERT_LE(3u, cookie_changes.size()); - EXPECT_EQ("K", cookie_changes[2].first.Name()); - EXPECT_EQ("L", cookie_changes[2].first.Value()); - EXPECT_EQ("/", cookie_changes[2].first.Path()); - EXPECT_EQ(".foo.com", cookie_changes[2].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[2].second)); + EXPECT_EQ("K", cookie_changes[2].cookie.Name()); + EXPECT_EQ("L", cookie_changes[2].cookie.Value()); + EXPECT_EQ("/", cookie_changes[2].cookie.Path()); + EXPECT_EQ(".foo.com", cookie_changes[2].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[2].cause)); EXPECT_EQ(3u, cookie_changes.size()); } @@ -933,7 +1009,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -954,18 +1030,20 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[0].second)); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + cookie_changes[0].cause)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); - EXPECT_EQ("A", cookie_changes[1].first.Name()); - EXPECT_EQ("C", cookie_changes[1].first.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); + EXPECT_EQ("A", cookie_changes[1].cookie.Name()); + EXPECT_EQ("C", cookie_changes[1].cookie.Value()); EXPECT_EQ(2u, cookie_changes.size()); } @@ -975,7 +1053,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->www_foo_foo_.url(), @@ -1010,53 +1088,57 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_EQ("/", cookie_changes[0].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes[0].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[0].second)); + cookie_changes[0].cause)); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[1].first.Name()); - EXPECT_EQ("b", cookie_changes[1].first.Value()); - EXPECT_EQ("/", cookie_changes[1].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_EQ(CookieChangeCause::INSERTED, cookie_changes[1].second); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); + EXPECT_EQ("A", cookie_changes[1].cookie.Name()); + EXPECT_EQ("b", cookie_changes[1].cookie.Value()); + EXPECT_EQ("/", cookie_changes[1].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_EQ(CookieChangeCause::INSERTED, cookie_changes[1].cause); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); ASSERT_LE(3u, cookie_changes.size()); - EXPECT_EQ("I", cookie_changes[2].first.Name()); - EXPECT_EQ("J", cookie_changes[2].first.Value()); - EXPECT_EQ("/foo", cookie_changes[2].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[2].first.Domain()); + EXPECT_EQ("I", cookie_changes[2].cookie.Name()); + EXPECT_EQ("J", cookie_changes[2].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[2].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[2].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[2].second)); + cookie_changes[2].cause)); ASSERT_LE(4u, cookie_changes.size()); - EXPECT_EQ("I", cookie_changes[3].first.Name()); - EXPECT_EQ("j", cookie_changes[3].first.Value()); - EXPECT_EQ("/foo", cookie_changes[3].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[3].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[3].second)); + EXPECT_EQ("I", cookie_changes[3].cookie.Name()); + EXPECT_EQ("j", cookie_changes[3].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[3].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[3].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[3].cause)); ASSERT_LE(5u, cookie_changes.size()); - EXPECT_EQ("K", cookie_changes[4].first.Name()); - EXPECT_EQ("L", cookie_changes[4].first.Value()); - EXPECT_EQ("/", cookie_changes[4].first.Path()); - EXPECT_EQ(".foo.com", cookie_changes[4].first.Domain()); + EXPECT_EQ("K", cookie_changes[4].cookie.Name()); + EXPECT_EQ("L", cookie_changes[4].cookie.Value()); + EXPECT_EQ("/", cookie_changes[4].cookie.Path()); + EXPECT_EQ(".foo.com", cookie_changes[4].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[4].second)); + cookie_changes[4].cause)); ASSERT_LE(6u, cookie_changes.size()); - EXPECT_EQ("K", cookie_changes[5].first.Name()); - EXPECT_EQ("l", cookie_changes[5].first.Value()); - EXPECT_EQ("/", cookie_changes[5].first.Path()); - EXPECT_EQ(".foo.com", cookie_changes[5].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[5].second)); + EXPECT_EQ("K", cookie_changes[5].cookie.Name()); + EXPECT_EQ("l", cookie_changes[5].cookie.Value()); + EXPECT_EQ("/", cookie_changes[5].cookie.Path()); + EXPECT_EQ(".foo.com", cookie_changes[5].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[5].cause)); EXPECT_EQ(6u, cookie_changes.size()); } @@ -1067,7 +1149,7 @@ // Insert a cookie "A" for path "/foo". CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->www_foo_foo_.url(), @@ -1080,12 +1162,13 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B; path=/foo")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_FALSE(cookie_changes[0].first.IsHttpOnly()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_FALSE(cookie_changes[0].cookie.IsHttpOnly()); cookie_changes.clear(); // Insert a cookie "A" for path "/foo", that is httponly. This should @@ -1098,20 +1181,22 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[0].second)); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); - EXPECT_FALSE(cookie_changes[0].first.IsHttpOnly()); + cookie_changes[0].cause)); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); + EXPECT_FALSE(cookie_changes[0].cookie.IsHttpOnly()); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); - EXPECT_EQ("A", cookie_changes[1].first.Name()); - EXPECT_EQ("C", cookie_changes[1].first.Value()); - EXPECT_TRUE(cookie_changes[1].first.IsHttpOnly()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); + EXPECT_EQ("A", cookie_changes[1].cookie.Name()); + EXPECT_EQ("C", cookie_changes[1].cookie.Value()); + EXPECT_TRUE(cookie_changes[1].cookie.IsHttpOnly()); EXPECT_EQ(2u, cookie_changes.size()); } @@ -1122,7 +1207,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1136,8 +1221,8 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); cookie_changes.clear(); // De-register the subscription. @@ -1158,7 +1243,7 @@ CookieStore* cs = this->GetCookieStore(); // Register two subscriptions. - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1179,13 +1264,13 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); cookie_changes_1.clear(); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("A", cookie_changes_2[0].first.Name()); - EXPECT_EQ("B", cookie_changes_2[0].first.Value()); + EXPECT_EQ("A", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_2[0].cookie.Value()); cookie_changes_2.clear(); // De-register the second registration. @@ -1196,8 +1281,8 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "C=D")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("C", cookie_changes_1[0].first.Name()); - EXPECT_EQ("D", cookie_changes_1[0].first.Value()); + EXPECT_EQ("C", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes_1[0].cookie.Value()); EXPECT_EQ(0u, cookie_changes_2.size()); } @@ -1215,7 +1300,7 @@ // DeliverChangeNotifications() must NOT be called before the subscription is // established. - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1227,8 +1312,8 @@ this->DeliverChangeNotifications(); EXPECT_LE(1u, cookie_changes.size()); - EXPECT_EQ("C", cookie_changes[0].first.Name()); - EXPECT_EQ("D", cookie_changes[0].first.Value()); + EXPECT_EQ("C", cookie_changes[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes[0].cookie.Value()); ASSERT_EQ(1u, cookie_changes.size()); } @@ -1242,7 +1327,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1256,8 +1341,8 @@ EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("A", cookie_changes[0].first.Name()); - EXPECT_EQ("B", cookie_changes[0].first.Value()); + EXPECT_EQ("A", cookie_changes[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes[0].cookie.Value()); cookie_changes.clear(); // Insert a cookie, confirm it is not seen, deregister the subscription, run @@ -1287,7 +1372,7 @@ CookieStore* cs = this->GetCookieStore(); // Register two subscriptions. - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1309,13 +1394,13 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); cookie_changes_1.clear(); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("A", cookie_changes_2[0].first.Name()); - EXPECT_EQ("B", cookie_changes_2[0].first.Value()); + EXPECT_EQ("A", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_2[0].cookie.Value()); cookie_changes_2.clear(); // Insert a cookie, confirm it is not seen, deregister a subscription, run @@ -1335,8 +1420,8 @@ subscription2.reset(); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("C", cookie_changes_1[0].first.Name()); - EXPECT_EQ("D", cookie_changes_1[0].first.Value()); + EXPECT_EQ("C", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes_1[0].cookie.Value()); // No late notification was received. ASSERT_EQ(0u, cookie_changes_2.size()); @@ -1348,7 +1433,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1374,16 +1459,16 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("C", cookie_changes_2[0].first.Name()); - EXPECT_EQ("D", cookie_changes_2[0].first.Value()); + EXPECT_EQ("C", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes_2[0].cookie.Value()); EXPECT_EQ(this->http_bar_com_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); } TYPED_TEST_P(CookieStoreChangeUrlTest, DifferentSubscriptionsDomains) { @@ -1392,7 +1477,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1418,16 +1503,16 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("C", cookie_changes_2[0].first.Name()); - EXPECT_EQ("D", cookie_changes_2[0].first.Value()); + EXPECT_EQ("C", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes_2[0].cookie.Value()); EXPECT_EQ(this->http_bar_com_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); } TYPED_TEST_P(CookieStoreChangeUrlTest, DifferentSubscriptionsPaths) { @@ -1436,7 +1521,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1462,25 +1547,25 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); - EXPECT_EQ("/", cookie_changes_1[0].first.Path()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes_1[0].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); ASSERT_LE(1u, cookie_changes_2.size()); - EXPECT_EQ("A", cookie_changes_2[0].first.Name()); - EXPECT_EQ("B", cookie_changes_2[0].first.Value()); - EXPECT_EQ("/", cookie_changes_2[0].first.Path()); + EXPECT_EQ("A", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_2[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes_2[0].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); ASSERT_LE(2u, cookie_changes_2.size()); - EXPECT_EQ("C", cookie_changes_2[1].first.Name()); - EXPECT_EQ("D", cookie_changes_2[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes_2[1].first.Path()); + EXPECT_EQ("C", cookie_changes_2[1].cookie.Name()); + EXPECT_EQ("D", cookie_changes_2[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes_2[1].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_2[1].first.Domain()); + cookie_changes_2[1].cookie.Domain()); EXPECT_EQ(2u, cookie_changes_2.size()); } @@ -1491,8 +1576,8 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; - std::vector<CookieChange> cookie_changes_3; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_3; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1532,32 +1617,32 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); EXPECT_EQ(1u, cookie_changes_1.size()); ASSERT_LE(1u, cookie_changes_2.size()); - EXPECT_EQ("C", cookie_changes_2[0].first.Name()); - EXPECT_EQ("D", cookie_changes_2[0].first.Value()); + EXPECT_EQ("C", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("D", cookie_changes_2[0].cookie.Value()); EXPECT_EQ(this->http_bar_com_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); EXPECT_EQ(1u, cookie_changes_2.size()); ASSERT_LE(1u, cookie_changes_3.size()); - EXPECT_EQ("A", cookie_changes_3[0].first.Name()); - EXPECT_EQ("B", cookie_changes_3[0].first.Value()); - EXPECT_EQ("/", cookie_changes_3[0].first.Path()); + EXPECT_EQ("A", cookie_changes_3[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_3[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes_3[0].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_3[0].first.Domain()); + cookie_changes_3[0].cookie.Domain()); ASSERT_LE(2u, cookie_changes_3.size()); - EXPECT_EQ("E", cookie_changes_3[1].first.Name()); - EXPECT_EQ("F", cookie_changes_3[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes_3[1].first.Path()); + EXPECT_EQ("E", cookie_changes_3[1].cookie.Name()); + EXPECT_EQ("F", cookie_changes_3[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes_3[1].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_3[1].first.Domain()); + cookie_changes_3[1].cookie.Domain()); EXPECT_EQ(2u, cookie_changes_3.size()); } @@ -1569,7 +1654,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForUrl( this->http_www_foo_.url(), @@ -1588,12 +1673,43 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1U, cookie_changes_1.size()); - EXPECT_EQ("A", cookie_changes_1[0].first.Name()); - EXPECT_EQ("B", cookie_changes_1[0].first.Value()); + EXPECT_EQ("A", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_1[0].cookie.Value()); ASSERT_EQ(1U, cookie_changes_2.size()); - EXPECT_EQ("A", cookie_changes_2[0].first.Name()); - EXPECT_EQ("B", cookie_changes_2[0].first.Value()); + EXPECT_EQ("A", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("B", cookie_changes_2[0].cookie.Value()); +} + +TYPED_TEST_P(CookieStoreChangeUrlTest, ChangeIncludesCookieAccessSemantics) { + if (!TypeParam::supports_url_cookie_tracking) + return; + + CookieStore* cs = this->GetCookieStore(); + // if !supports_cookie_access_semantics, the delegate will be stored but will + // not be used. + auto access_delegate = std::make_unique<TestCookieAccessDelegate>(); + access_delegate->SetExpectationForCookieDomain("domain1.test", + CookieAccessSemantics::LEGACY); + cs->SetCookieAccessDelegate(std::move(access_delegate)); + + std::vector<CookieChangeInfo> cookie_changes; + std::unique_ptr<CookieChangeSubscription> subscription = + cs->GetChangeDispatcher().AddCallbackForUrl( + GURL("http://domain1.test"), + base::BindRepeating( + &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, + base::Unretained(&cookie_changes))); + + this->CreateAndSetCookie(cs, GURL("http://domain1.test"), "cookie=1", + CookieOptions::MakeAllInclusive()); + this->DeliverChangeNotifications(); + + ASSERT_EQ(1u, cookie_changes.size()); + + EXPECT_EQ("domain1.test", cookie_changes[0].cookie.Domain()); + EXPECT_TRUE(this->IsExpectedAccessSemantics( + CookieAccessSemantics::LEGACY, cookie_changes[0].access_semantics)); } TYPED_TEST_P(CookieStoreChangeNamedTest, NoCookie) { @@ -1601,7 +1717,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -1617,7 +1733,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; this->SetCookie(cs, this->http_www_foo_.url(), "abc=def"); this->DeliverChangeNotifications(); std::unique_ptr<CookieChangeSubscription> subscription = @@ -1635,7 +1751,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -1649,11 +1765,12 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); } TYPED_TEST_P(CookieStoreChangeNamedTest, InsertTwo) { @@ -1661,7 +1778,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -1677,20 +1794,22 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_EQ("/", cookie_changes[0].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes[0].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[1].first.Name()); - EXPECT_EQ("hij", cookie_changes[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes[1].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); + EXPECT_EQ("abc", cookie_changes[1].cookie.Name()); + EXPECT_EQ("hij", cookie_changes[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[1].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); EXPECT_EQ(2u, cookie_changes.size()); } @@ -1700,7 +1819,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -1726,28 +1845,30 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_EQ("/", cookie_changes[0].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes[0].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[1].first.Name()); - EXPECT_EQ("pqr", cookie_changes[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes[1].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); + EXPECT_EQ("abc", cookie_changes[1].cookie.Name()); + EXPECT_EQ("pqr", cookie_changes[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[1].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); ASSERT_LE(3u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[2].first.Name()); - EXPECT_EQ("stu", cookie_changes[2].first.Value()); - EXPECT_EQ("/", cookie_changes[2].first.Path()); - EXPECT_EQ(".foo.com", cookie_changes[2].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[2].second)); + EXPECT_EQ("abc", cookie_changes[2].cookie.Name()); + EXPECT_EQ("stu", cookie_changes[2].cookie.Value()); + EXPECT_EQ("/", cookie_changes[2].cookie.Path()); + EXPECT_EQ(".foo.com", cookie_changes[2].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[2].cause)); EXPECT_EQ(3u, cookie_changes.size()); } @@ -1757,7 +1878,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -1774,11 +1895,12 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[0].second)); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[0].cause)); } TYPED_TEST_P(CookieStoreChangeNamedTest, DeleteTwo) { @@ -1786,7 +1908,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -1807,20 +1929,22 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_EQ("/", cookie_changes[0].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[0].second)); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes[0].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[0].cause)); ASSERT_EQ(2u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[1].first.Name()); - EXPECT_EQ("hij", cookie_changes[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes[1].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[1].second)); + EXPECT_EQ("abc", cookie_changes[1].cookie.Name()); + EXPECT_EQ("hij", cookie_changes[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[1].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[1].cause)); } TYPED_TEST_P(CookieStoreChangeNamedTest, DeleteFiltering) { @@ -1828,7 +1952,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -1865,28 +1989,30 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("mno", cookie_changes[0].first.Value()); - EXPECT_EQ("/foo", cookie_changes[0].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[0].second)); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("mno", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[0].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[0].cause)); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[1].first.Name()); - EXPECT_EQ("pqr", cookie_changes[1].first.Value()); - EXPECT_EQ("/", cookie_changes[1].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[1].second)); + EXPECT_EQ("abc", cookie_changes[1].cookie.Name()); + EXPECT_EQ("pqr", cookie_changes[1].cookie.Value()); + EXPECT_EQ("/", cookie_changes[1].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[1].cause)); ASSERT_LE(3u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[2].first.Name()); - EXPECT_EQ("stu", cookie_changes[2].first.Value()); - EXPECT_EQ("/", cookie_changes[2].first.Path()); - EXPECT_EQ(".foo.com", cookie_changes[2].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::EXPLICIT, - cookie_changes[2].second)); + EXPECT_EQ("abc", cookie_changes[2].cookie.Name()); + EXPECT_EQ("stu", cookie_changes[2].cookie.Value()); + EXPECT_EQ("/", cookie_changes[2].cookie.Path()); + EXPECT_EQ(".foo.com", cookie_changes[2].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::EXPLICIT, cookie_changes[2].cause)); EXPECT_EQ(3u, cookie_changes.size()); } @@ -1896,7 +2022,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -1917,18 +2043,20 @@ this->DeliverChangeNotifications(); EXPECT_LE(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[0].second)); + cookie_changes[0].cause)); EXPECT_LE(2u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[1].first.Name()); - EXPECT_EQ("ghi", cookie_changes[1].first.Value()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); + EXPECT_EQ("abc", cookie_changes[1].cookie.Name()); + EXPECT_EQ("ghi", cookie_changes[1].cookie.Value()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); EXPECT_EQ(2u, cookie_changes.size()); } @@ -1938,7 +2066,7 @@ return; CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -1981,52 +2109,56 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("mno1", cookie_changes[0].first.Value()); - EXPECT_EQ("/foo", cookie_changes[0].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("mno1", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[0].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[0].second)); + cookie_changes[0].cause)); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[1].first.Name()); - EXPECT_EQ("mno2", cookie_changes[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes[1].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); + EXPECT_EQ("abc", cookie_changes[1].cookie.Name()); + EXPECT_EQ("mno2", cookie_changes[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[1].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); ASSERT_LE(3u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[2].first.Name()); - EXPECT_EQ("pqr1", cookie_changes[2].first.Value()); - EXPECT_EQ("/", cookie_changes[2].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[2].first.Domain()); + EXPECT_EQ("abc", cookie_changes[2].cookie.Name()); + EXPECT_EQ("pqr1", cookie_changes[2].cookie.Value()); + EXPECT_EQ("/", cookie_changes[2].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[2].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[2].second)); + cookie_changes[2].cause)); ASSERT_LE(4u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[3].first.Name()); - EXPECT_EQ("pqr2", cookie_changes[3].first.Value()); - EXPECT_EQ("/", cookie_changes[3].first.Path()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[3].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[3].second)); + EXPECT_EQ("abc", cookie_changes[3].cookie.Name()); + EXPECT_EQ("pqr2", cookie_changes[3].cookie.Value()); + EXPECT_EQ("/", cookie_changes[3].cookie.Path()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[3].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[3].cause)); ASSERT_LE(5u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[4].first.Name()); - EXPECT_EQ("stu1", cookie_changes[4].first.Value()); - EXPECT_EQ("/", cookie_changes[4].first.Path()); - EXPECT_EQ(".foo.com", cookie_changes[4].first.Domain()); + EXPECT_EQ("abc", cookie_changes[4].cookie.Name()); + EXPECT_EQ("stu1", cookie_changes[4].cookie.Value()); + EXPECT_EQ("/", cookie_changes[4].cookie.Path()); + EXPECT_EQ(".foo.com", cookie_changes[4].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[4].second)); + cookie_changes[4].cause)); ASSERT_LE(6u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[5].first.Name()); - EXPECT_EQ("stu2", cookie_changes[5].first.Value()); - EXPECT_EQ("/", cookie_changes[5].first.Path()); - EXPECT_EQ(".foo.com", cookie_changes[5].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[5].second)); + EXPECT_EQ("abc", cookie_changes[5].cookie.Name()); + EXPECT_EQ("stu2", cookie_changes[5].cookie.Value()); + EXPECT_EQ("/", cookie_changes[5].cookie.Path()); + EXPECT_EQ(".foo.com", cookie_changes[5].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[5].cause)); EXPECT_EQ(6u, cookie_changes.size()); } @@ -2037,7 +2169,7 @@ // Insert a cookie "abc" for path "/foo". CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -2051,12 +2183,13 @@ this->SetCookie(cs, this->http_www_foo_.url(), "abc=def; path=/foo")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[0].second)); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_FALSE(cookie_changes[0].first.IsHttpOnly()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[0].cause)); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_FALSE(cookie_changes[0].cookie.IsHttpOnly()); cookie_changes.clear(); // Insert a cookie "a" for path "/foo", that is httponly. This should @@ -2069,20 +2202,22 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[0].first.Domain()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[0].cookie.Domain()); EXPECT_TRUE(this->MatchesCause(CookieChangeCause::OVERWRITE, - cookie_changes[0].second)); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_FALSE(cookie_changes[0].first.IsHttpOnly()); + cookie_changes[0].cause)); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_FALSE(cookie_changes[0].cookie.IsHttpOnly()); ASSERT_LE(2u, cookie_changes.size()); - EXPECT_EQ(this->http_www_foo_.url().host(), cookie_changes[1].first.Domain()); - EXPECT_TRUE(this->MatchesCause(CookieChangeCause::INSERTED, - cookie_changes[1].second)); - EXPECT_EQ("abc", cookie_changes[1].first.Name()); - EXPECT_EQ("hij", cookie_changes[1].first.Value()); - EXPECT_TRUE(cookie_changes[1].first.IsHttpOnly()); + EXPECT_EQ(this->http_www_foo_.url().host(), + cookie_changes[1].cookie.Domain()); + EXPECT_TRUE( + this->MatchesCause(CookieChangeCause::INSERTED, cookie_changes[1].cause)); + EXPECT_EQ("abc", cookie_changes[1].cookie.Name()); + EXPECT_EQ("hij", cookie_changes[1].cookie.Value()); + EXPECT_TRUE(cookie_changes[1].cookie.IsHttpOnly()); EXPECT_EQ(2u, cookie_changes.size()); } @@ -2093,7 +2228,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -2108,9 +2243,9 @@ this->SetCookie(cs, this->http_www_foo_.url(), "abc=def; path=/foo")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_EQ("/foo", cookie_changes[0].first.Path()); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[0].cookie.Path()); cookie_changes.clear(); // De-register the subscription. @@ -2132,7 +2267,7 @@ CookieStore* cs = this->GetCookieStore(); // Register two subscriptions. - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -2154,15 +2289,15 @@ this->SetCookie(cs, this->http_www_foo_.url(), "abc=def; path=/foo")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("def", cookie_changes_1[0].first.Value()); - EXPECT_EQ("/foo", cookie_changes_1[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_1[0].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes_1[0].cookie.Path()); cookie_changes_1.clear(); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("abc", cookie_changes_2[0].first.Name()); - EXPECT_EQ("def", cookie_changes_2[0].first.Value()); - EXPECT_EQ("/foo", cookie_changes_2[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_2[0].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes_2[0].cookie.Path()); cookie_changes_2.clear(); // De-register the second registration. @@ -2174,9 +2309,9 @@ this->SetCookie(cs, this->http_www_foo_.url(), "abc=hij; path=/")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("hij", cookie_changes_1[0].first.Value()); - EXPECT_EQ("/", cookie_changes_1[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("hij", cookie_changes_1[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes_1[0].cookie.Path()); EXPECT_EQ(0u, cookie_changes_2.size()); } @@ -2195,7 +2330,7 @@ // DeliverChangeNotifications() must NOT be called before the subscription is // established. - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -2208,9 +2343,9 @@ this->DeliverChangeNotifications(); EXPECT_LE(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("hij", cookie_changes[0].first.Value()); - EXPECT_EQ("/", cookie_changes[0].first.Path()); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("hij", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes[0].cookie.Path()); ASSERT_EQ(1u, cookie_changes.size()); } @@ -2224,7 +2359,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -2239,9 +2374,9 @@ this->SetCookie(cs, this->http_www_foo_.url(), "abc=def; path=/foo")); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes.size()); - EXPECT_EQ("abc", cookie_changes[0].first.Name()); - EXPECT_EQ("def", cookie_changes[0].first.Value()); - EXPECT_EQ("/foo", cookie_changes[0].first.Path()); + EXPECT_EQ("abc", cookie_changes[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes[0].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes[0].cookie.Path()); cookie_changes.clear(); // Insert a cookie, confirm it is not seen, deregister the subscription, run @@ -2271,7 +2406,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForCookie( this->www_foo_foo_.url(), "abc", @@ -2294,15 +2429,15 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("def", cookie_changes_1[0].first.Value()); - EXPECT_EQ("/foo", cookie_changes_1[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_1[0].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes_1[0].cookie.Path()); cookie_changes_1.clear(); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("abc", cookie_changes_2[0].first.Name()); - EXPECT_EQ("def", cookie_changes_2[0].first.Value()); - EXPECT_EQ("/foo", cookie_changes_2[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_2[0].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes_2[0].cookie.Path()); cookie_changes_2.clear(); // Insert a cookie, confirm it is not seen, deregister a subscription, run @@ -2323,9 +2458,9 @@ subscription2.reset(); this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("hij", cookie_changes_1[0].first.Value()); - EXPECT_EQ("/", cookie_changes_1[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("hij", cookie_changes_1[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes_1[0].cookie.Path()); // No late notification was received. ASSERT_EQ(0u, cookie_changes_2.size()); @@ -2337,7 +2472,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -2363,16 +2498,16 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("def", cookie_changes_1[0].first.Value()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_1[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("ghi", cookie_changes_2[0].first.Name()); - EXPECT_EQ("jkl", cookie_changes_2[0].first.Value()); + EXPECT_EQ("ghi", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("jkl", cookie_changes_2[0].cookie.Value()); EXPECT_EQ(this->http_bar_com_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); } TYPED_TEST_P(CookieStoreChangeNamedTest, DifferentSubscriptionsDomains) { @@ -2381,7 +2516,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -2407,16 +2542,16 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("def", cookie_changes_1[0].first.Value()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_1[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("abc", cookie_changes_2[0].first.Name()); - EXPECT_EQ("ghi", cookie_changes_2[0].first.Value()); + EXPECT_EQ("abc", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("ghi", cookie_changes_2[0].cookie.Value()); EXPECT_EQ(this->http_bar_com_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); } TYPED_TEST_P(CookieStoreChangeNamedTest, DifferentSubscriptionsNames) { @@ -2425,7 +2560,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -2451,16 +2586,16 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("def", cookie_changes_1[0].first.Value()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_1[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); ASSERT_EQ(1u, cookie_changes_2.size()); - EXPECT_EQ("ghi", cookie_changes_2[0].first.Name()); - EXPECT_EQ("jkl", cookie_changes_2[0].first.Value()); + EXPECT_EQ("ghi", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("jkl", cookie_changes_2[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); } TYPED_TEST_P(CookieStoreChangeNamedTest, DifferentSubscriptionsPaths) { @@ -2469,7 +2604,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -2496,25 +2631,25 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("def", cookie_changes_1[0].first.Value()); - EXPECT_EQ("/", cookie_changes_1[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_1[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes_1[0].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); ASSERT_LE(1u, cookie_changes_2.size()); - EXPECT_EQ("abc", cookie_changes_2[0].first.Name()); - EXPECT_EQ("def", cookie_changes_2[0].first.Value()); - EXPECT_EQ("/", cookie_changes_2[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_2[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes_2[0].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); ASSERT_LE(2u, cookie_changes_2.size()); - EXPECT_EQ("abc", cookie_changes_2[1].first.Name()); - EXPECT_EQ("ghi", cookie_changes_2[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes_2[1].first.Path()); + EXPECT_EQ("abc", cookie_changes_2[1].cookie.Name()); + EXPECT_EQ("ghi", cookie_changes_2[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes_2[1].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_2[1].first.Domain()); + cookie_changes_2[1].cookie.Domain()); EXPECT_EQ(2u, cookie_changes_2.size()); } @@ -2525,8 +2660,8 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; - std::vector<CookieChange> cookie_changes_3, cookie_changes_4; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_3, cookie_changes_4; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -2586,39 +2721,39 @@ this->DeliverChangeNotifications(); ASSERT_LE(1u, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("def", cookie_changes_1[0].first.Value()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_1[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_1[0].first.Domain()); + cookie_changes_1[0].cookie.Domain()); EXPECT_EQ(1u, cookie_changes_1.size()); ASSERT_LE(1u, cookie_changes_2.size()); - EXPECT_EQ("hij", cookie_changes_2[0].first.Name()); - EXPECT_EQ("mno", cookie_changes_2[0].first.Value()); + EXPECT_EQ("hij", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("mno", cookie_changes_2[0].cookie.Value()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_2[0].first.Domain()); + cookie_changes_2[0].cookie.Domain()); EXPECT_EQ(1u, cookie_changes_2.size()); ASSERT_LE(1u, cookie_changes_3.size()); - EXPECT_EQ("abc", cookie_changes_3[0].first.Name()); - EXPECT_EQ("stu", cookie_changes_3[0].first.Value()); + EXPECT_EQ("abc", cookie_changes_3[0].cookie.Name()); + EXPECT_EQ("stu", cookie_changes_3[0].cookie.Value()); EXPECT_EQ(this->http_bar_com_.url().host(), - cookie_changes_3[0].first.Domain()); + cookie_changes_3[0].cookie.Domain()); EXPECT_EQ(1u, cookie_changes_3.size()); ASSERT_LE(1u, cookie_changes_4.size()); - EXPECT_EQ("abc", cookie_changes_4[0].first.Name()); - EXPECT_EQ("def", cookie_changes_4[0].first.Value()); - EXPECT_EQ("/", cookie_changes_4[0].first.Path()); + EXPECT_EQ("abc", cookie_changes_4[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_4[0].cookie.Value()); + EXPECT_EQ("/", cookie_changes_4[0].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_4[0].first.Domain()); + cookie_changes_4[0].cookie.Domain()); ASSERT_LE(2u, cookie_changes_4.size()); - EXPECT_EQ("abc", cookie_changes_4[1].first.Name()); - EXPECT_EQ("vwx", cookie_changes_4[1].first.Value()); - EXPECT_EQ("/foo", cookie_changes_4[1].first.Path()); + EXPECT_EQ("abc", cookie_changes_4[1].cookie.Name()); + EXPECT_EQ("vwx", cookie_changes_4[1].cookie.Value()); + EXPECT_EQ("/foo", cookie_changes_4[1].cookie.Path()); EXPECT_EQ(this->http_www_foo_.url().host(), - cookie_changes_4[1].first.Domain()); + cookie_changes_4[1].cookie.Domain()); EXPECT_EQ(2u, cookie_changes_4.size()); } @@ -2630,7 +2765,7 @@ CookieStore* cs = this->GetCookieStore(); - std::vector<CookieChange> cookie_changes_1, cookie_changes_2; + std::vector<CookieChangeInfo> cookie_changes_1, cookie_changes_2; std::unique_ptr<CookieChangeSubscription> subscription1 = cs->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -2650,13 +2785,13 @@ this->DeliverChangeNotifications(); ASSERT_EQ(1U, cookie_changes_1.size()); - EXPECT_EQ("abc", cookie_changes_1[0].first.Name()); - EXPECT_EQ("def", cookie_changes_1[0].first.Value()); + EXPECT_EQ("abc", cookie_changes_1[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_1[0].cookie.Value()); cookie_changes_1.clear(); ASSERT_EQ(1U, cookie_changes_2.size()); - EXPECT_EQ("abc", cookie_changes_2[0].first.Name()); - EXPECT_EQ("def", cookie_changes_2[0].first.Value()); + EXPECT_EQ("abc", cookie_changes_2[0].cookie.Name()); + EXPECT_EQ("def", cookie_changes_2[0].cookie.Value()); cookie_changes_2.clear(); } @@ -2664,7 +2799,7 @@ if (!TypeParam::supports_named_cookie_tracking) return; - std::vector<CookieChange> cookie_changes; + std::vector<CookieChangeInfo> cookie_changes; std::unique_ptr<CookieChangeSubscription> subscription = this->GetCookieStore()->GetChangeDispatcher().AddCallbackForCookie( this->http_www_foo_.url(), "abc", @@ -2677,6 +2812,37 @@ subscription.reset(); } +TYPED_TEST_P(CookieStoreChangeNamedTest, ChangeIncludesCookieAccessSemantics) { + if (!TypeParam::supports_named_cookie_tracking) + return; + + CookieStore* cs = this->GetCookieStore(); + // if !supports_cookie_access_semantics, the delegate will be stored but will + // not be used. + auto access_delegate = std::make_unique<TestCookieAccessDelegate>(); + access_delegate->SetExpectationForCookieDomain("domain1.test", + CookieAccessSemantics::LEGACY); + cs->SetCookieAccessDelegate(std::move(access_delegate)); + + std::vector<CookieChangeInfo> cookie_changes; + std::unique_ptr<CookieChangeSubscription> subscription = + cs->GetChangeDispatcher().AddCallbackForCookie( + GURL("http://domain1.test"), "cookie", + base::BindRepeating( + &CookieStoreChangeTestBase<TypeParam>::OnCookieChange, + base::Unretained(&cookie_changes))); + + this->CreateAndSetCookie(cs, GURL("http://domain1.test"), "cookie=1", + CookieOptions::MakeAllInclusive()); + this->DeliverChangeNotifications(); + + ASSERT_EQ(1u, cookie_changes.size()); + EXPECT_EQ("domain1.test", cookie_changes[0].cookie.Domain()); + EXPECT_EQ("cookie", cookie_changes[0].cookie.Name()); + EXPECT_TRUE(this->IsExpectedAccessSemantics( + CookieAccessSemantics::LEGACY, cookie_changes[0].access_semantics)); +} + REGISTER_TYPED_TEST_SUITE_P(CookieStoreChangeGlobalTest, NoCookie, InitialCookie, @@ -2691,7 +2857,8 @@ DispatchRace, DeregisterRace, DeregisterRaceMultiple, - MultipleSubscriptions); + MultipleSubscriptions, + ChangeIncludesCookieAccessSemantics); REGISTER_TYPED_TEST_SUITE_P(CookieStoreChangeUrlTest, NoCookie, @@ -2714,7 +2881,8 @@ DifferentSubscriptionsDomains, DifferentSubscriptionsPaths, DifferentSubscriptionsFiltering, - MultipleSubscriptions); + MultipleSubscriptions, + ChangeIncludesCookieAccessSemantics); REGISTER_TYPED_TEST_SUITE_P(CookieStoreChangeNamedTest, NoCookie, @@ -2739,7 +2907,8 @@ DifferentSubscriptionsPaths, DifferentSubscriptionsFiltering, MultipleSubscriptions, - SubscriptionOutlivesStore); + SubscriptionOutlivesStore, + ChangeIncludesCookieAccessSemantics); } // namespace net
diff --git a/net/cookies/cookie_store_unittest.h b/net/cookies/cookie_store_unittest.h index d91026b..891fa67 100644 --- a/net/cookies/cookie_store_unittest.h +++ b/net/cookies/cookie_store_unittest.h
@@ -106,6 +106,7 @@ // // The cookie store supports setting a CookieAccessDelegate and using it to // // get the access semantics for each cookie via // // CookieStore::GetAllCookiesWithAccessSemanticsAsync(). +// // If this is not supported, all access semantics will show up as UNKNOWN. // static const bool supports_cookie_access_semantics; // }; @@ -612,12 +613,12 @@ // A HttpOnly cookie can be created, but is rejected // upon setting if the options do not specify include_httponly. - CanonicalCookie::CookieInclusionStatus status; - auto c = CanonicalCookie::Create(this->http_www_foo_.url(), - "bar=1; HttpOnly", base::Time::Now(), - base::nullopt /* server_time */, &status); + CanonicalCookie::CookieInclusionStatus create_status; + auto c = CanonicalCookie::Create( + this->http_www_foo_.url(), "bar=1; HttpOnly", base::Time::Now(), + base::nullopt /* server_time */, &create_status); EXPECT_TRUE(c->IsHttpOnly()); - EXPECT_TRUE(status.IsInclude()); + EXPECT_TRUE(create_status.IsInclude()); EXPECT_TRUE( this->SetCanonicalCookieReturnStatus(cs, std::move(c), "http", false /* can_modify_httponly */) @@ -1671,8 +1672,8 @@ CookieStore* cs = this->GetCookieStore(); auto access_delegate = std::make_unique<TestCookieAccessDelegate>(); TestCookieAccessDelegate* test_delegate = access_delegate.get(); - // if !supports_cookie_access_semantics, setting a delegate here will do - // nothing. + // if !supports_cookie_access_semantics, the delegate will be stored but will + // not be used. cs->SetCookieAccessDelegate(std::move(access_delegate)); test_delegate->SetExpectationForCookieDomain("domain1.test",
diff --git a/net/data/fuzzer_dictionaries/net_http_content_disposition_fuzzer.dict b/net/data/fuzzer_dictionaries/net_http_content_disposition_fuzzer.dict index d339b7c..34aed071 100644 --- a/net/data/fuzzer_dictionaries/net_http_content_disposition_fuzzer.dict +++ b/net/data/fuzzer_dictionaries/net_http_content_disposition_fuzzer.dict
@@ -13,7 +13,10 @@ " " "," "''" -"\n" + +# A newline. +"\x0a" + "?" "%" "en"
diff --git a/net/disk_cache/disk_cache_fuzzer.cc b/net/disk_cache/disk_cache_fuzzer.cc index cc531029c..5dd2564 100644 --- a/net/disk_cache/disk_cache_fuzzer.cc +++ b/net/disk_cache/disk_cache_fuzzer.cc
@@ -19,6 +19,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_refptr.h" +#include "base/strings/string_number_conversions.h" #include "base/test/task_environment.h" #include "base/time/time.h" #include "net/base/cache_type.h" @@ -59,6 +60,12 @@ const uint32_t kMaxNumMillisToWait = 2019; const int kMaxFdsSimpleCache = 10; +// Known colliding key values taken from SimpleCacheCreateCollision unittest. +const std::string kCollidingKey1 = + "\xfb\x4e\x9c\x1d\x66\x71\xf7\x54\xa3\x11\xa0\x7e\x16\xa5\x68\xf6"; +const std::string kCollidingKey2 = + "\xbc\x60\x64\x92\xbc\xa0\x5c\x15\x17\x93\x29\x2d\xe4\x21\xbd\x03"; + #define IOTYPES_APPLY(F) \ F(WriteData) \ F(ReadData) \ @@ -228,7 +235,15 @@ } std::string ToKey(uint64_t key_num) { - return "Key" + std::to_string(key_num); + // Use one of the two colliding key values in 1% of executions. + if (key_num % 100 == 99) + return kCollidingKey1; + if (key_num % 100 == 98) + return kCollidingKey2; + + // Otherwise, use a value based on the key id and fuzzy padding. + std::string padding(key_num & 0xFFFF, 'A'); + return "Key" + padding + base::NumberToString(key_num); } net::RequestPriority GetRequestPriority( @@ -420,6 +435,11 @@ void DiskCacheLPMFuzzer::RunCommands( const disk_cache_fuzzer::FuzzCommands& commands) { + // Skip too long command sequences, they are counterproductive for fuzzing. + // The number was chosen empirically using the existing fuzzing corpus. + if (commands.fuzz_commands_size() > 129) + return; + uint32_t mask = commands.has_set_mask() ? (commands.set_mask() ? 0x1 : 0xf) : 0; net::CacheType type =
diff --git a/net/dns/BUILD.gn b/net/dns/BUILD.gn index bbf7cf2..9c4b840 100644 --- a/net/dns/BUILD.gn +++ b/net/dns/BUILD.gn
@@ -56,6 +56,7 @@ "dns_socket_pool.cc", "dns_socket_pool.h", "dns_transaction.cc", + "esni_content.cc", "host_cache.cc", "host_resolver.cc", "host_resolver_manager.cc", @@ -192,6 +193,7 @@ sources += [ "dns_config.h", "dns_config_overrides.h", + "esni_content.h", "host_cache.h", "host_resolver.h", "mapped_host_resolver.h", @@ -382,6 +384,7 @@ "dns_socket_pool_unittest.cc", "dns_transaction_unittest.cc", "dns_util_unittest.cc", + "esni_content_unittest.cc", "host_cache_unittest.cc", "host_resolver_manager_unittest.cc", "mapped_host_resolver_unittest.cc",
diff --git a/net/dns/esni_content.cc b/net/dns/esni_content.cc new file mode 100644 index 0000000..014d4929 --- /dev/null +++ b/net/dns/esni_content.cc
@@ -0,0 +1,63 @@ +// 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 "net/dns/esni_content.h" + +namespace net { + +EsniContent::EsniContent() = default; +EsniContent::EsniContent(const EsniContent& other) { + MergeFrom(other); +} +EsniContent::EsniContent(EsniContent&& other) = default; +EsniContent& EsniContent::operator=(const EsniContent& other) { + MergeFrom(other); + return *this; +} +EsniContent& EsniContent::operator=(EsniContent&& other) = default; +EsniContent::~EsniContent() = default; + +bool operator==(const EsniContent& c1, const EsniContent& c2) { + return c1.keys() == c2.keys() && + c1.keys_for_addresses() == c2.keys_for_addresses(); +} + +const std::set<std::string, EsniContent::StringPieceComparator>& +EsniContent::keys() const { + return keys_; +} + +const std::map<IPAddress, std::set<base::StringPiece>>& +EsniContent::keys_for_addresses() const { + return keys_for_addresses_; +} + +void EsniContent::AddKey(base::StringPiece key) { + if (keys_.find(key) == keys_.end()) + keys_.insert(std::string(key)); +} + +void EsniContent::AddKeyForAddress(const IPAddress& address, + base::StringPiece key) { + auto key_it = keys_.find(key); + if (key_it == keys_.end()) { + bool key_was_added; + std::tie(key_it, key_was_added) = keys_.insert(std::string(key)); + DCHECK(key_was_added); + } + keys_for_addresses_[address].insert(base::StringPiece(*key_it)); +} + +void EsniContent::MergeFrom(const EsniContent& other) { + for (const auto& kv : other.keys_for_addresses()) { + const IPAddress& address = kv.first; + const auto& keys_for_address = kv.second; + for (base::StringPiece key : keys_for_address) + AddKeyForAddress(address, key); + } + for (const std::string& key : other.keys()) + AddKey(key); +} + +} // namespace net
diff --git a/net/dns/esni_content.h b/net/dns/esni_content.h new file mode 100644 index 0000000..500c0d6 --- /dev/null +++ b/net/dns/esni_content.h
@@ -0,0 +1,84 @@ +// 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 NET_DNS_ESNI_CONTENT_H_ +#define NET_DNS_ESNI_CONTENT_H_ + +#include <map> +#include <set> +#include <string> + +#include "base/strings/string_piece.h" +#include "net/base/ip_address.h" +#include "net/base/net_export.h" + +namespace net { + +// An EsniContent struct represents an aggregation of the +// content of several ESNI (TLS 1.3 Encrypted Server Name Indication, +// draft 4) resource records. +// +// This aggregation contains: +// (1) The ESNI key objects from each of the ESNI records, and +// (2) A collection of IP addresses, each of which is associated +// with one or more of the key objects. (Each key will likely also +// be associated with several destination addresses.) +class NET_EXPORT_PRIVATE EsniContent { + public: + EsniContent(); + EsniContent(const EsniContent& other); + EsniContent(EsniContent&& other); + EsniContent& operator=(const EsniContent& other); + EsniContent& operator=(EsniContent&& other); + ~EsniContent(); + + // Key objects (which might be up to ~50K in length) are stored + // in a collection of std::string; use transparent comparison + // to allow checking whether a given base::StringPiece is in + // the collection without making copies. + struct StringPieceComparator { + using is_transparent = int; + + bool operator()(const base::StringPiece lhs, + const base::StringPiece rhs) const { + return lhs < rhs; + } + }; + + const std::set<std::string, StringPieceComparator>& keys() const; + const std::map<IPAddress, std::set<base::StringPiece>>& keys_for_addresses() + const; + + // Adds |key| (if it is not already stored) without associating it + // with any particular addresss; if this addition is performed, it + // copies the underlying string. + void AddKey(base::StringPiece key); + + // Associates a key with an address, copying the underlying string to + // the internal collection of keys if it is not already stored. + void AddKeyForAddress(const IPAddress& address, base::StringPiece key); + + // Merges the contents of |other|: + // 1. unions the collection of stored keys with |other.keys()| and + // 2. unions the stored address-key associations with + // |other.keys_for_addresses()|. + void MergeFrom(const EsniContent& other); + + private: + // In order to keep the StringPieces in |keys_for_addresses_| valid, + // |keys_| must be of a collection type guaranteeing stable pointers. + std::set<std::string, StringPieceComparator> keys_; + + std::map<IPAddress, std::set<base::StringPiece>> keys_for_addresses_; +}; + +// Two EsniContent structs are equal if they have the same set of keys, the +// same set of IP addresses, and the same subset of the keys corresponding to +// each IP address. +NET_EXPORT_PRIVATE +bool operator==(const EsniContent& c1, const EsniContent& c2); + +} // namespace net + +#endif // NET_DNS_ESNI_CONTENT_H_
diff --git a/net/dns/esni_content_unittest.cc b/net/dns/esni_content_unittest.cc new file mode 100644 index 0000000..50bc5d81 --- /dev/null +++ b/net/dns/esni_content_unittest.cc
@@ -0,0 +1,170 @@ +// 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 "net/dns/esni_content.h" + +#include "base/strings/string_number_conversions.h" + +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace net { + +namespace { + +IPAddress MakeIPAddress() { + // Introduce some (deterministic) variation in the IP addresses + // generated. + static uint8_t next_octet = 0; + next_octet += 4; + + return IPAddress(next_octet, next_octet + 1, next_octet + 2, next_octet + 3); +} + +// Make sure we can add keys. +TEST(EsniContentTest, AddKey) { + EsniContent c1; + c1.AddKey("a"); + EXPECT_THAT(c1.keys(), ::testing::UnorderedElementsAre("a")); + c1.AddKey("a"); + EXPECT_THAT(c1.keys(), ::testing::UnorderedElementsAre("a")); + c1.AddKey("b"); + EXPECT_THAT(c1.keys(), ::testing::UnorderedElementsAre("a", "b")); +} + +// Make sure we can add key-address pairs. +TEST(EsniContentTest, AddKeyForAddress) { + EsniContent c1; + auto address = MakeIPAddress(); + c1.AddKeyForAddress(address, "a"); + EXPECT_THAT(c1.keys(), ::testing::UnorderedElementsAre("a")); + EXPECT_THAT(c1.keys_for_addresses(), + ::testing::UnorderedElementsAre(::testing::Pair( + address, ::testing::UnorderedElementsAre("a")))); +} + +TEST(EsniContentTest, AssociateAddressWithExistingKey) { + EsniContent c1; + auto address = MakeIPAddress(); + c1.AddKey("a"); + c1.AddKeyForAddress(address, "a"); + EXPECT_THAT(c1.keys(), ::testing::UnorderedElementsAre("a")); + EXPECT_THAT(c1.keys_for_addresses(), + ::testing::UnorderedElementsAre(::testing::Pair( + address, ::testing::UnorderedElementsAre("a")))); +} + +// Merging to an empty EsniContent should make the result equal the source of +// the merge. +TEST(EsniContentTest, MergeToEmpty) { + EsniContent c1; + c1.AddKey("c"); + IPAddress address = MakeIPAddress(); + + c1.AddKeyForAddress(address, "a"); + c1.AddKeyForAddress(address, "b"); + EsniContent empty; + empty.MergeFrom(c1); + EXPECT_EQ(c1, empty); +} + +TEST(EsniContentTest, MergeFromEmptyNoOp) { + EsniContent c1, c2; + c1.AddKey("a"); + c2.AddKey("a"); + EsniContent empty; + c1.MergeFrom(empty); + EXPECT_EQ(c1, c2); +} + +// Test that merging multiple keys corresponding to a single address works. +TEST(EsniContentTest, MergeKeysForSingleHost) { + EsniContent c1, c2; + IPAddress address = MakeIPAddress(); + + c1.AddKeyForAddress(address, "a"); + c1.AddKeyForAddress(address, "b"); + c2.AddKeyForAddress(address, "b"); + c2.AddKeyForAddress(address, "c"); + c1.MergeFrom(c2); + + EXPECT_THAT(c1.keys(), ::testing::UnorderedElementsAre("a", "b", "c")); + EXPECT_THAT(c1.keys_for_addresses(), + ::testing::UnorderedElementsAre(::testing::Pair( + address, ::testing::UnorderedElementsAre("a", "b", "c")))); +} + +// Test that merging multiple addresss corresponding to a single key works. +TEST(EsniContentTest, MergeHostsForSingleKey) { + EsniContent c1, c2; + IPAddress address = MakeIPAddress(); + IPAddress second_address = MakeIPAddress(); + c1.AddKeyForAddress(address, "a"); + c2.AddKeyForAddress(second_address, "a"); + c1.MergeFrom(c2); + + EXPECT_THAT(c1.keys(), ::testing::UnorderedElementsAre("a")); + EXPECT_THAT( + c1.keys_for_addresses(), + ::testing::UnorderedElementsAre( + ::testing::Pair(address, ::testing::UnorderedElementsAre("a")), + ::testing::Pair(second_address, + ::testing::UnorderedElementsAre("a")))); +} + +// Test merging some more complex instances of the class. +TEST(EsniContentTest, MergeSeveralHostsAndKeys) { + EsniContent c1, c2, expected; + for (int i = 0; i < 50; ++i) { + IPAddress address = MakeIPAddress(); + std::string key = base::NumberToString(i); + switch (i % 3) { + case 0: + c1.AddKey(key); + expected.AddKey(key); + break; + case 1: + c2.AddKey(key); + expected.AddKey(key); + break; + } + // Associate each address with a subset of the keys seen so far + { + int j = 0; + for (auto key : c1.keys()) { + if (j % 2) { + c1.AddKeyForAddress(address, key); + expected.AddKeyForAddress(address, key); + } + ++j; + } + } + { + int j = 0; + for (auto key : c2.keys()) { + if (j % 3 == 1) { + c2.AddKeyForAddress(address, key); + expected.AddKeyForAddress(address, key); + } + ++j; + } + } + } + { + EsniContent merge_dest = c1; + EsniContent merge_src = c2; + merge_dest.MergeFrom(merge_src); + EXPECT_EQ(merge_dest, expected); + } + { + EsniContent merge_dest = c2; + EsniContent merge_src = c1; + merge_dest.MergeFrom(merge_src); + EXPECT_EQ(merge_dest, expected); + } +} + +} // namespace + +} // namespace net
diff --git a/net/http/http_server_properties_manager_unittest.cc b/net/http/http_server_properties_manager_unittest.cc index d08043ad..c6b45bd 100644 --- a/net/http/http_server_properties_manager_unittest.cc +++ b/net/http/http_server_properties_manager_unittest.cc
@@ -1484,7 +1484,7 @@ quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_46), quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, - quic::QUIC_VERSION_39)}; + quic::QUIC_VERSION_43)}; alternative_service_info_vector.push_back( AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( quic_alternative_service1, expiration1, advertised_versions)); @@ -1536,7 +1536,7 @@ "\"server_info\":\"quic_server_info1\"}]," "\"servers\":[" "{\"alternative_service\":[{" - "\"advertised_versions\":[39,46],\"expiration\":\"13756212000000000\"," + "\"advertised_versions\":[43,46],\"expiration\":\"13756212000000000\"," "\"port\":443,\"protocol_str\":\"quic\"},{\"advertised_versions\":[]," "\"expiration\":\"13758804000000000\",\"host\":\"www.google.com\"," "\"port\":1234,\"protocol_str\":\"h2\"}]," @@ -1567,7 +1567,7 @@ "{\"port\":443,\"protocol_str\":\"quic\"}," "{\"port\":123,\"protocol_str\":\"quic\"," "\"expiration\":\"9223372036854775807\"," - "\"advertised_versions\":[46,39]}]}"); + "\"advertised_versions\":[46,43]}]}"); ASSERT_TRUE(server_value); base::DictionaryValue* server_dict; ASSERT_TRUE(server_value->GetAsDictionary(&server_dict)); @@ -1605,7 +1605,7 @@ alternative_service_info_vector[1].advertised_versions(); EXPECT_EQ(2u, loaded_advertised_versions.size()); EXPECT_EQ(quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, - quic::QUIC_VERSION_39), + quic::QUIC_VERSION_43), loaded_advertised_versions[0]); EXPECT_EQ(quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_46), @@ -1681,7 +1681,7 @@ quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_46), quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, - quic::QUIC_VERSION_39)}; + quic::QUIC_VERSION_43)}; alternative_service_info_vector_2.push_back( AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( quic_alternative_service1, expiration1, advertised_versions)); @@ -1701,7 +1701,7 @@ "\"server_id\":\"https://mail.google.com:80\"," "\"server_info\":\"quic_server_info1\"}]," "\"servers\":[" - "{\"alternative_service\":[{\"advertised_versions\":[39,46]," + "{\"alternative_service\":[{\"advertised_versions\":[43,46]," "\"expiration\":\"13756212000000000\",\"port\":443," "\"protocol_str\":\"quic\"}]," "\"isolation\":[]," @@ -1717,7 +1717,7 @@ // A same set of QUIC versions but listed in a different order. quic::ParsedQuicVersionVector advertised_versions_2 = { quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, - quic::QUIC_VERSION_39), + quic::QUIC_VERSION_43), quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_46)}; alternative_service_info_vector_3.push_back(
diff --git a/net/http/http_stream_factory_unittest.cc b/net/http/http_stream_factory_unittest.cc index 870d6954..dc2f9e4 100644 --- a/net/http/http_stream_factory_unittest.cc +++ b/net/http/http_stream_factory_unittest.cc
@@ -3463,7 +3463,6 @@ {quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_48}, {quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_47}, {quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_43}, - {quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_39}, }; AlternativeServiceInfoVector alternatives = http_server_properties_.GetAlternativeServiceInfos(origin,
diff --git a/net/quic/crypto/proof_verifier_chromium_test.cc b/net/quic/crypto/proof_verifier_chromium_test.cc index 723bd184..ca6125f 100644 --- a/net/quic/crypto/proof_verifier_chromium_test.cc +++ b/net/quic/crypto/proof_verifier_chromium_test.cc
@@ -149,7 +149,7 @@ base::FilePath()); std::string signature; source.GetProof(quic::QuicSocketAddress(), kTestHostname, kTestConfig, - quic::QUIC_VERSION_39, kTestChloHash, + quic::QUIC_VERSION_43, kTestChloHash, std::make_unique<SignatureSaver>(&signature)); return signature; } @@ -207,7 +207,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -230,7 +230,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -250,7 +250,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, ct::GetSCTListForTesting(), kTestEmptySCT, verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -270,7 +270,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, ct::GetSCTListWithInvalidSCT(), kTestEmptySCT, verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -288,7 +288,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, kTestConfig, verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -313,7 +313,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -344,7 +344,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -381,7 +381,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -422,7 +422,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -460,7 +460,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -488,7 +488,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -515,7 +515,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -548,7 +548,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -588,7 +588,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -634,7 +634,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -679,7 +679,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -698,7 +698,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -730,7 +730,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -770,7 +770,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kCTAndPKPHost, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -808,7 +808,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -829,7 +829,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status); @@ -866,7 +866,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); @@ -901,7 +901,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); @@ -925,7 +925,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_FAILURE, status); @@ -947,7 +947,7 @@ std::unique_ptr<DummyProofVerifierCallback> callback( new DummyProofVerifierCallback); quic::QuicAsyncStatus status = proof_verifier.VerifyProof( - kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_39, + kTestHostname, kTestPort, kTestConfig, quic::QUIC_VERSION_43, kTestChloHash, certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(), &error_details_, &details_, std::move(callback)); ASSERT_EQ(quic::QUIC_SUCCESS, status);
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h index e1e79932..a203f93 100644 --- a/net/quic/quic_flags_list.h +++ b/net/quic/quic_flags_list.h
@@ -393,3 +393,9 @@ // If true, enable QUIC MTU discovery version 2. QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_mtu_discovery_v2, false) + +// If true, QUIC connection close packet will be sent at all available +// encryption levels. +QUIC_FLAG(bool, + FLAGS_quic_reloadable_flag_quic_close_all_encryptions_levels, + false)
diff --git a/net/quic/quic_http_stream.cc b/net/quic/quic_http_stream.cc index af8df9d0..5e8732c 100644 --- a/net/quic/quic_http_stream.cc +++ b/net/quic/quic_http_stream.cc
@@ -89,8 +89,6 @@ switch (quic_version) { case quic::QUIC_VERSION_UNSUPPORTED: return HttpResponseInfo::CONNECTION_INFO_QUIC_UNKNOWN_VERSION; - case quic::QUIC_VERSION_39: - return HttpResponseInfo::CONNECTION_INFO_QUIC_39; case quic::QUIC_VERSION_43: return HttpResponseInfo::CONNECTION_INFO_QUIC_43; case quic::QUIC_VERSION_46:
diff --git a/net/quic/quic_http_utils_test.cc b/net/quic/quic_http_utils_test.cc index a901cb5..cdb73a8 100644 --- a/net/quic/quic_http_utils_test.cc +++ b/net/quic/quic_http_utils_test.cc
@@ -41,19 +41,24 @@ } TEST(QuicHttpUtilsTest, FilterSupportedAltSvcVersions) { + // Supported versions are versions A and C, the alt service + // versions are versions B and C. FilterSupportedAltSvcVersions + // finds the intersection of the two sets ... version C. Note that + // as QUIC versions are defined/undefined, the exact version numbers + // used may need to change. quic::ParsedQuicVersionVector supported_versions = { - ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_46), - ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_39), + ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_47), + ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_43), }; - std::vector<uint32_t> alt_svc_versions_google = {quic::QUIC_VERSION_46, - quic::QUIC_VERSION_43}; + std::vector<uint32_t> alt_svc_versions_google = {quic::QUIC_VERSION_47, + quic::QUIC_VERSION_46}; std::vector<uint32_t> alt_svc_versions_ietf = { - QuicVersionToQuicVersionLabel(quic::QUIC_VERSION_46), - QuicVersionToQuicVersionLabel(quic::QUIC_VERSION_43)}; + QuicVersionToQuicVersionLabel(quic::QUIC_VERSION_47), + QuicVersionToQuicVersionLabel(quic::QUIC_VERSION_46)}; quic::ParsedQuicVersionVector supported_alt_svc_versions = { - ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_46)}; + ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_47)}; spdy::SpdyAltSvcWireFormat::AlternativeService altsvc; altsvc.protocol_id = "quic";
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc index ffda8beb..46c9a2e5 100644 --- a/net/quic/quic_network_transaction_unittest.cc +++ b/net/quic/quic_network_transaction_unittest.cc
@@ -2580,11 +2580,6 @@ client_maker_.MakeDummyCHLOPacket(packet_num++)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); - // TODO(zhongyi): remove condition check once b/115926584 is fixed. - if (version_.transport_version <= quic::QUIC_VERSION_39) { - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDummyCHLOPacket(packet_num++)); - } // After timeout, connection will be closed with QUIC_NETWORK_IDLE_TIMEOUT. quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( @@ -2689,11 +2684,6 @@ client_maker_.MakeDummyCHLOPacket(packet_num++)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); - // TODO(zhongyi): remove condition check once b/115926584 is fixed. - if (version_.transport_version <= quic::QUIC_VERSION_39) { - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDummyCHLOPacket(packet_num++)); - } // After timeout, connection will be closed with QUIC_NETWORK_IDLE_TIMEOUT. quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( @@ -2827,11 +2817,6 @@ client_maker_.MakeDummyCHLOPacket(packet_num++)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); - // TODO(zhongyi): remove condition check once b/115926584 is fixed. - if (version_.transport_version <= quic::QUIC_VERSION_39) { - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDummyCHLOPacket(packet_num++)); - } // After timeout, connection will be closed with QUIC_NETWORK_IDLE_TIMEOUT. quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( @@ -2955,12 +2940,6 @@ client_maker_.MakeDummyCHLOPacket(packet_num++)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); - // TODO(zhongyi): remove condition check once b/115926584 is fixed, i.e., - // quic_fix_has_pending_crypto_data is introduced and enabled. - if (version_.transport_version <= quic::QUIC_VERSION_39) { - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDummyCHLOPacket(packet_num++)); - } // After timeout, connection will be closed with QUIC_NETWORK_IDLE_TIMEOUT. quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket(
diff --git a/services/network/BUILD.gn b/services/network/BUILD.gn index 7ea25b5e..e03c70fb2 100644 --- a/services/network/BUILD.gn +++ b/services/network/BUILD.gn
@@ -18,8 +18,6 @@ "cookie_access_delegate_impl.h", "cookie_manager.cc", "cookie_manager.h", - "cookie_managers_shared.cc", - "cookie_managers_shared.h", "cookie_settings.cc", "cookie_settings.h", "cors/cors_url_loader.cc",
diff --git a/services/network/cookie_manager.cc b/services/network/cookie_manager.cc index 5a08722..79f5342 100644 --- a/services/network/cookie_manager.cc +++ b/services/network/cookie_manager.cc
@@ -18,7 +18,6 @@ #include "net/cookies/cookie_options.h" #include "net/cookies/cookie_store.h" #include "net/cookies/cookie_util.h" -#include "services/network/cookie_managers_shared.h" #include "services/network/session_cleanup_cookie_store.h" #include "url/gurl.h" @@ -38,9 +37,8 @@ CookieManager::ListenerRegistration::~ListenerRegistration() {} void CookieManager::ListenerRegistration::DispatchCookieStoreChange( - const net::CanonicalCookie& cookie, - net::CookieChangeCause cause) { - listener->OnCookieChange(cookie, ToCookieChangeCause(cause)); + const net::CookieChangeInfo& change) { + listener->OnCookieChange(change); } CookieManager::CookieManager(
diff --git a/services/network/cookie_manager.h b/services/network/cookie_manager.h index 9a76752..c77f7ce 100644 --- a/services/network/cookie_manager.h +++ b/services/network/cookie_manager.h
@@ -109,8 +109,7 @@ ~ListenerRegistration(); // Translates a CookieStore change callback to a CookieChangeListener call. - void DispatchCookieStoreChange(const net::CanonicalCookie& cookie, - net::CookieChangeCause cause); + void DispatchCookieStoreChange(const net::CookieChangeInfo& change); // Owns the callback registration in the store. std::unique_ptr<net::CookieChangeSubscription> subscription;
diff --git a/services/network/cookie_manager_unittest.cc b/services/network/cookie_manager_unittest.cc index 39dfb0e..0bbba99 100644 --- a/services/network/cookie_manager_unittest.cc +++ b/services/network/cookie_manager_unittest.cc
@@ -1781,15 +1781,6 @@ // Receives and records notifications from the mojom::CookieManager. class CookieChangeListener : public mojom::CookieChangeListener { public: - // Records a cookie change received from CookieManager. - struct Change { - Change(const net::CanonicalCookie& cookie, mojom::CookieChangeCause cause) - : cookie(cookie), cause(cause) {} - - net::CanonicalCookie cookie; - mojom::CookieChangeCause cause; - }; - CookieChangeListener( mojo::PendingReceiver<mojom::CookieChangeListener> receiver) : run_loop_(nullptr), receiver_(this, std::move(receiver)) {} @@ -1806,20 +1797,19 @@ void ClearObservedChanges() { observed_changes_.clear(); } - const std::vector<Change>& observed_changes() const { + const std::vector<net::CookieChangeInfo>& observed_changes() const { return observed_changes_; } // mojom::CookieChangeListener - void OnCookieChange(const net::CanonicalCookie& cookie, - mojom::CookieChangeCause cause) override { - observed_changes_.push_back(Change(cookie, cause)); + void OnCookieChange(const net::CookieChangeInfo& change) override { + observed_changes_.push_back(change); if (run_loop_) run_loop_->Quit(); } private: - std::vector<Change> observed_changes_; + std::vector<net::CookieChangeInfo> observed_changes_; // Loop to signal on receiving a notification if not null. base::RunLoop* run_loop_; @@ -1882,12 +1872,12 @@ // Expect to observe a cookie change. listener.WaitForChange(); - std::vector<CookieChangeListener::Change> observed_changes = + std::vector<net::CookieChangeInfo> observed_changes = listener.observed_changes(); ASSERT_EQ(1u, observed_changes.size()); EXPECT_EQ(listener_cookie_name, observed_changes[0].cookie.Name()); EXPECT_EQ(listener_url_host, observed_changes[0].cookie.Domain()); - EXPECT_EQ(mojom::CookieChangeCause::INSERTED, observed_changes[0].cause); + EXPECT_EQ(net::CookieChangeCause::INSERTED, observed_changes[0].cause); listener.ClearObservedChanges(); // Delete all cookies matching the domain. This includes one for which @@ -1906,7 +1896,7 @@ ASSERT_EQ(1u, observed_changes.size()); EXPECT_EQ(listener_cookie_name, observed_changes[0].cookie.Name()); EXPECT_EQ(listener_url_host, observed_changes[0].cookie.Domain()); - EXPECT_EQ(mojom::CookieChangeCause::EXPLICIT, observed_changes[0].cause); + EXPECT_EQ(net::CookieChangeCause::EXPLICIT, observed_changes[0].cause); } TEST_F(CookieManagerTest, AddGlobalChangeListener) { @@ -1936,14 +1926,14 @@ EXPECT_EQ(0u, listener.observed_changes().size()); base::RunLoop().RunUntilIdle(); - std::vector<CookieChangeListener::Change> observed_changes = + std::vector<net::CookieChangeInfo> observed_changes = listener.observed_changes(); ASSERT_EQ(1u, observed_changes.size()); EXPECT_EQ("Thing1", observed_changes[0].cookie.Name()); EXPECT_EQ("val", observed_changes[0].cookie.Value()); EXPECT_EQ(kExampleHost, observed_changes[0].cookie.Domain()); EXPECT_EQ("/", observed_changes[0].cookie.Path()); - EXPECT_EQ(mojom::CookieChangeCause::INSERTED, observed_changes[0].cause); + EXPECT_EQ(net::CookieChangeCause::INSERTED, observed_changes[0].cause); listener.ClearObservedChanges(); // Set two cookies in a row on different domains and confirm they are both @@ -1967,9 +1957,9 @@ observed_changes = listener.observed_changes(); ASSERT_EQ(2u, observed_changes.size()); EXPECT_EQ("Thing1", observed_changes[0].cookie.Name()); - EXPECT_EQ(mojom::CookieChangeCause::INSERTED, observed_changes[0].cause); + EXPECT_EQ(net::CookieChangeCause::INSERTED, observed_changes[0].cause); EXPECT_EQ("Thing2", observed_changes[1].cookie.Name()); - EXPECT_EQ(mojom::CookieChangeCause::INSERTED, observed_changes[1].cause); + EXPECT_EQ(net::CookieChangeCause::INSERTED, observed_changes[1].cause); listener.ClearObservedChanges(); // Delete cookies matching one domain; should produce one notification. @@ -1986,7 +1976,7 @@ ASSERT_EQ(1u, observed_changes.size()); EXPECT_EQ("Thing1", observed_changes[0].cookie.Name()); EXPECT_EQ(kThisHost, observed_changes[0].cookie.Domain()); - EXPECT_EQ(mojom::CookieChangeCause::EXPLICIT, observed_changes[0].cause); + EXPECT_EQ(net::CookieChangeCause::EXPLICIT, observed_changes[0].cause); } // Confirm the service operates properly if a returned notification interface
diff --git a/services/network/cookie_managers_shared.cc b/services/network/cookie_managers_shared.cc deleted file mode 100644 index a7651e0..0000000 --- a/services/network/cookie_managers_shared.cc +++ /dev/null
@@ -1,35 +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 "services/network/cookie_managers_shared.h" - -#include <utility> - -#include "base/bind.h" -#include "net/cookies/cookie_change_dispatcher.h" - -namespace network { - -mojom::CookieChangeCause ToCookieChangeCause(net::CookieChangeCause net_cause) { - switch (net_cause) { - case net::CookieChangeCause::INSERTED: - return mojom::CookieChangeCause::INSERTED; - case net::CookieChangeCause::EXPLICIT: - return mojom::CookieChangeCause::EXPLICIT; - case net::CookieChangeCause::UNKNOWN_DELETION: - return mojom::CookieChangeCause::UNKNOWN_DELETION; - case net::CookieChangeCause::OVERWRITE: - return mojom::CookieChangeCause::OVERWRITE; - case net::CookieChangeCause::EXPIRED: - return mojom::CookieChangeCause::EXPIRED; - case net::CookieChangeCause::EVICTED: - return mojom::CookieChangeCause::EVICTED; - case net::CookieChangeCause::EXPIRED_OVERWRITE: - return mojom::CookieChangeCause::EXPIRED_OVERWRITE; - } - NOTREACHED(); - return mojom::CookieChangeCause::EXPLICIT; -} - -} // namespace network
diff --git a/services/network/cookie_managers_shared.h b/services/network/cookie_managers_shared.h deleted file mode 100644 index d38ae8f..0000000 --- a/services/network/cookie_managers_shared.h +++ /dev/null
@@ -1,21 +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 SERVICES_NETWORK_COOKIE_MANAGERS_SHARED_H_ -#define SERVICES_NETWORK_COOKIE_MANAGERS_SHARED_H_ - -#include "net/cookies/cookie_store.h" -#include "services/network/public/mojom/cookie_manager.mojom.h" - -namespace net { -enum class CookieChangeCause; -} - -namespace network { - -mojom::CookieChangeCause ToCookieChangeCause(net::CookieChangeCause net_cause); - -} // namespace network - -#endif // SERVICES_NETWORK_COOKIE_MANAGERS_SHARED_H_
diff --git a/services/network/public/cpp/cookie_manager.typemap b/services/network/public/cpp/cookie_manager.typemap index a365737..0d196187 100644 --- a/services/network/public/cpp/cookie_manager.typemap +++ b/services/network/public/cpp/cookie_manager.typemap
@@ -3,6 +3,7 @@ "//ipc/ipc_message_utils.h", "//net/cookies/cookie_options.h", "//net/cookies/canonical_cookie.h", + "//net/cookies/cookie_change_dispatcher.h", "//net/cookies/cookie_constants.h", ] traits_headers = @@ -24,4 +25,6 @@ "network.mojom.CookieInclusionStatus=::net::CanonicalCookie::CookieInclusionStatus[move_only]", "network.mojom.CookieWithStatus=::net::CookieWithStatus", "network.mojom.CookieAndLineWithStatus=::net::CookieAndLineWithStatus", + "network.mojom.CookieChangeCause=::net::CookieChangeCause", + "network.mojom.CookieChangeInfo=::net::CookieChangeInfo", ]
diff --git a/services/network/public/cpp/cookie_manager_mojom_traits.cc b/services/network/public/cpp/cookie_manager_mojom_traits.cc index 63619b8..7d29590 100644 --- a/services/network/public/cpp/cookie_manager_mojom_traits.cc +++ b/services/network/public/cpp/cookie_manager_mojom_traits.cc
@@ -273,6 +273,62 @@ return false; } +network::mojom::CookieChangeCause +EnumTraits<network::mojom::CookieChangeCause, net::CookieChangeCause>::ToMojom( + net::CookieChangeCause input) { + switch (input) { + case net::CookieChangeCause::INSERTED: + return network::mojom::CookieChangeCause::INSERTED; + case net::CookieChangeCause::EXPLICIT: + return network::mojom::CookieChangeCause::EXPLICIT; + case net::CookieChangeCause::UNKNOWN_DELETION: + return network::mojom::CookieChangeCause::UNKNOWN_DELETION; + case net::CookieChangeCause::OVERWRITE: + return network::mojom::CookieChangeCause::OVERWRITE; + case net::CookieChangeCause::EXPIRED: + return network::mojom::CookieChangeCause::EXPIRED; + case net::CookieChangeCause::EVICTED: + return network::mojom::CookieChangeCause::EVICTED; + case net::CookieChangeCause::EXPIRED_OVERWRITE: + return network::mojom::CookieChangeCause::EXPIRED_OVERWRITE; + default: + break; + } + NOTREACHED(); + return static_cast<network::mojom::CookieChangeCause>(input); +} + +bool EnumTraits<network::mojom::CookieChangeCause, net::CookieChangeCause>:: + FromMojom(network::mojom::CookieChangeCause input, + net::CookieChangeCause* output) { + switch (input) { + case network::mojom::CookieChangeCause::INSERTED: + *output = net::CookieChangeCause::INSERTED; + return true; + case network::mojom::CookieChangeCause::EXPLICIT: + *output = net::CookieChangeCause::EXPLICIT; + return true; + case network::mojom::CookieChangeCause::UNKNOWN_DELETION: + *output = net::CookieChangeCause::UNKNOWN_DELETION; + return true; + case network::mojom::CookieChangeCause::OVERWRITE: + *output = net::CookieChangeCause::OVERWRITE; + return true; + case network::mojom::CookieChangeCause::EXPIRED: + *output = net::CookieChangeCause::EXPIRED; + return true; + case network::mojom::CookieChangeCause::EVICTED: + *output = net::CookieChangeCause::EVICTED; + return true; + case network::mojom::CookieChangeCause::EXPIRED_OVERWRITE: + *output = net::CookieChangeCause::EXPIRED_OVERWRITE; + return true; + default: + break; + } + return false; +} + bool StructTraits<network::mojom::CookieOptionsDataView, net::CookieOptions>:: Read(network::mojom::CookieOptionsDataView mojo_options, net::CookieOptions* cookie_options) { @@ -395,4 +451,23 @@ return true; } +bool StructTraits< + network::mojom::CookieChangeInfoDataView, + net::CookieChangeInfo>::Read(network::mojom::CookieChangeInfoDataView info, + net::CookieChangeInfo* out) { + net::CanonicalCookie cookie; + net::CookieAccessSemantics access_semantics = + net::CookieAccessSemantics::UNKNOWN; + net::CookieChangeCause cause = net::CookieChangeCause::EXPLICIT; + if (!info.ReadCookie(&cookie)) + return false; + if (!info.ReadAccessSemantics(&access_semantics)) + return false; + if (!info.ReadCause(&cause)) + return false; + + *out = net::CookieChangeInfo(cookie, access_semantics, cause); + return true; +} + } // namespace mojo
diff --git a/services/network/public/cpp/cookie_manager_mojom_traits.h b/services/network/public/cpp/cookie_manager_mojom_traits.h index 8730de54..67b7e2d 100644 --- a/services/network/public/cpp/cookie_manager_mojom_traits.h +++ b/services/network/public/cpp/cookie_manager_mojom_traits.h
@@ -8,6 +8,7 @@ #include "ipc/ipc_message_utils.h" #include "mojo/public/cpp/bindings/enum_traits.h" #include "net/cookies/canonical_cookie.h" +#include "net/cookies/cookie_change_dispatcher.h" #include "net/cookies/cookie_constants.h" #include "net/cookies/cookie_options.h" #include "services/network/public/mojom/cookie_manager.mojom.h" @@ -58,6 +59,15 @@ }; template <> +struct EnumTraits<network::mojom::CookieChangeCause, net::CookieChangeCause> { + static network::mojom::CookieChangeCause ToMojom( + net::CookieChangeCause input); + + static bool FromMojom(network::mojom::CookieChangeCause input, + net::CookieChangeCause* output); +}; + +template <> struct StructTraits<network::mojom::CookieOptionsDataView, net::CookieOptions> { static bool exclude_httponly(const net::CookieOptions& o) { return o.exclude_httponly(); @@ -162,6 +172,23 @@ net::CookieAndLineWithStatus* out); }; +template <> +struct StructTraits<network::mojom::CookieChangeInfoDataView, + net::CookieChangeInfo> { + static const net::CanonicalCookie& cookie(const net::CookieChangeInfo& c) { + return c.cookie; + } + static net::CookieAccessSemantics access_semantics( + const net::CookieChangeInfo& c) { + return c.access_semantics; + } + static net::CookieChangeCause cause(const net::CookieChangeInfo& c) { + return c.cause; + } + static bool Read(network::mojom::CookieChangeInfoDataView info, + net::CookieChangeInfo* out); +}; + } // namespace mojo #endif // SERVICES_NETWORK_PUBLIC_CPP_COOKIE_MANAGER_MOJOM_TRAITS_H_
diff --git a/services/network/public/cpp/cookie_manager_mojom_traits_unittest.cc b/services/network/public/cpp/cookie_manager_mojom_traits_unittest.cc index 8ebb62f..0d96e37 100644 --- a/services/network/public/cpp/cookie_manager_mojom_traits_unittest.cc +++ b/services/network/public/cpp/cookie_manager_mojom_traits_unittest.cc
@@ -89,8 +89,9 @@ TEST(CookieManagerTraitsTest, Roundtrips_CookieWithStatus) { net::CanonicalCookie original_cookie( - "A", "B", "x.y", "/path", base::Time(), base::Time(), base::Time(), false, - false, net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_LOW); + "A", "B", "x.y", "/path", base::Time(), base::Time(), base::Time(), + /* secure = */ true, /* http_only = */ false, + net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_LOW); net::CookieWithStatus original = { original_cookie, net::CanonicalCookie::CookieInclusionStatus()}; @@ -138,6 +139,20 @@ } } +TEST(CookieManagerTraitsTest, Roundtrips_CookieChangeCause) { + for (net::CookieChangeCause change_cause : + {net::CookieChangeCause::INSERTED, net::CookieChangeCause::EXPLICIT, + net::CookieChangeCause::UNKNOWN_DELETION, + net::CookieChangeCause::OVERWRITE, net::CookieChangeCause::EXPIRED, + net::CookieChangeCause::EVICTED, + net::CookieChangeCause::EXPIRED_OVERWRITE}) { + net::CookieChangeCause roundtrip; + ASSERT_TRUE(SerializeAndDeserializeEnum<mojom::CookieChangeCause>( + change_cause, &roundtrip)); + EXPECT_EQ(change_cause, roundtrip); + } +} + TEST(CookieManagerTraitsTest, Roundtrips_CookieSameSiteContext) { for (net::CookieOptions::SameSiteCookieContext context_state : {net::CookieOptions::SameSiteCookieContext::CROSS_SITE, @@ -209,6 +224,36 @@ } } +TEST(CookieManagerTraitsTest, Roundtrips_CookieChangeInfo) { + net::CanonicalCookie original_cookie( + "A", "B", "x.y", "/path", base::Time(), base::Time(), base::Time(), + /* secure = */ false, /* http_only = */ false, + net::CookieSameSite::UNSPECIFIED, net::COOKIE_PRIORITY_LOW); + + net::CookieChangeInfo original(original_cookie, + net::CookieAccessSemantics::LEGACY, + net::CookieChangeCause::EXPLICIT); + + net::CookieChangeInfo copied; + + EXPECT_TRUE(mojo::test::SerializeAndDeserialize<mojom::CookieChangeInfo>( + &original, &copied)); + + EXPECT_EQ(original.cookie.Name(), copied.cookie.Name()); + EXPECT_EQ(original.cookie.Value(), copied.cookie.Value()); + EXPECT_EQ(original.cookie.Domain(), copied.cookie.Domain()); + EXPECT_EQ(original.cookie.Path(), copied.cookie.Path()); + EXPECT_EQ(original.cookie.CreationDate(), copied.cookie.CreationDate()); + EXPECT_EQ(original.cookie.LastAccessDate(), copied.cookie.LastAccessDate()); + EXPECT_EQ(original.cookie.ExpiryDate(), copied.cookie.ExpiryDate()); + EXPECT_EQ(original.cookie.IsSecure(), copied.cookie.IsSecure()); + EXPECT_EQ(original.cookie.IsHttpOnly(), copied.cookie.IsHttpOnly()); + EXPECT_EQ(original.cookie.SameSite(), copied.cookie.SameSite()); + EXPECT_EQ(original.cookie.Priority(), copied.cookie.Priority()); + EXPECT_EQ(original.access_semantics, copied.access_semantics); + EXPECT_EQ(original.cause, copied.cause); +} + // TODO: Add tests for CookiePriority, more extensive CookieOptions ones } // namespace
diff --git a/services/network/public/mojom/cookie_manager.mojom b/services/network/public/mojom/cookie_manager.mojom index dc06eb89..775fbcc 100644 --- a/services/network/public/mojom/cookie_manager.mojom +++ b/services/network/public/mojom/cookie_manager.mojom
@@ -127,8 +127,7 @@ CookieInclusionStatus status; }; -// Keep values here in sync with net::CookieStore::ChangeCause. -// (Not typemapped to avoid forcing clients to know about net::CookieStore.) +// Keep values here in sync with net::CookieChangeCause. enum CookieChangeCause { // The cookie was inserted. INSERTED, @@ -147,6 +146,14 @@ EXPIRED_OVERWRITE }; +struct CookieChangeInfo { + // The cookie that changed, in its post-change state. + CanonicalCookie cookie; + // Access semantics of the cookie at the time of the change. + CookieAccessSemantics access_semantics; + CookieChangeCause cause; +}; + // Session cookies are cookies that expire at the end of the browser session. // That is represented in canonical cookies by a null expiry time. enum CookieDeletionSessionControl { @@ -215,7 +222,7 @@ interface CookieChangeListener { // TODO(rdsmith): Should this be made a batch interface? - OnCookieChange(CanonicalCookie cookie, CookieChangeCause cause); + OnCookieChange(CookieChangeInfo change); }; interface CookieManager {
diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc index 4179cc9..50f61701 100644 --- a/services/network/restricted_cookie_manager.cc +++ b/services/network/restricted_cookie_manager.cc
@@ -24,7 +24,6 @@ #include "net/cookies/cookie_options.h" #include "net/cookies/cookie_store.h" #include "net/cookies/cookie_util.h" -#include "services/network/cookie_managers_shared.h" #include "services/network/cookie_settings.h" #include "services/network/public/mojom/network_context.mojom.h" #include "services/network/public/mojom/network_service.mojom.h" @@ -113,21 +112,24 @@ private: // net::CookieChangeDispatcher callback. - void OnCookieChange(const net::CanonicalCookie& cookie, - net::CookieChangeCause cause) { + void OnCookieChange(const net::CookieChangeInfo& change) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (!cookie.IncludeForRequestURL(url_, options_).IsInclude()) + if (!change.cookie + .IncludeForRequestURL(url_, options_, change.access_semantics) + .IsInclude()) { return; + } // When a user blocks a site's access to cookies, the existing cookies are // not deleted. This check prevents the site from observing their cookies // being deleted at a later time, which can happen due to eviction or due to // the user explicitly deleting all cookies. if (!restricted_cookie_manager_->cookie_settings()->IsCookieAccessAllowed( - url_, site_for_cookies_, top_frame_origin_)) + url_, site_for_cookies_, top_frame_origin_)) { return; + } - mojo_listener_->OnCookieChange(cookie, ToCookieChangeCause(cause)); + mojo_listener_->OnCookieChange(change); } // The CookieChangeDispatcher subscription used by this listener.
diff --git a/services/network/restricted_cookie_manager_unittest.cc b/services/network/restricted_cookie_manager_unittest.cc index bc3e63b5..0a44f8e 100644 --- a/services/network/restricted_cookie_manager_unittest.cc +++ b/services/network/restricted_cookie_manager_unittest.cc
@@ -22,6 +22,7 @@ #include "net/cookies/cookie_monster.h" #include "net/cookies/cookie_store.h" #include "net/cookies/cookie_store_test_callbacks.h" +#include "net/cookies/test_cookie_access_delegate.h" #include "services/network/cookie_settings.h" #include "services/network/public/mojom/cookie_manager.mojom.h" #include "services/network/test/test_network_context_client.h" @@ -169,9 +170,9 @@ GetParam(), &cookie_monster_, &cookie_settings_, - url::Origin::Create(GURL("http://example.com")), - GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), + url::Origin::Create(GURL("https://example.com")), + GURL("https://example.com") /* site_for_cookies */, + url::Origin::Create(GURL("https://example.com")), &recording_client_, false /* is_service_worker*/, kProcessId, @@ -194,6 +195,7 @@ } // Set a canonical cookie directly into the store. + // Uses a cross-site SameSite cookie context. bool SetCanonicalCookie(const net::CanonicalCookie& cookie, std::string source_scheme, bool can_modify_httponly) { @@ -292,8 +294,8 @@ options->name = ""; options->match_type = mojom::CookieMatchType::STARTS_WITH; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(2)); std::sort(cookies.begin(), cookies.end(), &CompareCanonicalCookies); @@ -307,8 +309,8 @@ // Can also use the document.cookie-style API to get the same info. std::string cookies_out; EXPECT_TRUE(backend()->GetCookiesString( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), &cookies_out)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), &cookies_out)); EXPECT_EQ("cookie-name=cookie-value; cookie-name-2=cookie-value-2", cookies_out); } @@ -320,8 +322,8 @@ options->name = ""; options->match_type = mojom::CookieMatchType::EQUALS; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(0)); } @@ -334,8 +336,8 @@ options->name = "cookie-name"; options->match_type = mojom::CookieMatchType::EQUALS; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(1)); @@ -353,8 +355,8 @@ options->name = "cookie-name-2"; options->match_type = mojom::CookieMatchType::STARTS_WITH; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(2)); std::sort(cookies.begin(), cookies.end(), &CompareCanonicalCookies); @@ -375,8 +377,8 @@ options->name = "cookie-name"; options->match_type = mojom::CookieMatchType::STARTS_WITH; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); if (GetParam() == mojom::RestrictedCookieManagerRole::SCRIPT) { ASSERT_THAT(cookies, testing::SizeIs(1)); @@ -403,8 +405,8 @@ options->match_type = mojom::CookieMatchType::STARTS_WITH; ExpectBadMessage(); std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://not-example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://not-example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); EXPECT_TRUE(received_bad_message()); ASSERT_THAT(cookies, testing::SizeIs(0)); @@ -419,14 +421,14 @@ ExpectBadMessage(); std::string cookies_out; EXPECT_TRUE(backend()->GetCookiesString( - GURL("http://notexample.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), &cookies_out)); + GURL("https://notexample.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), &cookies_out)); EXPECT_TRUE(received_bad_message()); EXPECT_TRUE(cookies_out.empty()); } TEST_P(RestrictedCookieManagerTest, GetAllForUrlPolicy) { - service_->OverrideSiteForCookiesForTesting(GURL("http://notexample.com")); + service_->OverrideSiteForCookiesForTesting(GURL("https://notexample.com")); SetSessionCookie("cookie-name", "cookie-value", "example.com", "/"); // With default policy, should be able to get all cookies, even third-party. @@ -436,8 +438,8 @@ options->match_type = mojom::CookieMatchType::STARTS_WITH; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://notexample.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://notexample.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(1)); EXPECT_EQ("cookie-name", cookies[0].Name()); EXPECT_EQ("cookie-value", cookies[0].Value()); @@ -445,8 +447,8 @@ ASSERT_EQ(1u, recorded_activity().size()); EXPECT_EQ(recorded_activity()[0].get, true); - EXPECT_EQ(recorded_activity()[0].url, "http://example.com/test/"); - EXPECT_EQ(recorded_activity()[0].site_for_cookies, "http://notexample.com/"); + EXPECT_EQ(recorded_activity()[0].url, "https://example.com/test/"); + EXPECT_EQ(recorded_activity()[0].site_for_cookies, "https://notexample.com/"); EXPECT_THAT(recorded_activity()[0].cookie, net::MatchesCookieLine("cookie-name=cookie-value")); EXPECT_TRUE(recorded_activity()[0].status.IsInclude()); @@ -462,15 +464,15 @@ options->match_type = mojom::CookieMatchType::STARTS_WITH; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://notexample.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://notexample.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(0)); } ASSERT_EQ(2u, recorded_activity().size()); EXPECT_EQ(recorded_activity()[1].get, true); - EXPECT_EQ(recorded_activity()[1].url, "http://example.com/test/"); - EXPECT_EQ(recorded_activity()[1].site_for_cookies, "http://notexample.com/"); + EXPECT_EQ(recorded_activity()[1].url, "https://example.com/test/"); + EXPECT_EQ(recorded_activity()[1].site_for_cookies, "https://notexample.com/"); EXPECT_THAT(recorded_activity()[1].cookie, net::MatchesCookieLine("cookie-name=cookie-value")); EXPECT_TRUE( @@ -480,7 +482,7 @@ } TEST_P(RestrictedCookieManagerTest, GetAllForUrlPolicyWarnActual) { - service_->OverrideSiteForCookiesForTesting(GURL("http://notexample.com")); + service_->OverrideSiteForCookiesForTesting(GURL("https://notexample.com")); SetSessionCookie("cookie-name", "cookie-value", "example.com", "/"); base::test::ScopedFeatureList feature_list; feature_list.InitWithFeatures( @@ -495,16 +497,16 @@ options->match_type = mojom::CookieMatchType::STARTS_WITH; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://notexample.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://notexample.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); EXPECT_TRUE(cookies.empty()); } ASSERT_EQ(1u, recorded_activity().size()); EXPECT_EQ(recorded_activity()[0].get, true); - EXPECT_EQ(recorded_activity()[0].url, "http://example.com/test/"); - EXPECT_EQ(recorded_activity()[0].site_for_cookies, "http://notexample.com/"); + EXPECT_EQ(recorded_activity()[0].url, "https://example.com/test/"); + EXPECT_EQ(recorded_activity()[0].site_for_cookies, "https://notexample.com/"); EXPECT_THAT(recorded_activity()[0].cookie, net::MatchesCookieLine("cookie-name=cookie-value")); EXPECT_TRUE( @@ -520,15 +522,15 @@ base::Time(), base::Time(), /* secure = */ false, /* httponly = */ false, net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_DEFAULT), - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")))); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")))); auto options = mojom::CookieManagerGetOptions::New(); options->name = "new-name"; options->match_type = mojom::CookieMatchType::EQUALS; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(1)); @@ -544,15 +546,15 @@ base::Time(), base::Time(), /* secure = */ false, /* httponly = */ true, net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_DEFAULT), - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")))); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")))); auto options = mojom::CookieManagerGetOptions::New(); options->name = "new-name"; options->match_type = mojom::CookieMatchType::EQUALS; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); if (GetParam() == mojom::RestrictedCookieManagerRole::SCRIPT) { ASSERT_THAT(cookies, testing::SizeIs(0)); @@ -571,8 +573,8 @@ base::nullopt); ASSERT_EQ(".not-example.com", cookie->Domain()); EXPECT_FALSE(sync_service_->SetCanonicalCookie( - *cookie, GURL("http://example.com/test"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")))); + *cookie, GURL("https://example.com/test"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")))); ASSERT_EQ(1u, recorded_activity().size()); EXPECT_TRUE(recorded_activity()[0].status.HasExclusionReason( net::CanonicalCookie::CookieInclusionStatus::EXCLUDE_DOMAIN_MISMATCH)); @@ -581,22 +583,22 @@ options->name = "cookie"; options->match_type = mojom::CookieMatchType::EQUALS; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); EXPECT_THAT(cookies, testing::SizeIs(0)); } TEST_P(RestrictedCookieManagerTest, SetCookieFromString) { EXPECT_TRUE(backend()->SetCookieFromString( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), "new-name=new-value;path=/")); auto options = mojom::CookieManagerGetOptions::New(); options->name = "new-name"; options->match_type = mojom::CookieMatchType::EQUALS; std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(1)); @@ -612,59 +614,59 @@ base::Time(), base::Time(), /* secure = */ false, /* httponly = */ false, net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_DEFAULT), - GURL("http://not-example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")))); + GURL("https://not-example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")))); ASSERT_TRUE(received_bad_message()); } TEST_P(RestrictedCookieManagerTest, SetCookieFromStringWrongOrigin) { ExpectBadMessage(); EXPECT_TRUE(backend()->SetCookieFromString( - GURL("http://notexample.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), + GURL("https://notexample.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), "new-name=new-value;path=/")); ASSERT_TRUE(received_bad_message()); } TEST_P(RestrictedCookieManagerTest, SetCanonicalCookiePolicy) { - service_->OverrideSiteForCookiesForTesting(GURL("http://notexample.com")); + service_->OverrideSiteForCookiesForTesting(GURL("https://notexample.com")); { // With default settings object, setting a third-party cookie is OK. - auto cookie = net::CanonicalCookie::Create(GURL("http://example.com"), + auto cookie = net::CanonicalCookie::Create(GURL("https://example.com"), "A=B", base::Time::Now(), base::nullopt /* server_time */); EXPECT_TRUE(sync_service_->SetCanonicalCookie( - *cookie, GURL("http://example.com"), GURL("http://notexample.com"), - url::Origin::Create(GURL("http://example.com")))); + *cookie, GURL("https://example.com"), GURL("https://notexample.com"), + url::Origin::Create(GURL("https://example.com")))); } ASSERT_EQ(1u, recorded_activity().size()); EXPECT_EQ(recorded_activity()[0].get, false); - EXPECT_EQ(recorded_activity()[0].url, "http://example.com/"); - EXPECT_EQ(recorded_activity()[0].site_for_cookies, "http://notexample.com/"); + EXPECT_EQ(recorded_activity()[0].url, "https://example.com/"); + EXPECT_EQ(recorded_activity()[0].site_for_cookies, "https://notexample.com/"); EXPECT_THAT(recorded_activity()[0].cookie, net::MatchesCookieLine("A=B")); EXPECT_TRUE(recorded_activity()[0].status.IsInclude()); EXPECT_EQ(net::CanonicalCookie::CookieInclusionStatus::WarningReason:: WARN_SAMESITE_UNSPECIFIED_CROSS_SITE_CONTEXT, recorded_activity()[0].status.warning()); - service_->OverrideSiteForCookiesForTesting(GURL("http://otherexample.com")); + service_->OverrideSiteForCookiesForTesting(GURL("https://otherexample.com")); { // Not if third-party cookies are disabled, though. cookie_settings_.set_block_third_party_cookies(true); - auto cookie = net::CanonicalCookie::Create(GURL("http://example.com"), + auto cookie = net::CanonicalCookie::Create(GURL("https://example.com"), "A2=B2", base::Time::Now(), base::nullopt /* server_time */); EXPECT_FALSE(sync_service_->SetCanonicalCookie( - *cookie, GURL("http://example.com"), GURL("http://otherexample.com"), - url::Origin::Create(GURL("http://example.com")))); + *cookie, GURL("https://example.com"), GURL("https://otherexample.com"), + url::Origin::Create(GURL("https://example.com")))); } ASSERT_EQ(2u, recorded_activity().size()); EXPECT_EQ(recorded_activity()[1].get, false); - EXPECT_EQ(recorded_activity()[1].url, "http://example.com/"); + EXPECT_EQ(recorded_activity()[1].url, "https://example.com/"); EXPECT_EQ(recorded_activity()[1].site_for_cookies, - "http://otherexample.com/"); + "https://otherexample.com/"); EXPECT_THAT(recorded_activity()[1].cookie, net::MatchesCookieLine("A2=B2")); EXPECT_TRUE( recorded_activity()[1].status.HasExactlyExclusionReasonsForTesting( @@ -676,40 +678,40 @@ options->name = "A"; options->match_type = mojom::CookieMatchType::STARTS_WITH; - service_->OverrideSiteForCookiesForTesting(GURL("http://example.com")); + service_->OverrideSiteForCookiesForTesting(GURL("https://example.com")); std::vector<net::CanonicalCookie> cookies = sync_service_->GetAllForUrl( - GURL("http://example.com/test/"), GURL("http://example.com/"), - url::Origin::Create(GURL("http://example.com")), std::move(options)); + GURL("https://example.com/test/"), GURL("https://example.com/"), + url::Origin::Create(GURL("https://example.com")), std::move(options)); ASSERT_THAT(cookies, testing::SizeIs(1)); EXPECT_EQ("A", cookies[0].Name()); EXPECT_EQ("B", cookies[0].Value()); ASSERT_EQ(3u, recorded_activity().size()); EXPECT_EQ(recorded_activity()[2].get, true); - EXPECT_EQ(recorded_activity()[2].url, "http://example.com/test/"); - EXPECT_EQ(recorded_activity()[2].site_for_cookies, "http://example.com/"); + EXPECT_EQ(recorded_activity()[2].url, "https://example.com/test/"); + EXPECT_EQ(recorded_activity()[2].site_for_cookies, "https://example.com/"); EXPECT_THAT(recorded_activity()[2].cookie, net::MatchesCookieLine("A=B")); EXPECT_TRUE(recorded_activity()[2].status.IsInclude()); } TEST_P(RestrictedCookieManagerTest, SetCanonicalCookiePolicyWarnActual) { - service_->OverrideSiteForCookiesForTesting(GURL("http://notexample.com")); + service_->OverrideSiteForCookiesForTesting(GURL("https://notexample.com")); // Make sure the deprecation warnings are also produced when the feature // to enable the new behavior is on. base::test::ScopedFeatureList feature_list; feature_list.InitAndEnableFeature(net::features::kSameSiteByDefaultCookies); - auto cookie = net::CanonicalCookie::Create(GURL("http://example.com"), "A=B", + auto cookie = net::CanonicalCookie::Create(GURL("https://example.com"), "A=B", base::Time::Now(), base::nullopt /* server_time */); EXPECT_FALSE(sync_service_->SetCanonicalCookie( - *cookie, GURL("http://example.com"), GURL("http://notexample.com"), - url::Origin::Create(GURL("http://example.com")))); + *cookie, GURL("https://example.com"), GURL("https://notexample.com"), + url::Origin::Create(GURL("https://example.com")))); ASSERT_EQ(1u, recorded_activity().size()); EXPECT_EQ(recorded_activity()[0].get, false); - EXPECT_EQ(recorded_activity()[0].url, "http://example.com/"); - EXPECT_EQ(recorded_activity()[0].site_for_cookies, "http://notexample.com/"); + EXPECT_EQ(recorded_activity()[0].url, "https://example.com/"); + EXPECT_EQ(recorded_activity()[0].site_for_cookies, "https://notexample.com/"); EXPECT_THAT(recorded_activity()[0].cookie, net::MatchesCookieLine("A=B")); EXPECT_TRUE( recorded_activity()[0].status.HasExactlyExclusionReasonsForTesting( @@ -718,26 +720,26 @@ } TEST_P(RestrictedCookieManagerTest, CookiesEnabledFor) { - service_->OverrideSiteForCookiesForTesting(GURL("http://notexample.com")); + service_->OverrideSiteForCookiesForTesting(GURL("https://notexample.com")); // Default, third-party access is OK. bool result = false; EXPECT_TRUE(backend()->CookiesEnabledFor( - GURL("http://example.com"), GURL("http://notexample.com"), - url::Origin::Create(GURL("http://example.com")), &result)); + GURL("https://example.com"), GURL("https://notexample.com"), + url::Origin::Create(GURL("https://example.com")), &result)); EXPECT_TRUE(result); // Third-part cookies disabled. cookie_settings_.set_block_third_party_cookies(true); EXPECT_TRUE(backend()->CookiesEnabledFor( - GURL("http://example.com"), GURL("http://notexample.com"), - url::Origin::Create(GURL("http://example.com")), &result)); + GURL("https://example.com"), GURL("https://notexample.com"), + url::Origin::Create(GURL("https://example.com")), &result)); EXPECT_FALSE(result); // First-party ones still OK. - service_->OverrideSiteForCookiesForTesting(GURL("http://example.com")); + service_->OverrideSiteForCookiesForTesting(GURL("https://example.com")); EXPECT_TRUE(backend()->CookiesEnabledFor( - GURL("http://example.com"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), &result)); + GURL("https://example.com"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), &result)); EXPECT_TRUE(result); } @@ -746,16 +748,6 @@ // Stashes the cookie changes it receives, for testing. class TestCookieChangeListener : public network::mojom::CookieChangeListener { public: - // Records a cookie change received from RestrictedCookieManager. - struct Change { - Change(const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause change_cause) - : cookie(cookie), change_cause(change_cause) {} - - net::CanonicalCookie cookie; - network::mojom::CookieChangeCause change_cause; - }; - TestCookieChangeListener( mojo::PendingReceiver<network::mojom::CookieChangeListener> receiver) : receiver_(this, std::move(receiver)) {} @@ -770,21 +762,20 @@ } // Changes received by this listener. - const std::vector<Change>& observed_changes() const { + const std::vector<net::CookieChangeInfo>& observed_changes() const { return observed_changes_; } // network::mojom::CookieChangeListener - void OnCookieChange(const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause change_cause) override { - observed_changes_.emplace_back(cookie, change_cause); + void OnCookieChange(const net::CookieChangeInfo& change) override { + observed_changes_.emplace_back(change); if (run_loop_) // Set in WaitForChange(). run_loop_->Quit(); } private: - std::vector<Change> observed_changes_; + std::vector<net::CookieChangeInfo> observed_changes_; mojo::Receiver<network::mojom::CookieChangeListener> receiver_; // If not null, will be stopped when a cookie change notification is received. @@ -798,8 +789,8 @@ mojo::PendingReceiver<network::mojom::CookieChangeListener> receiver = listener_remote.InitWithNewPipeAndPassReceiver(); sync_service_->AddChangeListener( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(listener_remote)); TestCookieChangeListener listener(std::move(receiver)); @@ -809,20 +800,20 @@ listener.WaitForChange(); ASSERT_THAT(listener.observed_changes(), testing::SizeIs(1)); - EXPECT_EQ(network::mojom::CookieChangeCause::INSERTED, - listener.observed_changes()[0].change_cause); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + listener.observed_changes()[0].cause); EXPECT_EQ("cookie-name", listener.observed_changes()[0].cookie.Name()); EXPECT_EQ("cookie-value", listener.observed_changes()[0].cookie.Value()); } TEST_P(RestrictedCookieManagerTest, ChangeSettings) { - service_->OverrideSiteForCookiesForTesting(GURL("http://notexample.com/")); + service_->OverrideSiteForCookiesForTesting(GURL("https://notexample.com/")); mojo::PendingRemote<network::mojom::CookieChangeListener> listener_remote; mojo::PendingReceiver<network::mojom::CookieChangeListener> receiver = listener_remote.InitWithNewPipeAndPassReceiver(); sync_service_->AddChangeListener( - GURL("http://example.com/test/"), GURL("http://notexample.com"), - url::Origin::Create(GURL("http://example.com")), + GURL("https://example.com/test/"), GURL("https://notexample.com"), + url::Origin::Create(GURL("https://example.com")), std::move(listener_remote)); TestCookieChangeListener listener(std::move(receiver)); @@ -840,8 +831,8 @@ bad_listener_remote.InitWithNewPipeAndPassReceiver(); ExpectBadMessage(); sync_service_->AddChangeListener( - GURL("http://not-example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), + GURL("https://not-example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(bad_listener_remote)); EXPECT_TRUE(received_bad_message()); TestCookieChangeListener bad_listener(std::move(bad_receiver)); @@ -851,8 +842,8 @@ mojo::PendingReceiver<network::mojom::CookieChangeListener> good_receiver = good_listener_remote.InitWithNewPipeAndPassReceiver(); sync_service_->AddChangeListener( - GURL("http://example.com/test/"), GURL("http://example.com"), - url::Origin::Create(GURL("http://example.com")), + GURL("https://example.com/test/"), GURL("https://example.com"), + url::Origin::Create(GURL("https://example.com")), std::move(good_listener_remote)); TestCookieChangeListener good_listener(std::move(good_receiver)); @@ -867,12 +858,136 @@ EXPECT_THAT(bad_listener.observed_changes(), testing::SizeIs(0)); ASSERT_THAT(good_listener.observed_changes(), testing::SizeIs(1)); - EXPECT_EQ(network::mojom::CookieChangeCause::INSERTED, - good_listener.observed_changes()[0].change_cause); + EXPECT_EQ(net::CookieChangeCause::INSERTED, + good_listener.observed_changes()[0].cause); EXPECT_EQ("cookie-name", good_listener.observed_changes()[0].cookie.Name()); EXPECT_EQ("cookie-value", good_listener.observed_changes()[0].cookie.Value()); } +// Test that the Change listener receives the access semantics, and that they +// are taken into account when deciding when to dispatch the change. +TEST_P(RestrictedCookieManagerTest, ChangeNotificationIncludesAccessSemantics) { + // Turn on SameSiteByDefaultCookies. + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature(net::features::kSameSiteByDefaultCookies); + + auto cookie_access_delegate = + std::make_unique<net::TestCookieAccessDelegate>(); + cookie_access_delegate->SetExpectationForCookieDomain( + "example.com", net::CookieAccessSemantics::LEGACY); + cookie_monster_.SetCookieAccessDelegate(std::move(cookie_access_delegate)); + + mojo::PendingRemote<network::mojom::CookieChangeListener> listener_remote; + mojo::PendingReceiver<network::mojom::CookieChangeListener> receiver = + listener_remote.InitWithNewPipeAndPassReceiver(); + + // Use a cross-site site_for_cookies. + service_->OverrideSiteForCookiesForTesting(GURL("https://not-example.com")); + sync_service_->AddChangeListener( + GURL("https://example.com/test/"), + GURL("https://not-example.com") /* site_for_cookies */, + url::Origin::Create(GURL("https://example.com")), + std::move(listener_remote)); + TestCookieChangeListener listener(std::move(receiver)); + + ASSERT_THAT(listener.observed_changes(), testing::SizeIs(0)); + + auto cookie = net::CanonicalCookie::Create( + GURL("https://example.com"), "cookie_with_no_samesite=unspecified", + base::Time::Now(), base::nullopt); + + // Set cookie directly into the CookieMonster, using all-inclusive options. + net::ResultSavingCookieCallback<net::CanonicalCookie::CookieInclusionStatus> + callback; + cookie_monster_.SetCanonicalCookieAsync( + std::move(cookie), "https", net::CookieOptions::MakeAllInclusive(), + base::BindOnce(&net::ResultSavingCookieCallback< + net::CanonicalCookie::CookieInclusionStatus>::Run, + base::Unretained(&callback))); + callback.WaitUntilDone(); + ASSERT_TRUE(callback.result().IsInclude()); + + // The listener only receives the change because the cookie is legacy. + listener.WaitForChange(); + + ASSERT_THAT(listener.observed_changes(), testing::SizeIs(1)); + EXPECT_EQ(net::CookieAccessSemantics::LEGACY, + listener.observed_changes()[0].access_semantics); +} + +TEST_P(RestrictedCookieManagerTest, NoChangeNotificationForNonlegacyCookie) { + // Turn on SameSiteByDefaultCookies. + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature(net::features::kSameSiteByDefaultCookies); + + auto cookie_access_delegate = + std::make_unique<net::TestCookieAccessDelegate>(); + cookie_access_delegate->SetExpectationForCookieDomain( + "example.com", net::CookieAccessSemantics::NONLEGACY); + cookie_monster_.SetCookieAccessDelegate(std::move(cookie_access_delegate)); + + mojo::PendingRemote<network::mojom::CookieChangeListener> listener_remote; + mojo::PendingReceiver<network::mojom::CookieChangeListener> receiver = + listener_remote.InitWithNewPipeAndPassReceiver(); + + // Use a cross-site site_for_cookies. + service_->OverrideSiteForCookiesForTesting(GURL("https://not-example.com")); + sync_service_->AddChangeListener( + GURL("https://example.com/test/"), + GURL("https://not-example.com") /* site_for_cookies */, + url::Origin::Create(GURL("https://example.com")), + std::move(listener_remote)); + TestCookieChangeListener listener(std::move(receiver)); + + ASSERT_THAT(listener.observed_changes(), testing::SizeIs(0)); + + auto unspecified_cookie = net::CanonicalCookie::Create( + GURL("https://example.com"), "cookie_with_no_samesite=unspecified", + base::Time::Now(), base::nullopt); + + auto samesite_none_cookie = net::CanonicalCookie::Create( + GURL("https://example.com"), + "samesite_none_cookie=none; SameSite=None; Secure", base::Time::Now(), + base::nullopt); + + // Set cookies directly into the CookieMonster, using all-inclusive options. + net::ResultSavingCookieCallback<net::CanonicalCookie::CookieInclusionStatus> + callback1; + cookie_monster_.SetCanonicalCookieAsync( + std::move(unspecified_cookie), "https", + net::CookieOptions::MakeAllInclusive(), + base::BindOnce(&net::ResultSavingCookieCallback< + net::CanonicalCookie::CookieInclusionStatus>::Run, + base::Unretained(&callback1))); + callback1.WaitUntilDone(); + ASSERT_TRUE(callback1.result().IsInclude()); + + // Listener doesn't receive notification because cookie is not included for + // request URL for being unspecified and treated as lax. + base::RunLoop().RunUntilIdle(); + ASSERT_THAT(listener.observed_changes(), testing::SizeIs(0)); + + net::ResultSavingCookieCallback<net::CanonicalCookie::CookieInclusionStatus> + callback2; + cookie_monster_.SetCanonicalCookieAsync( + std::move(samesite_none_cookie), "https", + net::CookieOptions::MakeAllInclusive(), + base::BindOnce(&net::ResultSavingCookieCallback< + net::CanonicalCookie::CookieInclusionStatus>::Run, + base::Unretained(&callback2))); + callback2.WaitUntilDone(); + ASSERT_TRUE(callback2.result().IsInclude()); + + // Listener only receives notification about the SameSite=None cookie. + listener.WaitForChange(); + ASSERT_THAT(listener.observed_changes(), testing::SizeIs(1)); + + EXPECT_EQ("samesite_none_cookie", + listener.observed_changes()[0].cookie.Name()); + EXPECT_EQ(net::CookieAccessSemantics::NONLEGACY, + listener.observed_changes()[0].access_semantics); +} + INSTANTIATE_TEST_SUITE_P( , RestrictedCookieManagerTest,
diff --git a/services/network/test/test_cookie_manager.cc b/services/network/test/test_cookie_manager.cc index 2de701e..de8f59b 100644 --- a/services/network/test/test_cookie_manager.cc +++ b/services/network/test/test_cookie_manager.cc
@@ -36,10 +36,9 @@ } void TestCookieManager::DispatchCookieChange( - const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause) { + const net::CookieChangeInfo& change) { for (auto& cookie_change_listener_ : cookie_change_listeners_) { - cookie_change_listener_->OnCookieChange(cookie, cause); + cookie_change_listener_->OnCookieChange(change); } }
diff --git a/services/network/test/test_cookie_manager.h b/services/network/test/test_cookie_manager.h index fc197a1..5bc07a5b 100644 --- a/services/network/test/test_cookie_manager.h +++ b/services/network/test/test_cookie_manager.h
@@ -57,8 +57,7 @@ void SetContentSettingsForLegacyCookieAccess( const std::vector<::ContentSettingPatternSource>& settings) override {} - void DispatchCookieChange(const net::CanonicalCookie& cookie, - network::mojom::CookieChangeCause cause); + void DispatchCookieChange(const net::CookieChangeInfo& change); private: // List of observers receiving cookie change notifications.
diff --git a/services/viz/privileged/mojom/compositing/frame_sink_video_capture.mojom b/services/viz/privileged/mojom/compositing/frame_sink_video_capture.mojom index 5b83e33b..c1ae4fe 100644 --- a/services/viz/privileged/mojom/compositing/frame_sink_video_capture.mojom +++ b/services/viz/privileged/mojom/compositing/frame_sink_video_capture.mojom
@@ -46,7 +46,8 @@ OnFrameCaptured(mojo_base.mojom.ReadOnlySharedMemoryRegion data, media.mojom.VideoFrameInfo info, gfx.mojom.Rect content_rect, - FrameSinkVideoConsumerFrameCallbacks callbacks); + pending_remote<FrameSinkVideoConsumerFrameCallbacks> + callbacks); // Indicates that OnFrameCaptured() will not be called again, an end-of-stream // signal.
diff --git a/testing/buildbot/generate_buildbot_json.py b/testing/buildbot/generate_buildbot_json.py index 7218462..4dddfeb 100755 --- a/testing/buildbot/generate_buildbot_json.py +++ b/testing/buildbot/generate_buildbot_json.py
@@ -993,7 +993,7 @@ os.path.join(os.path.dirname(__file__), '..', '..', 'infra', 'config')) milo_configs = [ - os.path.join(infra_config_dir, 'luci-milo.cfg'), + os.path.join(infra_config_dir, 'generated', 'luci-milo.cfg'), os.path.join(infra_config_dir, 'luci-milo-dev.cfg'), ] for c in milo_configs:
diff --git a/testing/buildbot/generate_buildbot_json_unittest.py b/testing/buildbot/generate_buildbot_json_unittest.py index 9f34dc92..f4fc8b2 100755 --- a/testing/buildbot/generate_buildbot_json_unittest.py +++ b/testing/buildbot/generate_buildbot_json_unittest.py
@@ -19,7 +19,8 @@ infra_config_dir = os.path.abspath( os.path.join(os.path.dirname(__file__), '..', '..', 'infra', 'config')) - luci_milo_cfg_path = os.path.join(infra_config_dir, 'luci-milo.cfg') + luci_milo_cfg_path = os.path.join( + infra_config_dir, 'generated', 'luci-milo.cfg') luci_milo_dev_cfg_path = os.path.join(infra_config_dir, 'luci-milo-dev.cfg') self.files = { 'waterfalls.pyl': waterfalls,
diff --git a/testing/scripts/representative_perf_test_data/OWNERS b/testing/scripts/representative_perf_test_data/OWNERS new file mode 100644 index 0000000..8cb0bf5c --- /dev/null +++ b/testing/scripts/representative_perf_test_data/OWNERS
@@ -0,0 +1,2 @@ +behdadb@chromium.org +sadrul@chromium.org \ No newline at end of file
diff --git a/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json b/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json index 667fa79..92920d4 100644 --- a/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json +++ b/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json
@@ -64,67 +64,67 @@ "mac": { "mix_blend_mode_animation_screen": { "avg": 96.183, - "ci_095": 5.162 + "ci_095": 2.947 }, "twitch_2018": { "avg": 33.002, - "ci_095": 13.557 + "ci_095": 18.294 }, "balls_javascript_canvas": { "avg": 40.793, - "ci_095": 3.571 + "ci_095": 1.419 }, "transform_transitions_js_block": { "avg": 16.758, - "ci_095": 0.01 + "ci_095": 0.442 }, "web_animations_staggered_infinite_iterations": { "avg": 16.692, - "ci_095": 0.02 + "ci_095": 0.291 }, "fill_shapes": { "avg": 36.591, - "ci_095": 3.295 + "ci_095": 1.719 }, "css_value_type_shadow": { "avg": 65.745, - "ci_095": 19.875 + "ci_095": 16.053 }, "animometer_webgl_attrib_arrays": { "avg": 16.862, - "ci_095": 0.19 + "ci_095": 0.636 }, "web_animation_value_type_transform_simple": { "avg": 48.286, - "ci_095": 5.704 + "ci_095": 2.421 }, "canvas_05000_pixels_per_second": { "avg": 16.685, - "ci_095": 0.012 + "ci_095": 0.333 }, "bouncing_clipped_rectangles": { "avg": 537.025, - "ci_095": 72.711 + "ci_095": 168.527 }, "ie_chalkboard": { "avg": 66.825, - "ci_095": 15.637 + "ci_095": 39.904 }, "new_tilings": { "avg": 23.163, - "ci_095": 1.583 + "ci_095": 1.13 }, "chip_tune": { "avg": 16.737, - "ci_095": 0.044 + "ci_095": 0.453 }, "extra_large_texture_uploads": { "avg": 58.721, - "ci_095": 1.167 + "ci_095": 2.462 }, "css_value_type_filter": { "avg": 86.254, - "ci_095": 12.391 + "ci_095": 1.79 } }, "android": {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 5651a117..2ff9e1d 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -678,21 +678,6 @@ ] } ], - "AutoFetchOnNetErrorPage": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "AutoFetchOnNetErrorPage" - ] - } - ] - } - ], "AutofillDoNotMigrateUnsupportedLocalCards": [ { "platforms": [ @@ -3000,6 +2985,21 @@ ] } ], + "IOSSettingsAddPaymentMethod": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "SettingsAddPaymentMethod" + ] + } + ] + } + ], "ImprovedRecoveryComponent": [ { "platforms": [
diff --git a/third_party/android_platform/BUILD.gn b/third_party/android_platform/BUILD.gn deleted file mode 100644 index d669fcc..0000000 --- a/third_party/android_platform/BUILD.gn +++ /dev/null
@@ -1,14 +0,0 @@ -# Copyright 2015 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. - -if (is_android) { - import("//build/config/android/rules.gni") - - wrapper_script("stack_wrapper") { - target = "//third_party/android_platform/development/scripts/stack" - data_deps = [ - "//third_party/android_platform/development/scripts:stack_py", - ] - } -}
diff --git a/third_party/blink/public/mojom/service_worker/service_worker.mojom b/third_party/blink/public/mojom/service_worker/service_worker.mojom index 3e141c7a..2dd155a 100644 --- a/third_party/blink/public/mojom/service_worker/service_worker.mojom +++ b/third_party/blink/public/mojom/service_worker/service_worker.mojom
@@ -203,9 +203,7 @@ // https://github.com/WICG/cookie-store/ // The callback is called once the event handler has run and the waitUntil() // promise has settled. - DispatchCookieChangeEvent( - network.mojom.CanonicalCookie cookie, - network.mojom.CookieChangeCause cause) + DispatchCookieChangeEvent(network.mojom.CookieChangeInfo change) => (ServiceWorkerEventStatus status); // The Dispatch*FetchEvent() callback is called once the event finishes,
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index 78f81486..7966159 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -345,8 +345,6 @@ } // namespace -using namespace html_names; - class DocumentOutliveTimeReporter : public BlinkGCObserver { public: explicit DocumentOutliveTimeReporter(Document* document) @@ -4635,12 +4633,13 @@ base && (!href || !target); base = Traversal<HTMLBaseElement>::Next(*base)) { if (!href) { - const AtomicString& value = base->FastGetAttribute(kHrefAttr); + const AtomicString& value = base->FastGetAttribute(html_names::kHrefAttr); if (!value.IsNull()) href = &value; } if (!target) { - const AtomicString& value = base->FastGetAttribute(kTargetAttr); + const AtomicString& value = + base->FastGetAttribute(html_names::kTargetAttr); if (!value.IsNull()) target = &value; } @@ -5817,12 +5816,14 @@ // check before each call. if (margin_width != owner->MarginWidth()) { if (auto* body_element = body()) { - body_element->SetIntegralAttribute(kMarginwidthAttr, margin_width); + body_element->SetIntegralAttribute(html_names::kMarginwidthAttr, + margin_width); } } if (margin_height != owner->MarginHeight()) { if (auto* body_element = body()) { - body_element->SetIntegralAttribute(kMarginheightAttr, margin_height); + body_element->SetIntegralAttribute(html_names::kMarginheightAttr, + margin_height); } } if (scrolling_mode != owner->ScrollingMode() && View()) { @@ -7915,48 +7916,48 @@ } const AtomicString& Document::bgColor() const { - return BodyAttributeValue(kBgcolorAttr); + return BodyAttributeValue(html_names::kBgcolorAttr); } void Document::setBgColor(const AtomicString& value) { if (!IsFrameSet()) - SetBodyAttribute(kBgcolorAttr, value); + SetBodyAttribute(html_names::kBgcolorAttr, value); } const AtomicString& Document::fgColor() const { - return BodyAttributeValue(kTextAttr); + return BodyAttributeValue(html_names::kTextAttr); } void Document::setFgColor(const AtomicString& value) { if (!IsFrameSet()) - SetBodyAttribute(kTextAttr, value); + SetBodyAttribute(html_names::kTextAttr, value); } const AtomicString& Document::alinkColor() const { - return BodyAttributeValue(kAlinkAttr); + return BodyAttributeValue(html_names::kAlinkAttr); } void Document::setAlinkColor(const AtomicString& value) { if (!IsFrameSet()) - SetBodyAttribute(kAlinkAttr, value); + SetBodyAttribute(html_names::kAlinkAttr, value); } const AtomicString& Document::linkColor() const { - return BodyAttributeValue(kLinkAttr); + return BodyAttributeValue(html_names::kLinkAttr); } void Document::setLinkColor(const AtomicString& value) { if (!IsFrameSet()) - SetBodyAttribute(kLinkAttr, value); + SetBodyAttribute(html_names::kLinkAttr, value); } const AtomicString& Document::vlinkColor() const { - return BodyAttributeValue(kVlinkAttr); + return BodyAttributeValue(html_names::kVlinkAttr); } void Document::setVlinkColor(const AtomicString& value) { if (!IsFrameSet()) - SetBodyAttribute(kVlinkAttr, value); + SetBodyAttribute(html_names::kVlinkAttr, value); } template <unsigned type>
diff --git a/third_party/blink/renderer/core/dom/document_statistics_collector.cc b/third_party/blink/renderer/core/dom/document_statistics_collector.cc index 12538a2..684db9b 100644 --- a/third_party/blink/renderer/core/dom/document_statistics_collector.cc +++ b/third_party/blink/renderer/core/dom/document_statistics_collector.cc
@@ -21,8 +21,6 @@ namespace blink { -using namespace html_names; - namespace { // Saturate the length of a paragraph to save time. @@ -120,19 +118,20 @@ for (Element& element : ElementTraversal::ChildrenOf(root)) { bool is_list_item = false; features.element_count++; - if (element.HasTagName(kATag)) { + if (element.HasTagName(html_names::kATag)) { features.anchor_count++; - } else if (element.HasTagName(kFormTag)) { + } else if (element.HasTagName(html_names::kFormTag)) { features.form_count++; - } else if (element.HasTagName(kInputTag)) { + } else if (element.HasTagName(html_names::kInputTag)) { const HTMLInputElement& input = ToHTMLInputElement(element); if (input.type() == input_type_names::kText) { features.text_input_count++; } else if (input.type() == input_type_names::kPassword) { features.password_input_count++; } - } else if (element.HasTagName(kPTag) || element.HasTagName(kPreTag)) { - if (element.HasTagName(kPTag)) { + } else if (element.HasTagName(html_names::kPTag) || + element.HasTagName(html_names::kPreTag)) { + if (element.HasTagName(html_names::kPTag)) { features.p_count++; } else { features.pre_count++; @@ -152,7 +151,7 @@ features.moz_score_all_linear = std::min(features.moz_score_all_linear, kMozScoreAllLinearSaturation); } - } else if (element.HasTagName(kLiTag)) { + } else if (element.HasTagName(html_names::kLiTag)) { is_list_item = true; } CollectFeatures(element, features, under_list_item || is_list_item);
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc index 71abe56..c6b5dab 100644 --- a/third_party/blink/renderer/core/dom/element.cc +++ b/third_party/blink/renderer/core/dom/element.cc
@@ -168,8 +168,6 @@ namespace blink { -using namespace html_names; - enum class ClassStringContent { kEmpty, kWhiteSpaceOnly, kHasClasses }; namespace { @@ -227,7 +225,8 @@ if (!style) return is_editable; auto user_modify = style->UserModify(); - const AtomicString& ce_value = element.FastGetAttribute(kContenteditableAttr); + const AtomicString& ce_value = + element.FastGetAttribute(html_names::kContenteditableAttr); if (ce_value.IsNull() || DeprecatedEqualIgnoringCase(ce_value, "false")) { if (user_modify == EUserModify::kReadWritePlaintextOnly) { UseCounter::Count(doc, WebFeature::kPlainTextEditingEffective); @@ -528,12 +527,12 @@ } void Element::setTabIndex(int value) { - SetIntegralAttribute(kTabindexAttr, value); + SetIntegralAttribute(html_names::kTabindexAttr, value); } int Element::tabIndex() const { return HasElementFlag(ElementFlags::kTabIndexWasSetExplicitly) - ? GetIntegralAttribute(kTabindexAttr) + ? GetIntegralAttribute(html_names::kTabindexAttr) : 0; } @@ -876,7 +875,7 @@ inline void Element::SynchronizeAttribute(const QualifiedName& name) const { if (!GetElementData()) return; - if (UNLIKELY(name == kStyleAttr && + if (UNLIKELY(name == html_names::kStyleAttr && GetElementData()->style_attribute_is_dirty_)) { DCHECK(IsStyledElement()); SynchronizeStyleAttributeInternal(); @@ -895,7 +894,7 @@ if (!GetElementData()) return; if (GetElementData()->style_attribute_is_dirty_ && - LowercaseIfNecessary(local_name) == kStyleAttr.LocalName()) { + LowercaseIfNecessary(local_name) == html_names::kStyleAttr.LocalName()) { DCHECK(IsStyledElement()); SynchronizeStyleAttributeInternal(); return; @@ -1925,7 +1924,7 @@ } InvisibleState Element::Invisible() const { - const AtomicString& value = FastGetAttribute(kInvisibleAttr); + const AtomicString& value = FastGetAttribute(html_names::kInvisibleAttr); if (value.IsNull()) return InvisibleState::kMissing; if (EqualIgnoringASCIICase(value, "static")) @@ -2009,7 +2008,7 @@ if (RuntimeEnabledFeatures::InvisibleDOMEnabled() && event.type() == event_type_names::kActivateinvisible && event.target() == this) { - removeAttribute(kInvisibleAttr); + removeAttribute(html_names::kInvisibleAttr); event.SetDefaultHandled(); return; } @@ -2318,7 +2317,7 @@ GetElementData()->SetIdForStyleResolution(new_id); GetDocument().GetStyleEngine().IdChangedForElement(old_id, new_id, *this); } - } else if (name == kClassAttr) { + } else if (name == html_names::kClassAttr) { ClassAttributeChanged(params.new_value); if (HasRareData() && GetElementRareData()->GetClassList()) { GetElementRareData()->GetClassList()->DidUpdateAttributeValue( @@ -2335,7 +2334,7 @@ } else if (IsElementReflectionAttribute(name)) { SynchronizeContentAttributeAndElementReference(name); } else if (IsStyledElement()) { - if (name == kStyleAttr) { + if (name == html_names::kStyleAttr) { StyleAttributeChanged(params.new_value, params.reason); } else if (IsPresentationAttribute(name)) { GetElementData()->presentation_attribute_style_is_dirty_ = true; @@ -2390,7 +2389,8 @@ } if (params.reason == AttributeModificationReason::kDirectly && - name == kTabindexAttr && AdjustedFocusedElementInTreeScope() == this) { + name == html_names::kTabindexAttr && + AdjustedFocusedElementInTreeScope() == this) { // The attribute change may cause supportsFocus() to return false // for the element which had focus. // @@ -2611,7 +2611,7 @@ } const AtomicString Element::ImageSourceURL() const { - return getAttribute(kSrcAttr); + return getAttribute(html_names::kSrcAttr); } bool Element::LayoutObjectIsNeeded(const ComputedStyle& style) const { @@ -3825,7 +3825,7 @@ } void Element::ParseAttribute(const AttributeModificationParams& params) { - if (params.name == kTabindexAttr) { + if (params.name == html_names::kTabindexAttr) { int tabindex = 0; if (params.new_value.IsEmpty() || !ParseHTMLInteger(params.new_value, tabindex)) { @@ -3928,7 +3928,7 @@ AtomicString local_name = LowercaseIfNecessary(name); wtf_size_t index = GetElementData()->Attributes().FindIndex(local_name); if (index == kNotFound) { - if (UNLIKELY(local_name == kStyleAttr) && + if (UNLIKELY(local_name == html_names::kStyleAttr) && GetElementData()->style_attribute_is_dirty_ && IsStyledElement()) RemoveAllInlineStyleProperties(); return; @@ -4815,7 +4815,7 @@ const AtomicString& Element::ShadowPseudoId() const { if (ShadowRoot* root = ContainingShadowRoot()) { if (root->IsUserAgent()) - return FastGetAttribute(kPseudoAttr); + return FastGetAttribute(html_names::kPseudoAttr); } return g_null_atom; } @@ -4825,7 +4825,7 @@ CSSSelector::kPseudoWebKitCustomElement || CSSSelector::ParsePseudoType(id, false) == CSSSelector::kPseudoBlinkInternalElement); - setAttribute(kPseudoAttr, id); + setAttribute(html_names::kPseudoAttr, id); } bool Element::IsInDescendantTreeOf(const Element* shadow_host) const { @@ -5244,8 +5244,10 @@ DOMTokenList& Element::classList() { ElementRareData& rare_data = EnsureElementRareData(); if (!rare_data.GetClassList()) { - auto* class_list = MakeGarbageCollected<DOMTokenList>(*this, kClassAttr); - class_list->DidUpdateAttributeValue(g_null_atom, getAttribute(kClassAttr)); + auto* class_list = + MakeGarbageCollected<DOMTokenList>(*this, html_names::kClassAttr); + class_list->DidUpdateAttributeValue(g_null_atom, + getAttribute(html_names::kClassAttr)); rare_data.SetClassList(class_list); } return *rare_data.GetClassList(); @@ -5263,7 +5265,7 @@ // doesn't <link> implement URLUtils? if (IsA<HTMLAnchorElement>(*this) || IsA<HTMLAreaElement>(*this) || IsHTMLLinkElement(*this)) - return GetURLAttribute(kHrefAttr); + return GetURLAttribute(html_names::kHrefAttr); if (auto* svg_a = ToSVGAElementOrNull(*this)) return svg_a->LegacyHrefURL(GetDocument()); return KURL(); @@ -5416,7 +5418,7 @@ } SpellcheckAttributeState Element::GetSpellcheckAttributeState() const { - const AtomicString& value = FastGetAttribute(kSpellcheckAttr); + const AtomicString& value = FastGetAttribute(html_names::kSpellcheckAttr); if (value == g_null_atom) return kSpellcheckAttributeDefault; if (DeprecatedEqualIgnoringCase(value, "true") || @@ -5847,7 +5849,7 @@ GetElementData()->style_attribute_is_dirty_ = false; const CSSPropertyValueSet* inline_style = InlineStyle(); const_cast<Element*>(this)->SetSynchronizedLazyAttribute( - kStyleAttr, + html_names::kStyleAttr, inline_style ? AtomicString(inline_style->AsText()) : g_empty_atom); } @@ -5955,18 +5957,18 @@ if (MutationObserverInterestGroup* recipients = MutationObserverInterestGroup::CreateForAttributesMutation( - *this, kStyleAttr)) { + *this, html_names::kStyleAttr)) { // We don't use getAttribute() here to get a style attribute value // before the change. AtomicString old_value; if (const Attribute* attribute = - GetElementData()->Attributes().Find(kStyleAttr)) + GetElementData()->Attributes().Find(html_names::kStyleAttr)) old_value = attribute->Value(); - recipients->EnqueueMutationRecord( - MutationRecord::CreateAttributes(this, kStyleAttr, old_value)); + recipients->EnqueueMutationRecord(MutationRecord::CreateAttributes( + this, html_names::kStyleAttr, old_value)); // Need to synchronize every time so that following MutationRecords will // have correct oldValues. - SynchronizeAttribute(kStyleAttr); + SynchronizeAttribute(html_names::kStyleAttr); } } @@ -6172,7 +6174,7 @@ ElementRareData& rare_data = EnsureElementRareData(); DOMTokenList* part = rare_data.GetPart(); if (!part) { - part = MakeGarbageCollected<DOMTokenList>(*this, kPartAttr); + part = MakeGarbageCollected<DOMTokenList>(*this, html_names::kPartAttr); rare_data.SetPart(part); } return *part;
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc index 7b54ad2..3dbbdcb 100644 --- a/third_party/blink/renderer/core/dom/node.cc +++ b/third_party/blink/renderer/core/dom/node.cc
@@ -160,8 +160,6 @@ } // namespace -using namespace html_names; - struct SameSizeAsNode : EventTarget { uint32_t node_flags_; Member<void*> willbe_member_[4];
diff --git a/third_party/blink/renderer/core/dom/presentation_attribute_style.cc b/third_party/blink/renderer/core/dom/presentation_attribute_style.cc index 8a8ea30..f142bc2 100644 --- a/third_party/blink/renderer/core/dom/presentation_attribute_style.cc +++ b/third_party/blink/renderer/core/dom/presentation_attribute_style.cc
@@ -46,8 +46,6 @@ namespace blink { -using namespace html_names; - struct PresentationAttributeCacheKey { PresentationAttributeCacheKey() : tag_name(nullptr) {} StringImpl* tag_name; @@ -105,7 +103,7 @@ return; // FIXME: Background URL may depend on the base URL and can't be shared. // Disallow caching. - if (attr.GetName() == kBackgroundAttr) + if (attr.GetName() == html_names::kBackgroundAttr) return; result.attributes_and_values.push_back( std::make_pair(attr.LocalName().Impl(), attr.Value()));
diff --git a/third_party/blink/renderer/core/dom/text_link_colors.cc b/third_party/blink/renderer/core/dom/text_link_colors.cc index 2435781..6c38dda 100644 --- a/third_party/blink/renderer/core/dom/text_link_colors.cc +++ b/third_party/blink/renderer/core/dom/text_link_colors.cc
@@ -38,8 +38,6 @@ namespace blink { -using namespace cssvalue; - TextLinkColors::TextLinkColors() : text_color_(Color::kBlack) { ResetLinkColor(); ResetVisitedLinkColor(); @@ -62,7 +60,7 @@ Color current_color, WebColorScheme color_scheme, bool for_visited_link) const { - if (auto* color_value = DynamicTo<CSSColorValue>(value)) + if (auto* color_value = DynamicTo<cssvalue::CSSColorValue>(value)) return color_value->Value(); if (auto* pair = DynamicTo<CSSLightDarkColorPair>(value)) {
diff --git a/third_party/blink/renderer/core/dom/tree_scope.cc b/third_party/blink/renderer/core/dom/tree_scope.cc index dfd9b4f5..6a30fd0 100644 --- a/third_party/blink/renderer/core/dom/tree_scope.cc +++ b/third_party/blink/renderer/core/dom/tree_scope.cc
@@ -57,8 +57,6 @@ namespace blink { -using namespace html_names; - TreeScope::TreeScope(ContainerNode& root_node, Document& document) : root_node_(&root_node), document_(&document), @@ -594,8 +592,8 @@ Element* result = nullptr; Node& root = RootNode(); for (Element& element : ElementTraversal::DescendantsOf(root)) { - if (DeprecatedEqualIgnoringCase(element.FastGetAttribute(kAccesskeyAttr), - key)) + if (DeprecatedEqualIgnoringCase( + element.FastGetAttribute(html_names::kAccesskeyAttr), key)) result = &element; if (ShadowRoot* shadow_root = element.GetShadowRoot()) { if (Element* shadow_result = shadow_root->GetElementByAccessKey(key))
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc index 04ff9848..61bd387 100644 --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -793,7 +793,7 @@ return String(); std::unique_ptr<JSONObject> layers; - if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) { + if (!(flags & kOutputAsLayerTree)) { layers = View()->CompositedLayersAsJSON(static_cast<LayerTreeFlags>(flags)); } else { if (const auto* root_layer =
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc index c246b213..2268166 100644 --- a/third_party/blink/renderer/core/frame/local_frame_view.cc +++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -1362,10 +1362,10 @@ bool should_scroll) { // We want to create the anchor even if we don't need to scroll. This ensures // all the side effects like setting CSS :target are correctly set. - FragmentAnchor* anchor = - FragmentAnchor::TryCreate(url, *frame_, same_document_navigation); + FragmentAnchor* anchor = FragmentAnchor::TryCreate( + url, *frame_, same_document_navigation, should_scroll); - if (anchor && should_scroll) { + if (anchor) { fragment_anchor_ = anchor; fragment_anchor_->Installed(); @@ -2574,10 +2574,8 @@ // layers are still attached. In future we will disable all those layer // hierarchy code so we won't need this line. graphics_layer->CcLayer()->RemoveAllChildren(); - RecordForeignLayer(context, DisplayItem::kForeignLayerWrapper, - graphics_layer->CcLayer(), - FloatPoint(graphics_layer->GetOffsetFromTransformNode()), - graphics_layer->GetPropertyTreeState()); + RecordGraphicsLayerAsForeignLayer(context, DisplayItem::kForeignLayerWrapper, + *graphics_layer); } static void CollectDrawableLayersForLayerListRecursively( @@ -2807,10 +2805,13 @@ std::unique_ptr<JSONObject> LocalFrameView::CompositedLayersAsJSON( LayerTreeFlags flags) { - return GetFrame() - .LocalFrameRoot() - .View() - ->paint_artifact_compositor_->LayersAsJSON(flags); + auto* root_frame_view = GetFrame().LocalFrameRoot().View(); + if (root_frame_view->GetPaintController()) { + return root_frame_view->paint_artifact_compositor_->GetLayersAsJSON( + flags, &root_frame_view->GetPaintController()->GetPaintArtifact()); + } else { + return std::make_unique<JSONObject>(); + } } void LocalFrameView::UpdateStyleAndLayoutIfNeededRecursive() { @@ -3942,8 +3943,8 @@ void LocalFrameView::CrossOriginStatusChanged() { // If any of these conditions hold, then a change in cross-origin status does // not affect throttling. - if (lifecycle_updates_throttled_ || - IsSubtreeThrottled() || !IsHiddenForThrottling()) { + if (lifecycle_updates_throttled_ || IsSubtreeThrottled() || + !IsHiddenForThrottling()) { return; } RenderThrottlingStatusChanged();
diff --git a/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc b/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc index 6b53778c..64ef112 100644 --- a/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc +++ b/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc
@@ -864,6 +864,24 @@ edit_control_owner_->EditControlValueChanged(); } +void DateTimeEditElement::SetOnlyTime(const DateComponents& date) { + DCHECK_EQ(date.GetType(), DateComponents::kTime); + + if (!edit_control_owner_) + return; + + DateTimeFieldsState date_time_fields_state = ValueAsDateTimeFieldsState(); + date_time_fields_state.SetHour(date.Hour() % 12 ? date.Hour() % 12 : 12); + date_time_fields_state.SetMinute(date.Minute()); + date_time_fields_state.SetSecond(date.Second()); + date_time_fields_state.SetMillisecond(date.Millisecond()); + date_time_fields_state.SetAMPM(date.Hour() >= 12 + ? DateTimeFieldsState::kAMPMValuePM + : DateTimeFieldsState::kAMPMValueAM); + SetValueAsDateTimeFieldsState(date_time_fields_state); + edit_control_owner_->EditControlValueChanged(); +} + void DateTimeEditElement::StepDown() { if (DateTimeFieldElement* const field = FocusedField()) field->StepDown();
diff --git a/third_party/blink/renderer/core/html/forms/date_time_edit_element.h b/third_party/blink/renderer/core/html/forms/date_time_edit_element.h index 02e0cee..ba1e86b 100644 --- a/third_party/blink/renderer/core/html/forms/date_time_edit_element.h +++ b/third_party/blink/renderer/core/html/forms/date_time_edit_element.h
@@ -106,6 +106,7 @@ void SetValueAsDate(const LayoutParameters&, const DateComponents&); void SetValueAsDateTimeFieldsState(const DateTimeFieldsState&); void SetOnlyYearMonthDay(const DateComponents&); + void SetOnlyTime(const DateComponents&); void StepDown(); void StepUp(); String Value() const;
diff --git a/third_party/blink/renderer/core/html/forms/multiple_fields_temporal_input_type_view.cc b/third_party/blink/renderer/core/html/forms/multiple_fields_temporal_input_type_view.cc index 2cda4c4..4885aa1 100644 --- a/third_party/blink/renderer/core/html/forms/multiple_fields_temporal_input_type_view.cc +++ b/third_party/blink/renderer/core/html/forms/multiple_fields_temporal_input_type_view.cc
@@ -46,6 +46,7 @@ #include "third_party/blink/renderer/core/html/forms/html_input_element.h" #include "third_party/blink/renderer/core/html/forms/html_option_element.h" #include "third_party/blink/renderer/core/html/shadow/shadow_element_names.h" +#include "third_party/blink/renderer/core/input_type_names.h" #include "third_party/blink/renderer/core/layout/layout_theme.h" #include "third_party/blink/renderer/core/page/focus_controller.h" #include "third_party/blink/renderer/core/page/page.h" @@ -288,8 +289,13 @@ EventQueueScope scope; DateComponents date; unsigned end; - if (date.ParseDate(value, 0, end) && end == value.length()) - edit->SetOnlyYearMonthDay(date); + if (input_type_->FormControlType() == input_type_names::kTime) { + if (date.ParseTime(value, 0, end) && end == value.length()) + edit->SetOnlyTime(date); + } else { + if (date.ParseDate(value, 0, end) && end == value.length()) + edit->SetOnlyYearMonthDay(date); + } GetElement().DispatchFormControlChangeEvent(); }
diff --git a/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc b/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc index 2ec29ba..3cc1dbb 100644 --- a/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc +++ b/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc
@@ -261,54 +261,6 @@ } } -// static -LayoutUnit FlexItem::AlignmentOffset(LayoutUnit available_free_space, - ItemPosition position, - LayoutUnit ascent, - LayoutUnit max_ascent, - bool is_wrap_reverse, - bool is_deprecated_webkit_box) { - switch (position) { - case ItemPosition::kLegacy: - case ItemPosition::kAuto: - case ItemPosition::kNormal: - NOTREACHED(); - break; - case ItemPosition::kStretch: - // Actual stretching must be handled by the caller. Since wrap-reverse - // flips cross start and cross end, stretch children should be aligned - // with the cross end. This matters because applyStretchAlignment - // doesn't always stretch or stretch fully (explicit cross size given, or - // stretching constrained by max-height/max-width). For flex-start and - // flex-end this is handled by alignmentForChild(). - if (is_wrap_reverse) - return available_free_space; - break; - case ItemPosition::kFlexStart: - break; - case ItemPosition::kFlexEnd: - return available_free_space; - case ItemPosition::kCenter: { - const LayoutUnit result = (available_free_space / 2); - return is_deprecated_webkit_box ? result.ClampNegativeToZero() : result; - } - case ItemPosition::kBaseline: - // FIXME: If we get here in columns, we want the use the descent, except - // we currently can't get the ascent/descent of orthogonal children. - // https://bugs.webkit.org/show_bug.cgi?id=98076 - return max_ascent - ascent; - case ItemPosition::kLastBaseline: - case ItemPosition::kSelfStart: - case ItemPosition::kSelfEnd: - case ItemPosition::kStart: - case ItemPosition::kEnd: - case ItemPosition::kLeft: - case ItemPosition::kRight: - // TODO(jferanndez): Implement these (https://crbug.com/722287). - break; - } - return LayoutUnit(); -} void FlexLine::FreezeViolations(ViolationsVector& violations) { const ComputedStyle& flex_box_style = algorithm->StyleRef(); for (size_t i = 0; i < violations.size(); ++i) { @@ -702,77 +654,6 @@ } } -void FlexLayoutAlgorithm::AlignChildren() { - // Keep track of the space between the baseline edge and the after edge of - // the box for each line. - Vector<LayoutUnit> min_margin_after_baselines; - - for (FlexLine& line_context : flex_lines_) { - LayoutUnit min_margin_after_baseline = LayoutUnit::Max(); - LayoutUnit max_ascent = line_context.max_ascent; - - for (FlexItem& flex_item : line_context.line_items) { - DCHECK(!flex_item.box->IsOutOfFlowPositioned()); - - if (flex_item.UpdateAutoMarginsInCrossAxis( - std::max(LayoutUnit(), flex_item.AvailableAlignmentSpace()))) { - continue; - } - - ItemPosition position = flex_item.Alignment(); - if (position == ItemPosition::kStretch) - flex_item.ComputeStretchedSize(); - LayoutUnit available_space = flex_item.AvailableAlignmentSpace(); - LayoutUnit offset = FlexItem::AlignmentOffset( - available_space, position, flex_item.MarginBoxAscent(), max_ascent, - StyleRef().FlexWrap() == EFlexWrap::kWrapReverse, - StyleRef().IsDeprecatedWebkitBox()); - flex_item.desired_location.Move(LayoutUnit(), offset); - if (position == ItemPosition::kBaseline && - StyleRef().FlexWrap() == EFlexWrap::kWrapReverse) { - min_margin_after_baseline = - std::min(min_margin_after_baseline, - flex_item.AvailableAlignmentSpace() - offset); - } - } - min_margin_after_baselines.push_back(min_margin_after_baseline); - } - - if (StyleRef().FlexWrap() != EFlexWrap::kWrapReverse) - return; - - // wrap-reverse flips the cross axis start and end. For baseline alignment, - // this means we need to align the after edge of baseline elements with the - // after edge of the flex line. - wtf_size_t line_number = 0; - for (FlexLine& line_context : flex_lines_) { - LayoutUnit min_margin_after_baseline = - min_margin_after_baselines[line_number++]; - for (FlexItem& flex_item : line_context.line_items) { - if (flex_item.Alignment() == ItemPosition::kBaseline && - !flex_item.HasAutoMarginsInCrossAxis() && min_margin_after_baseline) { - flex_item.desired_location.Move(LayoutUnit(), - min_margin_after_baseline); - } - } - } -} - -void FlexLayoutAlgorithm::FlipForWrapReverse( - LayoutUnit cross_axis_start_edge, - LayoutUnit cross_axis_content_size) { - DCHECK_EQ(Style()->FlexWrap(), EFlexWrap::kWrapReverse); - for (FlexLine& line_context : flex_lines_) { - LayoutUnit original_offset = - line_context.cross_axis_offset - cross_axis_start_edge; - LayoutUnit new_offset = cross_axis_content_size - original_offset - - line_context.cross_axis_extent; - LayoutUnit wrap_reverse_difference = new_offset - original_offset; - for (FlexItem& flex_item : line_context.line_items) - flex_item.desired_location.Move(LayoutUnit(), wrap_reverse_difference); - } -} - TransformedWritingMode FlexLayoutAlgorithm::GetTransformedWritingMode() const { return GetTransformedWritingMode(*style_); }
diff --git a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h index 5016780..2099705 100644 --- a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h +++ b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
@@ -171,13 +171,6 @@ inline const FlexLine* Line() const; - static LayoutUnit AlignmentOffset(LayoutUnit available_free_space, - ItemPosition position, - LayoutUnit ascent, - LayoutUnit max_ascent, - bool is_wrap_reverse, - bool is_deprecated_webkit_box); - FlexLayoutAlgorithm* algorithm; wtf_size_t line_number; LayoutBox* box; @@ -385,13 +378,6 @@ // FlexLine::cross_axis_extent. void AlignFlexLines(LayoutUnit cross_axis_content_extent); - // Positions flex items by modifying FlexItem::desired_location. - // When lines stretch, also modifies FlexItem::cross_axis_size. - void AlignChildren(); - - void FlipForWrapReverse(LayoutUnit cross_axis_start_edge, - LayoutUnit cross_axis_content_size); - static TransformedWritingMode GetTransformedWritingMode(const ComputedStyle&); static const StyleContentAlignmentData& ContentAlignmentNormalBehavior();
diff --git a/third_party/blink/renderer/core/layout/layout_flexible_box.cc b/third_party/blink/renderer/core/layout/layout_flexible_box.cc index a01e6800..ab7ad9d9 100644 --- a/third_party/blink/renderer/core/layout/layout_flexible_box.cc +++ b/third_party/blink/renderer/core/layout/layout_flexible_box.cc
@@ -416,16 +416,10 @@ AlignFlexLines(algorithm); - AlignChildren(algorithm); + AlignChildren(line_contexts); - if (StyleRef().FlexWrap() == EFlexWrap::kWrapReverse) { - algorithm.FlipForWrapReverse(cross_axis_start_edge, - CrossAxisContentExtent()); - for (FlexLine& line_context : line_contexts) { - for (FlexItem& flex_item : line_context.line_items) - ResetAlignmentForChild(*flex_item.box, flex_item.desired_location.Y()); - } - } + if (StyleRef().FlexWrap() == EFlexWrap::kWrapReverse) + FlipForWrapReverse(line_contexts, cross_axis_start_edge); // direction:rtl + flex-direction:column means the cross-axis direction is // flipped. @@ -1204,6 +1198,54 @@ border_and_padding, margin); } +static LayoutUnit AlignmentOffset(LayoutUnit available_free_space, + ItemPosition position, + LayoutUnit ascent, + LayoutUnit max_ascent, + bool is_wrap_reverse, + bool is_deprecated_webkit_box) { + switch (position) { + case ItemPosition::kLegacy: + case ItemPosition::kAuto: + case ItemPosition::kNormal: + NOTREACHED(); + break; + case ItemPosition::kStretch: + // Actual stretching must be handled by the caller. Since wrap-reverse + // flips cross start and cross end, stretch children should be aligned + // with the cross end. This matters because applyStretchAlignment + // doesn't always stretch or stretch fully (explicit cross size given, or + // stretching constrained by max-height/max-width). For flex-start and + // flex-end this is handled by alignmentForChild(). + if (is_wrap_reverse) + return available_free_space; + break; + case ItemPosition::kFlexStart: + break; + case ItemPosition::kFlexEnd: + return available_free_space; + case ItemPosition::kCenter: { + const LayoutUnit result = (available_free_space / 2); + return is_deprecated_webkit_box ? result.ClampNegativeToZero() : result; + } + case ItemPosition::kBaseline: + // FIXME: If we get here in columns, we want the use the descent, except + // we currently can't get the ascent/descent of orthogonal children. + // https://bugs.webkit.org/show_bug.cgi?id=98076 + return max_ascent - ascent; + case ItemPosition::kLastBaseline: + case ItemPosition::kSelfStart: + case ItemPosition::kSelfEnd: + case ItemPosition::kStart: + case ItemPosition::kEnd: + case ItemPosition::kLeft: + case ItemPosition::kRight: + // TODO(jferanndez): Implement these (https://crbug.com/722287). + break; + } + return LayoutUnit(); +} + void LayoutFlexibleBox::SetOverrideMainAxisContentSizeForChild(FlexItem& item) { if (MainAxisIsInlineAxis(*item.box)) { item.box->SetOverrideLogicalWidth(item.FlexedBorderBoxSize()); @@ -1231,7 +1273,7 @@ const LayoutBox& child) { LayoutUnit available_space = CrossAxisContentExtent() - CrossAxisExtentForChild(child); - return FlexItem::AlignmentOffset( + return AlignmentOffset( available_space, FlexLayoutAlgorithm::AlignmentForChild(StyleRef(), child.StyleRef()), LayoutUnit(), LayoutUnit(), @@ -1535,17 +1577,60 @@ child, {FlowAwareLocationForChild(child).X(), new_cross_axis_position}); } -void LayoutFlexibleBox::AlignChildren(FlexLayoutAlgorithm& algorithm) { - Vector<FlexLine>& line_contexts = algorithm.FlexLines(); +void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) { + // Keep track of the space between the baseline edge and the after edge of + // the box for each line. + // TODO(cbiesinger): This should be stored in FlexLine + Vector<LayoutUnit> min_margin_after_baselines; - algorithm.AlignChildren(); - for (unsigned line_number = 0; line_number < line_contexts.size(); - ++line_number) { - FlexLine& line_context = line_contexts[line_number]; + for (FlexLine& line_context : line_contexts) { + LayoutUnit min_margin_after_baseline = LayoutUnit::Max(); + LayoutUnit max_ascent = line_context.max_ascent; + for (FlexItem& flex_item : line_context.line_items) { - if (flex_item.Alignment() == ItemPosition::kStretch) + DCHECK(!flex_item.box->IsOutOfFlowPositioned()); + + if (flex_item.UpdateAutoMarginsInCrossAxis( + std::max(LayoutUnit(), flex_item.AvailableAlignmentSpace()))) { + ResetAlignmentForChild(*flex_item.box, flex_item.desired_location.Y()); + continue; + } + + ItemPosition position = flex_item.Alignment(); + if (position == ItemPosition::kStretch) { + flex_item.ComputeStretchedSize(); ApplyStretchAlignmentToChild(flex_item); - ResetAlignmentForChild(*flex_item.box, flex_item.desired_location.Y()); + } + LayoutUnit available_space = flex_item.AvailableAlignmentSpace(); + LayoutUnit offset = AlignmentOffset( + available_space, position, flex_item.MarginBoxAscent(), max_ascent, + StyleRef().FlexWrap() == EFlexWrap::kWrapReverse, + StyleRef().IsDeprecatedWebkitBox()); + AdjustAlignmentForChild(*flex_item.box, offset); + if (position == ItemPosition::kBaseline && + StyleRef().FlexWrap() == EFlexWrap::kWrapReverse) { + min_margin_after_baseline = + std::min(min_margin_after_baseline, + flex_item.AvailableAlignmentSpace() - offset); + } + } + min_margin_after_baselines.push_back(min_margin_after_baseline); + } + + if (StyleRef().FlexWrap() != EFlexWrap::kWrapReverse) + return; + + // wrap-reverse flips the cross axis start and end. For baseline alignment, + // this means we need to align the after edge of baseline elements with the + // after edge of the flex line. + wtf_size_t line_number = 0; + for (FlexLine& line_context : line_contexts) { + LayoutUnit min_margin_after_baseline = + min_margin_after_baselines[line_number++]; + for (FlexItem& flex_item : line_context.line_items) { + if (flex_item.Alignment() == ItemPosition::kBaseline && + !flex_item.HasAutoMarginsInCrossAxis() && min_margin_after_baseline) + AdjustAlignmentForChild(*flex_item.box, min_margin_after_baseline); } } } @@ -1599,4 +1684,20 @@ } } +void LayoutFlexibleBox::FlipForWrapReverse( + const Vector<FlexLine>& line_contexts, + LayoutUnit cross_axis_start_edge) { + LayoutUnit content_extent = CrossAxisContentExtent(); + for (const FlexLine& line_context : line_contexts) { + for (const FlexItem& flex_item : line_context.line_items) { + LayoutUnit line_cross_axis_extent = line_context.cross_axis_extent; + LayoutUnit original_offset = + line_context.cross_axis_offset - cross_axis_start_edge; + LayoutUnit new_offset = + content_extent - original_offset - line_cross_axis_extent; + AdjustAlignmentForChild(*flex_item.box, new_offset - original_offset); + } + } +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_flexible_box.h b/third_party/blink/renderer/core/layout/layout_flexible_box.h index d2a5a4c6..47977523 100644 --- a/third_party/blink/renderer/core/layout/layout_flexible_box.h +++ b/third_party/blink/renderer/core/layout/layout_flexible_box.h
@@ -201,9 +201,11 @@ LayoutUnit cross_axis_offset, LayoutUnit available_free_space); void AlignFlexLines(FlexLayoutAlgorithm&); - void AlignChildren(FlexLayoutAlgorithm&); + void AlignChildren(Vector<FlexLine>&); void ApplyStretchAlignmentToChild(FlexItem& child); void FlipForRightToLeftColumn(const Vector<FlexLine>& line_contexts); + void FlipForWrapReverse(const Vector<FlexLine>&, + LayoutUnit cross_axis_start_edge); float CountIntrinsicSizeForAlgorithmChange( LayoutUnit max_preferred_width,
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc index ab9ab64..991b5b0 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
@@ -14,8 +14,8 @@ text_({text.TextShapeResult(), text.StartOffset(), text.EndOffset()}), rect_({PhysicalOffset(), text.Size()}), type_(kText), + sub_type_(static_cast<unsigned>(text.TextType())), style_variant_(static_cast<unsigned>(text.StyleVariant())), - is_flow_control_(text.IsFlowControl()), is_hidden_for_paint_(false), text_direction_(static_cast<unsigned>(text.ResolvedDirection())) { DCHECK_LE(text_.start_offset, text_.end_offset);
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h index 526f635e..59fdad4 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
@@ -10,6 +10,7 @@ #include "third_party/blink/renderer/core/layout/layout_object.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_line_height_metrics.h" +#include "third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.h" #include "third_party/blink/renderer/platform/graphics/paint/display_item_client.h" namespace blink { @@ -88,6 +89,7 @@ return layout_object_->EffectiveStyle(StyleVariant()); } const LayoutObject* GetLayoutObject() const { return layout_object_; } + Node* GetNode() const { return layout_object_->GetNode(); } bool HasSameParent(const NGFragmentItem& other) const; const PhysicalRect& Rect() const { return rect_; } @@ -116,8 +118,6 @@ return nullptr; } - Node* GetNode() const { return layout_object_->GetNode(); } - NGTextFragmentPaintInfo TextPaintInfo(const NGFragmentItems& items) const; // DisplayItemClient overrides @@ -188,13 +188,6 @@ return MutableForPainting(*this); } - // Functions for |TextItem| and |GeneratedTextItem| - - bool IsFlowControl() const { - DCHECK_EQ(Type(), kText); - return is_flow_control_; - } - bool IsHorizontal() const { return IsHorizontalWritingMode(GetWritingMode()); } @@ -204,10 +197,32 @@ return Style().GetWritingMode(); } - // TODO(yosin): We'll implement following functions. - bool IsLineBreak() const { return false; } - bool IsEllipsis() const { return false; } - bool IsSymbolMarker() const { return false; } + // Functions for |TextItem| and |GeneratedTextItem| + using NGTextType = NGPhysicalTextFragment::NGTextType; + NGTextType TextType() const { + DCHECK_EQ(Type(), kText); + return static_cast<NGTextType>(sub_type_); + } + + // True if this is a forced line break. + bool IsLineBreak() const { + return TextType() == NGTextType::kForcedLineBreak; + } + + // True if this is not for painting; i.e., a forced line break, a tabulation, + // or a soft-wrap opportunity. + bool IsFlowControl() const { + return IsLineBreak() || TextType() == NGTextType::kFlowControl; + } + + // True if this is an ellpisis generated by `text-overflow: ellipsis`. + bool IsEllipsis() const { + return StyleVariant() == NGStyleVariant::kEllipsis; + } + + bool IsSymbolMarker() const { + return TextType() == NGTextType::kSymbolMarker; + } const ShapeResultView* TextShapeResult() const; @@ -289,10 +304,8 @@ // Note: We should not add |bidi_level_| because it is used only for layout. unsigned type_ : 2; // ItemType + unsigned sub_type_ : 3; // NGTextType unsigned style_variant_ : 2; // NGStyleVariant - // TODO(yosin): We will change |is_flow_control_| to call |IsLineBreak()| and - // |TextType() == kFlowControl|. - unsigned is_flow_control_ : 1; unsigned is_hidden_for_paint_ : 1; // Note: For |TextItem| and |GeneratedTextItem|, |text_direction_| equals to // |ShapeResult::Direction()|.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc index 13114b5..60320b36 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc
@@ -606,9 +606,9 @@ return container_builder_.Abort( NGLayoutResult::kBfcBlockOffsetResolved); } - BreakBeforeChild(child, kBreakAppealPerfect, - /* is_forced_break */ false, - &previous_inflow_position); + container_builder_.AddBreakBeforeChild(child, kBreakAppealPerfect, + /* is_forced_break */ false); + SetFragmentainerOutOfSpace(&previous_inflow_position); break; } @@ -1198,12 +1198,12 @@ has_processed_first_child_ || child_margin_got_separated || child_bfc_offset.block_offset > child_bfc_offset_estimate || layout_result->IsPushedByFloats(); - BreakStatus break_status = BreakBeforeChildIfNeeded( + NGBreakStatus break_status = BreakBeforeChildIfNeeded( child, *layout_result, previous_inflow_position, logical_offset.block_offset, has_container_separation); - if (break_status == kBrokeBefore) + if (break_status == NGBreakStatus::kBrokeBefore) return NGLayoutResult::kSuccess; - if (break_status == kNeedsEarlierBreak) + if (break_status == NGBreakStatus::kNeedsEarlierBreak) return NGLayoutResult::kNeedsEarlierBreak; EBreakBetween break_after = JoinFragmentainerBreakValues( layout_result->FinalBreakAfter(), child.Style().BreakAfter()); @@ -1693,12 +1693,12 @@ bool has_container_separation = has_processed_first_child_ || (layout_result->IsPushedByFloats() && !container_builder_.IsPushedByFloats()); - BreakStatus break_status = BreakBeforeChildIfNeeded( + NGBreakStatus break_status = BreakBeforeChildIfNeeded( child, *layout_result, previous_inflow_position, logical_offset.block_offset, has_container_separation); - if (break_status == kBrokeBefore) + if (break_status == NGBreakStatus::kBrokeBefore) return NGLayoutResult::kSuccess; - if (break_status == kNeedsEarlierBreak) + if (break_status == NGBreakStatus::kNeedsEarlierBreak) return NGLayoutResult::kNeedsEarlierBreak; EBreakBetween break_after = JoinFragmentainerBreakValues( layout_result->FinalBreakAfter(), child.Style().BreakAfter()); @@ -1987,31 +1987,16 @@ return block_offset >= FragmentainerSpaceAvailable(); } -LayoutUnit NGBlockLayoutAlgorithm::OffsetFromFragmentainerStart() const { - DCHECK(container_builder_.BfcBlockOffset()); - return ConstraintSpace().FragmentainerOffsetAtBfc() + - *container_builder_.BfcBlockOffset(); -} +void NGBlockLayoutAlgorithm::SetFragmentainerOutOfSpace( + NGPreviousInflowPosition* previous_inflow_position) { + did_break_before_child_ = true; -LayoutUnit NGBlockLayoutAlgorithm::PortionIntersectingWithFragmentainer( - LayoutUnit block_offset, - LayoutUnit block_size) const { - LayoutUnit offset_from_fragmentainer_start = - OffsetFromFragmentainerStart() + block_offset; - // Whatever is before the block-start of the fragmentainer isn't considered to - // intersect with the fragmentainer, so subtract it (by adding the negative - // offset). - if (offset_from_fragmentainer_start < LayoutUnit()) - block_size += offset_from_fragmentainer_start; - return block_size; -} - -void NGBlockLayoutAlgorithm::PropagateUnbreakableBlockSize( - LayoutUnit block_offset, - LayoutUnit block_size) { - DCHECK(ConstraintSpace().IsInitialColumnBalancingPass()); - block_size = PortionIntersectingWithFragmentainer(block_offset, block_size); - container_builder_.PropagateTallestUnbreakableBlockSize(block_size); + if (ConstraintSpace().HasKnownFragmentainerBlockSize()) { + // The remaining part of the fragmentainer (the unusable space for child + // content, due to the break) should still be occupied by this container. + previous_inflow_position->logical_block_offset = + FragmentainerSpaceAvailable(); + } } bool NGBlockLayoutAlgorithm::FinalizeForFragmentation() { @@ -2080,8 +2065,7 @@ return true; } -NGBlockLayoutAlgorithm::BreakStatus -NGBlockLayoutAlgorithm::BreakBeforeChildIfNeeded( +NGBreakStatus NGBlockLayoutAlgorithm::BreakBeforeChildIfNeeded( NGLayoutInputNode child, const NGLayoutResult& layout_result, NGPreviousInflowPosition* previous_inflow_position, @@ -2092,113 +2076,49 @@ // If the BFC offset is unknown, there's nowhere to break, since there's no // non-empty child content yet (as that would have resolved the BFC offset). if (!container_builder_.BfcBlockOffset()) - return kContinueWithoutBreaking; + return NGBreakStatus::kContinue; // If we already know where to insert the break, we already know that it's not // going to be here, since that's something we check before entering layout of // a child. if (early_break_) - return kContinueWithoutBreaking; + return NGBreakStatus::kContinue; - NGBreakAppeal appeal_before = kBreakAppealPerfect; + LayoutUnit fragmentainer_block_offset = + ConstraintSpace().FragmentainerOffsetAtBfc() + + *container_builder_.BfcBlockOffset() + block_offset; + if (has_container_separation) { EBreakBetween break_between = CalculateBreakBetweenValue(child, layout_result, container_builder_); if (IsForcedBreakValue(ConstraintSpace(), break_between)) { - BreakBeforeChild(child, layout_result, block_offset, kBreakAppealPerfect, - /* is_forced_break */ true, previous_inflow_position); - return kBrokeBefore; - } - - // If there's a break-{after,before}:avoid* involved at this breakpoint, - // its appeal will decrease. - if (IsAvoidBreakValue(ConstraintSpace(), break_between)) - appeal_before = kBreakAppealViolatingBreakAvoid; - } else { - // This is not a valid break point. If there's no container separation, it - // means that we're breaking before the first piece of in-flow content - // inside this block, even if it's not a valid class C break point [1] We - // really don't want to break here, if we can find something better. - // - // [1] https://www.w3.org/TR/css-break-3/#possible-breaks - appeal_before = kBreakAppealLastResort; - } - - const auto& physical_fragment = layout_result.PhysicalFragment(); - NGFragment fragment(ConstraintSpace().GetWritingMode(), physical_fragment); - - if (!ConstraintSpace().HasKnownFragmentainerBlockSize()) { - if (ConstraintSpace().IsInitialColumnBalancingPass()) { - if (child.IsMonolithic() || - (child.IsBlock() && - IsAvoidBreakValue(ConstraintSpace(), child.Style().BreakInside()))) { - // If this is the initial column balancing pass, attempt to make the - // column block-size at least as large as the tallest piece of - // monolithic content and/or block with break-inside:avoid. - PropagateUnbreakableBlockSize(block_offset, fragment.BlockSize()); - } - } - // We only care about soft breaks if we have a fragmentainer block-size. - // During column balancing this may be unknown. - return kContinueWithoutBreaking; - } - - if (IsA<NGBlockBreakToken>(physical_fragment.BreakToken())) { - // The block child broke inside. We now need to decide whether to keep that - // break, or if it would be better to break before it. - NGBreakAppeal appeal_inside = CalculateBreakAppealInside( - ConstraintSpace(), To<NGBlockNode>(child), layout_result); - // Allow breaking inside if it has the same appeal or higher than breaking - // before or breaking earlier. - if (appeal_inside >= appeal_before && - (!container_builder_.HasEarlyBreak() || - appeal_inside >= container_builder_.BreakAppeal())) { - container_builder_.SetBreakAppeal(appeal_inside); - return kContinueWithoutBreaking; - } - } else { - LayoutUnit space_left = FragmentainerSpaceAvailable() - block_offset; - bool want_break; - if (child.IsMonolithic()) { - // If the monolithic piece of content (e.g. a line, or block-level - // replaced content) doesn't fit, we need a break. - want_break = fragment.BlockSize() > space_left; - } else { - // If the block-offset is past the fragmentainer boundary (or exactly at - // the boundary), no part of the fragment is going to fit in the current - // fragmentainer. Fragments may be pushed past the fragmentainer boundary - // by margins. - want_break = space_left <= LayoutUnit(); - } - if (want_break) { - // If we haven't used any space at all in the fragmentainer yet, though, - // we cannot break even if we really want to, or there'd be no progress. - // We'd end up creating an infinite number of fragmentainers without - // putting any content into them. - if (space_left >= ConstraintSpace().FragmentainerBlockSize()) - want_break = false; - } - - if (!want_break) { - if (child.IsBlock()) { - // If this doesn't happen, though, we're tentatively not going to break - // before or inside this child, but we'll check the appeal of breaking - // there anyway. It may be the best breakpoint we'll ever find. (Note - // that we only do this for block children, since, when it comes to - // inline layout, we first need to lay out all the line boxes, so that - // we know what do to in order to honor orphans and widows, if at all - // possible.) - UpdateEarlyBreakAtBlockChild(To<NGBlockNode>(child), layout_result, - appeal_before); - } - return kContinueWithoutBreaking; + BreakBeforeChild(ConstraintSpace(), child, layout_result, + fragmentainer_block_offset, kBreakAppealPerfect, + /* is_forced_break */ true, &container_builder_); + SetFragmentainerOutOfSpace(previous_inflow_position); + return NGBreakStatus::kBrokeBefore; } } + NGBreakAppeal appeal_before = + CalculateBreakAppealBefore(ConstraintSpace(), child, layout_result, + container_builder_, has_container_separation); + + // Attempt to move past the break point, and if we can do that, also assess + // the appeal of breaking there, even if we didn't. + if (MovePastBreakpoint(ConstraintSpace(), child, layout_result, + fragmentainer_block_offset, appeal_before, + &container_builder_)) + return NGBreakStatus::kContinue; + // Figure out where to insert a soft break. It will either be before this // child, or before an earlier sibling, if there's a more appealing breakpoint // there. + // If we decided to insert a soft break, we have to know the fragmentainer + // block-size. + DCHECK(ConstraintSpace().HasKnownFragmentainerBlockSize()); + if (child.IsInline()) { if (!first_overflowing_line_) { // We're at the first overflowing line. This is the space shortage that @@ -2210,7 +2130,8 @@ // require an additional piece of machinery. This case should be rare // enough (to worry about performance), so let's focus on code // simplicity instead. - PropagateSpaceShortage(layout_result, block_offset); + PropagateSpaceShortage(ConstraintSpace(), layout_result, + fragmentainer_block_offset, &container_builder_); } // Attempt to honor orphans and widows requests. if (int line_count = container_builder_.LineCount()) { @@ -2248,7 +2169,7 @@ // (if at all possible), which means that lines that could fit in the // current fragment (that we have already laid out) may have to be // saved for the next fragment. - return kContinueWithoutBreaking; + return NGBreakStatus::kContinue; } // We have determined that there are plenty of lines for the next @@ -2259,138 +2180,13 @@ } } - // So, we've run out of space, and the child won't fit here. But if there's a - // breakpoint with higher appeal among earlier siblings, abort and re-layout - // to that breakpoint now. - if (container_builder_.HasEarlyBreak() && - container_builder_.BreakAppeal() > appeal_before) { - // Found a better place to break. Before aborting, calculate and report - // space shortage from where we'd actually break. - PropagateSpaceShortage(layout_result, block_offset); - return kNeedsEarlierBreak; - } + if (!AttemptSoftBreak(ConstraintSpace(), child, layout_result, + fragmentainer_block_offset, appeal_before, + &container_builder_)) + return NGBreakStatus::kNeedsEarlierBreak; - // Break before the child. Note that there may be a better break further up - // with higher appeal (but it's too early to tell), in which case this - // breakpoint will be replaced. - BreakBeforeChild(child, layout_result, block_offset, appeal_before, - /* is_forced_break */ false, previous_inflow_position); - return kBrokeBefore; -} - -void NGBlockLayoutAlgorithm::BreakBeforeChild( - NGLayoutInputNode child, - const NGLayoutResult& layout_result, - LayoutUnit block_offset, - NGBreakAppeal appeal, - bool is_forced_break, - NGPreviousInflowPosition* previous_inflow_position) { -#if DCHECK_IS_ON() - // In order to successfully break before a node, this has to be its first - // fragment. - const auto& physical_fragment = layout_result.PhysicalFragment(); - DCHECK(!physical_fragment.IsBox() || - To<NGPhysicalBoxFragment>(physical_fragment).IsFirstForNode()); -#endif - - // Report space shortage. Note that we're not doing this for line boxes here - // (only blocks), because line boxes need handle it in their own way (due to - // how we implement widows). - if (child.IsBlock()) - PropagateSpaceShortage(layout_result, block_offset); - - BreakBeforeChild(child, appeal, is_forced_break, previous_inflow_position); -} - -void NGBlockLayoutAlgorithm::BreakBeforeChild( - NGLayoutInputNode child, - NGBreakAppeal appeal, - bool is_forced_break, - NGPreviousInflowPosition* previous_inflow_position) { - did_break_before_child_ = true; - - if (ConstraintSpace().HasKnownFragmentainerBlockSize()) { - // The remaining part of the fragmentainer (the unusable space for child - // content, due to the break) should still be occupied by this container. - previous_inflow_position->logical_block_offset = - FragmentainerSpaceAvailable(); - } - - DCHECK(is_forced_break || ConstraintSpace().HasKnownFragmentainerBlockSize()); - - // This will drop the fragment (if any) on the floor and retry at the start of - // the next fragmentainer. - container_builder_.AddBreakBeforeChild(child, appeal, is_forced_break); -} - -void NGBlockLayoutAlgorithm::PropagateSpaceShortage( - const NGLayoutResult& layout_result, - LayoutUnit block_offset) { - // There's no shortage to report in the initial column balancing pass, since - // we haven't even calculated a tentative column block-size yet. - if (ConstraintSpace().IsInitialColumnBalancingPass()) - return; - - // Only multicol cares about space shortage. - if (ConstraintSpace().BlockFragmentationType() != kFragmentColumn) - return; - - LayoutUnit space_shortage; - if (layout_result.MinimalSpaceShortage() == LayoutUnit::Max()) { - // Calculate space shortage: Figure out how much more space would have been - // sufficient to make the child fit right here in the current fragment. - NGFragment fragment(ConstraintSpace().GetWritingMode(), - layout_result.PhysicalFragment()); - LayoutUnit space_left = FragmentainerSpaceAvailable() - block_offset; - space_shortage = fragment.BlockSize() - space_left; - } else { - // However, if space shortage was reported inside the child, use that. If we - // broke inside the child, we didn't complete layout, so calculating space - // shortage for the child as a whole would be impossible and pointless. - space_shortage = layout_result.MinimalSpaceShortage(); - } - - // TODO(mstensho): Turn this into a DCHECK, when the engine is ready for - // it. Space shortage should really be positive here, or we might ultimately - // fail to stretch the columns (column balancing). - if (space_shortage > LayoutUnit()) - container_builder_.PropagateSpaceShortage(space_shortage); -} - -void NGBlockLayoutAlgorithm::UpdateEarlyBreakAtBlockChild( - NGBlockNode child, - const NGLayoutResult& layout_result, - NGBreakAppeal appeal_before) { - // We shouldn't be here if we already know where to break. - DCHECK(!early_break_); - - // If the child already broke, it's a little too late to look for breakpoints. - DCHECK(!layout_result.PhysicalFragment().BreakToken()); - - // See if there's a good breakpoint inside the child. - NGBreakAppeal appeal_inside = kBreakAppealLastResort; - if (scoped_refptr<const NGEarlyBreak> breakpoint = - layout_result.GetEarlyBreak()) { - appeal_inside = - CalculateBreakAppealInside(ConstraintSpace(), child, layout_result); - if (container_builder_.BreakAppeal() <= appeal_inside) { - // Found a good breakpoint inside the child. Add the child to the early - // break container chain, and store it. - auto parent_break = base::AdoptRef(new NGEarlyBreak(child, breakpoint)); - container_builder_.SetEarlyBreak(parent_break, appeal_inside); - } - } - - // Breaking before isn't better if it's less appealing than what we already - // have (obviously), and also not if it has the same appeal as the break - // location inside the child that we just found (when the appeal is the same, - // whatever takes us further wins). - if (appeal_before < container_builder_.BreakAppeal() || - appeal_before == appeal_inside) - return; - - container_builder_.SetEarlyBreak(base::AdoptRef(new NGEarlyBreak(child)), - appeal_before); + SetFragmentainerOutOfSpace(previous_inflow_position); + return NGBreakStatus::kBrokeBefore; } void NGBlockLayoutAlgorithm::UpdateEarlyBreakBetweenLines() {
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h index 31223a2..251ad126 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h +++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
@@ -20,6 +20,7 @@ namespace blink { +enum class NGBreakStatus; class NGConstraintSpace; class NGEarlyBreak; class NGFragment; @@ -221,20 +222,8 @@ // whether fits within the fragmentainer or not. bool IsFragmentainerOutOfSpace(LayoutUnit block_offset) const; - // Return the block-offset from the start of the fragmentainer, to this node. - LayoutUnit OffsetFromFragmentainerStart() const; - - // Return the block-size of the portion that intersects with the - // fragmentainer. The block-offset is relative to this node. - LayoutUnit PortionIntersectingWithFragmentainer(LayoutUnit block_offset, - LayoutUnit block_size) const; - - // Propagate the block-size of unbreakable content. This is used to inflate - // the initial minimal column block-size when balancing columns. Unbreakable - // content will actually fragment if the columns aren't large enough, and we - // want to prevent that, if possible. - void PropagateUnbreakableBlockSize(LayoutUnit block_offset, - LayoutUnit block_size); + // Signal that we've reached the end of the fragmentainer. + void SetFragmentainerOutOfSpace(NGPreviousInflowPosition*); // Final adjustments before fragment creation. We need to prevent the fragment // from crossing fragmentainer boundaries, and rather create a break token if @@ -244,34 +233,15 @@ // returned. bool FinalizeForFragmentation(); - // Outcome of considering (and possibly attempting) breaking before a child. - enum BreakStatus { - // Continue layout. No break was inserted before the child (but there may be - // a break inside). - kContinueWithoutBreaking, - - // A break was inserted before the child. Discard the child fragment and - // finish layout of the container. If there was a break inside the child, it - // will be discarded along with the child fragment. - kBrokeBefore, - - // The child couldn't fit here, but no break was inserted before the child, - // as it was an unappealing place to break, and we have a better earlier - // breakpoint. We now need to abort the current layout, and go back and - // re-layout to said earlier breakpoint. - kNeedsEarlierBreak - }; - // Insert a fragmentainer break before the child if necessary. In that case, // the previous in-flow position will be updated, we'll return |kBrokeBefore|. // If we don't break inside, we'll consider the appeal of doing so anyway (and // store it as the most appealing break point so far if that's the case), - // since we might have to go back and break here. Return - // |kContinueWithoutBreaking| if we're to continue laying out. If - // |kNeedsEarlierBreak| is returned, it means that we ran out of space, but - // shouldn't break before the child, but rather abort layout, and re-layout to - // a previously found good breakpoint. - // If |has_container_separation| is true, it means that we're at a valid + // since we might have to go back and break here. Return |kContinue| if we're + // to continue laying out. If |kNeedsEarlierBreak| is returned, it means that + // we ran out of space, but shouldn't break before the child, but rather abort + // layout, and re-layout to a previously found good breakpoint. If + // |has_container_separation| is true, it means that we're at a valid // breakpoint. We obviously prefer valid breakpoints, but sometimes we need to // break at undesirable locations. Class A breakpoints occur between block // siblings. Class B breakpoints between line boxes. Both these breakpoint @@ -281,32 +251,11 @@ // block-start content edge of the container and the block-start margin edge // of the first in-flow child. This can happen when in-flow content is pushed // down by floats. https://www.w3.org/TR/css-break-3/#possible-breaks - BreakStatus BreakBeforeChildIfNeeded(NGLayoutInputNode child, - const NGLayoutResult&, - NGPreviousInflowPosition*, - LayoutUnit block_offset, - bool has_container_separation); - - // Insert either a soft or forced break before the child. - void BreakBeforeChild(NGLayoutInputNode child, - const NGLayoutResult&, - LayoutUnit block_offset, - NGBreakAppeal, - bool is_forced_break, - NGPreviousInflowPosition*); - void BreakBeforeChild(NGLayoutInputNode child, - NGBreakAppeal, - bool is_forced_break, - NGPreviousInflowPosition*); - - // Propagate the minimal space shortage from a child. - void PropagateSpaceShortage(const NGLayoutResult&, LayoutUnit block_offset); - - // Look for a better breakpoint (than we already have) either before the child - // (class A breakpoint), or inside it (class A or B breakpoint), and store it. - void UpdateEarlyBreakAtBlockChild(NGBlockNode child, - const NGLayoutResult& layout_result, - NGBreakAppeal break_before); + NGBreakStatus BreakBeforeChildIfNeeded(NGLayoutInputNode child, + const NGLayoutResult&, + NGPreviousInflowPosition*, + LayoutUnit block_offset, + bool has_container_separation); // Look for a better breakpoint (than we already have) between lines (i.e. a // class B breakpoint), and store it.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc index 14134e6..bbfc903 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
@@ -527,72 +527,60 @@ return container_builder_.ToBoxFragment(); } -void NGFlexLayoutAlgorithm::ApplyStretchAlignmentToChild(FlexItem& flex_item) { - WritingMode child_writing_mode = - flex_item.ng_input_node.Style().GetWritingMode(); - NGConstraintSpaceBuilder space_builder(ConstraintSpace(), child_writing_mode, - /* is_new_fc */ true); - SetOrthogonalFallbackInlineSizeIfNeeded(Style(), flex_item.ng_input_node, - &space_builder); - - LogicalSize available_size( - flex_item.flexed_content_size + flex_item.main_axis_border_padding, - flex_item.cross_axis_size); - if (is_column_) { - available_size.Transpose(); - if (!IsColumnContainerMainSizeDefinite() && - !IsItemMainSizeDefinite(flex_item.ng_input_node)) { - space_builder.SetIsFixedBlockSizeIndefinite(true); - } - } - space_builder.SetAvailableSize(available_size); - space_builder.SetPercentageResolutionSize(content_box_size_); - space_builder.SetIsFixedInlineSize(true); - space_builder.SetIsFixedBlockSize(true); - NGConstraintSpace child_space = space_builder.ToConstraintSpace(); - flex_item.layout_result = - flex_item.ng_input_node.Layout(child_space, /* break_token */ nullptr); -} - void NGFlexLayoutAlgorithm::GiveLinesAndItemsFinalPositionAndSize() { - Vector<FlexLine>& line_contexts = algorithm_->FlexLines(); - const LayoutUnit cross_axis_start_edge = - line_contexts.IsEmpty() ? LayoutUnit() - : line_contexts[0].cross_axis_offset; - const LayoutUnit final_content_cross_size = + // TODO(dgrogan): This needs to eventually encompass all of the behavior in + // LayoutFlexibleBox::RepositionLogicalHeightDependentFlexItems. It currently + // does AlignFlexLines and the stretch part of AlignChildren. + LayoutUnit final_content_cross_size = is_column_ ? container_builder_.InlineSize() - border_scrollbar_padding_.InlineSum() : container_builder_.BlockSize() - border_scrollbar_padding_.BlockSum(); - - // TODO(dgrogan): Implement the behavior from - // LayoutFlexibleBox::LayoutColumnReverse here. - - if (!algorithm_->IsMultiline() && !line_contexts.IsEmpty()) - line_contexts[0].cross_axis_extent = final_content_cross_size; + if (!algorithm_->IsMultiline() && !algorithm_->FlexLines().IsEmpty()) + algorithm_->FlexLines()[0].cross_axis_extent = final_content_cross_size; algorithm_->AlignFlexLines(final_content_cross_size); - algorithm_->AlignChildren(); - - if (Style().FlexWrap() == EFlexWrap::kWrapReverse) { - // flex-wrap: wrap-reverse reverses the order of the lines in the container; - // FlipForWrapReverse recalculates each item's cross axis position. We have - // to do that after AlignChildren sets an initial cross axis position. - algorithm_->FlipForWrapReverse(cross_axis_start_edge, - final_content_cross_size); - } - - for (FlexLine& line_context : line_contexts) { + for (FlexLine& line_context : algorithm_->FlexLines()) { for (wtf_size_t child_number = 0; child_number < line_context.line_items.size(); ++child_number) { FlexItem& flex_item = line_context.line_items[child_number]; - if (DoesItemStretch(flex_item.ng_input_node)) - ApplyStretchAlignmentToChild(flex_item); + // UpdateAutoMarginsInCrossAxis updates the flex_item's desired_location + // if the auto margins have an effect. + if (!flex_item.UpdateAutoMarginsInCrossAxis( + std::max(LayoutUnit(), flex_item.AvailableAlignmentSpace())) && + flex_item.Alignment() == ItemPosition::kStretch) { + flex_item.ComputeStretchedSize(); - // TODO(dgrogan): Implement behavior from legacy's - // FlipForRightToLeftColumn here. + WritingMode child_writing_mode = + flex_item.ng_input_node.Style().GetWritingMode(); + NGConstraintSpaceBuilder space_builder(ConstraintSpace(), + child_writing_mode, + /* is_new_fc */ true); + SetOrthogonalFallbackInlineSizeIfNeeded( + Style(), flex_item.ng_input_node, &space_builder); + + LogicalSize available_size( + flex_item.flexed_content_size + flex_item.main_axis_border_padding, + flex_item.cross_axis_size); + if (is_column_) { + available_size.Transpose(); + if (!IsColumnContainerMainSizeDefinite() && + !IsItemMainSizeDefinite(flex_item.ng_input_node)) { + space_builder.SetIsFixedBlockSizeIndefinite(true); + } + } + space_builder.SetAvailableSize(available_size); + space_builder.SetPercentageResolutionSize(content_box_size_); + space_builder.SetIsFixedInlineSize(true); + space_builder.SetIsFixedBlockSize(true); + NGConstraintSpace child_space = space_builder.ToConstraintSpace(); + flex_item.layout_result = flex_item.ng_input_node.Layout( + child_space, /* break_token */ nullptr); + } + // TODO(dgrogan): Add an extra pass for kColumnReverse containers like + // legacy does in LayoutColumnReverse. // flex_item.desired_location stores the main axis offset in X and the // cross axis offset in Y. But AddChild wants offset from parent
diff --git a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.h index f525ca5..b9af9a2 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.h +++ b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.h
@@ -43,7 +43,6 @@ NGConstraintSpace BuildConstraintSpaceForDeterminingFlexBasis( const NGBlockNode& flex_item) const; void ConstructAndAppendFlexItems(); - void ApplyStretchAlignmentToChild(FlexItem& flex_item); void GiveLinesAndItemsFinalPositionAndSize(); // This is same method as FlexItem but we need that logic before FlexItem is // constructed.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc index 31af104..d0b3b243 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc
@@ -110,6 +110,31 @@ return builder.JoinedBreakBetweenValue(break_before); } +NGBreakAppeal CalculateBreakAppealBefore(const NGConstraintSpace& space, + NGLayoutInputNode child, + const NGLayoutResult& layout_result, + const NGBoxFragmentBuilder& builder, + bool has_container_separation) { + if (!has_container_separation) { + // This is not a valid break point. If there's no container separation, it + // means that we're breaking before the first piece of in-flow content + // inside this block, even if it's not a valid class C break point [1]. We + // really don't want to break here, if we can find something better. + // + // [1] https://www.w3.org/TR/css-break-3/#possible-breaks + return kBreakAppealLastResort; + } + + EBreakBetween break_between = + CalculateBreakBetweenValue(child, layout_result, builder); + // If there's a break-{after,before}:avoid* involved at this breakpoint, + // its appeal will decrease. + if (IsAvoidBreakValue(space, break_between)) + return kBreakAppealViolatingBreakAvoid; + + return kBreakAppealPerfect; +} + NGBreakAppeal CalculateBreakAppealInside(const NGConstraintSpace& space, NGBlockNode child, const NGLayoutResult& layout_result) { @@ -188,4 +213,209 @@ builder->SetIntrinsicBlockSize(intrinsic_block_size); } +void BreakBeforeChild(const NGConstraintSpace& space, + NGLayoutInputNode child, + const NGLayoutResult& layout_result, + LayoutUnit fragmentainer_block_offset, + NGBreakAppeal appeal, + bool is_forced_break, + NGBoxFragmentBuilder* builder) { +#if DCHECK_IS_ON() + // In order to successfully break before a node, this has to be its first + // fragment. + const auto& physical_fragment = layout_result.PhysicalFragment(); + DCHECK(!physical_fragment.IsBox() || + To<NGPhysicalBoxFragment>(physical_fragment).IsFirstForNode()); +#endif + + // Report space shortage. Note that we're not doing this for line boxes here + // (only blocks), because line boxes need handle it in their own way (due to + // how we implement widows). + if (child.IsBlock() && space.HasKnownFragmentainerBlockSize()) { + PropagateSpaceShortage(space, layout_result, fragmentainer_block_offset, + builder); + } + + // If the fragmentainer block-size is unknown, we have no reason to insert + // soft breaks. + DCHECK(is_forced_break || space.HasKnownFragmentainerBlockSize()); + + // We'll drop the fragment (if any) on the floor and retry at the start of the + // next fragmentainer. + builder->AddBreakBeforeChild(child, appeal, is_forced_break); +} + +void PropagateSpaceShortage(const NGConstraintSpace& space, + const NGLayoutResult& layout_result, + LayoutUnit fragmentainer_block_offset, + NGBoxFragmentBuilder* builder) { + // Space shortage is only reported for soft breaks, and they can only exist if + // we know the fragmentainer block-size. + DCHECK(space.HasKnownFragmentainerBlockSize()); + + // Only multicol cares about space shortage. + if (space.BlockFragmentationType() != kFragmentColumn) + return; + + LayoutUnit space_shortage; + if (layout_result.MinimalSpaceShortage() == LayoutUnit::Max()) { + // Calculate space shortage: Figure out how much more space would have been + // sufficient to make the child fit right here in the current fragment. + NGFragment fragment(space.GetWritingMode(), + layout_result.PhysicalFragment()); + space_shortage = fragmentainer_block_offset + fragment.BlockSize() - + space.FragmentainerBlockSize(); + } else { + // However, if space shortage was reported inside the child, use that. If we + // broke inside the child, we didn't complete layout, so calculating space + // shortage for the child as a whole would be impossible and pointless. + space_shortage = layout_result.MinimalSpaceShortage(); + } + + // TODO(mstensho): Turn this into a DCHECK, when the engine is ready for + // it. Space shortage should really be positive here, or we might ultimately + // fail to stretch the columns (column balancing). + if (space_shortage > LayoutUnit()) + builder->PropagateSpaceShortage(space_shortage); +} + +bool MovePastBreakpoint(const NGConstraintSpace& space, + NGLayoutInputNode child, + const NGLayoutResult& layout_result, + LayoutUnit fragmentainer_block_offset, + NGBreakAppeal appeal_before, + NGBoxFragmentBuilder* builder) { + const auto& physical_fragment = layout_result.PhysicalFragment(); + NGFragment fragment(space.GetWritingMode(), physical_fragment); + + if (!space.HasKnownFragmentainerBlockSize()) { + if (space.IsInitialColumnBalancingPass()) { + if (child.IsMonolithic() || + (child.IsBlock() && + IsAvoidBreakValue(space, child.Style().BreakInside()))) { + // If this is the initial column balancing pass, attempt to make the + // column block-size at least as large as the tallest piece of + // monolithic content and/or block with break-inside:avoid. + PropagateUnbreakableBlockSize(fragment.BlockSize(), + fragmentainer_block_offset, builder); + } + } + // We only care about soft breaks if we have a fragmentainer block-size. + // During column balancing this may be unknown. + return true; + } + + if (IsA<NGBlockBreakToken>(physical_fragment.BreakToken())) { + // The block child broke inside. We now need to decide whether to keep that + // break, or if it would be better to break before it. + NGBreakAppeal appeal_inside = CalculateBreakAppealInside( + space, To<NGBlockNode>(child), layout_result); + // Allow breaking inside if it has the same appeal or higher than breaking + // before or breaking earlier. + if (appeal_inside >= appeal_before && + (!builder->HasEarlyBreak() || + appeal_inside >= builder->BreakAppeal())) { + builder->SetBreakAppeal(appeal_inside); + return true; + } + } else { + LayoutUnit space_left = + space.FragmentainerBlockSize() - fragmentainer_block_offset; + bool need_break; + if (child.IsMonolithic()) { + // If the monolithic piece of content (e.g. a line, or block-level + // replaced content) doesn't fit, we need a break. + need_break = fragment.BlockSize() > space_left; + } else { + // If the block-offset is past the fragmentainer boundary (or exactly at + // the boundary), no part of the fragment is going to fit in the current + // fragmentainer. Fragments may be pushed past the fragmentainer boundary + // by margins. + need_break = space_left <= LayoutUnit(); + } + if (need_break) { + // If we haven't used any space at all in the fragmentainer yet, though, + // we cannot break even if we really want to, or there'd be no progress. + // We'd end up creating an infinite number of fragmentainers without + // putting any content into them. + if (space_left >= space.FragmentainerBlockSize()) + need_break = false; + } + + if (!need_break) { + if (child.IsBlock()) { + // If this doesn't happen, though, we're tentatively not going to break + // before or inside this child, but we'll check the appeal of breaking + // there anyway. It may be the best breakpoint we'll ever find. (Note + // that we only do this for block children, since, when it comes to + // inline layout, we first need to lay out all the line boxes, so that + // we know what do to in order to honor orphans and widows, if at all + // possible.) + UpdateEarlyBreakAtBlockChild(space, To<NGBlockNode>(child), + layout_result, appeal_before, builder); + } + return true; + } + } + + // We don't want to break inside, so we should attempt to break before. + return false; +} + +void UpdateEarlyBreakAtBlockChild(const NGConstraintSpace& space, + NGBlockNode child, + const NGLayoutResult& layout_result, + NGBreakAppeal appeal_before, + NGBoxFragmentBuilder* builder) { + // If the child already broke, it's a little too late to look for breakpoints. + DCHECK(!layout_result.PhysicalFragment().BreakToken()); + + // See if there's a good breakpoint inside the child. + NGBreakAppeal appeal_inside = kBreakAppealLastResort; + if (scoped_refptr<const NGEarlyBreak> breakpoint = + layout_result.GetEarlyBreak()) { + appeal_inside = CalculateBreakAppealInside(space, child, layout_result); + if (builder->BreakAppeal() <= appeal_inside) { + // Found a good breakpoint inside the child. Add the child to the early + // break container chain, and store it. + auto parent_break = base::AdoptRef(new NGEarlyBreak(child, breakpoint)); + builder->SetEarlyBreak(parent_break, appeal_inside); + } + } + + // Breaking before isn't better if it's less appealing than what we already + // have (obviously), and also not if it has the same appeal as the break + // location inside the child that we just found (when the appeal is the same, + // whatever takes us further wins). + if (appeal_before < builder->BreakAppeal() || appeal_before == appeal_inside) + return; + + builder->SetEarlyBreak(base::AdoptRef(new NGEarlyBreak(child)), + appeal_before); +} + +bool AttemptSoftBreak(const NGConstraintSpace& space, + NGLayoutInputNode child, + const NGLayoutResult& layout_result, + LayoutUnit fragmentainer_block_offset, + NGBreakAppeal appeal_before, + NGBoxFragmentBuilder* builder) { + // if there's a breakpoint with higher appeal among earlier siblings, we need + // to abort and re-layout to that breakpoint. + if (builder->HasEarlyBreak() && builder->BreakAppeal() > appeal_before) { + // Found a better place to break. Before aborting, calculate and report + // space shortage from where we'd actually break. + PropagateSpaceShortage(space, layout_result, fragmentainer_block_offset, + builder); + return false; + } + + // Break before the child. Note that there may be a better break further up + // with higher appeal (but it's too early to tell), in which case this + // breakpoint will be replaced. + BreakBeforeChild(space, child, layout_result, fragmentainer_block_offset, + appeal_before, /* is_forced_break */ false, builder); + return true; +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h index 6e8ae1a..8fb3ade 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h +++ b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h
@@ -7,6 +7,7 @@ #include "third_party/blink/renderer/core/layout/ng/ng_block_break_token.h" #include "third_party/blink/renderer/core/layout/ng/ng_block_node.h" +#include "third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h" #include "third_party/blink/renderer/core/layout/ng/ng_constraint_space.h" #include "third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h" #include "third_party/blink/renderer/core/style/computed_style_constants.h" @@ -14,7 +15,6 @@ namespace blink { -class NGBoxFragmentBuilder; class NGLayoutResult; // Join two adjacent break values specified on break-before and/or break- @@ -51,6 +51,13 @@ const NGLayoutResult&, const NGBoxFragmentBuilder&); +// Calculate the appeal of breaking before this child. +NGBreakAppeal CalculateBreakAppealBefore(const NGConstraintSpace&, + NGLayoutInputNode child, + const NGLayoutResult&, + const NGBoxFragmentBuilder&, + bool has_container_separation); + // Calculate the appeal of breaking inside this child. NGBreakAppeal CalculateBreakAppealInside(const NGConstraintSpace& space, NGBlockNode child, @@ -84,6 +91,88 @@ LayoutUnit space_left, NGBoxFragmentBuilder*); +// Outcome of considering (and possibly attempting) breaking before a child. +enum class NGBreakStatus { + // Continue layout. No break was inserted before the child (but there may be + // a break inside). + kContinue, + + // A break was inserted before the child. Discard the child fragment and + // finish layout of the container. If there was a break inside the child, it + // will be discarded along with the child fragment. + kBrokeBefore, + + // The child couldn't fit here, but no break was inserted before the child, + // as it was an unappealing place to break, and we have a better earlier + // breakpoint. We now need to abort the current layout, and go back and + // re-layout to said earlier breakpoint. + kNeedsEarlierBreak +}; + +// Insert a break before the child, and propagate space shortage if needed. +void BreakBeforeChild(const NGConstraintSpace&, + NGLayoutInputNode child, + const NGLayoutResult&, + LayoutUnit fragmentainer_block_offset, + NGBreakAppeal, + bool is_forced_break, + NGBoxFragmentBuilder*); + +// Propagate the block-size of unbreakable content. This is used to inflate the +// initial minimal column block-size when balancing columns, before we calculate +// a tentative (or final) column block-size. Unbreakable content will actually +// fragment if the columns aren't large enough, and we want to prevent that, if +// possible. +inline void PropagateUnbreakableBlockSize(LayoutUnit block_size, + LayoutUnit fragmentainer_block_offset, + NGBoxFragmentBuilder* builder) { + // Whatever is before the block-start of the fragmentainer isn't considered to + // intersect with the fragmentainer, so subtract it (by adding the negative + // offset). + if (fragmentainer_block_offset < LayoutUnit()) + block_size += fragmentainer_block_offset; + builder->PropagateTallestUnbreakableBlockSize(block_size); +} + +// Propagate space shortage to the builder and beyond, if appropriate. This is +// something we do during column balancing, when we already have a tentative +// column block-size, as a means to calculate by how much we need to stretch the +// columns to make everything fit. +void PropagateSpaceShortage(const NGConstraintSpace&, + const NGLayoutResult&, + LayoutUnit fragmentainer_block_offset, + NGBoxFragmentBuilder*); + +// Move past the breakpoint before the child, if possible, and return true. Also +// update the appeal of breaking before or inside the child (if we're not going +// to break before it). If false is returned, it means that we need to break +// before the child (or even earlier). +bool MovePastBreakpoint(const NGConstraintSpace& space, + NGLayoutInputNode child, + const NGLayoutResult& layout_result, + LayoutUnit fragmentainer_block_offset, + NGBreakAppeal appeal_before, + NGBoxFragmentBuilder* builder); + +// If the appeal of breaking before or inside the child is the same or higher +// than any previous breakpoint we've found, set a new breakpoint in the +// builder, and update appeal accordingly. +void UpdateEarlyBreakAtBlockChild(const NGConstraintSpace&, + NGBlockNode child, + const NGLayoutResult&, + NGBreakAppeal appeal_before, + NGBoxFragmentBuilder*); + +// Attempt to insert a soft break before the child, and return true if we did. +// If false is returned, it means that the desired breakpoint is earlier in the +// container, and that we need to abort and re-layout to that breakpoint. +bool AttemptSoftBreak(const NGConstraintSpace&, + NGLayoutInputNode child, + const NGLayoutResult&, + LayoutUnit fragmentainer_block_offset, + NGBreakAppeal appeal_before, + NGBoxFragmentBuilder*); + } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FRAGMENTATION_UTILS_H_
diff --git a/third_party/blink/renderer/core/page/scrolling/element_fragment_anchor.cc b/third_party/blink/renderer/core/page/scrolling/element_fragment_anchor.cc index 6a35ba8..28b4377 100644 --- a/third_party/blink/renderer/core/page/scrolling/element_fragment_anchor.cc +++ b/third_party/blink/renderer/core/page/scrolling/element_fragment_anchor.cc
@@ -34,7 +34,8 @@ } // namespace ElementFragmentAnchor* ElementFragmentAnchor::TryCreate(const KURL& url, - LocalFrame& frame) { + LocalFrame& frame, + bool should_scroll) { DCHECK(frame.GetDocument()); Document& doc = *frame.GetDocument(); @@ -83,6 +84,10 @@ if (!anchor_node) return nullptr; + // Element fragment anchors only need to be kept alive if they need scrolling. + if (!should_scroll) + return nullptr; + return MakeGarbageCollected<ElementFragmentAnchor>(*anchor_node, frame); }
diff --git a/third_party/blink/renderer/core/page/scrolling/element_fragment_anchor.h b/third_party/blink/renderer/core/page/scrolling/element_fragment_anchor.h index bef1028..f51ce60 100644 --- a/third_party/blink/renderer/core/page/scrolling/element_fragment_anchor.h +++ b/third_party/blink/renderer/core/page/scrolling/element_fragment_anchor.h
@@ -29,7 +29,9 @@ // Parses the URL fragment and, if possible, creates and returns a fragment // based on an Element in the page. Returns nullptr otherwise. Produces side // effects related to fragment targeting in the page in either case. - static ElementFragmentAnchor* TryCreate(const KURL& url, LocalFrame& frame); + static ElementFragmentAnchor* TryCreate(const KURL& url, + LocalFrame& frame, + bool should_scroll); ElementFragmentAnchor(Node& anchor_node, LocalFrame& frame); ~ElementFragmentAnchor() override = default;
diff --git a/third_party/blink/renderer/core/page/scrolling/fragment_anchor.cc b/third_party/blink/renderer/core/page/scrolling/fragment_anchor.cc index 850f81d..db3ebbc 100644 --- a/third_party/blink/renderer/core/page/scrolling/fragment_anchor.cc +++ b/third_party/blink/renderer/core/page/scrolling/fragment_anchor.cc
@@ -15,7 +15,8 @@ FragmentAnchor* FragmentAnchor::TryCreate(const KURL& url, LocalFrame& frame, - bool same_document_navigation) { + bool same_document_navigation, + bool should_scroll) { DCHECK(frame.GetDocument()); FragmentAnchor* anchor = nullptr; @@ -28,7 +29,7 @@ bool text_fragment_anchor_created = false; if (text_fragment_identifiers_enabled) { anchor = TextFragmentAnchor::TryCreateFragmentDirective( - url, frame, same_document_navigation); + url, frame, same_document_navigation, should_scroll); text_fragment_anchor_created = anchor; } @@ -60,7 +61,7 @@ bool element_id_anchor_found = false; if (!anchor) { - anchor = ElementFragmentAnchor::TryCreate(url, frame); + anchor = ElementFragmentAnchor::TryCreate(url, frame, should_scroll); element_id_anchor_found = anchor; }
diff --git a/third_party/blink/renderer/core/page/scrolling/fragment_anchor.h b/third_party/blink/renderer/core/page/scrolling/fragment_anchor.h index 011da8b5..7550d56 100644 --- a/third_party/blink/renderer/core/page/scrolling/fragment_anchor.h +++ b/third_party/blink/renderer/core/page/scrolling/fragment_anchor.h
@@ -32,7 +32,8 @@ // will be performed, for example, setting/clearing :target and svgView(). static FragmentAnchor* TryCreate(const KURL& url, LocalFrame& frame, - bool same_document_navigation); + bool same_document_navigation, + bool should_scroll); FragmentAnchor() = default; virtual ~FragmentAnchor() = default;
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.cc index 451a3f4..3d8b5cc 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.cc
@@ -77,7 +77,8 @@ TextFragmentAnchor* TextFragmentAnchor::TryCreateFragmentDirective( const KURL& url, LocalFrame& frame, - bool same_document_navigation) { + bool same_document_navigation, + bool should_scroll) { DCHECK(RuntimeEnabledFeatures::TextFragmentIdentifiersEnabled( frame.GetDocument())); @@ -96,13 +97,16 @@ return nullptr; } - return MakeGarbageCollected<TextFragmentAnchor>(selectors, frame); + return MakeGarbageCollected<TextFragmentAnchor>(selectors, frame, + should_scroll); } TextFragmentAnchor::TextFragmentAnchor( const Vector<TextFragmentSelector>& text_fragment_selectors, - LocalFrame& frame) + LocalFrame& frame, + bool should_scroll) : frame_(&frame), + should_scroll_(should_scroll), metrics_(MakeGarbageCollected<TextFragmentAnchorMetrics>( frame_->GetDocument())) { DCHECK(!text_fragment_selectors.IsEmpty()); @@ -134,7 +138,7 @@ if (user_scrolled_ && !did_scroll_into_view_) metrics_->ScrollCancelled(); - first_match_needs_scroll_ = !user_scrolled_; + first_match_needs_scroll_ = should_scroll_ && !user_scrolled_; { // FindMatch might cause scrolling and set user_scrolled_ so reset it when @@ -263,8 +267,8 @@ dismissed_ = true; DCHECK(!element_fragment_anchor_); - element_fragment_anchor_ = - ElementFragmentAnchor::TryCreate(frame_->GetDocument()->Url(), *frame_); + element_fragment_anchor_ = ElementFragmentAnchor::TryCreate( + frame_->GetDocument()->Url(), *frame_, should_scroll_); if (element_fragment_anchor_) { // Schedule a frame so we can invoke the element anchor in // PerformPreRafActions. @@ -284,7 +288,7 @@ if (!did_find_match_ || dismissed_) return true; - DCHECK(did_scroll_into_view_ || user_scrolled_); + DCHECK(!should_scroll_ || did_scroll_into_view_ || user_scrolled_); frame_->GetDocument()->Markers().RemoveMarkersOfTypes( DocumentMarker::MarkerTypes::TextFragment());
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.h b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.h index 7bcef31..27d3da5 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.h +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.h
@@ -36,11 +36,13 @@ static TextFragmentAnchor* TryCreateFragmentDirective( const KURL& url, LocalFrame& frame, - bool same_document_navigation); + bool same_document_navigation, + bool should_scroll); TextFragmentAnchor( const Vector<TextFragmentSelector>& text_fragment_selectors, - LocalFrame& frame); + LocalFrame& frame, + bool should_scroll); ~TextFragmentAnchor() override = default; bool Invoke() override; @@ -89,6 +91,10 @@ // Whether the text fragment anchor has been dismissed yet. This should be // kept alive until dismissed so we can remove text highlighting. bool dismissed_ = false; + // Whether we should scroll the anchor into view. This will be false for + // history navigations and reloads, where we want to restore the highlight but + // not scroll into view again. + bool should_scroll_ = false; Member<TextFragmentAnchorMetrics> metrics_;
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc index 3f1cac04..aa00bcf 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc
@@ -11,6 +11,7 @@ #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/frame/local_frame_view.h" #include "third_party/blink/renderer/core/frame/location.h" +#include "third_party/blink/renderer/core/frame/web_local_frame_impl.h" #include "third_party/blink/renderer/core/html/html_element.h" #include "third_party/blink/renderer/core/html/html_frame_owner_element.h" #include "third_party/blink/renderer/core/input/event_handler.h" @@ -1542,6 +1543,46 @@ EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); } +// Ensure we restore the text highlight on page reload +TEST_F(TextFragmentAnchorTest, HighlightOnReload) { + SimRequest request("https://example.com/test.html#:~:text=test", "text/html"); + LoadURL("https://example.com/test.html#:~:text=test"); + const String& html = R"HTML( + <!DOCTYPE html> + <style> + body { + height: 1200px; + } + p { + position: absolute; + top: 1000px; + } + </style> + <p id="text">This is a test page</p> + )HTML"; + request.Complete(html); + + Compositor().BeginFrame(); + RunAsyncMatchingTasks(); + + EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); + + // Tap to dismiss the highlight. + SimulateClick(10, 10); + EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); + + // Reload the page and expect the highlight to be restored. + SimRequest reload_request("https://example.com/test.html#:~:text=test", + "text/html"); + MainFrame().StartReload(WebFrameLoadType::kReload); + reload_request.Complete(html); + + Compositor().BeginFrame(); + RunAsyncMatchingTasks(); + + EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); +} + } // namespace } // namespace blink
diff --git a/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.cc b/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.cc index 2f0f3aa..281398b 100644 --- a/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.cc +++ b/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.cc
@@ -5,124 +5,39 @@ #include "third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.h" #include "cc/layers/picture_layer.h" -#include "third_party/blink/renderer/core/scroll/scrollable_area.h" #include "third_party/blink/renderer/platform/geometry/geometry_as_json.h" #include "third_party/blink/renderer/platform/graphics/graphics_layer.h" -#include "third_party/blink/renderer/platform/graphics/logging_canvas.h" #include "third_party/blink/renderer/platform/json/json_values.h" -#include "third_party/blink/renderer/platform/wtf/text/text_stream.h" namespace blink { namespace { -typedef HashMap<int, int> RenderingContextMap; +std::unique_ptr<JSONObject> GraphicsLayerAsJSON(const GraphicsLayer* layer, + LayerTreeFlags flags, + const FloatPoint& position) { + auto json = CCLayerAsJSON(layer->CcLayer(), flags, position); -String PointerAsString(const void* ptr) { - WTF::TextStream ts; - ts << ptr; - return ts.Release(); -} - -std::unique_ptr<JSONObject> GraphicsLayerAsJSON( - const GraphicsLayer* layer, - LayerTreeFlags flags, - const FloatPoint& position) { - auto json = std::make_unique<JSONObject>(); + // Content dumped after this point, down to AppendAdditionalInfoAsJSON, is + // specific to GraphicsLayer tree dumping when called from one of the methods + // in this file. if (flags & kLayerTreeIncludesDebugInfo) { - json->SetString("this", PointerAsString(layer)); - json->SetInteger("ccLayerId", layer->CcLayer()->id()); if (layer->HasContentsLayer()) json->SetInteger("ccContentsLayerId", layer->ContentsLayer()->id()); } - json->SetString("name", layer->DebugName()); - - if (position != FloatPoint()) - json->SetArray("position", PointAsJSONArray(position)); - if (flags & kLayerTreeIncludesDebugInfo && layer->OffsetFromLayoutObject() != IntSize()) { json->SetArray("offsetFromLayoutObject", SizeAsJSONArray(layer->OffsetFromLayoutObject())); } - // This is testing against gfx::Size(), *not* whether the size is empty. - if (layer->Size() != gfx::Size()) - json->SetArray("bounds", SizeAsJSONArray(IntSize(layer->Size()))); - - if (layer->ContentsOpaque()) - json->SetBoolean("contentsOpaque", true); - - if (!layer->DrawsContent()) - json->SetBoolean("drawsContent", false); - if (!layer->ContentsAreVisible()) json->SetBoolean("contentsVisible", false); - if (!layer->BackfaceVisibility()) - json->SetString("backfaceVisibility", "hidden"); - - if (flags & kLayerTreeIncludesDebugInfo) - json->SetString("client", PointerAsString(&layer->Client())); - - if (Color(layer->BackgroundColor()).Alpha()) { - json->SetString("backgroundColor", - Color(layer->BackgroundColor()).NameForLayoutTreeAsText()); - } - - if ((flags & kLayerTreeIncludesPaintInvalidations) && - layer->Client().IsTrackingRasterInvalidations() && - layer->GetRasterInvalidationTracking()) { - layer->GetRasterInvalidationTracking()->AsJSON(json.get()); - } - - GraphicsLayerPaintingPhase painting_phase = layer->PaintingPhase(); - if ((flags & kLayerTreeIncludesPaintingPhases) && painting_phase) { - auto painting_phases_json = std::make_unique<JSONArray>(); - if (painting_phase & kGraphicsLayerPaintBackground) - painting_phases_json->PushString("GraphicsLayerPaintBackground"); - if (painting_phase & kGraphicsLayerPaintForeground) - painting_phases_json->PushString("GraphicsLayerPaintForeground"); - if (painting_phase & kGraphicsLayerPaintMask) - painting_phases_json->PushString("GraphicsLayerPaintMask"); - if (painting_phase & kGraphicsLayerPaintOverflowContents) - painting_phases_json->PushString("GraphicsLayerPaintOverflowContents"); - if (painting_phase & kGraphicsLayerPaintCompositedScroll) - painting_phases_json->PushString("GraphicsLayerPaintCompositedScroll"); - if (painting_phase & kGraphicsLayerPaintDecoration) - painting_phases_json->PushString("GraphicsLayerPaintDecoration"); - json->SetArray("paintingPhases", std::move(painting_phases_json)); - } - - if (flags & - (kLayerTreeIncludesDebugInfo | kLayerTreeIncludesCompositingReasons)) { - bool debug = flags & kLayerTreeIncludesDebugInfo; - { - auto compositing_reasons_json = std::make_unique<JSONArray>(); - CompositingReasons compositing_reasons = layer->GetCompositingReasons(); - auto names = debug ? CompositingReason::Descriptions(compositing_reasons) - : CompositingReason::ShortNames(compositing_reasons); - for (const char* name : names) - compositing_reasons_json->PushString(name); - json->SetArray("compositingReasons", std::move(compositing_reasons_json)); - } - { - auto squashing_disallowed_reasons_json = std::make_unique<JSONArray>(); - SquashingDisallowedReasons squashing_disallowed_reasons = - layer->GetSquashingDisallowedReasons(); - auto names = debug ? SquashingDisallowedReason::Descriptions( - squashing_disallowed_reasons) - : SquashingDisallowedReason::ShortNames( - squashing_disallowed_reasons); - for (const char* name : names) - squashing_disallowed_reasons_json->PushString(name); - json->SetArray("squashingDisallowedReasons", - std::move(squashing_disallowed_reasons_json)); - } - } - + // MaskLayers are output via ForeignLayerDisplayItem iteration in the other + // dumping code paths. if (layer->MaskLayer()) { auto mask_layer_json = std::make_unique<JSONArray>(); mask_layer_json->PushObject( @@ -138,133 +53,27 @@ PointAsJSONArray(layer->GetOffsetFromTransformNode())); } -#if DCHECK_IS_ON() - if (layer->HasLayerState() && layer->DrawsContent() && - (flags & kLayerTreeIncludesPaintRecords)) - json->SetValue("paintRecord", RecordAsJSON(*layer->CapturePaintRecord())); -#endif + layer->AppendAdditionalInfoAsJSON(flags, *layer->CcLayer(), *json.get()); return json; } -class LayersAsJSONArray { - public: - LayersAsJSONArray(LayerTreeFlags flags) - : flags_(flags), - next_transform_id_(1), - layers_json_(std::make_unique<JSONArray>()), - transforms_json_(std::make_unique<JSONArray>()) {} - - // Outputs the layer tree rooted at |layer| as a JSON array, in paint order, - // and the transform tree also as a JSON array. - std::unique_ptr<JSONObject> operator()(const GraphicsLayer& layer) { - auto json = std::make_unique<JSONObject>(); - Walk(layer); - json->SetArray("layers", std::move(layers_json_)); - if (transforms_json_->size()) - json->SetArray("transforms", std::move(transforms_json_)); - return json; - } - - int AddTransformJSON(const TransformPaintPropertyNode& transform) { - auto it = transform_id_map_.find(&transform); - if (it != transform_id_map_.end()) - return it->value; - - int parent_id = 0; - if (transform.Parent()) - parent_id = AddTransformJSON(*transform.Parent()); - if (transform.IsIdentity() && !transform.RenderingContextId()) { - transform_id_map_.Set(&transform, parent_id); - return parent_id; - } - - auto transform_json = std::make_unique<JSONObject>(); - int id = next_transform_id_++; - transform_json->SetInteger("id", id); - if (parent_id) - transform_json->SetInteger("parent", parent_id); - - if (!transform.IsIdentity()) { - transform_json->SetArray("transform", - TransformAsJSONArray(transform.SlowMatrix())); - } - - if (!transform.IsIdentityOr2DTranslation() && - !transform.Matrix().IsIdentityOrTranslation()) - transform_json->SetArray("origin", PointAsJSONArray(transform.Origin())); - - if (!transform.FlattensInheritedTransform()) - transform_json->SetBoolean("flattenInheritedTransform", false); - - if (auto rendering_context = transform.RenderingContextId()) { - auto context_lookup_result = - rendering_context_map_.find(rendering_context); - int rendering_id = rendering_context_map_.size() + 1; - if (context_lookup_result == rendering_context_map_.end()) - rendering_context_map_.Set(rendering_context, rendering_id); - else - rendering_id = context_lookup_result->value; - - transform_json->SetInteger("renderingContext", rendering_id); - } - - transforms_json_->PushObject(std::move(transform_json)); - transform_id_map_.Set(&transform, id); - return id; - } - - void AddLayer(const GraphicsLayer& layer) { - if (!layer.DrawsContent() && !(flags_ & kLayerTreeIncludesRootLayer)) - return; - - FloatPoint offset; - if (layer.HasLayerState()) - offset = FloatPoint(layer.GetOffsetFromTransformNode()); - auto json = GraphicsLayerAsJSON(&layer, flags_, offset); - if (layer.HasLayerState()) { - int transform_id = - AddTransformJSON(layer.GetPropertyTreeState().Transform()); - if (transform_id) - json->SetInteger("transform", transform_id); - } - layers_json_->PushObject(std::move(json)); - } - - void Walk(const GraphicsLayer& layer) { - AddLayer(layer); - for (auto* const child : layer.Children()) - Walk(*child); - } - - private: - LayerTreeFlags flags_; - int next_transform_id_; - RenderingContextMap rendering_context_map_; - std::unique_ptr<JSONArray> layers_json_; - HashMap<const TransformPaintPropertyNode*, int> transform_id_map_; - std::unique_ptr<JSONArray> transforms_json_; -}; - } // namespace std::unique_ptr<JSONObject> GraphicsLayerTreeAsJSON(const GraphicsLayer* layer, LayerTreeFlags flags) { - if (flags & kOutputAsLayerTree) { - std::unique_ptr<JSONObject> json = - GraphicsLayerAsJSON(layer, flags, FloatPoint(layer->GetPosition())); - if (layer->Children().size()) { - auto children_json = std::make_unique<JSONArray>(); - for (wtf_size_t i = 0; i < layer->Children().size(); i++) { - children_json->PushObject( - GraphicsLayerTreeAsJSON(layer->Children()[i], flags)); - } - json->SetArray("children", std::move(children_json)); + DCHECK(flags & kOutputAsLayerTree); + std::unique_ptr<JSONObject> json = + GraphicsLayerAsJSON(layer, flags, FloatPoint(layer->GetPosition())); + if (layer->Children().size()) { + auto children_json = std::make_unique<JSONArray>(); + for (wtf_size_t i = 0; i < layer->Children().size(); i++) { + children_json->PushObject( + GraphicsLayerTreeAsJSON(layer->Children()[i], flags)); } - return json; + json->SetArray("children", std::move(children_json)); } - - return LayersAsJSONArray(flags)(*layer); + return json; } String GraphicsLayerTreeAsTextForTesting(const GraphicsLayer* layer, @@ -285,13 +94,13 @@ if (it == s_previous_trees.end() || it->value != new_tree) { VLOG(2) << "GraphicsLayer tree:\n" << new_tree.Utf8(); s_previous_trees.Set(root, new_tree); - // For simplification, we don't remove deleted GraphicsLayers from the map. + // For simplification, we don't remove deleted GraphicsLayers from the + // map. } } #endif } // namespace blink - #if DCHECK_IS_ON() void showGraphicsLayerTree(const blink::GraphicsLayer* layer) { if (!layer) { @@ -302,15 +111,4 @@ String output = blink::GraphicsLayerTreeAsTextForTesting(layer, 0xffffffff); LOG(ERROR) << output.Utf8(); } - -void showGraphicsLayers(const blink::GraphicsLayer* layer) { - if (!layer) { - LOG(ERROR) << "Cannot showGraphicsLayers for (nil)."; - return; - } - - String output = blink::GraphicsLayerTreeAsTextForTesting( - layer, 0xffffffff & ~blink::kOutputAsLayerTree); - LOG(ERROR) << output.Utf8(); -} #endif
diff --git a/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.h b/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.h index 204e334..7d160f1 100644 --- a/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.h +++ b/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_as_text.h
@@ -8,7 +8,7 @@ #include <memory> #include "third_party/blink/renderer/core/core_export.h" -#include "third_party/blink/renderer/platform/graphics/graphics_layer_client.h" +#include "third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h" namespace blink { @@ -29,7 +29,6 @@ #if DCHECK_IS_ON() // Outside the blink namespace for ease of invocation from gdb. void CORE_EXPORT showGraphicsLayerTree(const blink::GraphicsLayer*); -void CORE_EXPORT showGraphicsLayers(const blink::GraphicsLayer*); #endif #endif // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_COMPOSITING_GRAPHICS_LAYER_TREE_AS_TEXT_H_
diff --git a/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc b/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc index 595ca82..fd43933 100644 --- a/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc +++ b/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc
@@ -836,7 +836,7 @@ layout_view_.GetFrameView()->ShouldThrottleRendering()); #endif - if (GraphicsLayer* root_layer = RootGraphicsLayer()) + if (GraphicsLayer* root_layer = PaintRootGraphicsLayer()) UpdateTrackingRasterInvalidationsRecursive(root_layer); }
diff --git a/third_party/blink/renderer/core/testing/internals.cc b/third_party/blink/renderer/core/testing/internals.cc index 4abceb2..4a5fd11 100644 --- a/third_party/blink/renderer/core/testing/internals.cc +++ b/third_party/blink/renderer/core/testing/internals.cc
@@ -2088,10 +2088,6 @@ Element* element, ExceptionState& exception_state) const { DCHECK(element); - LocalFrameView* frame_view = element->GetDocument().View(); - frame_view->UpdateAllLifecyclePhases( - DocumentLifecycle::LifecycleUpdateReason::kTest); - return elementLayerTreeAsText(element, 0, exception_state); } @@ -2156,7 +2152,10 @@ unsigned flags, ExceptionState& exception_state) const { DCHECK(element); - element->GetDocument().UpdateStyleAndLayout(); + + LocalFrameView* frame_view = element->GetDocument().View(); + frame_view->UpdateAllLifecyclePhases( + DocumentLifecycle::LifecycleUpdateReason::kTest); LayoutObject* layout_object = element->GetLayoutObject(); if (!layout_object || !layout_object->IsBox()) { @@ -2175,7 +2174,8 @@ } return GraphicsLayerTreeAsTextForTesting( - layer->GetCompositedLayerMapping()->MainGraphicsLayer(), flags); + layer->GetCompositedLayerMapping()->MainGraphicsLayer(), + flags | kOutputAsLayerTree); } String Internals::scrollingStateTreeAsText(Document*) const {
diff --git a/third_party/blink/renderer/core/testing/internals.idl b/third_party/blink/renderer/core/testing/internals.idl index c11085d..4230cc7 100644 --- a/third_party/blink/renderer/core/testing/internals.idl +++ b/third_party/blink/renderer/core/testing/internals.idl
@@ -191,7 +191,7 @@ readonly attribute unsigned long workerThreadCount; // Flags for layerTreeAsText. - // The values of these constants must be kept in sync with the values of LayerTreeFlags in GraphicsLayerClient.h. + // The values of these constants must be kept in sync with the values of LayerTreeFlags in layers_as_json.h. const unsigned short LAYER_TREE_INCLUDES_DEBUG_INFO = 1; const unsigned short LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS = 2; const unsigned short LAYER_TREE_INCLUDES_PAINTING_PHASES = 4;
diff --git a/third_party/blink/renderer/devtools/front_end/audits/lighthouse/report-generator.js b/third_party/blink/renderer/devtools/front_end/audits/lighthouse/report-generator.js index 9827150..289d239 100644 --- a/third_party/blink/renderer/devtools/front_end/audits/lighthouse/report-generator.js +++ b/third_party/blink/renderer/devtools/front_end/audits/lighthouse/report-generator.js
@@ -12,9 +12,9 @@ * lighthouse-core/report/html/html-report-assets.js in Devtools. */ -/* global Runtime */ +/* global Root */ -// @ts-ignore: Runtime exists in Devtools. +// @ts-ignore: Root.Runtime exists in Devtools. const cachedResources = Root.Runtime.cachedResources; // Getters are necessary because the DevTools bundling processes
diff --git a/third_party/blink/renderer/devtools/front_end/audits/lighthouse/report.js b/third_party/blink/renderer/devtools/front_end/audits/lighthouse/report.js index 3c83016..0f63105 100644 --- a/third_party/blink/renderer/devtools/front_end/audits/lighthouse/report.js +++ b/third_party/blink/renderer/devtools/front_end/audits/lighthouse/report.js
@@ -2293,7 +2293,6 @@ this.onCopy = this.onCopy.bind(this); this.onDropDownMenuClick = this.onDropDownMenuClick.bind(this); this.onKeyUp = this.onKeyUp.bind(this); - this.onChevronClick = this.onChevronClick.bind(this); this.collapseAllDetails = this.collapseAllDetails.bind(this); this.expandAllDetails = this.expandAllDetails.bind(this); this._toggleDarkTheme = this._toggleDarkTheme.bind(this); @@ -2591,16 +2590,6 @@ } } - onChevronClick() { - const toggle = this._dom.find('.lh-config__settings-toggle', this._document); - - if (toggle.hasAttribute('open')) { - toggle.removeAttribute('open'); - } else { - toggle.setAttribute('open', 'true'); - } - } - /** * Resets the state of page before capturing the page for export. * When the user opens the exported HTML page, certain UI elements should
diff --git a/third_party/blink/renderer/devtools/front_end/audits/lighthouse/templates.html b/third_party/blink/renderer/devtools/front_end/audits/lighthouse/templates.html index 3cd8cde..57462c17 100644 --- a/third_party/blink/renderer/devtools/front_end/audits/lighthouse/templates.html +++ b/third_party/blink/renderer/devtools/front_end/audits/lighthouse/templates.html
@@ -359,11 +359,34 @@ </style> <div class="lh-topbar"> - <!-- Flat Lighthouse logo. --> - <svg class="lh-topbar__logo" viewBox="0 0 192 192"> + <!-- Lighthouse logo. --> + <svg class="lh-topbar__logo" viewBox="0 0 24 24"> + <defs> + <linearGradient x1="57.456%" y1="13.086%" x2="18.259%" y2="72.322%" id="lh-topbar__logo--a"> + <stop stop-color="#262626" stop-opacity=".1" offset="0%"/> + <stop stop-color="#262626" stop-opacity="0" offset="100%"/> + </linearGradient> + <linearGradient x1="100%" y1="50%" x2="0%" y2="50%" id="lh-topbar__logo--b"> + <stop stop-color="#262626" stop-opacity=".1" offset="0%"/> + <stop stop-color="#262626" stop-opacity="0" offset="100%"/> + </linearGradient> + <linearGradient x1="58.764%" y1="65.756%" x2="36.939%" y2="50.14%" id="lh-topbar__logo--c"> + <stop stop-color="#262626" stop-opacity=".1" offset="0%"/> + <stop stop-color="#262626" stop-opacity="0" offset="100%"/> + </linearGradient> + <linearGradient x1="41.635%" y1="20.358%" x2="72.863%" y2="85.424%" id="lh-topbar__logo--d"> + <stop stop-color="#FFF" stop-opacity=".1" offset="0%"/> + <stop stop-color="#FFF" stop-opacity="0" offset="100%"/> + </linearGradient> + </defs> <g fill="none" fill-rule="evenodd"> - <path d="M0 0h192v192H0z"/> - <path class="shape" d="M67.705 179.352l2.603-20.82 49.335-16.39 4.652 37.21A87.893 87.893 0 0 1 96 184a87.893 87.893 0 0 1-28.295-4.648zM52.44 172.48C25.894 157.328 8 128.754 8 96 8 47.399 47.399 8 96 8s88 39.399 88 88c0 32.754-17.894 61.328-44.44 76.48L130 96h6V80h-8V48L96 28 64 48v32h-8v16h6l-9.56 76.48zM113.875 96l2.882 23.05-43.318 14.433L78.125 96h35.75zM80 80V56.868l16-10 16 10V80H80z"/> + <path d="M12 3l4.125 2.625v3.75H18v2.25h-1.688l1.5 9.375H6.188l1.5-9.375H6v-2.25h1.875V5.648L12 3zm2.201 9.938L9.54 14.633 9 18.028l5.625-2.062-.424-3.028zM12.005 5.67l-1.88 1.207v2.498h3.75V6.86l-1.87-1.19z" fill="#F44B21"/> + <path fill="#FFF" d="M14.201 12.938L9.54 14.633 9 18.028l5.625-2.062z"/> + <path d="M6 18c-2.042 0-3.95-.01-5.813 0l1.5-9.375h4.326L6 18z" fill="url(#lh-topbar__logo--a)" fill-rule="nonzero" transform="translate(6 3)"/> + <path fill="#FFF176" fill-rule="nonzero" d="M13.875 9.375v-2.56l-1.87-1.19-1.88 1.207v2.543z"/> + <path fill="url(#lh-topbar__logo--b)" fill-rule="nonzero" d="M0 6.375h6v2.25H0z" transform="translate(6 3)"/> + <path fill="url(#lh-topbar__logo--c)" fill-rule="nonzero" d="M6 6.375H1.875v-3.75L6 0z" transform="translate(6 3)"/> + <path fill="url(#lh-topbar__logo--d)" fill-rule="nonzero" d="M6 0l4.125 2.625v3.75H12v2.25h-1.688l1.5 9.375H.188l1.5-9.375H0v-2.25h1.875V2.648z" transform="translate(6 3)"/> </g> </svg> @@ -394,29 +417,6 @@ <!-- Lighthouse header --> <template id="tmpl-lh-heading"> <style> -/* - TODO: Enable animating the clouds - .lh-lighthouse__clouds { - animation: panacross 30s linear infinite; - animation-play-state: paused; - } - @keyframes panacross { - 0% { transform: translateX(0px); } - 77% { transform: translateX(-680px); } - 77.0001% { transform: translateX(195px); } - 100% { transform: translateX(0px); } - } */ - - .score100 .lh-header-bg { - background-color: hsl(234, 64%, 19%); - } - .score100 .lh-metadata, .score100 .lh-toolbar__metadata, .score100 .lh-product-info { - color: #fff; - } - .score100 .lh-config { - color: #eee; - } - /* CSS Fireworks. Originally by Eddie Lin https://codepen.io/paulirish/pen/yEVMbP */
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/lighthouse-dt-bundle.js b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/lighthouse-dt-bundle.js index 3672e48..a0a63a2 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/lighthouse-dt-bundle.js +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/lighthouse-dt-bundle.js
@@ -1,4 +1,4 @@ -// lighthouse, browserified. 5.4.0 (7e0ea3eedc4625ea2e80fe97e03bae11a80e74db) +// lighthouse, browserified. 5.5.0 (33af3dbb7c10890c9d9e67e16af4968b7c49206c) require=function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a;}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r);},p,p.exports,r,e,n,t);}return n[i].exports;}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o;}return r;}()({"../audits/accessibility/accesskeys":[function(require,module,exports){ (function(__filename){ @@ -2100,7 +2100,7 @@ description:'For ideal appearance on iOS when users add a progressive web app to the home '+ 'screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) '+ -'square PNG. [Learn More](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/).', +'square PNG. [Learn More](https://web.dev/apple-touch-icon/).', precomposedWarning:'`apple-touch-icon-precomposed` is out of date; '+ '`apple-touch-icon` is preferred.'}; @@ -2175,7 +2175,7 @@ description:'Consider reducing the time spent parsing, compiling, and executing JS. '+ 'You may find delivering smaller JS payloads helps with this. [Learn '+ -'more](https://developers.google.com/web/tools/lighthouse/audits/bootup).', +'more](https://web.dev/bootup-time).', columnTotal:'Total CPU Time', @@ -2355,7 +2355,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/bootup-time.js"); -},{"../computed/main-thread-tasks.js":12,"../computed/network-records.js":33,"../lib/i18n/i18n.js":67,"../lib/network-request.js":75,"../lib/tracehouse/task-groups.js":84,"./audit.js":3}],"../audits/byte-efficiency/efficient-animated-content":[function(require,module,exports){ +},{"../computed/main-thread-tasks.js":12,"../computed/network-records.js":34,"../lib/i18n/i18n.js":67,"../lib/network-request.js":76,"../lib/tracehouse/task-groups.js":85,"./audit.js":3}],"../audits/byte-efficiency/efficient-animated-content":[function(require,module,exports){ (function(__filename){ @@ -2377,7 +2377,7 @@ description:'Large GIFs are inefficient for delivering animated content. Consider using '+ 'MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save '+ -'network bytes. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)'}; +'network bytes. [Learn more](https://web.dev/efficient-animated-content)'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -2451,7 +2451,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/byte-efficiency/efficient-animated-content.js"); -},{"../../lib/i18n/i18n.js":67,"../../lib/network-request.js":75,"./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/offscreen-images":[function(require,module,exports){ +},{"../../lib/i18n/i18n.js":67,"../../lib/network-request.js":76,"./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/offscreen-images":[function(require,module,exports){ (function(__filename){ @@ -2478,7 +2478,7 @@ description: 'Consider lazy-loading offscreen and hidden images after all critical resources have '+ 'finished loading to lower time to interactive. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images).'}; +'[Learn more](https://web.dev/offscreen-images).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -2698,7 +2698,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/byte-efficiency/offscreen-images.js"); -},{"../../computed/metrics/interactive.js":18,"../../computed/trace-of-tab.js":38,"../../lib/i18n/i18n.js":67,"../../lib/sentry.js":78,"../../lib/url-shim.js":"url","./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/render-blocking-resources":[function(require,module,exports){ +},{"../../computed/metrics/interactive.js":18,"../../computed/trace-of-tab.js":39,"../../lib/i18n/i18n.js":67,"../../lib/sentry.js":79,"../../lib/url-shim.js":"url","./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/render-blocking-resources":[function(require,module,exports){ (function(__filename){ @@ -2737,7 +2737,7 @@ description:'Resources are blocking the first paint of your page. Consider '+ 'delivering critical JS/CSS inline and deferring all non-critical '+ -'JS/styles. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources).'}; +'JS/styles. [Learn more](https://web.dev/render-blocking-resources).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -2935,7 +2935,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/byte-efficiency/render-blocking-resources.js"); -},{"../../computed/load-simulator.js":10,"../../computed/metrics/first-contentful-paint.js":15,"../../computed/trace-of-tab.js":38,"../../lib/dependency-graph/base-node.js":57,"../../lib/i18n/i18n.js":67,"../../lib/network-request.js":75,"../audit.js":3,"./byte-efficiency-audit.js":4,"./unused-css-rules.js":"../audits/byte-efficiency/unused-css-rules"}],"../audits/byte-efficiency/total-byte-weight":[function(require,module,exports){ +},{"../../computed/load-simulator.js":10,"../../computed/metrics/first-contentful-paint.js":15,"../../computed/trace-of-tab.js":39,"../../lib/dependency-graph/base-node.js":58,"../../lib/i18n/i18n.js":67,"../../lib/network-request.js":76,"../audit.js":3,"./byte-efficiency-audit.js":4,"./unused-css-rules.js":"../audits/byte-efficiency/unused-css-rules"}],"../audits/byte-efficiency/total-byte-weight":[function(require,module,exports){ (function(__filename){ @@ -2957,7 +2957,7 @@ description: 'Large network payloads cost users real money and are highly correlated with '+ 'long load times. [Learn '+ -'more](https://developers.google.com/web/tools/lighthouse/audits/network-payloads).', +'more](https://web.dev/total-byte-weight).', displayValue:'Total size was {totalBytes, number, bytes}\xa0KB'}; @@ -3055,7 +3055,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/byte-efficiency/total-byte-weight.js"); -},{"../../computed/network-records.js":33,"../../lib/i18n/i18n.js":67,"./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/unminified-css":[function(require,module,exports){ +},{"../../computed/network-records.js":34,"../../lib/i18n/i18n.js":67,"./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/unminified-css":[function(require,module,exports){ (function(__filename){ @@ -3074,7 +3074,7 @@ title:'Minify CSS', description:'Minifying CSS files can reduce network payload sizes. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/minify-css).'}; +'[Learn more](https://web.dev/unminified-css).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -3176,7 +3176,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/byte-efficiency/unminified-css.js"); -},{"../../lib/i18n/i18n.js":67,"../../lib/minification-estimator.js":73,"./byte-efficiency-audit.js":4,"./unused-css-rules.js":"../audits/byte-efficiency/unused-css-rules"}],"../audits/byte-efficiency/unminified-javascript":[function(require,module,exports){ +},{"../../lib/i18n/i18n.js":67,"../../lib/minification-estimator.js":74,"./byte-efficiency-audit.js":4,"./unused-css-rules.js":"../audits/byte-efficiency/unused-css-rules"}],"../audits/byte-efficiency/unminified-javascript":[function(require,module,exports){ (function(__filename){ @@ -3194,7 +3194,7 @@ title:'Minify JavaScript', description:'Minifying JavaScript files can reduce payload sizes and script parse time. '+ -'[Learn more](https://developers.google.com/speed/docs/insights/MinifyResources).'}; +'[Learn more](https://web.dev/unminified-javascript).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -3298,7 +3298,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/byte-efficiency/unminified-javascript.js"); -},{"../../lib/i18n/i18n.js":67,"../../lib/minification-estimator.js":73,"./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/unused-css-rules":[function(require,module,exports){ +},{"../../lib/i18n/i18n.js":67,"../../lib/minification-estimator.js":74,"./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/unused-css-rules":[function(require,module,exports){ (function(__filename){ @@ -3316,7 +3316,7 @@ description:'Remove dead rules from stylesheets and defer the loading of CSS not used for '+ 'above-the-fold content to reduce unnecessary bytes consumed by network activity. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/unused-css).'}; +'[Learn more](https://web.dev/unused-css-rules).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -3349,6 +3349,10 @@ static indexStylesheetsById(styles,networkRecords){ const indexedNetworkRecords=networkRecords. + + + +filter(record=>record.resourceSize>0). reduce((indexed,record)=>{ indexed[record.url]=record; return indexed; @@ -3659,7 +3663,7 @@ description: 'A long cache lifetime can speed up repeat visits to your page. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/cache-policy).', +'[Learn more](https://web.dev/uses-long-cache-ttl).', displayValue:`{itemCount, plural, =1 {1 resource found} @@ -3940,7 +3944,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js"); -},{"../../computed/network-records.js":33,"../../lib/i18n/i18n.js":67,"../../lib/network-request.js":75,"../../lib/statistics.js":81,"../../lib/url-shim.js":"url","../audit.js":3,"assert":91,"parse-cache-control":138}],"../audits/byte-efficiency/uses-optimized-images":[function(require,module,exports){ +},{"../../computed/network-records.js":34,"../../lib/i18n/i18n.js":67,"../../lib/network-request.js":76,"../../lib/statistics.js":82,"../../lib/url-shim.js":"url","../audit.js":3,"assert":92,"parse-cache-control":139}],"../audits/byte-efficiency/uses-optimized-images":[function(require,module,exports){ (function(__filename){ @@ -3962,7 +3966,7 @@ title:'Efficiently encode images', description:'Optimized images load faster and consume less cellular data. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/optimize-images).'}; +'[Learn more](https://web.dev/uses-optimized-images).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -4108,7 +4112,7 @@ description: 'Serve images that are appropriately-sized to save cellular data '+ 'and improve load time. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/oversized-images).'}; +'[Learn more](https://web.dev/uses-responsive-images).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -4225,7 +4229,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/byte-efficiency/uses-responsive-images.js"); -},{"../../lib/i18n/i18n.js":67,"../../lib/sentry.js":78,"../../lib/url-shim.js":"url","./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/uses-text-compression":[function(require,module,exports){ +},{"../../lib/i18n/i18n.js":67,"../../lib/sentry.js":79,"../../lib/url-shim.js":"url","./byte-efficiency-audit.js":4}],"../audits/byte-efficiency/uses-text-compression":[function(require,module,exports){ (function(__filename){ @@ -4248,7 +4252,7 @@ description:'Text-based resources should be served with compression (gzip, deflate or'+ ' brotli) to minimize total network bytes.'+ -' [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression).'}; +' [Learn more](https://web.dev/uses-text-compression).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -4351,7 +4355,7 @@ description:'Image formats like JPEG 2000, JPEG XR, and WebP often provide better '+ 'compression than PNG or JPEG, which means faster downloads and less data consumption. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/webp).'}; +'[Learn more](https://web.dev/uses-webp-images).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -4563,13 +4567,13 @@ const UIStrings={ -title:'Minimize Critical Requests Depth', +title:'Avoid chaining critical requests', description:'The Critical Request Chains below show you what resources are '+ 'loaded with a high priority. Consider reducing '+ 'the length of chains, reducing the download size of resources, or '+ 'deferring the download of unnecessary resources to improve page load. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains).', +'[Learn more](https://web.dev/critical-request-chains).', displayValue:`{itemCount, plural, =1 {1 chain found} @@ -4953,7 +4957,7 @@ module.exports=Diagnostics; -},{"../computed/main-thread-tasks.js":12,"../computed/network-analysis.js":32,"../computed/network-records.js":33,"../lib/dependency-graph/simulator/network-analyzer.js":62,"./audit.js":3}],"../audits/dobetterweb/appcache-manifest":[function(require,module,exports){ +},{"../computed/main-thread-tasks.js":12,"../computed/network-analysis.js":33,"../computed/network-records.js":34,"../lib/dependency-graph/simulator/network-analyzer.js":63,"./audit.js":3}],"../audits/dobetterweb/appcache-manifest":[function(require,module,exports){ (function(__filename){ @@ -5142,20 +5146,13 @@ const Util=require('../../report/html/renderer/util.js'); const i18n=require('../../lib/i18n/i18n.js'); -const MAX_DOM_ELEMENTS=1500; -const MAX_DOM_TREE_WIDTH=60; -const MAX_DOM_TREE_DEPTH=32; - const UIStrings={ title:'Avoids an excessive DOM size', failureTitle:'Avoid an excessive DOM size', -description:'Browser engineers recommend pages contain fewer than '+ -`~${MAX_DOM_ELEMENTS.toLocaleString()} DOM elements. The sweet spot is a tree `+ -`depth < ${MAX_DOM_TREE_DEPTH} elements and fewer than ${MAX_DOM_TREE_WIDTH} `+ -'children/parent element. A large DOM can increase memory usage, cause longer '+ +description:'A large DOM will increase memory usage, cause longer '+ '[style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), '+ 'and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn more](https://web.dev/dom-size).', @@ -5181,10 +5178,6 @@ class DOMSize extends Audit{ -static get MAX_DOM_ELEMENTS(){ -return MAX_DOM_ELEMENTS; -} - @@ -5275,7 +5268,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/dobetterweb/dom-size.js"); -},{"../../lib/i18n/i18n.js":67,"../../report/html/renderer/util.js":87,"../audit.js":3}],"../audits/dobetterweb/external-anchors-use-rel-noopener":[function(require,module,exports){ +},{"../../lib/i18n/i18n.js":67,"../../report/html/renderer/util.js":88,"../audit.js":3}],"../audits/dobetterweb/external-anchors-use-rel-noopener":[function(require,module,exports){ (function(__filename){ @@ -5867,7 +5860,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js"); -},{"../../../third-party/snyk/snapshot.json":178,"../../lib/i18n/i18n.js":67,"../../lib/sentry.js":78,"../audit.js":3,"semver":162}],"../audits/dobetterweb/notification-on-start":[function(require,module,exports){ +},{"../../../third-party/snyk/snapshot.json":183,"../../lib/i18n/i18n.js":67,"../../lib/sentry.js":79,"../audit.js":3,"semver":163}],"../audits/dobetterweb/notification-on-start":[function(require,module,exports){ (function(__filename){ @@ -6130,7 +6123,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/dobetterweb/uses-http2.js"); -},{"../../computed/network-records.js":33,"../../lib/i18n/i18n.js":67,"../../lib/url-shim.js":"url","../audit.js":3}],"../audits/dobetterweb/uses-passive-event-listeners":[function(require,module,exports){ +},{"../../computed/network-records.js":34,"../../lib/i18n/i18n.js":67,"../../lib/url-shim.js":"url","../audit.js":3}],"../audits/dobetterweb/uses-passive-event-listeners":[function(require,module,exports){ (function(__filename){ @@ -6218,6 +6211,7 @@ +const log=require('lighthouse-logger'); const Audit=require('./audit.js'); const i18n=require('../lib/i18n/i18n.js'); @@ -6236,6 +6230,8 @@ const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); + + class ErrorLogs extends Audit{ @@ -6251,10 +6247,42 @@ } +static defaultOptions(){ +return{}; +} -static audit(artifacts){ + + + + + +static filterAccordingToOptions(items,options){ +const{ignoredPatterns,...restOfOptions}=options; +const otherOptionKeys=Object.keys(restOfOptions); +if(otherOptionKeys.length)log.warn(this.meta.id,'Unrecognized options',otherOptionKeys); +if(!ignoredPatterns)return items; + +return items.filter(({description})=>{ +if(!description)return true; +for(const pattern of ignoredPatterns){ +if(pattern instanceof RegExp&&pattern.test(description))return false; +if(typeof pattern==='string'&&description.includes(pattern))return false; +} + +return true; +}); +} + + + + + + +static audit(artifacts,context){ +const auditOptions=context.options; + const consoleEntries=artifacts.ConsoleMessages; const runtimeExceptions=artifacts.RuntimeExceptions; @@ -6281,7 +6309,10 @@ }); -const tableRows=consoleRows.concat(runtimeExRows); +const tableRows=ErrorLogs.filterAccordingToOptions( +consoleRows.concat(runtimeExRows), +auditOptions). +sort((a,b)=>(a.description||'').localeCompare(b.description||'')); const headings=[ @@ -6304,7 +6335,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/errors-in-console.js"); -},{"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/final-screenshot":[function(require,module,exports){ +},{"../lib/i18n/i18n.js":67,"./audit.js":3,"lighthouse-logger":125}],"../audits/final-screenshot":[function(require,module,exports){ @@ -6361,7 +6392,7 @@ module.exports=FinalScreenshot; -},{"../computed/screenshots.js":36,"../computed/trace-of-tab.js":38,"../lib/lh-error.js":71,"./audit.js":3}],"../audits/font-display":[function(require,module,exports){ +},{"../computed/screenshots.js":37,"../computed/trace-of-tab.js":39,"../lib/lh-error.js":72,"./audit.js":3}],"../audits/font-display":[function(require,module,exports){ (function(__filename){ @@ -6388,7 +6419,7 @@ description: 'Leverage the font-display CSS feature to ensure text is user-visible while '+ 'webfonts are loading. '+ -'[Learn more](https://developers.google.com/web/updates/2016/02/font-display).', +'[Learn more](https://web.dev/font-display).', @@ -6529,7 +6560,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/font-display.js"); -},{"../computed/network-records.js":33,"../lib/i18n/i18n.js":67,"../lib/sentry.js":78,"../lib/url-shim.js":"url","./audit.js":3}],"../audits/image-aspect-ratio":[function(require,module,exports){ +},{"../computed/network-records.js":34,"../lib/i18n/i18n.js":67,"../lib/sentry.js":79,"../lib/url-shim.js":"url","./audit.js":3}],"../audits/image-aspect-ratio":[function(require,module,exports){ (function(__filename){ @@ -6884,7 +6915,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/is-on-https.js"); -},{"../computed/network-records.js":33,"../lib/i18n/i18n.js":67,"../lib/url-shim.js":"url","./audit.js":3}],"../audits/load-fast-enough-for-pwa":[function(require,module,exports){ +},{"../computed/network-records.js":34,"../lib/i18n/i18n.js":67,"../lib/url-shim.js":"url","./audit.js":3}],"../audits/load-fast-enough-for-pwa":[function(require,module,exports){ (function(__filename){ @@ -6994,7 +7025,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/load-fast-enough-for-pwa.js"); -},{"../computed/metrics/interactive.js":18,"../config/constants.js":45,"../lib/i18n/i18n.js":67,"./audit.js":3,"lodash.isequal":125}],"../audits/main-thread-tasks":[function(require,module,exports){ +},{"../computed/metrics/interactive.js":18,"../config/constants.js":46,"../lib/i18n/i18n.js":67,"./audit.js":3,"lodash.isequal":126}],"../audits/main-thread-tasks":[function(require,module,exports){ @@ -7082,7 +7113,8 @@ failureTitle:'Minimize main-thread work', description:'Consider reducing the time spent parsing, compiling and executing JS. '+ -'You may find delivering smaller JS payloads helps with this.', +'You may find delivering smaller JS payloads helps with this. '+ +'[Learn more](https://web.dev/mainthread-work-breakdown)', columnCategory:'Category'}; @@ -7193,7 +7225,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/mainthread-work-breakdown.js"); -},{"../computed/main-thread-tasks.js":12,"../lib/i18n/i18n.js":67,"../lib/tracehouse/task-groups.js":84,"./audit.js":3}],"../audits/manual/pwa-cross-browser":[function(require,module,exports){ +},{"../computed/main-thread-tasks.js":12,"../lib/i18n/i18n.js":67,"../lib/tracehouse/task-groups.js":85,"./audit.js":3}],"../audits/manual/pwa-cross-browser":[function(require,module,exports){ (function(__filename){ @@ -7344,7 +7376,7 @@ description:'Estimated Input Latency is an estimate of how long your app takes to respond to '+ 'user input, in milliseconds, during the busiest 5s window of page load. If your '+ 'latency is higher than 50 ms, users may perceive your app as laggy. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency).'}; +'[Learn more](https://web.dev/estimated-input-latency).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -7470,7 +7502,7 @@ module.exports=FirstContentfulPaint3G; -},{"../../computed/metrics/first-contentful-paint.js":15,"../../config/constants.js":45,"../audit.js":3}],"../audits/metrics/first-contentful-paint":[function(require,module,exports){ +},{"../../computed/metrics/first-contentful-paint.js":15,"../../config/constants.js":46,"../audit.js":3}],"../audits/metrics/first-contentful-paint":[function(require,module,exports){ (function(__filename){ @@ -7488,7 +7520,7 @@ title:'First Contentful Paint', description:'First Contentful Paint marks the time at which the first text or image is '+ -`painted. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint).`}; +`painted. [Learn more](https://web.dev/first-contentful-paint).`}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -7565,8 +7597,7 @@ title:'First CPU Idle', description:'First CPU Idle marks the first time at which the page\'s main thread is '+ -'quiet enough to handle input. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-interactive).'}; +'quiet enough to handle input. [Learn more](https://web.dev/first-cpu-idle).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -7646,7 +7677,7 @@ title:'First Meaningful Paint', description:'First Meaningful Paint measures when the primary content of a page is '+ -'visible. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint).'}; +'visible. [Learn more](https://web.dev/first-meaningful-paint).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -7726,7 +7757,7 @@ title:'Time to Interactive', description:'Time to interactive is the amount of time it takes for the page to become fully '+ -'interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive).'}; +'interactive. [Learn more](https://web.dev/interactive).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -7883,7 +7914,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/metrics/max-potential-fid.js"); -},{"../../computed/metrics/max-potential-fid.js":28,"../../lib/i18n/i18n.js":67,"../audit.js":3}],"../audits/metrics/speed-index":[function(require,module,exports){ +},{"../../computed/metrics/max-potential-fid.js":29,"../../lib/i18n/i18n.js":67,"../audit.js":3}],"../audits/metrics/speed-index":[function(require,module,exports){ (function(__filename){ @@ -7901,7 +7932,7 @@ title:'Speed Index', description:'Speed Index shows how quickly the contents of a page are visibly populated. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/speed-index).'}; +'[Learn more](https://web.dev/speed-index).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -7962,7 +7993,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/metrics/speed-index.js"); -},{"../../computed/metrics/speed-index.js":30,"../../lib/i18n/i18n.js":67,"../audit.js":3}],"../audits/metrics/total-blocking-time":[function(require,module,exports){ +},{"../../computed/metrics/speed-index.js":31,"../../lib/i18n/i18n.js":67,"../audit.js":3}],"../audits/metrics/total-blocking-time":[function(require,module,exports){ (function(__filename){ @@ -8049,7 +8080,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/metrics/total-blocking-time.js"); -},{"../../computed/metrics/total-blocking-time.js":31,"../../lib/i18n/i18n.js":67,"../audit.js":3}],"../audits/metrics":[function(require,module,exports){ +},{"../../computed/metrics/total-blocking-time.js":32,"../../lib/i18n/i18n.js":67,"../audit.js":3}],"../audits/metrics":[function(require,module,exports){ @@ -8062,6 +8093,7 @@ const Speedline=require('../computed/speedline.js'); const FirstContentfulPaint=require('../computed/metrics/first-contentful-paint.js'); const FirstMeaningfulPaint=require('../computed/metrics/first-meaningful-paint.js'); +const LargestContentfulPaint=require('../computed/metrics/largest-contentful-paint.js'); const FirstCPUIdle=require('../computed/metrics/first-cpu-idle.js'); const Interactive=require('../computed/metrics/interactive.js'); const SpeedIndex=require('../computed/metrics/speed-index.js'); @@ -8099,7 +8131,6 @@ - const requestOrUndefined=(Artifact,artifact)=>{ return Artifact.request(artifact,context).catch(_=>undefined); }; @@ -8108,6 +8139,7 @@ const speedline=await Speedline.request(trace,context); const firstContentfulPaint=await FirstContentfulPaint.request(metricComputationData,context); const firstMeaningfulPaint=await FirstMeaningfulPaint.request(metricComputationData,context); +const largestContentfulPaint=await requestOrUndefined(LargestContentfulPaint,metricComputationData); const firstCPUIdle=await requestOrUndefined(FirstCPUIdle,metricComputationData); const interactive=await requestOrUndefined(Interactive,metricComputationData); const speedIndex=await requestOrUndefined(SpeedIndex,metricComputationData); @@ -8121,6 +8153,8 @@ firstContentfulPaintTs:firstContentfulPaint.timestamp, firstMeaningfulPaint:firstMeaningfulPaint.timing, firstMeaningfulPaintTs:firstMeaningfulPaint.timestamp, +largestContentfulPaint:largestContentfulPaint&&largestContentfulPaint.timing, +largestContentfulPaintTs:largestContentfulPaint&&largestContentfulPaint.timestamp, firstCPUIdle:firstCPUIdle&&firstCPUIdle.timing, firstCPUIdleTs:firstCPUIdle&&firstCPUIdle.timestamp, interactive:interactive&&interactive.timing, @@ -8140,6 +8174,8 @@ observedFirstContentfulPaintTs:traceOfTab.timestamps.firstContentfulPaint, observedFirstMeaningfulPaint:traceOfTab.timings.firstMeaningfulPaint, observedFirstMeaningfulPaintTs:traceOfTab.timestamps.firstMeaningfulPaint, +observedLargestContentfulPaint:traceOfTab.timings.largestContentfulPaint, +observedLargestContentfulPaintTs:traceOfTab.timestamps.largestContentfulPaint, observedTraceEnd:traceOfTab.timings.traceEnd, observedTraceEndTs:traceOfTab.timestamps.traceEnd, observedLoad:traceOfTab.timings.load, @@ -8167,7 +8203,7 @@ const details={ type:'debugdata', -items:[metrics]}; +items:[metrics,{lcpInvalidated:traceOfTab.lcpInvalidated}]}; return{ @@ -8215,9 +8251,13 @@ + + + + module.exports=Metrics; -},{"../computed/metrics/estimated-input-latency.js":14,"../computed/metrics/first-contentful-paint.js":15,"../computed/metrics/first-cpu-idle.js":16,"../computed/metrics/first-meaningful-paint.js":17,"../computed/metrics/interactive.js":18,"../computed/metrics/speed-index.js":30,"../computed/metrics/total-blocking-time.js":31,"../computed/speedline.js":37,"../computed/trace-of-tab.js":38,"./audit.js":3}],"../audits/mixed-content":[function(require,module,exports){ +},{"../computed/metrics/estimated-input-latency.js":14,"../computed/metrics/first-contentful-paint.js":15,"../computed/metrics/first-cpu-idle.js":16,"../computed/metrics/first-meaningful-paint.js":17,"../computed/metrics/interactive.js":18,"../computed/metrics/largest-contentful-paint.js":28,"../computed/metrics/speed-index.js":31,"../computed/metrics/total-blocking-time.js":32,"../computed/speedline.js":38,"../computed/trace-of-tab.js":39,"./audit.js":3}],"../audits/mixed-content":[function(require,module,exports){ @@ -8369,7 +8409,7 @@ module.exports=MixedContent; -},{"../computed/network-records.js":33,"../lib/url-shim.js":"url","../report/html/renderer/util.js":87,"./audit.js":3}],"../audits/network-requests":[function(require,module,exports){ +},{"../computed/network-records.js":34,"../lib/url-shim.js":"url","../report/html/renderer/util.js":88,"./audit.js":3}],"../audits/network-requests":[function(require,module,exports){ @@ -8471,7 +8511,7 @@ module.exports=NetworkRequests; -},{"../computed/network-records.js":33,"../lib/url-shim.js":"url","./audit.js":3}],"../audits/network-rtt":[function(require,module,exports){ +},{"../computed/network-records.js":34,"../lib/url-shim.js":"url","./audit.js":3}],"../audits/network-rtt":[function(require,module,exports){ (function(__filename){ @@ -8555,7 +8595,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/network-rtt.js"); -},{"../computed/network-analysis.js":32,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/network-server-latency":[function(require,module,exports){ +},{"../computed/network-analysis.js":33,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/network-server-latency":[function(require,module,exports){ (function(__filename){ @@ -8638,7 +8678,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/network-server-latency.js"); -},{"../computed/network-analysis.js":32,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/offline-start-url":[function(require,module,exports){ +},{"../computed/network-analysis.js":33,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/offline-start-url":[function(require,module,exports){ (function(__filename){ @@ -8873,7 +8913,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/performance-budget.js"); -},{"../computed/main-resource.js":11,"../computed/resource-summary.js":35,"../config/budget.js":41,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/predictive-perf":[function(require,module,exports){ +},{"../computed/main-resource.js":11,"../computed/resource-summary.js":36,"../config/budget.js":42,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/predictive-perf":[function(require,module,exports){ @@ -8977,7 +9017,7 @@ module.exports=PredictivePerf; -},{"../computed/metrics/lantern-estimated-input-latency.js":19,"../computed/metrics/lantern-first-contentful-paint.js":20,"../computed/metrics/lantern-first-cpu-idle.js":21,"../computed/metrics/lantern-first-meaningful-paint.js":22,"../computed/metrics/lantern-interactive.js":23,"../computed/metrics/lantern-speed-index.js":26,"../report/html/renderer/util.js":87,"./audit.js":3}],"../audits/redirects-http":[function(require,module,exports){ +},{"../computed/metrics/lantern-estimated-input-latency.js":19,"../computed/metrics/lantern-first-contentful-paint.js":20,"../computed/metrics/lantern-first-cpu-idle.js":21,"../computed/metrics/lantern-first-meaningful-paint.js":22,"../computed/metrics/lantern-interactive.js":23,"../computed/metrics/lantern-speed-index.js":26,"../report/html/renderer/util.js":88,"./audit.js":3}],"../audits/redirects-http":[function(require,module,exports){ (function(__filename){ @@ -9051,7 +9091,7 @@ title:'Avoid multiple page redirects', -description:'Redirects introduce additional delays before the page can be loaded. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects).'}; +description:'Redirects introduce additional delays before the page can be loaded. [Learn more](https://web.dev/redirects).'}; const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); @@ -9160,7 +9200,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/redirects.js"); -},{"../computed/main-resource.js":11,"../computed/metrics/lantern-interactive.js":23,"../computed/network-records.js":33,"../computed/trace-of-tab.js":38,"../lib/i18n/i18n.js":67,"./audit.js":3,"./byte-efficiency/byte-efficiency-audit.js":4}],"../audits/resource-summary":[function(require,module,exports){ +},{"../computed/main-resource.js":11,"../computed/metrics/lantern-interactive.js":23,"../computed/network-records.js":34,"../computed/trace-of-tab.js":39,"../lib/i18n/i18n.js":67,"./audit.js":3,"./byte-efficiency/byte-efficiency-audit.js":4}],"../audits/resource-summary":[function(require,module,exports){ (function(__filename){ @@ -9268,7 +9308,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/resource-summary.js"); -},{"../computed/resource-summary.js":35,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/screenshot-thumbnails":[function(require,module,exports){ +},{"../computed/resource-summary.js":36,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/screenshot-thumbnails":[function(require,module,exports){ @@ -9418,7 +9458,7 @@ module.exports=ScreenshotThumbnails; -},{"../computed/metrics/interactive.js":18,"../computed/speedline.js":37,"../lib/lh-error.js":71,"./audit.js":3,"jpeg-js":121}],"../audits/seo/canonical":[function(require,module,exports){ +},{"../computed/metrics/interactive.js":18,"../computed/speedline.js":38,"../lib/lh-error.js":72,"./audit.js":3,"jpeg-js":122}],"../audits/seo/canonical":[function(require,module,exports){ (function(__filename){ @@ -9999,7 +10039,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/seo/font-size.js"); -},{"../../computed/viewport-meta.js":40,"../../lib/i18n/i18n.js":67,"../../lib/url-shim.js":"url","../audit.js":3}],"../audits/seo/hreflang":[function(require,module,exports){ +},{"../../computed/viewport-meta.js":41,"../../lib/i18n/i18n.js":67,"../../lib/url-shim.js":"url","../audit.js":3}],"../audits/seo/hreflang":[function(require,module,exports){ (function(global,__filename){ @@ -10119,7 +10159,7 @@ module.exports.UIStrings=UIStrings; }).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},"/lighthouse-core/audits/seo/hreflang.js"); -},{"../../lib/i18n/i18n.js":67,"../audit.js":3,"axe-core/lib/core/utils/valid-langs.js":95}],"../audits/seo/http-status-code":[function(require,module,exports){ +},{"../../lib/i18n/i18n.js":67,"../audit.js":3,"axe-core/lib/core/utils/valid-langs.js":96}],"../audits/seo/http-status-code":[function(require,module,exports){ (function(__filename){ @@ -10345,7 +10385,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/seo/is-crawlable.js"); -},{"../../computed/main-resource.js":11,"../../lib/i18n/i18n.js":67,"../../lib/url-shim.js":"url","../audit.js":3,"robots-parser":160}],"../audits/seo/link-text":[function(require,module,exports){ +},{"../../computed/main-resource.js":11,"../../lib/i18n/i18n.js":67,"../../lib/url-shim.js":"url","../audit.js":3,"robots-parser":161}],"../audits/seo/link-text":[function(require,module,exports){ (function(__filename){ @@ -10401,7 +10441,17 @@ 'mais informação', 'mais informações', 'mais', -'veja mais']); +'veja mais', + +'여기', +'여기를 클릭', +'클릭', +'링크', +'자세히', +'자세히 보기', +'계속', +'이동', +'전체 보기']); const i18n=require('../../lib/i18n/i18n.js'); @@ -11404,7 +11454,7 @@ }).call(this,"/lighthouse-core/audits/seo/tap-targets.js"); -},{"../../computed/viewport-meta.js":40,"../../lib/i18n/i18n.js":67,"../../lib/rect-helpers.js":77,"../../lib/tappable-rects.js":82,"../audit.js":3}],"../audits/service-worker":[function(require,module,exports){ +},{"../../computed/viewport-meta.js":41,"../../lib/i18n/i18n.js":67,"../../lib/rect-helpers.js":78,"../../lib/tappable-rects.js":83,"../audit.js":3}],"../audits/service-worker":[function(require,module,exports){ (function(__filename){ @@ -11781,7 +11831,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/themed-omnibox.js"); -},{"../computed/manifest-values.js":13,"../lib/i18n/i18n.js":67,"./multi-check-audit.js":6,"cssstyle/lib/parsers":104}],"../audits/third-party-summary":[function(require,module,exports){ +},{"../computed/manifest-values.js":13,"../lib/i18n/i18n.js":67,"./multi-check-audit.js":6,"cssstyle/lib/parsers":105}],"../audits/third-party-summary":[function(require,module,exports){ (function(__filename){ @@ -11800,7 +11850,7 @@ const UIStrings={ -title:'Third-Party usage', +title:'Minimize third-party usage', failureTitle:'Reduce the impact of third-party code', @@ -11961,7 +12011,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/third-party-summary.js"); -},{"../computed/main-thread-tasks.js":12,"../computed/network-records.js":33,"../lib/i18n/i18n.js":67,"./audit.js":3,"./bootup-time.js":"../audits/bootup-time","third-party-web/httparchive-nostats-subset":168}],"../audits/time-to-first-byte":[function(require,module,exports){ +},{"../computed/main-thread-tasks.js":12,"../computed/network-records.js":34,"../lib/i18n/i18n.js":67,"./audit.js":3,"./bootup-time.js":"../audits/bootup-time","third-party-web/httparchive-nostats-subset":169}],"../audits/time-to-first-byte":[function(require,module,exports){ (function(__filename){ @@ -11981,7 +12031,7 @@ failureTitle:'Reduce server response times (TTFB)', description:'Time To First Byte identifies the time at which your server sends a response.'+ -' [Learn more](https://developers.google.com/web/tools/lighthouse/audits/ttfb).', +' [Learn more](https://web.dev/time-to-first-byte).', displayValue:`Root document took {timeInMs, number, milliseconds}\xa0ms`}; @@ -12070,7 +12120,7 @@ description:'Consider instrumenting your app with the User Timing API to measure your '+ 'app\'s real-world performance during key user experiences. '+ -'[Learn more](https://developers.google.com/web/tools/lighthouse/audits/user-timing).', +'[Learn more](https://web.dev/user-timings).', displayValue:`{itemCount, plural, =1 {1 user timing} @@ -12182,7 +12232,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/user-timings.js"); -},{"../computed/user-timings.js":39,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/uses-rel-preconnect":[function(require,module,exports){ +},{"../computed/user-timings.js":40,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/uses-rel-preconnect":[function(require,module,exports){ (function(__filename){ @@ -12214,7 +12264,7 @@ description: 'Consider adding `preconnect` or `dns-prefetch` resource hints to establish early '+ -`connections to important third-party origins. [Learn more](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect).`, +`connections to important third-party origins. [Learn more](https://web.dev/uses-rel-preconnect).`, @@ -12394,7 +12444,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/uses-rel-preconnect.js"); -},{"../computed/load-simulator.js":10,"../computed/main-resource.js":11,"../computed/network-records.js":33,"../lib/i18n/i18n.js":67,"../lib/url-shim.js":"url","./audit.js":3,"./byte-efficiency/byte-efficiency-audit.js":4}],"../audits/uses-rel-preload":[function(require,module,exports){ +},{"../computed/load-simulator.js":10,"../computed/main-resource.js":11,"../computed/network-records.js":34,"../lib/i18n/i18n.js":67,"../lib/url-shim.js":"url","./audit.js":3,"./byte-efficiency/byte-efficiency-audit.js":4}],"../audits/uses-rel-preload":[function(require,module,exports){ (function(__filename){ @@ -12417,7 +12467,7 @@ title:'Preload key requests', description:'Consider using `<link rel=preload>` to prioritize fetching resources that are '+ -'currently requested later in page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/preload).', +'currently requested later in page load. [Learn more](https://web.dev/uses-rel-preload).', @@ -12640,7 +12690,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/uses-rel-preload.js"); -},{"../computed/critical-request-chains.js":9,"../computed/load-simulator.js":10,"../computed/main-resource.js":11,"../computed/page-dependency-graph.js":34,"../lib/i18n/i18n.js":67,"../lib/url-shim.js":"url","./audit.js":3,"./byte-efficiency/byte-efficiency-audit.js":4}],"../audits/viewport":[function(require,module,exports){ +},{"../computed/critical-request-chains.js":9,"../computed/load-simulator.js":10,"../computed/main-resource.js":11,"../computed/page-dependency-graph.js":35,"../lib/i18n/i18n.js":67,"../lib/url-shim.js":"url","./audit.js":3,"./byte-efficiency/byte-efficiency-audit.js":4}],"../audits/viewport":[function(require,module,exports){ (function(__filename){ @@ -12708,7 +12758,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/audits/viewport.js"); -},{"../computed/viewport-meta.js":40,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/without-javascript":[function(require,module,exports){ +},{"../computed/viewport-meta.js":41,"../lib/i18n/i18n.js":67,"./audit.js":3}],"../audits/without-javascript":[function(require,module,exports){ (function(__filename){ @@ -12949,7 +12999,7 @@ module.exports=Accessibility; -},{"../../lib/page-functions.js":76,"./gatherer.js":53}],"../gather/gatherers/anchor-elements":[function(require,module,exports){ +},{"../../lib/page-functions.js":77,"./gatherer.js":54}],"../gather/gatherers/anchor-elements":[function(require,module,exports){ @@ -13031,7 +13081,7 @@ module.exports=AnchorElements; -},{"../../lib/page-functions.js":76,"./gatherer.js":53}],"../gather/gatherers/cache-contents":[function(require,module,exports){ +},{"../../lib/page-functions.js":77,"./gatherer.js":54}],"../gather/gatherers/cache-contents":[function(require,module,exports){ @@ -13092,7 +13142,7 @@ module.exports=CacheContents; -},{"./gatherer.js":53}],"../gather/gatherers/console-messages":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/console-messages":[function(require,module,exports){ @@ -13148,7 +13198,7 @@ module.exports=ConsoleMessages; -},{"./gatherer.js":53}],"../gather/gatherers/css-usage":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/css-usage":[function(require,module,exports){ @@ -13209,7 +13259,7 @@ module.exports=CSSUsage; -},{"./gatherer.js":53}],"../gather/gatherers/dobetterweb/appcache":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/dobetterweb/appcache":[function(require,module,exports){ @@ -13236,7 +13286,7 @@ module.exports=AppCacheManifest; -},{"../gatherer.js":53}],"../gather/gatherers/dobetterweb/doctype":[function(require,module,exports){ +},{"../gatherer.js":54}],"../gather/gatherers/dobetterweb/doctype":[function(require,module,exports){ @@ -13274,7 +13324,7 @@ module.exports=Doctype; -},{"../gatherer.js":53}],"../gather/gatherers/dobetterweb/domstats":[function(require,module,exports){ +},{"../gatherer.js":54}],"../gather/gatherers/dobetterweb/domstats":[function(require,module,exports){ @@ -13437,7 +13487,7 @@ module.exports=DOMStats; -},{"../../../lib/page-functions.js":76,"../gatherer.js":53}],"../gather/gatherers/dobetterweb/optimized-images":[function(require,module,exports){ +},{"../../../lib/page-functions.js":77,"../gatherer.js":54}],"../gather/gatherers/dobetterweb/optimized-images":[function(require,module,exports){ @@ -13450,6 +13500,7 @@ 'use strict'; +const log=require('lighthouse-logger'); const Gatherer=require('../gatherer.js'); const URL=require('../../../lib/url-shim.js'); const NetworkRequest=require('../../../lib/network-request.js'); @@ -13564,6 +13615,8 @@ const image={failed:false,...stats,...record}; results.push(image); }catch(err){ +log.warn('optimized-images',err.message); + Sentry.captureException(err,{ @@ -13607,7 +13660,7 @@ module.exports=OptimizedImages; -},{"../../../lib/network-request.js":75,"../../../lib/sentry.js":78,"../../../lib/url-shim.js":"url","../../driver.js":51,"../gatherer.js":53}],"../gather/gatherers/dobetterweb/password-inputs-with-prevented-paste":[function(require,module,exports){ +},{"../../../lib/network-request.js":76,"../../../lib/sentry.js":79,"../../../lib/url-shim.js":"url","../../driver.js":52,"../gatherer.js":54,"lighthouse-logger":125}],"../gather/gatherers/dobetterweb/password-inputs-with-prevented-paste":[function(require,module,exports){ @@ -13654,7 +13707,7 @@ module.exports=PasswordInputsWithPreventedPaste; -},{"../../../lib/page-functions.js":76,"../gatherer.js":53}],"../gather/gatherers/dobetterweb/response-compression":[function(require,module,exports){ +},{"../../../lib/page-functions.js":77,"../gatherer.js":54}],"../gather/gatherers/dobetterweb/response-compression":[function(require,module,exports){ (function(Buffer){ @@ -13780,7 +13833,7 @@ module.exports=ResponseCompression; }).call(this,require("buffer").Buffer); -},{"../../../lib/network-request.js":75,"../../../lib/sentry.js":78,"../../../lib/url-shim.js":"url","../gatherer.js":53,"buffer":101,"zlib":99}],"../gather/gatherers/dobetterweb/tags-blocking-first-paint":[function(require,module,exports){ +},{"../../../lib/network-request.js":76,"../../../lib/sentry.js":79,"../../../lib/url-shim.js":"url","../gatherer.js":54,"buffer":102,"zlib":100}],"../gather/gatherers/dobetterweb/tags-blocking-first-paint":[function(require,module,exports){ @@ -13973,7 +14026,7 @@ module.exports=TagsBlockingFirstPaint; -},{"../../driver.js":51,"../gatherer.js":53}],"../gather/gatherers/html-without-javascript":[function(require,module,exports){ +},{"../../driver.js":52,"../gatherer.js":54}],"../gather/gatherers/html-without-javascript":[function(require,module,exports){ @@ -14031,7 +14084,7 @@ module.exports=HTMLWithoutJavaScript; -},{"./gatherer.js":53}],"../gather/gatherers/http-redirect":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/http-redirect":[function(require,module,exports){ @@ -14078,7 +14131,7 @@ module.exports=HTTPRedirect; -},{"./gatherer.js":53}],"../gather/gatherers/iframe-elements":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/iframe-elements":[function(require,module,exports){ @@ -14135,7 +14188,7 @@ module.exports=IFrameElements; -},{"../../lib/page-functions.js":76,"./gatherer.js":53}],"../gather/gatherers/image-elements":[function(require,module,exports){ +},{"../../lib/page-functions.js":77,"./gatherer.js":54}],"../gather/gatherers/image-elements":[function(require,module,exports){ @@ -14268,6 +14321,12 @@ } class ImageElements extends Gatherer{ +constructor(){ +super(); + +this._naturalSizeCache=new Map(); +} + @@ -14275,11 +14334,16 @@ async fetchElementWithSizeInformation(driver,element){ const url=JSON.stringify(element.src); +if(this._naturalSizeCache.has(url)){ +return Object.assign(element,this._naturalSizeCache.get(url)); +} + try{ driver.setNextProtocolTimeout(250); const size=await driver.evaluateAsync(`(${determineNaturalSize.toString()})(${url})`); +this._naturalSizeCache.set(url,size); return Object.assign(element,size); }catch(_){ @@ -14356,7 +14420,7 @@ module.exports=ImageElements; -},{"../../lib/page-functions.js":76,"../driver.js":51,"./gatherer.js":53}],"../gather/gatherers/js-usage":[function(require,module,exports){ +},{"../../lib/page-functions.js":77,"../driver.js":52,"./gatherer.js":54}],"../gather/gatherers/js-usage":[function(require,module,exports){ @@ -14394,7 +14458,7 @@ module.exports=JsUsage; -},{"./gatherer.js":53}],"../gather/gatherers/link-elements":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/link-elements":[function(require,module,exports){ @@ -14406,8 +14470,9 @@ const URL=require('../../lib/url-shim.js').URL; const NetworkAnalyzer=require('../../lib/dependency-graph/simulator/network-analyzer.js'); const LinkHeader=require('http-link-header'); -const getElementsInDocumentString=require('../../lib/page-functions.js'). -getElementsInDocumentString; +const{getElementsInDocumentString}=require('../../lib/page-functions.js'); + + @@ -14439,6 +14504,36 @@ return null; } + + + + +function getLinkElementsInDOM(){ + + +const browserElements=getElementsInDocument('link'); + +const linkElements=[]; + +for(const link of browserElements){ + + +if(!(link instanceof HTMLLinkElement))continue; + +linkElements.push({ +rel:link.rel, +href:link.href, +hrefRaw:link.href, +hreflang:link.hreflang, +as:link.as, +crossOrigin:link.crossOrigin, +source:link.closest('head')?'head':'body'}); + +} + +return linkElements; +} + class LinkElements extends Gatherer{ @@ -14449,18 +14544,9 @@ return passContext.driver.evaluateAsync(`(() => { ${getElementsInDocumentString}; + ${getLinkElementsInDOM}; - return getElementsInDocument('link').map(link => { - return { - rel: link.rel, - href: link.href, - hrefRaw: link.href, - hreflang: link.hreflang, - as: link.as, - crossOrigin: link.crossOrigin, - source: link.closest('head') ? 'head' : 'body', - }; - }); + return getLinkElementsInDOM(); })()`,{useIsolation:true}); } @@ -14517,7 +14603,37 @@ module.exports=LinkElements; -},{"../../lib/dependency-graph/simulator/network-analyzer.js":62,"../../lib/page-functions.js":76,"../../lib/url-shim.js":"url","./gatherer.js":53,"http-link-header":108}],"../gather/gatherers/meta-elements":[function(require,module,exports){ +},{"../../lib/dependency-graph/simulator/network-analyzer.js":63,"../../lib/page-functions.js":77,"../../lib/url-shim.js":"url","./gatherer.js":54,"http-link-header":109}],"../gather/gatherers/main-document-content":[function(require,module,exports){ + + + + + +'use strict'; + +const Gatherer=require('./gatherer.js'); +const NetworkAnalyzer=require('../../lib/dependency-graph/simulator/network-analyzer.js'); + + + + +class MainDocumentContent extends Gatherer{ + + + + + +async afterPass(passContext,loadData){ +const mainResource=NetworkAnalyzer.findMainDocument(loadData.networkRecords,passContext.url); + +const driver=passContext.driver; +return driver.getRequestContent(mainResource.requestId); +}} + + +module.exports=MainDocumentContent; + +},{"../../lib/dependency-graph/simulator/network-analyzer.js":63,"./gatherer.js":54}],"../gather/gatherers/meta-elements":[function(require,module,exports){ @@ -14553,7 +14669,7 @@ module.exports=MetaElements; -},{"../../lib/page-functions.js":76,"./gatherer.js":53}],"../gather/gatherers/mixed-content":[function(require,module,exports){ +},{"../../lib/page-functions.js":77,"./gatherer.js":54}],"../gather/gatherers/mixed-content":[function(require,module,exports){ (function(Buffer){ @@ -14677,7 +14793,7 @@ module.exports=MixedContent; }).call(this,require("buffer").Buffer); -},{"../../lib/url-shim.js":"url","../driver.js":51,"./gatherer.js":53,"buffer":101}],"../gather/gatherers/offline":[function(require,module,exports){ +},{"../../lib/url-shim.js":"url","../driver.js":52,"./gatherer.js":54,"buffer":102}],"../gather/gatherers/offline":[function(require,module,exports){ @@ -14716,7 +14832,7 @@ module.exports=Offline; -},{"../../lib/url-shim.js":"url","./gatherer.js":53}],"../gather/gatherers/runtime-exceptions":[function(require,module,exports){ +},{"../../lib/url-shim.js":"url","./gatherer.js":54}],"../gather/gatherers/runtime-exceptions":[function(require,module,exports){ @@ -14766,7 +14882,7 @@ module.exports=RuntimeExceptions; -},{"./gatherer.js":53}],"../gather/gatherers/script-elements":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/script-elements":[function(require,module,exports){ @@ -14795,6 +14911,7 @@ return{ type:script.type||null, src:script.src||null, +id:script.id||null, async:script.async, defer:script.defer, source:script.closest('head')?'head':'body', @@ -14850,6 +14967,7 @@ devtoolsNodePath:'', type:null, src:record.url, +id:null, async:false, defer:false, source:'network', @@ -14866,7 +14984,7 @@ module.exports=ScriptElements; -},{"../../lib/dependency-graph/simulator/network-analyzer.js":62,"../../lib/network-request.js":75,"../../lib/page-functions.js":76,"./gatherer.js":53}],"../gather/gatherers/seo/embedded-content":[function(require,module,exports){ +},{"../../lib/dependency-graph/simulator/network-analyzer.js":63,"../../lib/network-request.js":76,"../../lib/page-functions.js":77,"./gatherer.js":54}],"../gather/gatherers/seo/embedded-content":[function(require,module,exports){ @@ -14909,7 +15027,7 @@ module.exports=EmbeddedContent; -},{"../../../lib/page-functions.js":76,"../gatherer.js":53}],"../gather/gatherers/seo/font-size":[function(require,module,exports){ +},{"../../../lib/page-functions.js":77,"../gatherer.js":54}],"../gather/gatherers/seo/font-size":[function(require,module,exports){ @@ -15275,7 +15393,7 @@ module.exports.computeSelectorSpecificity=computeSelectorSpecificity; module.exports.getEffectiveFontRule=getEffectiveFontRule; -},{"../../../lib/sentry.js":78,"../gatherer.js":53}],"../gather/gatherers/seo/robots-txt":[function(require,module,exports){ +},{"../../../lib/sentry.js":79,"../gatherer.js":54}],"../gather/gatherers/seo/robots-txt":[function(require,module,exports){ @@ -15316,7 +15434,7 @@ module.exports=RobotsTxt; -},{"../gatherer.js":53}],"../gather/gatherers/seo/tap-targets":[function(require,module,exports){ +},{"../gatherer.js":54}],"../gather/gatherers/seo/tap-targets":[function(require,module,exports){ @@ -15653,7 +15771,7 @@ module.exports=TapTargets; -},{"../../../lib/page-functions.js":76,"../../../lib/rect-helpers.js":77,"../gatherer.js":53}],"../gather/gatherers/service-worker":[function(require,module,exports){ +},{"../../../lib/page-functions.js":77,"../../../lib/rect-helpers.js":78,"../gatherer.js":54}],"../gather/gatherers/service-worker":[function(require,module,exports){ @@ -15681,7 +15799,7 @@ module.exports=ServiceWorker; -},{"./gatherer.js":53}],"../gather/gatherers/source-maps":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/source-maps":[function(require,module,exports){ (function(Buffer){ @@ -15844,7 +15962,7 @@ module.exports=SourceMaps; }).call(this,require("buffer").Buffer); -},{"../../lib/url-shim.js":"url","./gatherer.js":53,"buffer":101}],"../gather/gatherers/start-url":[function(require,module,exports){ +},{"../../lib/url-shim.js":"url","./gatherer.js":54,"buffer":102}],"../gather/gatherers/start-url":[function(require,module,exports){ @@ -15956,7 +16074,7 @@ module.exports=StartUrl; -},{"./gatherer.js":53}],"../gather/gatherers/viewport-dimensions":[function(require,module,exports){ +},{"./gatherer.js":54}],"../gather/gatherers/viewport-dimensions":[function(require,module,exports){ @@ -16009,7 +16127,7 @@ module.exports=ViewportDimensions; -},{"./gatherer.js":53}],1:[function(require,module,exports){ +},{"./gatherer.js":54}],1:[function(require,module,exports){ @@ -16020,6 +16138,7 @@ const lighthouse=require('../lighthouse-core/index.js'); const RawProtocol=require('../lighthouse-core/gather/connections/raw.js'); const log=require('lighthouse-logger'); +const{registerLocaleData,lookupLocale}=require('../lighthouse-core/lib/i18n/i18n.js'); @@ -16064,7 +16183,9 @@ module.exports={ runLighthouseInWorker, -listenForStatus}; +listenForStatus, +registerLocaleData, +lookupLocale}; } @@ -16075,9 +16196,13 @@ self.runLighthouseInWorker=runLighthouseInWorker; self.listenForStatus=listenForStatus; + +self.registerLocaleData=registerLocaleData; + +self.lookupLocale=lookupLocale; } -},{"../lighthouse-core/gather/connections/raw.js":49,"../lighthouse-core/index.js":54,"lighthouse-logger":124}],2:[function(require,module,exports){ +},{"../lighthouse-core/gather/connections/raw.js":50,"../lighthouse-core/index.js":55,"../lighthouse-core/lib/i18n/i18n.js":67,"lighthouse-logger":125}],2:[function(require,module,exports){ (function(__filename){ @@ -16456,7 +16581,7 @@ module.exports=Audit; -},{"../lib/statistics.js":81,"../report/html/renderer/util.js":87}],4:[function(require,module,exports){ +},{"../lib/statistics.js":82,"../report/html/renderer/util.js":88}],4:[function(require,module,exports){ (function(__filename){ @@ -16553,8 +16678,10 @@ const transferSize=networkRecord.transferSize||0; -const resourceSize=networkRecord.resourceSize; -const compressionRatio=resourceSize!==undefined?transferSize/resourceSize:1; +const resourceSize=networkRecord.resourceSize||0; + +const compressionRatio=Number.isFinite(resourceSize)&&resourceSize>0? +transferSize/resourceSize:1; return Math.round(totalBytes*compressionRatio); } } @@ -16699,7 +16826,7 @@ module.exports=UnusedBytes; }).call(this,"/lighthouse-core/audits/byte-efficiency/byte-efficiency-audit.js"); -},{"../../computed/load-simulator.js":10,"../../computed/metrics/lantern-interactive.js":23,"../../computed/network-records.js":33,"../../computed/page-dependency-graph.js":34,"../../lib/i18n/i18n.js":67,"../../lib/statistics.js":81,"../audit.js":3}],5:[function(require,module,exports){ +},{"../../computed/load-simulator.js":10,"../../computed/metrics/lantern-interactive.js":23,"../../computed/network-records.js":34,"../../computed/page-dependency-graph.js":35,"../../lib/i18n/i18n.js":67,"../../lib/statistics.js":82,"../audit.js":3}],5:[function(require,module,exports){ @@ -16914,7 +17041,7 @@ module.exports=makeComputedArtifact; -},{"../lib/arbitrary-equality-map.js":55,"lighthouse-logger":124}],9:[function(require,module,exports){ +},{"../lib/arbitrary-equality-map.js":56,"lighthouse-logger":125}],9:[function(require,module,exports){ @@ -17083,7 +17210,7 @@ module.exports=makeComputedArtifact(CriticalRequestChains); -},{"../lib/network-request.js":75,"./computed-artifact.js":8,"./main-resource.js":11,"./network-records.js":33,"assert":91}],10:[function(require,module,exports){ +},{"../lib/network-request.js":76,"./computed-artifact.js":8,"./main-resource.js":11,"./network-records.js":34,"assert":92}],10:[function(require,module,exports){ @@ -17176,7 +17303,7 @@ module.exports=makeComputedArtifact(LoadSimulator); -},{"../config/constants.js":45,"../lib/dependency-graph/simulator/simulator.js":63,"./computed-artifact.js":8,"./network-analysis.js":32}],11:[function(require,module,exports){ +},{"../config/constants.js":46,"../lib/dependency-graph/simulator/simulator.js":64,"./computed-artifact.js":8,"./network-analysis.js":33}],11:[function(require,module,exports){ @@ -17212,7 +17339,7 @@ module.exports=makeComputedArtifact(MainResource); -},{"../lib/dependency-graph/simulator/network-analyzer.js":62,"./computed-artifact.js":8,"./network-records.js":33}],12:[function(require,module,exports){ +},{"../lib/dependency-graph/simulator/network-analyzer.js":63,"./computed-artifact.js":8,"./network-records.js":34}],12:[function(require,module,exports){ @@ -17238,7 +17365,7 @@ module.exports=makeComputedArtifact(MainThreadTasks); -},{"../lib/tracehouse/main-thread-tasks.js":83,"./computed-artifact.js":8,"./trace-of-tab.js":38}],13:[function(require,module,exports){ +},{"../lib/tracehouse/main-thread-tasks.js":84,"./computed-artifact.js":8,"./trace-of-tab.js":39}],13:[function(require,module,exports){ @@ -17433,7 +17560,7 @@ module.exports=makeComputedArtifact(EstimatedInputLatency); -},{"../../lib/lh-error.js":71,"../../lib/tracehouse/trace-processor.js":85,"../computed-artifact.js":8,"./lantern-estimated-input-latency.js":19,"./metric.js":29}],15:[function(require,module,exports){ +},{"../../lib/lh-error.js":72,"../../lib/tracehouse/trace-processor.js":86,"../computed-artifact.js":8,"./lantern-estimated-input-latency.js":19,"./metric.js":30}],15:[function(require,module,exports){ @@ -17471,7 +17598,7 @@ module.exports=makeComputedArtifact(FirstContentfulPaint); -},{"../computed-artifact.js":8,"./lantern-first-contentful-paint.js":20,"./metric.js":29}],16:[function(require,module,exports){ +},{"../computed-artifact.js":8,"./lantern-first-contentful-paint.js":20,"./metric.js":30}],16:[function(require,module,exports){ @@ -17687,7 +17814,7 @@ module.exports=makeComputedArtifact(FirstCPUIdle); -},{"../../lib/lh-error.js":71,"../../lib/tracehouse/trace-processor.js":85,"../computed-artifact.js":8,"./lantern-first-cpu-idle.js":21,"./metric.js":29}],17:[function(require,module,exports){ +},{"../../lib/lh-error.js":72,"../../lib/tracehouse/trace-processor.js":86,"../computed-artifact.js":8,"./lantern-first-cpu-idle.js":21,"./metric.js":30}],17:[function(require,module,exports){ @@ -17730,7 +17857,7 @@ module.exports=makeComputedArtifact(FirstMeaningfulPaint); -},{"../../lib/lh-error.js":71,"../computed-artifact.js":8,"./lantern-first-meaningful-paint.js":22,"./metric.js":29}],18:[function(require,module,exports){ +},{"../../lib/lh-error.js":72,"../computed-artifact.js":8,"./lantern-first-meaningful-paint.js":22,"./metric.js":30}],18:[function(require,module,exports){ @@ -17921,7 +18048,7 @@ -},{"../../lib/lh-error.js":71,"../../lib/network-recorder.js":74,"../../lib/tracehouse/trace-processor.js":85,"../computed-artifact.js":8,"./lantern-interactive.js":23,"./metric.js":29}],19:[function(require,module,exports){ +},{"../../lib/lh-error.js":72,"../../lib/network-recorder.js":75,"../../lib/tracehouse/trace-processor.js":86,"../computed-artifact.js":8,"./lantern-interactive.js":23,"./metric.js":30}],19:[function(require,module,exports){ @@ -18024,7 +18151,7 @@ module.exports=makeComputedArtifact(LanternEstimatedInputLatency); -},{"../../lib/dependency-graph/base-node.js":57,"../computed-artifact.js":8,"./estimated-input-latency.js":14,"./lantern-first-meaningful-paint.js":22,"./lantern-metric.js":25}],20:[function(require,module,exports){ +},{"../../lib/dependency-graph/base-node.js":58,"../computed-artifact.js":8,"./estimated-input-latency.js":14,"./lantern-first-meaningful-paint.js":22,"./lantern-metric.js":25}],20:[function(require,module,exports){ @@ -18225,7 +18352,7 @@ module.exports=makeComputedArtifact(LanternFirstContentfulPaint); -},{"../../lib/dependency-graph/base-node.js":57,"../computed-artifact.js":8,"./lantern-metric.js":25}],21:[function(require,module,exports){ +},{"../../lib/dependency-graph/base-node.js":58,"../computed-artifact.js":8,"./lantern-metric.js":25}],21:[function(require,module,exports){ @@ -18298,7 +18425,7 @@ module.exports=makeComputedArtifact(LanternFirstCPUIdle); -},{"../../lib/dependency-graph/base-node.js":57,"../computed-artifact.js":8,"./first-cpu-idle.js":16,"./lantern-interactive.js":23}],22:[function(require,module,exports){ +},{"../../lib/dependency-graph/base-node.js":58,"../computed-artifact.js":8,"./first-cpu-idle.js":16,"./lantern-interactive.js":23}],22:[function(require,module,exports){ @@ -18380,7 +18507,7 @@ module.exports=makeComputedArtifact(LanternFirstMeaningfulPaint); -},{"../../lib/lh-error.js":71,"../computed-artifact.js":8,"./lantern-first-contentful-paint.js":20,"./lantern-metric.js":25}],23:[function(require,module,exports){ +},{"../../lib/lh-error.js":72,"../computed-artifact.js":8,"./lantern-first-contentful-paint.js":20,"./lantern-metric.js":25}],23:[function(require,module,exports){ @@ -18490,7 +18617,7 @@ module.exports=makeComputedArtifact(LanternInteractive); -},{"../../lib/dependency-graph/base-node.js":57,"../../lib/network-request.js":75,"../computed-artifact.js":8,"./lantern-first-meaningful-paint.js":22,"./lantern-metric.js":25}],24:[function(require,module,exports){ +},{"../../lib/dependency-graph/base-node.js":58,"../../lib/network-request.js":76,"../computed-artifact.js":8,"./lantern-first-meaningful-paint.js":22,"./lantern-metric.js":25}],24:[function(require,module,exports){ @@ -18580,7 +18707,7 @@ module.exports=makeComputedArtifact(LanternMaxPotentialFID); -},{"../../lib/dependency-graph/base-node.js":57,"../computed-artifact.js":8,"./lantern-first-contentful-paint.js":20,"./lantern-metric.js":25}],25:[function(require,module,exports){ +},{"../../lib/dependency-graph/base-node.js":58,"../computed-artifact.js":8,"./lantern-first-contentful-paint.js":20,"./lantern-metric.js":25}],25:[function(require,module,exports){ @@ -18733,7 +18860,7 @@ module.exports=LanternMetricArtifact; -},{"../../lib/dependency-graph/base-node.js":57,"../../lib/network-request.js":75,"../load-simulator.js":10,"../page-dependency-graph.js":34,"../trace-of-tab.js":38}],26:[function(require,module,exports){ +},{"../../lib/dependency-graph/base-node.js":58,"../../lib/network-request.js":76,"../load-simulator.js":10,"../page-dependency-graph.js":35,"../trace-of-tab.js":39}],26:[function(require,module,exports){ @@ -18881,7 +19008,7 @@ module.exports=makeComputedArtifact(LanternSpeedIndex); -},{"../../config/constants.js":45,"../../lib/dependency-graph/base-node.js":57,"../computed-artifact.js":8,"../speedline.js":37,"./lantern-first-contentful-paint.js":20,"./lantern-metric.js":25}],27:[function(require,module,exports){ +},{"../../config/constants.js":46,"../../lib/dependency-graph/base-node.js":58,"../computed-artifact.js":8,"../speedline.js":38,"./lantern-first-contentful-paint.js":20,"./lantern-metric.js":25}],27:[function(require,module,exports){ @@ -19004,7 +19131,50 @@ module.exports=makeComputedArtifact(LanternTotalBlockingTime); -},{"../../lib/dependency-graph/base-node.js":57,"../computed-artifact.js":8,"./lantern-first-contentful-paint.js":20,"./lantern-interactive.js":23,"./lantern-metric.js":25,"./total-blocking-time.js":31}],28:[function(require,module,exports){ +},{"../../lib/dependency-graph/base-node.js":58,"../computed-artifact.js":8,"./lantern-first-contentful-paint.js":20,"./lantern-interactive.js":23,"./lantern-metric.js":25,"./total-blocking-time.js":32}],28:[function(require,module,exports){ + + + + + +'use strict'; + +const makeComputedArtifact=require('../computed-artifact.js'); +const ComputedMetric=require('./metric.js'); +const LHError=require('../../lib/lh-error.js'); + +class LargestContentfulPaint extends ComputedMetric{ + + + + + + +static computeSimulatedMetric(data,context){ +throw new Error('Unimplemented'); +} + + + + + +static async computeObservedMetric(data){ +const{traceOfTab}=data; +if(!traceOfTab.timestamps.largestContentfulPaint){ +throw new LHError(LHError.errors.NO_LCP); +} + +return{ + +timing:traceOfTab.timings.largestContentfulPaint, +timestamp:traceOfTab.timestamps.largestContentfulPaint}; + +}} + + +module.exports=makeComputedArtifact(LargestContentfulPaint); + +},{"../../lib/lh-error.js":72,"../computed-artifact.js":8,"./metric.js":30}],29:[function(require,module,exports){ @@ -19051,7 +19221,7 @@ module.exports=makeComputedArtifact(MaxPotentialFID); -},{"../../lib/lh-error.js":71,"../../lib/tracehouse/trace-processor.js":85,"../computed-artifact.js":8,"./lantern-max-potential-fid.js":24,"./metric.js":29}],29:[function(require,module,exports){ +},{"../../lib/lh-error.js":72,"../../lib/tracehouse/trace-processor.js":86,"../computed-artifact.js":8,"./lantern-max-potential-fid.js":24,"./metric.js":30}],30:[function(require,module,exports){ @@ -19125,7 +19295,7 @@ module.exports=ComputedMetric; -},{"../../lib/tracehouse/trace-processor.js":85,"../network-records.js":33,"../trace-of-tab.js":38}],30:[function(require,module,exports){ +},{"../../lib/tracehouse/trace-processor.js":86,"../network-records.js":34,"../trace-of-tab.js":39}],31:[function(require,module,exports){ @@ -19163,7 +19333,7 @@ module.exports=makeComputedArtifact(SpeedIndex); -},{"../computed-artifact.js":8,"../speedline.js":37,"./lantern-speed-index.js":26,"./metric.js":29}],31:[function(require,module,exports){ +},{"../computed-artifact.js":8,"../speedline.js":38,"./lantern-speed-index.js":26,"./metric.js":30}],32:[function(require,module,exports){ @@ -19279,7 +19449,7 @@ module.exports=makeComputedArtifact(TotalBlockingTime); -},{"../../lib/lh-error.js":71,"../../lib/tracehouse/trace-processor.js":85,"../computed-artifact.js":8,"./interactive.js":18,"./lantern-total-blocking-time.js":27,"./metric.js":29}],32:[function(require,module,exports){ +},{"../../lib/lh-error.js":72,"../../lib/tracehouse/trace-processor.js":86,"../computed-artifact.js":8,"./interactive.js":18,"./lantern-total-blocking-time.js":27,"./metric.js":30}],33:[function(require,module,exports){ @@ -19345,7 +19515,7 @@ module.exports=makeComputedArtifact(NetworkAnalysis); -},{"../lib/dependency-graph/simulator/network-analyzer.js":62,"./computed-artifact.js":8,"./network-records.js":33}],33:[function(require,module,exports){ +},{"../lib/dependency-graph/simulator/network-analyzer.js":63,"./computed-artifact.js":8,"./network-records.js":34}],34:[function(require,module,exports){ @@ -19368,7 +19538,7 @@ module.exports=makeComputedArtifact(NetworkRecords); -},{"../lib/network-recorder.js":74,"./computed-artifact.js":8}],34:[function(require,module,exports){ +},{"../lib/network-recorder.js":75,"./computed-artifact.js":8}],35:[function(require,module,exports){ @@ -19742,7 +19912,7 @@ -},{"../lib/dependency-graph/cpu-node.js":58,"../lib/dependency-graph/network-node.js":59,"../lib/dependency-graph/simulator/network-analyzer.js":62,"../lib/network-request.js":75,"../lib/tracehouse/trace-processor.js":85,"./computed-artifact.js":8,"./network-records.js":33,"./trace-of-tab.js":38}],35:[function(require,module,exports){ +},{"../lib/dependency-graph/cpu-node.js":59,"../lib/dependency-graph/network-node.js":60,"../lib/dependency-graph/simulator/network-analyzer.js":63,"../lib/network-request.js":76,"../lib/tracehouse/trace-processor.js":86,"./computed-artifact.js":8,"./network-records.js":34,"./trace-of-tab.js":39}],36:[function(require,module,exports){ @@ -19828,7 +19998,7 @@ module.exports=makeComputedArtifact(ResourceSummary); -},{"../lib/url-shim.js":"url","./computed-artifact.js":8,"./main-resource.js":11,"./network-records.js":33}],36:[function(require,module,exports){ +},{"../lib/url-shim.js":"url","./computed-artifact.js":8,"./main-resource.js":11,"./network-records.js":34}],37:[function(require,module,exports){ @@ -19859,7 +20029,7 @@ module.exports=makeComputedArtifact(Screenshots); -},{"./computed-artifact.js":8}],37:[function(require,module,exports){ +},{"./computed-artifact.js":8}],38:[function(require,module,exports){ @@ -19915,7 +20085,7 @@ module.exports=makeComputedArtifact(Speedline); -},{"../lib/lh-error.js":71,"./computed-artifact.js":8,"./trace-of-tab.js":38,"speedline-core":164}],38:[function(require,module,exports){ +},{"../lib/lh-error.js":72,"./computed-artifact.js":8,"./trace-of-tab.js":39,"speedline-core":165}],39:[function(require,module,exports){ @@ -19982,7 +20152,7 @@ module.exports=makeComputedArtifact(TraceOfTab); -},{"../lib/lh-error.js":71,"../lib/tracehouse/trace-processor.js":85,"./computed-artifact.js":8}],39:[function(require,module,exports){ +},{"../lib/lh-error.js":72,"../lib/tracehouse/trace-processor.js":86,"./computed-artifact.js":8}],40:[function(require,module,exports){ @@ -20067,7 +20237,7 @@ module.exports=makeComputedArtifact(UserTimings); -},{"./computed-artifact.js":8,"./trace-of-tab.js":38}],40:[function(require,module,exports){ +},{"./computed-artifact.js":8,"./trace-of-tab.js":39}],41:[function(require,module,exports){ @@ -20125,7 +20295,7 @@ -},{"./computed-artifact.js":8,"metaviewport-parser":128}],41:[function(require,module,exports){ +},{"./computed-artifact.js":8,"metaviewport-parser":129}],42:[function(require,module,exports){ @@ -20405,7 +20575,7 @@ module.exports=Budget; -},{}],42:[function(require,module,exports){ +},{}],43:[function(require,module,exports){ (function(process,__dirname){ @@ -20619,7 +20789,7 @@ }).call(this,require('_process'),"/lighthouse-core/config"); -},{"../audits/audit.js":3,"../runner.js":89,"_process":141,"path":139}],43:[function(require,module,exports){ +},{"../audits/audit.js":3,"../runner.js":90,"_process":142,"path":140}],44:[function(require,module,exports){ @@ -20844,7 +21014,7 @@ module.exports=ConfigPlugin; -},{}],44:[function(require,module,exports){ +},{}],45:[function(require,module,exports){ (function(__dirname){ @@ -21672,7 +21842,7 @@ module.exports=Config; }).call(this,"/lighthouse-core/config"); -},{"../runner.js":89,"./../lib/i18n/i18n.js":67,"./budget.js":41,"./config-helpers.js":42,"./config-plugin.js":43,"./constants.js":45,"./default-config.js":46,"./full-config.js":47,"lighthouse-logger":124,"lodash.isequal":125,"path":139}],45:[function(require,module,exports){ +},{"../runner.js":90,"./../lib/i18n/i18n.js":67,"./budget.js":42,"./config-helpers.js":43,"./config-plugin.js":44,"./constants.js":46,"./default-config.js":47,"./full-config.js":48,"lighthouse-logger":125,"lodash.isequal":126,"path":140}],46:[function(require,module,exports){ @@ -21768,7 +21938,7 @@ nonSimulatedPassConfigOverrides}; -},{}],46:[function(require,module,exports){ +},{}],47:[function(require,module,exports){ (function(__filename){ @@ -21908,6 +22078,7 @@ 'meta-elements', 'script-elements', 'iframe-elements', +'main-document-content', 'dobetterweb/appcache', 'dobetterweb/doctype', 'dobetterweb/domstats', @@ -22327,7 +22498,7 @@ }).call(this,"/lighthouse-core/config/default-config.js"); -},{"../lib/i18n/i18n.js":67,"./constants.js":45}],47:[function(require,module,exports){ +},{"../lib/i18n/i18n.js":67,"./constants.js":46}],48:[function(require,module,exports){ @@ -22362,7 +22533,7 @@ module.exports=fullConfig; -},{}],48:[function(require,module,exports){ +},{}],49:[function(require,module,exports){ @@ -22420,13 +22591,14 @@ -sendCommand(method,...paramArgs){ + +sendCommand(method,sessionId,...paramArgs){ const params=paramArgs.length?paramArgs[0]:undefined; log.formatProtocol('method => browser',{method,params},'verbose'); const id=++this._lastCommandId; -const message=JSON.stringify({id,method,params}); +const message=JSON.stringify({id,sessionId,method,params}); this.sendRawMessage(message); return new Promise(resolve=>{ @@ -22482,7 +22654,7 @@ if(callback){ this._callbacks.delete(object.id); -return callback.resolve(Promise.resolve().then(_=>{ +callback.resolve(Promise.resolve().then(_=>{ if(object.error){ log.formatProtocol('method <= browser ERR',{method:callback.method},'error'); throw LHError.fromProtocolMessage(callback.method,object.error); @@ -22525,7 +22697,7 @@ module.exports=Connection; -},{"../../lib/lh-error.js":71,"events":107,"lighthouse-logger":124}],49:[function(require,module,exports){ +},{"../../lib/lh-error.js":72,"events":108,"lighthouse-logger":125}],50:[function(require,module,exports){ @@ -22585,7 +22757,7 @@ module.exports=RawConnection; -},{"./connection.js":48}],50:[function(require,module,exports){ +},{"./connection.js":49}],51:[function(require,module,exports){ @@ -22642,7 +22814,7 @@ module.exports=DevtoolsLog; -},{}],51:[function(require,module,exports){ +},{}],52:[function(require,module,exports){ (function(Buffer){ @@ -22653,7 +22825,7 @@ const NetworkRecorder=require('../lib/network-recorder.js'); const emulation=require('../lib/emulation.js'); -const Element=require('../lib/element.js'); +const LHElement=require('../lib/lh-element.js'); const LHError=require('../lib/lh-error.js'); const NetworkRequest=require('../lib/network-request.js'); const EventEmitter=require('events').EventEmitter; @@ -22715,21 +22887,8 @@ this._monitoredUrl=null; - - - - - - - -this._targetProxyMessageId=0; - this.on('Target.attachedToTarget',event=>{ -this._handleTargetAttached(event,[]).catch(this._handleEventError); -}); - -this.on('Target.receivedMessageFromTarget',event=>{ -this._handleReceivedMessageFromTarget(event,[]).catch(this._handleEventError); +this._handleTargetAttached(event).catch(this._handleEventError); }); @@ -22897,10 +23056,12 @@ -_shouldToggleDomain(domain,enable){ -const enabledCount=this._domainEnabledCounts.get(domain)||0; + +_shouldToggleDomain(domain,sessionId,enable){ +const key=domain+(sessionId||''); +const enabledCount=this._domainEnabledCounts.get(key)||0; const newCount=enabledCount+(enable?1:-1); -this._domainEnabledCounts.set(domain,Math.max(0,newCount)); +this._domainEnabledCounts.set(key,Math.max(0,newCount)); if(enable&&newCount===1||!enable&&newCount===0){ @@ -22949,61 +23110,29 @@ - -async _handleReceivedMessageFromTarget(event,parentSessionIds){ -const{targetId,sessionId,message}=event; - -const protocolMessage=JSON.parse(message); - - -if('id'in protocolMessage)return; - - - -const sessionIdPath=[sessionId,...parentSessionIds]; - -if(protocolMessage.method==='Target.receivedMessageFromTarget'){ - -await this._handleReceivedMessageFromTarget(protocolMessage.params,sessionIdPath); -} - -if(protocolMessage.method==='Target.attachedToTarget'){ - -await this._handleTargetAttached(protocolMessage.params,sessionIdPath); -} - -if(protocolMessage.method.startsWith('Network')){ -this._handleProtocolEvent({...protocolMessage,source:{targetId,sessionId}}); -} -} - - - - - -async _handleTargetAttached(event,parentSessionIds){ -const sessionIdPath=[event.sessionId,...parentSessionIds]; - +async _handleTargetAttached(event){ if(event.targetInfo.type!=='iframe'){ -await this.sendMessageToTarget(sessionIdPath,'Runtime.runIfWaitingForDebugger'); +await this.sendCommandToSession('Runtime.runIfWaitingForDebugger',event.sessionId); return; } -await this.sendMessageToTarget(sessionIdPath,'Network.enable'); +await this.sendCommandToSession('Network.enable',event.sessionId); -await this.sendMessageToTarget(sessionIdPath,'Target.setAutoAttach',{ + +await this.sendCommandToSession('Target.setAutoAttach',event.sessionId,{ autoAttach:true, +flatten:true, waitForDebuggerOnStart:true}); -await this.sendMessageToTarget(sessionIdPath,'Runtime.runIfWaitingForDebugger'); +await this.sendCommandToSession('Runtime.runIfWaitingForDebugger',event.sessionId); } @@ -23016,38 +23145,7 @@ -sendMessageToTarget(sessionIdPath,method,...params){ -this._targetProxyMessageId++; - -let payload={ -sessionId:sessionIdPath[0], -message:JSON.stringify({id:this._targetProxyMessageId,method,params:params[0]})}; - - -for(const sessionId of sessionIdPath.slice(1)){ -this._targetProxyMessageId++; -payload={ -sessionId, -message:JSON.stringify({ -id:this._targetProxyMessageId, -method:'Target.sendMessageToTarget', -params:payload})}; - - -} - -return this.sendCommand('Target.sendMessageToTarget',payload); -} - - - - - - - - - -sendCommand(method,...params){ +sendCommandToSession(method,sessionId,...params){ const timeout=this._nextProtocolTimeout; this._nextProtocolTimeout=DEFAULT_PROTOCOL_TIMEOUT; return new Promise(async(resolve,reject)=>{ @@ -23059,7 +23157,7 @@ reject(err); },timeout); try{ -const result=await this._innerSendCommand(method,...params); +const result=await this._innerSendCommand(method,sessionId,...params); resolve(result); }catch(err){ reject(err); @@ -23076,16 +23174,28 @@ +sendCommand(method,...params){ +return this.sendCommandToSession(method,undefined,...params); +} -_innerSendCommand(method,...params){ + + + + + + + + + +_innerSendCommand(method,sessionId,...params){ const domainCommand=/^(\w+)\.(enable|disable)$/.exec(method); if(domainCommand){ const enable=domainCommand[2]==='enable'; -if(!this._shouldToggleDomain(domainCommand[1],enable)){ +if(!this._shouldToggleDomain(domainCommand[1],sessionId,enable)){ return Promise.resolve(); } } -return this._connection.sendCommand(method,...params); +return this._connection.sendCommand(method,sessionId,...params); } @@ -23175,7 +23285,11 @@ const response=await this.sendCommand('Runtime.evaluate',evaluationParams); if(response.exceptionDetails){ -return Promise.reject(new Error(`Evaluation exception: ${response.exceptionDetails.text}`)); + +const errorMessage=response.exceptionDetails.exception? +response.exceptionDetails.exception.description: +response.exceptionDetails.text; +return Promise.reject(new Error(`Evaluation exception: ${errorMessage}`)); } if(response.result===undefined){ @@ -23775,6 +23889,7 @@ await this.sendCommand('Target.setAutoAttach',{ +flatten:true, autoAttach:true, waitForDebuggerOnStart:true}); @@ -23784,7 +23899,7 @@ await this.sendCommand('Page.setLifecycleEventsEnabled',{enabled:true}); await this.sendCommand('Emulation.setScriptExecutionDisabled',{value:disableJS}); -const waitforPageNavigateCmd=this._innerSendCommand('Page.navigate',{url}); +const waitforPageNavigateCmd=this._innerSendCommand('Page.navigate',undefined,{url}); if(waitForNavigated){ await this._waitForFrameNavigated(); @@ -23884,7 +23999,7 @@ if(targetNode.nodeId===0){ return null; } -return new Element(targetNode,this); +return new LHElement(targetNode,this); } @@ -23904,7 +24019,7 @@ const elementList=[]; targetNodeList.nodeIds.forEach(nodeId=>{ if(nodeId!==0){ -elementList.push(new Element({nodeId},this)); +elementList.push(new LHElement({nodeId},this)); } }); return elementList; @@ -23920,7 +24035,7 @@ return this.getNodesInDocument(pierce). then(nodes=>nodes. filter(node=>node.nodeType===1). -map(node=>new Element({nodeId:node.nodeId},this))); +map(node=>new LHElement({nodeId:node.nodeId},this))); } @@ -24010,7 +24125,7 @@ resolve({traceEvents}); }); -return this.sendCommand('Tracing.end').catch(reject); +this.sendCommand('Tracing.end').catch(reject); }); } @@ -24227,7 +24342,7 @@ module.exports=Driver; }).call(this,require("buffer").Buffer); -},{"../config/constants.js":45,"../lib/element.js":65,"../lib/emulation.js":66,"../lib/lh-error.js":71,"../lib/network-recorder.js":74,"../lib/network-request.js":75,"../lib/page-functions.js":76,"../lib/url-shim.js":"url","./connections/connection.js":48,"./devtools-log.js":50,"buffer":101,"events":107,"lighthouse-logger":124}],52:[function(require,module,exports){ +},{"../config/constants.js":46,"../lib/emulation.js":66,"../lib/lh-element.js":71,"../lib/lh-error.js":72,"../lib/network-recorder.js":75,"../lib/network-request.js":76,"../lib/page-functions.js":77,"../lib/url-shim.js":"url","./connections/connection.js":49,"./devtools-log.js":51,"buffer":102,"events":108,"lighthouse-logger":125}],53:[function(require,module,exports){ @@ -24899,7 +25014,7 @@ module.exports=GatherRunner; -},{"../config/constants.js":45,"../lib/dependency-graph/simulator/network-analyzer.js":62,"../lib/i18n/i18n.js":67,"../lib/lh-error.js":71,"../lib/manifest-parser.js":72,"../lib/network-recorder.js":74,"../lib/stack-collector.js":79,"lighthouse-logger":124}],53:[function(require,module,exports){ +},{"../config/constants.js":46,"../lib/dependency-graph/simulator/network-analyzer.js":63,"../lib/i18n/i18n.js":67,"../lib/lh-error.js":72,"../lib/manifest-parser.js":73,"../lib/network-recorder.js":75,"../lib/stack-collector.js":80,"lighthouse-logger":125}],54:[function(require,module,exports){ @@ -24960,7 +25075,7 @@ module.exports=Gatherer; -},{}],54:[function(require,module,exports){ +},{}],55:[function(require,module,exports){ @@ -25029,11 +25144,10 @@ lighthouse.Audit=require('./audits/audit.js'); lighthouse.Gatherer=require('./gather/gatherers/gatherer.js'); lighthouse.NetworkRecords=require('./computed/network-records.js'); -lighthouse.registerLocaleData=require('./lib/i18n/i18n.js').registerLocaleData; module.exports=lighthouse; -},{"./audits/audit.js":3,"./computed/network-records.js":33,"./config/config.js":44,"./gather/connections/cri.js":100,"./gather/driver.js":51,"./gather/gatherers/gatherer.js":53,"./lib/i18n/i18n.js":67,"./runner.js":89,"lighthouse-logger":124}],55:[function(require,module,exports){ +},{"./audits/audit.js":3,"./computed/network-records.js":34,"./config/config.js":45,"./gather/connections/cri.js":101,"./gather/driver.js":52,"./gather/gatherers/gatherer.js":54,"./runner.js":90,"lighthouse-logger":125}],56:[function(require,module,exports){ @@ -25116,7 +25230,7 @@ module.exports=ArbitraryEqualityMap; -},{"lodash.isequal":125}],56:[function(require,module,exports){ +},{"lodash.isequal":126}],57:[function(require,module,exports){ (function(process){ @@ -25412,7 +25526,7 @@ }).call(this,require('_process')); -},{"../computed/load-simulator.js":10,"../computed/network-analysis.js":32,"../lib/lh-error.js":71,"./dependency-graph/simulator/simulator.js":63,"./lantern-trace-saver.js":70,"./traces/pwmetrics-events.js":86,"_process":141,"fs":100,"lighthouse-logger":124,"mkdirp":100,"path":139,"rimraf":100,"stream":166}],57:[function(require,module,exports){ +},{"../computed/load-simulator.js":10,"../computed/network-analysis.js":33,"../lib/lh-error.js":72,"./dependency-graph/simulator/simulator.js":64,"./lantern-trace-saver.js":70,"./traces/pwmetrics-events.js":87,"_process":142,"fs":101,"lighthouse-logger":125,"mkdirp":101,"path":140,"rimraf":101,"stream":167}],58:[function(require,module,exports){ @@ -25727,7 +25841,7 @@ module.exports=BaseNode; -},{}],58:[function(require,module,exports){ +},{}],59:[function(require,module,exports){ @@ -25815,7 +25929,7 @@ module.exports=CPUNode; -},{"./base-node.js":57}],59:[function(require,module,exports){ +},{"./base-node.js":58}],60:[function(require,module,exports){ @@ -25899,7 +26013,7 @@ module.exports=NetworkNode; -},{"../network-request.js":75,"./base-node.js":57}],60:[function(require,module,exports){ +},{"../network-request.js":76,"./base-node.js":58}],61:[function(require,module,exports){ @@ -26070,7 +26184,7 @@ }}; -},{"./network-analyzer.js":62,"./tcp-connection.js":64}],61:[function(require,module,exports){ +},{"./network-analyzer.js":63,"./tcp-connection.js":65}],62:[function(require,module,exports){ @@ -26145,7 +26259,7 @@ module.exports=DNSCache; -},{}],62:[function(require,module,exports){ +},{}],63:[function(require,module,exports){ @@ -26622,7 +26736,7 @@ -},{"../../network-request.js":75,"../../url-shim.js":"url"}],63:[function(require,module,exports){ +},{"../../network-request.js":76,"../../url-shim.js":"url"}],64:[function(require,module,exports){ @@ -27133,7 +27247,7 @@ -},{"../../../config/constants.js":45,"../base-node.js":57,"./connection-pool.js":60,"./dns-cache.js":61,"./tcp-connection.js":64}],64:[function(require,module,exports){ +},{"../../../config/constants.js":46,"../base-node.js":58,"./connection-pool.js":61,"./dns-cache.js":62,"./tcp-connection.js":65}],65:[function(require,module,exports){ @@ -27341,80 +27455,7 @@ -},{}],65:[function(require,module,exports){ - - - - - -'use strict'; - -const Driver=require('../gather/driver.js'); - -class Element{ - - - - -constructor(element,driver){ -if(!element||!driver){ -throw Error('Driver and element required to create Element'); -} -this.driver=driver; -this.element=element; -} - - - - - -getAttribute(name){ -return this.driver. -sendCommand('DOM.getAttributes',{ -nodeId:this.element.nodeId}). - - - - -then(resp=>{ -const attrIndex=resp.attributes.indexOf(name); -if(attrIndex===-1){ -return null; -} - -return resp.attributes[attrIndex+1]; -}); -} - - - - -getNodeId(){ -return this.element.nodeId; -} - - - - - -getProperty(propName){ -return this.driver. -sendCommand('DOM.resolveNode',{ -nodeId:this.element.nodeId}). - -then(resp=>{ -if(!resp.object.objectId){ -return null; -} -return this.driver.getObjectProperty(resp.object.objectId,propName); -}). -catch(()=>null); -}} - - -module.exports=Element; - -},{"../gather/driver.js":51}],66:[function(require,module,exports){ +},{}],66:[function(require,module,exports){ @@ -28088,7 +28129,7 @@ }).call(this,"/lighthouse-core/lib/i18n/i18n.js","/lighthouse-core/lib/i18n"); -},{"./locales.js":68,"intl":100,"intl-messageformat":118,"intl-pluralrules":100,"lighthouse-logger":124,"lodash.isequal":125,"lookup-closest-locale":126,"path":139}],68:[function(require,module,exports){ +},{"./locales.js":68,"intl":101,"intl-messageformat":119,"intl-pluralrules":101,"lighthouse-logger":125,"lodash.isequal":126,"lookup-closest-locale":127,"path":140}],68:[function(require,module,exports){ @@ -28205,7 +28246,7 @@ module.exports=locales; -},{"./locales/ar-XB.json":100,"./locales/ar.json":100,"./locales/bg.json":100,"./locales/ca.json":100,"./locales/cs.json":100,"./locales/da.json":100,"./locales/de.json":100,"./locales/el.json":100,"./locales/en-GB.json":100,"./locales/en-US.json":100,"./locales/en-XA.json":100,"./locales/en-XL.json":100,"./locales/es-419.json":100,"./locales/es.json":100,"./locales/fi.json":100,"./locales/fil.json":100,"./locales/fr.json":100,"./locales/he.json":100,"./locales/hi.json":100,"./locales/hr.json":100,"./locales/hu.json":100,"./locales/id.json":100,"./locales/it.json":100,"./locales/ja.json":100,"./locales/ko.json":100,"./locales/lt.json":100,"./locales/lv.json":100,"./locales/nl.json":100,"./locales/no.json":100,"./locales/pl.json":100,"./locales/pt-PT.json":100,"./locales/pt.json":100,"./locales/ro.json":100,"./locales/ru.json":100,"./locales/sk.json":100,"./locales/sl.json":100,"./locales/sr-Latn.json":100,"./locales/sr.json":100,"./locales/sv.json":100,"./locales/ta.json":100,"./locales/te.json":100,"./locales/th.json":100,"./locales/tr.json":100,"./locales/uk.json":100,"./locales/vi.json":100,"./locales/zh-HK.json":100,"./locales/zh-TW.json":100,"./locales/zh.json":100}],69:[function(require,module,exports){ +},{"./locales/ar-XB.json":101,"./locales/ar.json":101,"./locales/bg.json":101,"./locales/ca.json":101,"./locales/cs.json":101,"./locales/da.json":101,"./locales/de.json":101,"./locales/el.json":101,"./locales/en-GB.json":101,"./locales/en-US.json":101,"./locales/en-XA.json":101,"./locales/en-XL.json":101,"./locales/es-419.json":101,"./locales/es.json":101,"./locales/fi.json":101,"./locales/fil.json":101,"./locales/fr.json":101,"./locales/he.json":101,"./locales/hi.json":101,"./locales/hr.json":101,"./locales/hu.json":101,"./locales/id.json":101,"./locales/it.json":101,"./locales/ja.json":101,"./locales/ko.json":101,"./locales/lt.json":101,"./locales/lv.json":101,"./locales/nl.json":101,"./locales/no.json":101,"./locales/pl.json":101,"./locales/pt-PT.json":101,"./locales/pt.json":101,"./locales/ro.json":101,"./locales/ru.json":101,"./locales/sk.json":101,"./locales/sl.json":101,"./locales/sr-Latn.json":101,"./locales/sr.json":101,"./locales/sv.json":101,"./locales/ta.json":101,"./locales/te.json":101,"./locales/th.json":101,"./locales/tr.json":101,"./locales/uk.json":101,"./locales/vi.json":101,"./locales/zh-HK.json":101,"./locales/zh-TW.json":101,"./locales/zh.json":101}],69:[function(require,module,exports){ @@ -28488,6 +28529,79 @@ },{}],71:[function(require,module,exports){ + + + + + +'use strict'; + +const Driver=require('../gather/driver.js'); + +class LHElement{ + + + + +constructor(element,driver){ +if(!element||!driver){ +throw Error('Driver and element required to create Element'); +} +this.driver=driver; +this.element=element; +} + + + + + +getAttribute(name){ +return this.driver. +sendCommand('DOM.getAttributes',{ +nodeId:this.element.nodeId}). + + + + +then(resp=>{ +const attrIndex=resp.attributes.indexOf(name); +if(attrIndex===-1){ +return null; +} + +return resp.attributes[attrIndex+1]; +}); +} + + + + +getNodeId(){ +return this.element.nodeId; +} + + + + + +getProperty(propName){ +return this.driver. +sendCommand('DOM.resolveNode',{ +nodeId:this.element.nodeId}). + +then(resp=>{ +if(!resp.object.objectId){ +return null; +} +return this.driver.getObjectProperty(resp.object.objectId,propName); +}). +catch(()=>null); +}} + + +module.exports=LHElement; + +},{"../gather/driver.js":52}],72:[function(require,module,exports){ (function(__filename){ @@ -28744,6 +28858,10 @@ code:'NO_FMP', message:UIStrings.badTraceRecording}, +NO_LCP:{ +code:'NO_LCP', +message:UIStrings.badTraceRecording}, + FMP_TOO_LATE_FOR_FCPUI:{code:'FMP_TOO_LATE_FOR_FCPUI',message:UIStrings.pageLoadTookTooLong}, @@ -28876,7 +28994,7 @@ module.exports.UIStrings=UIStrings; }).call(this,"/lighthouse-core/lib/lh-error.js"); -},{"./i18n/i18n.js":67}],72:[function(require,module,exports){ +},{"./i18n/i18n.js":67}],73:[function(require,module,exports){ @@ -29377,7 +29495,7 @@ module.exports=parse; -},{"./url-shim.js":"url","cssstyle/lib/parsers":104}],73:[function(require,module,exports){ +},{"./url-shim.js":"url","cssstyle/lib/parsers":105}],74:[function(require,module,exports){ @@ -29548,7 +29666,7 @@ module.exports={computeJSTokenLength,computeCSSTokenLength}; -},{}],74:[function(require,module,exports){ +},{}],75:[function(require,module,exports){ @@ -29581,7 +29699,7 @@ getInflightRecords(){ -return this._records.filter(record=>!NetworkRecorder.isNetworkRecordFinished(record)); +return this._records.filter(record=>!record.finished); } getRecords(){ @@ -29605,24 +29723,35 @@ } isIdle(){ -return!!this._getActiveIdlePeriod(0); +return this._isActiveIdlePeriod(0); } is2Idle(){ -return!!this._getActiveIdlePeriod(2); +return this._isActiveIdlePeriod(2); } -_getActiveIdlePeriod(allowedRequests){ -const quietPeriods=NetworkRecorder.findNetworkQuietPeriods(this._records,allowedRequests); -return quietPeriods.find(period=>!Number.isFinite(period.end)); + + + +_isActiveIdlePeriod(allowedRequests){ +let inflightRequests=0; + +for(let i=0;i<this._records.length;i++){ +const record=this._records[i]; +if(record.finished)continue; +if(IGNORED_NETWORK_SCHEMES.includes(record.parsedURL.scheme))continue; +inflightRequests++; +} + +return inflightRequests<=allowedRequests; } _emitNetworkStatus(){ -const zeroQuiet=this._getActiveIdlePeriod(0); -const twoQuiet=this._getActiveIdlePeriod(2); +const zeroQuiet=this.isIdle(); +const twoQuiet=this.is2Idle(); if(twoQuiet&&zeroQuiet){ log.verbose('NetworkRecorder','network fully-quiet'); @@ -29645,28 +29774,6 @@ -static _isQUICAndFinished(record){ -const isQUIC=record.responseHeaders&&record.responseHeaders. -some(header=>header.name.toLowerCase()==='alt-svc'&&/quic/.test(header.value)); -const receivedHeaders=record.timing&&record.timing.receiveHeadersEnd>0; -return!!(isQUIC&&receivedHeaders&&record.endTime); -} - - - - - -static isNetworkRecordFinished(record){ -return record.finished|| -NetworkRecorder._isQUICAndFinished(record); -} - - - - - - - static findNetworkQuietPeriods(networkRecords,allowedConcurrentRequests,endTime=Infinity){ @@ -29681,7 +29788,7 @@ timeBoundaries.push({time:record.startTime*1000,isStart:true}); -if(NetworkRecorder.isNetworkRecordFinished(record)){ +if(record.finished){ timeBoundaries.push({time:record.endTime*1000,isStart:false}); } }); @@ -29751,11 +29858,12 @@ onRequestWillBeSent(event){ const data=event.params; -const originalRequest=this._findRealRequestAndSetSource(data.requestId,event.source); +const originalRequest=this._findRealRequestAndSetSession(data.requestId,event.sessionId); if(!originalRequest){ const request=new NetworkRequest(); request.onRequestWillBeSent(data); +request.sessionId=event.sessionId; this.onRequestStarted(request); return; } @@ -29791,7 +29899,7 @@ onRequestServedFromCache(event){ const data=event.params; -const request=this._findRealRequestAndSetSource(data.requestId,event.source); +const request=this._findRealRequestAndSetSession(data.requestId,event.sessionId); if(!request)return; request.onRequestServedFromCache(); } @@ -29801,7 +29909,7 @@ onResponseReceived(event){ const data=event.params; -const request=this._findRealRequestAndSetSource(data.requestId,event.source); +const request=this._findRealRequestAndSetSession(data.requestId,event.sessionId); if(!request)return; request.onResponseReceived(data); } @@ -29811,7 +29919,7 @@ onDataReceived(event){ const data=event.params; -const request=this._findRealRequestAndSetSource(data.requestId,event.source); +const request=this._findRealRequestAndSetSession(data.requestId,event.sessionId); if(!request)return; request.onDataReceived(data); } @@ -29821,7 +29929,7 @@ onLoadingFinished(event){ const data=event.params; -const request=this._findRealRequestAndSetSource(data.requestId,event.source); +const request=this._findRealRequestAndSetSession(data.requestId,event.sessionId); if(!request)return; request.onLoadingFinished(data); this.onRequestFinished(request); @@ -29832,7 +29940,7 @@ onLoadingFailed(event){ const data=event.params; -const request=this._findRealRequestAndSetSource(data.requestId,event.source); +const request=this._findRealRequestAndSetSession(data.requestId,event.sessionId); if(!request)return; request.onLoadingFailed(data); this.onRequestFinished(request); @@ -29843,7 +29951,7 @@ onResourceChangedPriority(event){ const data=event.params; -const request=this._findRealRequestAndSetSource(data.requestId,event.source); +const request=this._findRealRequestAndSetSession(data.requestId,event.sessionId); if(!request)return; request.onResourceChangedPriority(data); } @@ -29875,7 +29983,7 @@ -_findRealRequestAndSetSource(requestId,source){ +_findRealRequestAndSetSession(requestId,sessionId){ let request=this._recordsById.get(requestId); if(!request||!request.isValid)return undefined; @@ -29883,7 +29991,8 @@ request=request.redirectDestination; } -request.setSource(source); +request.setSession(sessionId); + return request; } @@ -29940,7 +30049,7 @@ module.exports=NetworkRecorder; -},{"./network-request.js":75,"events":107,"lighthouse-logger":124}],75:[function(require,module,exports){ +},{"./network-request.js":76,"events":108,"lighthouse-logger":125}],76:[function(require,module,exports){ (function(global){ @@ -30076,12 +30185,6 @@ -this.targetId=undefined; - - - - - this.sessionId=undefined; this.isLinkPreload=false; } @@ -30218,14 +30321,8 @@ -setSource(source){ -if(source){ -this.targetId=source.targetId; -this.sessionId=source.sessionId; -}else{ -this.targetId=undefined; -this.sessionId=undefined; -} +setSession(sessionId){ +this.sessionId=sessionId; } @@ -30422,7 +30519,7 @@ module.exports=NetworkRequest; }).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{}); -},{"./url-shim.js":"url"}],76:[function(require,module,exports){ +},{"./url-shim.js":"url"}],77:[function(require,module,exports){ @@ -30745,7 +30842,7 @@ isPositionFixedString:isPositionFixed.toString()}; -},{}],77:[function(require,module,exports){ +},{}],78:[function(require,module,exports){ @@ -30995,7 +31092,7 @@ filterOutTinyRects}; -},{}],78:[function(require,module,exports){ +},{}],79:[function(require,module,exports){ @@ -31122,7 +31219,7 @@ module.exports=sentryDelegate; -},{"lighthouse-logger":124,"raven":100}],79:[function(require,module,exports){ +},{"lighthouse-logger":125,"raven":101}],80:[function(require,module,exports){ @@ -31139,7 +31236,7 @@ 'use strict'; -const libDetectorSource="var UNKNOWN_VERSION = null;\nvar d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests = {\n\n 'GWT': {\n icon: 'gwt',\n url: 'http://www.gwtproject.org/',\n test: function(win) {\n // pretty complicated, many possible tell tales\n var doc = win.document,\n hasHistFrame = doc.getElementById('__gwt_historyFrame'),\n hasGwtUid = doc.gwt_uid,\n hasBodyListener = doc.body.__listener,\n hasBodyEventBits = doc.body.__eventBits,\n hasModules = win.__gwt_activeModules,\n hasJsonP = win.__gwt_jsonp__,\n hasRootWinApp = win.__gwt_scriptsLoaded || win.__gwt_stylesLoaded || win.__gwt_activeModules;\n\n // use the many possible indicators\n if(hasHistFrame || hasGwtUid || hasBodyListener || hasBodyEventBits || hasModules || hasJsonP || hasRootWinApp) {\n\n // carefully look at frames, but only if certain is GWT frame\n var frames = doc.getElementsByTagName('iframe'),\n gwtVersion = UNKNOWN_VERSION;\n for(var n=0; n<frames.length; n++) {\n // catch security access errors\n try {\n var hasNegativeTabIndex = frames[n].tabIndex < 0; // on for GWT\n if(hasNegativeTabIndex && frames[n].contentWindow && frames[n].contentWindow.$gwt_version) {\n gwtVersion = frames[n].contentWindow.$gwt_version;\n break;\n }\n }\n catch(e) {}\n }\n\n if(gwtVersion=='0.0.999') {\n gwtVersion = 'Google Internal';\n }\n\n return { version: gwtVersion };\n }\n return false;\n }\n },\n\n 'Ink': {\n icon: 'ink',\n url: 'http://ink.sapo.pt/',\n test: function(win) {\n if (win.Ink && win.Ink.createModule) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Vaadin': {\n icon: 'vaadin',\n url: 'https://vaadin.com/',\n test: function(win) {\n if (win.vaadin && win.vaadin.registerWidgetset) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Bootstrap': {\n icon: 'bootstrap',\n url: 'http://getbootstrap.com/',\n npm: 'bootstrap',\n // look for a function Boostrap has added to jQuery - regex for BS 2 & 3\n test: function(win) {\n var jQueryAvailable = win.$ && win.$.fn,\n RE_PREFIX_V2 = '\\\\$this\\\\.data\\\\((?:\\'|\")',\n RE_PREFIX_V3 = '\\\\$this\\\\.data\\\\((?:\\'|\")(?:bs\\\\.){1}',\n bootstrapComponents = [\n 'affix', 'alert', 'button', 'carousel', 'collapse', 'dropdown',\n 'modal', 'popover', 'scrollspy', 'tab', 'tooltip'\n ];\n\n if(jQueryAvailable) {\n var bootstrapVersion;\n\n bootstrapComponents.some(function(component) {\n if(win.$.fn[component]) {\n // Bootstrap >= 3.2.0 detection\n if(win.$.fn[component].Constructor && win.$.fn[component].Constructor.VERSION) {\n bootstrapVersion = win.$.fn[component].Constructor.VERSION;\n return true;\n // Bootstrap >= 2.0.0 and <= 3.1.0 detection\n } else if(new RegExp(RE_PREFIX_V3 + component).test(win.$.fn[component].toString())) {\n bootstrapVersion = '>= 3.0.0 & <= 3.1.1';\n return true;\n // Bootstrap < 3.1.0 detection\n } else if(new RegExp(RE_PREFIX_V2 + component).test(win.$.fn[component].toString())) {\n bootstrapVersion = '>= 2.0.0 & <= 2.3.2';\n return true;\n }\n }\n\n return false;\n });\n\n if (bootstrapVersion) {\n return { version: bootstrapVersion };\n }\n }\n\n return false;\n }\n },\n\n 'Zurb': {\n icon: 'zurb',\n url: 'https://foundation.zurb.com/',\n npm: 'foundation-sites',\n test: function(win) {\n if(win.Foundation && win.Foundation.Toggler) {\n return { version: win.Foundation.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Polymer': {\n icon: 'polymer',\n url: 'https://www.polymer-project.org/',\n npm: '@polymer/polymer',\n test: function(win) {\n if(win.Polymer && win.Polymer.dom) {\n return { version: win.Polymer.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Highcharts': {\n icon: 'highcharts',\n url: 'http://www.highcharts.com',\n npm: 'highcharts',\n test: function(win) {\n if(win.Highcharts && win.Highcharts.Point) {\n return { version: win.Highcharts.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'InfoVis': {\n icon: 'jit',\n url: 'http://philogb.github.com/jit/',\n test: function test(win) {\n if(win.$jit && win.$jit.PieChart) {\n return { version: win.$jit.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'FlotCharts': {\n icon: 'flotcharts',\n url: 'http://www.flotcharts.org/',\n npm: 'flot',\n test: function(win) {\n if(win.$ && win.$.plot) {\n return { version: win.$.plot.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'CreateJS': {\n icon: 'createjs',\n url: 'https://createjs.com/',\n npm: 'createjs',\n test: function(win) {\n if(win.createjs && win.createjs.promote) {\n return { version: UNKNOWN_VERSION}; // no version info available\n }\n return false;\n }\n },\n\n 'Google Maps': {\n icon: 'gmaps',\n url: 'https://developers.google.com/maps/',\n test: function(win) {\n if (win.google && win.google.maps) {\n return { version: win.google.maps.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'jQuery': {\n icon: 'jquery',\n url: 'http://jquery.com',\n npm: 'jquery',\n test: function(win) {\n var jq = win.jQuery || win.$;\n if (jq && jq.fn) {\n return { version: jq.fn.jquery.replace(/[^\\d+\\.+]/g, '') || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'jQuery UI': {\n icon: 'jquery_ui',\n url: 'http://jqueryui.com',\n npm: 'jquery-ui',\n test: function(win) {\n var jq = win.jQuery || win.$ || win.$jq || win.$j;\n if(jq && jq.fn && jq.fn.jquery && jq.ui) {\n var plugins = 'accordion,datepicker,dialog,draggable,droppable,progressbar,resizable,selectable,slider,menu,grid,tabs'.split(','), concat = [];\n for (var i=0; i < plugins.length; i++) { if(jq.ui[plugins[i]]) concat.push(plugins[i].substr(0,1).toUpperCase() + plugins[i].substr(1)); }\n return { version: jq.ui.version || UNKNOWN_VERSION, details: concat.length ? 'Plugins used: '+concat.join(',') : '' };\n }\n return false;\n }\n },\n\n 'Dojo': {\n icon: 'dojo',\n url: 'http://dojotoolkit.org',\n npm: 'dojo',\n test: function(win) {\n if(win.dojo && win.dojo.delegate) {\n var version = win.dojo.version ? win.dojo.version.toString() : UNKNOWN_VERSION;\n return { version: version, details: 'Details: '+(win.dijit ? 'Uses Dijit' : 'none') };\n }\n return false;\n }\n },\n\n 'Prototype': {\n icon: 'prototype',\n url: 'http://prototypejs.org',\n test: function(win) {\n if(win.Prototype && win.Prototype.BrowserFeatures) {\n return { version: win.Prototype.Version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Scriptaculous': {\n icon: 'scriptaculous',\n url: 'http://script.aculo.us',\n test: function(win) {\n if(win.Scriptaculous && win.Scriptaculous.load) {\n return { version: win.Scriptaculous.Version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'MooTools': {\n icon: 'mootools',\n url: 'https://mootools.net/',\n test: function(win) {\n if(win.MooTools && win.MooTools.build) {\n return { version: win.MooTools.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Spry': {\n icon: 'spry',\n url: 'http://labs.adobe.com/technologies/spry',\n test: function(win) {\n if (win.Spry && win.Spry.Data) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'YUI 2': {\n icon: 'yui',\n url: 'http://developer.yahoo.com/yui/2/',\n test: function(win) {\n if (win.YAHOO && win.YAHOO.util) {\n return { version: win.YAHOO.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'YUI 3': {\n icon: 'yui3',\n url: 'https://yuilibrary.com/',\n npm: 'yui',\n test: function(win) {\n if (win.YUI && win.YUI.Env) {\n return { version: win.YUI.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Qooxdoo': {\n icon: 'qooxdoo',\n url: 'http://www.qooxdoo.org/',\n npm: 'qooxdoo',\n test: function(win) {\n if(win.qx && win.qx.Bootstrap) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Ext JS': {\n icon: 'extjs',\n url: 'https://www.sencha.com/products/extjs/',\n test: function(win) {\n if (win.Ext && win.Ext.versions) {\n return { version: win.Ext.versions.core.version };\n }\n else if(win.Ext) {\n return { version: win.Ext.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'base2': {\n icon: 'base2',\n url: 'http://code.google.com/p/base2',\n test: function(win) {\n if(win.base2 && win.base2.dom) {\n return { version: win.base2.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Closure Library': {\n icon: 'closure',\n url: 'https://developers.google.com/closure/library/',\n npm: 'google-closure-library',\n test: function(win) {\n if(win.goog && win.goog.provide) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Raphaël': {\n icon: 'raphael',\n url: 'http://dmitrybaranovskiy.github.io/raphael/',\n test: function(win) {\n if (win.Raphael && win.Raphael.circle) {\n return { version: win.Raphael.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'React': {\n icon: 'react',\n url: 'https://reactjs.org/',\n npm: 'react',\n test: function(win) {\n function isMatch(node) {\n return node!=null && node._reactRootContainer!=null;\n }\n function nodeFilter(node) {\n return isMatch(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n var reactRoot = document.getElementById('react-root');\n var altHasReact = document.querySelector('*[data-reactroot]');\n var bodyReactRoot = isMatch(document.body) || isMatch(document.body.firstElementChild);\n var hasReactRoot = bodyReactRoot|| document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, nodeFilter).nextNode() != null;\n if (hasReactRoot || reactRoot && reactRoot.innerText.length > 0 || altHasReact || win.React && win.React.Component) {\n return { version: win.React && win.React.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Next.js': {\n icon: 'next',\n url: 'https://nextjs.org/',\n npm: 'next',\n test: function(win) {\n if (win.__NEXT_DATA__ && win.__NEXT_DATA__.buildId) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Preact': {\n icon: 'preact',\n url: 'https://preactjs.com/',\n npm: 'preact',\n test: function(win) {\n var expando = typeof Symbol!='undefined' && Symbol.for && Symbol.for('preactattr');\n function isMatch(node) {\n return node._component!=null || node.__preactattr_!=null || expando && node[expando]!=null;\n }\n function getMatch(node) {\n return node!=null && isMatch(node) && node;\n }\n function nodeFilter(node) {\n return isMatch(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n var preactRoot = getMatch(document.body) || getMatch(document.body.firstElementChild);\n if (!preactRoot) {\n preactRoot = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, nodeFilter).nextNode();\n }\n if (preactRoot || win.preact) {\n var version = UNKNOWN_VERSION;\n if (expando && preactRoot && preactRoot[expando]!=null) {\n version = '7';\n }\n return { version: version };\n }\n return false;\n }\n },\n\n 'Modernizr': {\n icon: 'modernizr',\n url: 'https://modernizr.com/',\n npm: 'modernizr',\n test: function(win) {\n if (win.Modernizr && win.Modernizr.addTest) {\n return { version: win.Modernizr._version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Processing.js': {\n icon: 'processingjs',\n url: 'http://processingjs.org',\n npm: 'processing-js',\n test: function(win) {\n if(win.Processing && win.Processing.box) {\n return { version: Processing.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Backbone': {\n icon: 'backbone',\n url: 'http://backbonejs.org/',\n npm: 'backbone',\n test: function(win) {\n if (win.Backbone && win.Backbone.Model.extend) {\n return {version: win.Backbone.VERSION || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Leaflet': {\n icon: 'leaflet',\n url: 'http://leafletjs.com',\n npm: 'leaflet',\n test: function(win) {\n // Leaflet 3.1 uses L.Marker and L.VERSION; later versions use L.marker and L.version\n if (win.L && win.L.GeoJSON && (win.L.marker || win.L.Marker)) {\n return { version: win.L.version || win.L.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Mapbox': {\n icon: 'mapbox',\n url: 'https://www.mapbox.com/',\n npm: 'mapbox-gl',\n test: function(win) {\n if (win.L && win.L.mapbox && win.L.mapbox.geocoder) {\n return { version: win.L.mapbox.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Lo-Dash': {\n icon: 'lodash',\n url: 'https://lodash.com/',\n npm: 'lodash',\n test: function(win) {\n var _ = typeof (_ = win._) == 'function' && _,\n chain = typeof (chain = _ && _.chain) == 'function' && chain,\n wrapper = (chain || _ || function() { return {}; })(1);\n\n if (_ && wrapper.__wrapped__) {\n return { version: _.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Underscore': {\n icon: 'underscore',\n url: 'http://underscorejs.org/',\n npm: 'underscore',\n test: function(win) {\n if (win._ && typeof win._.tap === 'function' &&\n !d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests['Lo-Dash'].test(win)) {\n return {version: win._.VERSION || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Sammy': {\n icon: 'sammy',\n url: 'http://sammyjs.org',\n test: function(win) {\n if (win.Sammy && win.Sammy.Application.curry) {\n return {version: win.Sammy.VERSION || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Rico': {\n icon: 'rico',\n url: 'http://openrico.sourceforge.net/examples/index.html',\n test: function(win) {\n if (win.Rico && window.Rico.checkIfComplete) {\n return {version: win.Rico.Version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'MochiKit': {\n icon: 'mochikit',\n url: 'https://mochi.github.io/mochikit/',\n test: function(win) {\n if (win.MochiKit && win.MochiKit.Base.module) {\n return {version: MochiKit.VERSION || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'gRaphaël': {\n icon: 'graphael',\n url: 'https://github.com/DmitryBaranovskiy/g.raphael',\n test: function(win) {\n if (win.Raphael && win.Raphael.fn.g) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Glow': {\n icon: 'glow',\n url: 'http://www.bbc.co.uk/glow/',\n test: function(win) {\n if (win.gloader && win.gloader.getRequests) {\n return {version: UNKNOWN_VERSION};\n }\n else if (win.glow && win.glow.dom) {\n return {version: win.glow.VERSION || UNKNOWN_VERSION};\n }\n else if (win.Glow) {\n return {version: win.Glow.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Socket.IO': {\n icon: 'socketio', // currently has no icon\n url: 'https://socket.io/',\n npm: 'socket.io',\n test: function(win) {\n // version 0.6.2 uses only io.Socket; more recent versions also have io.sockets\n if (win.io && (win.io.sockets || win.io.Socket)) {\n return {version: win.io.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Mustache': {\n icon: 'mustache',\n url: 'http://mustache.github.io/',\n npm: 'mustache',\n test: function(win) {\n if (win.Mustache && win.Mustache.to_html) {\n return {version: win.Mustache.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Fabric.js': {\n icon: 'icon38', // currently has no icon\n url: 'http://fabricjs.com/',\n npm: 'fabric',\n test: function(win) {\n if (win.fabric && win.fabric.util) {\n return {version: win.fabric.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'FuseJS': {\n icon: 'fusejs',\n url: 'http://fusejs.io/',\n npm: 'fuse.js',\n test: function(win) {\n if (win.Fuse) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Tween.js': {\n icon: 'icon38', // currently has no icon\n url: 'https://github.com/tweenjs/tween.js',\n npm: 'tween.js',\n test: function(win) {\n if (win.TWEEN && win.TWEEN.Easing) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'SproutCore': {\n icon: 'sproutcore',\n url: 'http://sproutcore.com/',\n test: function(win) {\n if (win.SC && win.SC.Application) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Zepto.js': {\n icon: 'zepto',\n url: 'http://zeptojs.com',\n npm: 'zepto',\n test: function(win) {\n if (win.Zepto && win.Zepto.fn) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'three.js': {\n icon: 'icon38', // currently has no icon\n url: 'https://threejs.org/',\n npm: 'three',\n test: function(win) {\n if (win.THREE && win.THREE.REVISION) {\n return {version: 'r' + win.THREE.REVISION};\n }\n else if (win.THREE) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'PhiloGL': {\n icon: 'philogl',\n url: 'http://www.senchalabs.org/philogl/',\n npm: 'philogl',\n test: function(win) {\n if (win.PhiloGL && win.PhiloGL.Camera) {\n return {version: win.PhiloGL.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'CamanJS': {\n icon: 'camanjs',\n url: 'http://camanjs.com/',\n npm: 'caman',\n test: function(win) {\n if (win.Caman && win.Caman.version) {\n return {version: win.Caman.version.release};\n }\n else if (win.Caman) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'yepnope': {\n icon: 'yepnope',\n url: 'http://yepnopejs.com/',\n test: function(win) {\n if (win.yepnope && win.yepnope.injectJs) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'LABjs': {\n icon: 'icon38',\n url: 'https://github.com/getify/LABjs',\n test: function(win) {\n if (win.$LAB && win.$LAB.setOptions) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Head JS': {\n icon: 'headjs',\n url: 'http://headjs.com/',\n npm: 'headjs',\n test: function(win) {\n if (win.head && win.head.js) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'ControlJS': {\n icon: 'icon38',\n url: 'http://stevesouders.com/controljs/',\n test: function(win) {\n if (win.CJS && win.CJS.start) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'RequireJS': {\n icon: 'requirejs',\n url: 'http://requirejs.org/',\n npm: 'requirejs',\n test: function(win) {\n var req = win.require || win.requirejs;\n if (req && (req.load || (req.s && req.s.contexts && req.s.contexts._ && (req.s.contexts._.loaded || req.s.contexts._.load)))) {\n return { version: req.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'RightJS': {\n icon: 'rightjs',\n url: 'http://rightjs.org/',\n test: function(win) {\n if (win.RightJS && win.RightJS.isNode) {\n return { version: win.RightJS.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'jQuery Tools': {\n icon: 'jquerytools',\n url: 'http://jquerytools.github.io/',\n test: function(win) {\n var jq = win.jQuery || win.$;\n if(jq && jq.tools) {\n return { version: jq.tools.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Pusher': {\n icon: 'pusher',\n url: 'https://pusher.com/docs/',\n npm: 'pusher-js',\n test: function(win) {\n if(win.Pusher && win.Pusher.Channel) {\n return { version: win.Pusher.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Paper.js': {\n icon: 'paperjs',\n url: 'http://paperjs.org/',\n npm: 'paper',\n test: function(win) {\n if(win.paper && win.paper.Point) {\n return { version: win.paper.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Swiffy': {\n icon: 'icon38',\n url: 'https://developers.google.com/swiffy/',\n test: function(win) {\n if(win.swiffy && win.swiffy.Stage) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Move': {\n icon: 'move',\n url: 'https://github.com/rsms/move',\n npm: 'move',\n test: function(win) {\n if(win.move && win.move.compile) {\n return { version: win.move.version() || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'AmplifyJS': {\n icon: 'amplifyjs',\n url: 'http://amplifyjs.com/',\n npm: 'amplifyjs',\n test: function(win) {\n if(win.amplify && win.amplify.publish) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Popcorn.js': {\n icon: 'popcornjs',\n url: 'https://github.com/mozilla/popcorn-js/',\n test: function(win) {\n if (win.Popcorn && win.Popcorn.Events) {\n return { version: win.Popcorn.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'D3': {\n icon: 'd3',\n url: 'https://d3js.org/',\n npm: 'd3',\n test: function(win) {\n if (win.d3 && win.d3.select) {\n return { version: win.d3.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Handlebars': {\n icon: 'handlebars',\n url: 'http://handlebarsjs.com/',\n npm: 'handlebars',\n test: function(win) {\n if(win.Handlebars && win.Handlebars.compile) {\n return { version: win.Handlebars.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Knockout': {\n icon: 'knockout',\n url: 'http://knockoutjs.com/',\n npm: 'knockout',\n test: function(win) {\n if (win.ko && win.ko.applyBindings) {\n return { version: win.ko.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Spine': {\n icon: 'icon38',\n url: 'http://spine.github.io/',\n test: function(win) {\n if (win.Spine && win.Spine.Controller) {\n return {version: win.Spine.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'jQuery Mobile': {\n icon: 'jquery_mobile',\n url: 'http://jquerymobile.com/',\n npm: 'jquery-mobile',\n test: function(win) {\n var jq = win.jQuery || win.$ || win.$jq || win.$j;\n if(jq && jq.fn && jq.fn.jquery && jq.mobile) {\n return { version: jq.mobile.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'WebFont Loader': {\n icon: 'icon38',\n url: 'https://github.com/typekit/webfontloader',\n npm: 'webfontloader',\n test: function(win) {\n if(win.WebFont && win.WebFont.load) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Angular': {\n icon: 'angular',\n url: 'https://angular.io/',\n npm: '@angular/core',\n test: function(win) {\n var ngVersion = win.document.querySelector('[ng-version]');\n if (ngVersion) {\n return { version: ngVersion.getAttribute('ng-version') || UNKNOWN_VERSION };\n }\n else if (win.ng && win.ng.probe instanceof Function) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'AngularJS': {\n icon: 'angularjs',\n url: 'https://angularjs.org/',\n npm: 'angular',\n test: function(win) {\n var ng = win.angular;\n if(ng && ng.version && ng.version.full) {\n return { version: ng.version.full };\n }\n else if (ng) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Ember.js': {\n icon: 'emberjs',\n url: 'https://emberjs.com/',\n npm: 'ember-source',\n test: function(win) {\n var ember = win.Ember || win.Em;\n if (ember && ember.propertyDidChange) {\n return { version: ember.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Hammer.js': {\n icon: 'hammerjs',\n url: 'http://eightmedia.github.io/hammer.js/',\n npm: 'hammerjs',\n test: function(win) {\n if(win.Hammer && win.Hammer.Pinch) {\n // Hammer.VERSION available in 1.0.10+\n return { version: win.Hammer.VERSION || \"< 1.0.10\" };\n }\n return false;\n }\n },\n\n 'Visibility.js': {\n icon: 'icon38',\n url: 'https://github.com/ai/visibilityjs',\n npm: 'visibilityjs',\n test: function(win) {\n if(win.Visibility && win.Visibility.every) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Velocity.js': {\n icon: 'icon38',\n url: 'http://velocityjs.org/',\n npm: 'velocity-animate',\n test: function(win) {\n var jq = win.jQuery || win.$,\n velocity = jq ? jq.Velocity : win.Velocity;\n\n if(velocity && velocity.RegisterEffect && velocity.version) {\n return {\n version:\n velocity.version.major + \".\" +\n velocity.version.minor + \".\" +\n velocity.version.patch\n };\n }\n else if (velocity && velocity.RegisterEffect) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'IfVisible.js': {\n icon: 'icon38',\n url: 'http://serkanyersen.github.io/ifvisible.js/',\n npm: 'ifvisible.js',\n test: function(win) {\n var iv = win.ifvisible;\n if(iv && iv.__ceGUID === \"ifvisible.object.event.identifier\") {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Pixi.js': {\n icon: 'pixi',\n url: 'http://www.pixijs.com/',\n npm: 'pixi.js',\n test: function(win) {\n var px = win.PIXI;\n if(px && px.WebGLRenderer && px.VERSION) {\n // version 4.4.3 returns simply \"4.4.3\"; version 1.5.2 returns \"v1.5.2\"\n return { version: px.VERSION.replace('v', '') || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'DC.js': {\n icon: 'dcjs',\n url: 'http://dc-js.github.io/dc.js/',\n npm: 'dc',\n test: function(win) {\n var dc = win.dc;\n if(dc && dc.registerChart) {\n return { version: dc.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'GreenSock JS': {\n icon: 'greensock',\n url: 'https://greensock.com/gsap',\n npm: 'gsap',\n test: function(win) {\n if (win.TweenMax && win.TweenMax.pauseAll) {\n return { version: win.TweenMax.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'FastClick': {\n icon: 'fastclick',\n url: 'https://github.com/ftlabs/fastclick',\n npm: 'fastclick',\n test: function(win) {\n if(win.FastClick && win.FastClick.notNeeded) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Isotope': {\n icon: 'isotope',\n url: 'https://isotope.metafizzy.co/',\n npm: 'isotope-layout',\n test: function(win) {\n if(win.Isotope || (win.$ != null && win.$.Isotope)) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Marionette': {\n icon: 'marionette',\n url: 'https://marionettejs.com/',\n npm: 'backbone.marionette',\n test: function(win) {\n if(win.Marionette && win.Marionette.Application) {\n return { version: win.Marionette.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Can': {\n icon: 'canjs',\n url: 'https://canjs.com/',\n npm: 'can',\n test: function (win) {\n if (win.can && win.can.Construct) {\n return { version: win.can.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Vue': {\n icon: 'vue',\n url: 'https://vuejs.org/',\n npm: 'vue',\n test: function(win) {\n function isVueNode(node) {\n return node.__vue__ != null ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n var hasVueNode = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, isVueNode).nextNode() !== null;\n if (hasVueNode) {\n return { version: win.Vue && win.Vue.version || UNKNOWN_VERSION }\n }\n return false;\n }\n },\n 'Nuxt.js': {\n icon: 'nuxt',\n url: 'https://nuxtjs.org/',\n npm: 'nuxt',\n test: function(win) {\n if ((win.__NUXT__ && win.__NUXT__.data != null) || win.$nuxt) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Two': {\n icon: 'two',\n url: 'https://two.js.org/',\n npm: 'two.js',\n test: function(win) {\n if (win.Two && win.Two.Utils) {\n return { version: win.Two.Version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Brewser': {\n icon: 'brewser',\n url: 'https://robertpataki.github.io/brewser/',\n npm: 'brewser',\n test: function(win) {\n if(win.BREWSER && win.BREWSER.ua) {\n return { version: BREWSER.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Material Design Lite': {\n icon: 'mdl',\n url: 'https://getmdl.io/',\n npm: 'material-design-lite',\n test: function(win) {\n if(win.componentHandler && win.componentHandler.upgradeElement) {\n return { version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n 'Kendo UI': {\n icon: 'kendoui',\n url: 'https://github.com/telerik/kendo-ui-core',\n npm: 'kendo-ui-core',\n test: function(win) {\n if (win.kendo && win.kendo.View && win.kendo.View.extend) {\n return {version: win.kendo.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n 'Matter.js': {\n icon: 'matter-js',\n url: 'http://brm.io/matter-js/',\n npm: 'matter-js',\n test: function(win) {\n if (win.Matter && win.Matter.Engine) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n 'Riot': {\n icon: 'riot',\n url: 'http://riotjs.com/',\n npm: 'riot',\n test: function(win) {\n if (win.riot && win.riot.mixin) {\n return { version: win.riot.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Sea.js': {\n icon: 'icon38',\n url: 'https://seajs.github.io/seajs/docs/',\n npm: 'seajs',\n test: function(win) {\n if(win.seajs && win.seajs.use) {\n return { version: win.seajs.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Moment.js': {\n icon: 'momentjs',\n url: 'http://momentjs.com/',\n npm: 'moment',\n test: function(win) {\n if(win.moment && (win.moment.isMoment || win.moment.lang)) {\n // version 1.0.0 has neither \"isMoment\" nor \"version\"\n return { version: win.moment.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Moment Timezone': {\n icon: 'momentjs',\n url: 'http://momentjs.com/timezone/',\n npm: 'moment-timezone',\n test: function(win) {\n if (win.moment && win.moment.tz) {\n return { version: win.moment.tz.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'ScrollMagic': {\n icon: 'scrollmagic',\n url: 'http://scrollmagic.io/',\n npm: 'scrollmagic',\n test: function(win) {\n if (win.ScrollMagic && win.ScrollMagic.Controller) {\n return {version: ScrollMagic.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n 'SWFObject': {\n icon: 'icon38', // currently has no icon\n url: 'https://github.com/swfobject/swfobject',\n test: function(win) {\n if (win.swfobject && win.swfobject.embedSWF) {\n // 2.x - exact version only for 2.3\n return { version: win.swfobject.version || UNKNOWN_VERSION };\n } else if(win.deconcept && win.deconcept.SWFObject) {\n // 1.x\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'FlexSlider': {\n icon: 'icon38', // currently has no icon\n url: 'https://woocommerce.com/flexslider/',\n npm: 'flexslider',\n test: function(win) {\n var jq = win.jQuery || win.$ || win.$jq || win.$j;\n if (jq && jq.fn && jq.fn.jquery && jq.flexslider){\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'SPF': {\n icon: 'icon38', // currently has no icon\n url: 'https://youtube.github.io/spfjs/',\n npm: 'spf',\n test: function(win) {\n if (win.spf && win.spf.init) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Numeral.js': {\n icon: 'icon38', // currently has no icon\n url: 'http://numeraljs.com/',\n npm: 'numeraljs',\n test: function(win) {\n if (win.numeral && win.isNumeral) {\n return { version: win.numeral.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'boomerang.js': {\n icon: 'icon38', // currently has no icon\n url: 'https://soasta.github.io/boomerang/',\n npm: 'boomerangjs',\n test: function(win) {\n if (win.BOOMR && win.BOOMR.utils && win.BOOMR.init) {\n return { version: win.BOOMR.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Framer': {\n icon: 'framer',\n url: 'https://framer.com/',\n npm: 'framerjs',\n test: function(win) {\n if (win.Framer && win.Framer.Layer) {\n return { version: win.Framer.Version.build || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Marko': {\n icon: 'marko',\n url: 'https://markojs.com/',\n npm: 'marko',\n test: function (win) {\n var selector = '[data-marko-key], [data-marko]';\n var markoElement = document.querySelector(selector);\n if (markoElement) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'AMP': {\n icon: 'amp',\n url: 'https://ampproject.org/',\n npm: null,\n test: function (win) {\n var version = win.document.documentElement.getAttribute(\"amp-version\");\n return version ? { version: version } : false;\n }\n },\n 'Gatsby': {\n icon: 'gatsby',\n url: 'https://www.gatsbyjs.org/',\n npm: 'gatsby',\n test: function (win) {\n if (document.getElementById('___gatsby')) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Shopify': {\n icon: 'shopify',\n url: 'https://www.shopify.com/',\n npm: null,\n test: function (win) {\n if (win.Shopify && win.Shopify.shop) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'WordPress': {\n icon: 'wordpress',\n url: 'https://wordpress.org/',\n npm: null,\n test: function (win) {\n const hasAPILinkElem = !!document.querySelector('link[rel=\"https://api.w.org/\"]');\n const hasWPIncludes = !!document.querySelectorAll('link[href*=\"wp-includes\"], script[src*=\"wp-includes\"]').length;\n \n if (!hasAPILinkElem && !hasWPIncludes) return false;\n \n const generatorMeta = document.querySelector('meta[name=generator][content^=\"WordPress\"]')\n const version = generatorMeta ? generatorMeta.getAttribute(\"content\").replace(/^\\w+\\s/,'') : UNKNOWN_VERSION;\n return { version };\n }\n },\n 'Wix': {\n icon: 'wix',\n url: 'https://www.wix.com/',\n npm: null,\n test: function (win) {\n if (win.wixBiSession) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Workbox': {\n icon: 'workbox',\n url: 'https://developers.google.com/web/tools/workbox/',\n npm: 'workbox-sw',\n test: async function (win) {\n var nav = win.navigator;\n // Service Workers not supported\n if (!('serviceWorker' in nav)) {\n return false;\n }\n return nav.serviceWorker.getRegistration()\n .then(function(registration) {\n var scriptURL = nav.serviceWorker.controller.scriptURL;\n return fetch(scriptURL, { credentials: 'include',\n headers: { 'service-worker': 'script' }\n })\n .then(function(response) {\n return response.text();\n })\n .then(function(scriptContent) {\n var workboxRegExp = /new Workbox|new workbox|workbox\\.precaching\\.|workbox\\.strategies/gm;\n if (workboxRegExp.test(scriptContent)) {\n // Adapted from\n // https://github.com/semver/semver/issues/232#issue-48635632\n var semVerRegExp = /workbox.*?\\b((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?)\\b/gim;\n var matches = semVerRegExp.exec(scriptContent);\n var version = UNKNOWN_VERSION;\n if (Array.isArray(matches) && matches.length > 1 && matches[1]) {\n version = matches[1];\n }\n return { version: version };\n }\n return false;\n });\n }).catch(function(exception) {\n return false;\n });\n }\n }\n};\n"; +const libDetectorSource="var UNKNOWN_VERSION = null;\nvar d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests = {\n\n 'GWT': {\n icon: 'gwt',\n url: 'http://www.gwtproject.org/',\n test: function(win) {\n // pretty complicated, many possible tell tales\n var doc = win.document,\n hasHistFrame = doc.getElementById('__gwt_historyFrame'),\n hasGwtUid = doc.gwt_uid,\n hasBodyListener = doc.body.__listener,\n hasBodyEventBits = doc.body.__eventBits,\n hasModules = win.__gwt_activeModules,\n hasJsonP = win.__gwt_jsonp__,\n hasRootWinApp = win.__gwt_scriptsLoaded || win.__gwt_stylesLoaded || win.__gwt_activeModules;\n\n // use the many possible indicators\n if(hasHistFrame || hasGwtUid || hasBodyListener || hasBodyEventBits || hasModules || hasJsonP || hasRootWinApp) {\n\n // carefully look at frames, but only if certain is GWT frame\n var frames = doc.getElementsByTagName('iframe'),\n gwtVersion = UNKNOWN_VERSION;\n for(var n=0; n<frames.length; n++) {\n // catch security access errors\n try {\n var hasNegativeTabIndex = frames[n].tabIndex < 0; // on for GWT\n if(hasNegativeTabIndex && frames[n].contentWindow && frames[n].contentWindow.$gwt_version) {\n gwtVersion = frames[n].contentWindow.$gwt_version;\n break;\n }\n }\n catch(e) {}\n }\n\n if(gwtVersion=='0.0.999') {\n gwtVersion = 'Google Internal';\n }\n\n return { version: gwtVersion };\n }\n return false;\n }\n },\n\n 'Ink': {\n icon: 'ink',\n url: 'http://ink.sapo.pt/',\n test: function(win) {\n if (win.Ink && win.Ink.createModule) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Vaadin': {\n icon: 'vaadin',\n url: 'https://vaadin.com/',\n test: function(win) {\n if (win.vaadin && win.vaadin.registerWidgetset) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Bootstrap': {\n icon: 'bootstrap',\n url: 'http://getbootstrap.com/',\n npm: 'bootstrap',\n // look for a function Boostrap has added to jQuery - regex for BS 2 & 3\n test: function(win) {\n var jQueryAvailable = win.$ && win.$.fn,\n RE_PREFIX_V2 = '\\\\$this\\\\.data\\\\((?:\\'|\")',\n RE_PREFIX_V3 = '\\\\$this\\\\.data\\\\((?:\\'|\")(?:bs\\\\.){1}',\n bootstrapComponents = [\n 'affix', 'alert', 'button', 'carousel', 'collapse', 'dropdown',\n 'modal', 'popover', 'scrollspy', 'tab', 'tooltip'\n ];\n\n if(jQueryAvailable) {\n var bootstrapVersion;\n\n bootstrapComponents.some(function(component) {\n if(win.$.fn[component]) {\n // Bootstrap >= 3.2.0 detection\n if(win.$.fn[component].Constructor && win.$.fn[component].Constructor.VERSION) {\n bootstrapVersion = win.$.fn[component].Constructor.VERSION;\n return true;\n // Bootstrap >= 2.0.0 and <= 3.1.0 detection\n } else if(new RegExp(RE_PREFIX_V3 + component).test(win.$.fn[component].toString())) {\n bootstrapVersion = '>= 3.0.0 & <= 3.1.1';\n return true;\n // Bootstrap < 3.1.0 detection\n } else if(new RegExp(RE_PREFIX_V2 + component).test(win.$.fn[component].toString())) {\n bootstrapVersion = '>= 2.0.0 & <= 2.3.2';\n return true;\n }\n }\n\n return false;\n });\n\n if (bootstrapVersion) {\n return { version: bootstrapVersion };\n }\n }\n\n return false;\n }\n },\n\n 'Zurb': {\n icon: 'zurb',\n url: 'https://foundation.zurb.com/',\n npm: 'foundation-sites',\n test: function(win) {\n if(win.Foundation && win.Foundation.Toggler) {\n return { version: win.Foundation.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Polymer': {\n icon: 'polymer',\n url: 'https://www.polymer-project.org/',\n npm: '@polymer/polymer',\n test: function(win) {\n if(win.Polymer && win.Polymer.dom) {\n return { version: win.Polymer.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Highcharts': {\n icon: 'highcharts',\n url: 'http://www.highcharts.com',\n npm: 'highcharts',\n test: function(win) {\n if(win.Highcharts && win.Highcharts.Point) {\n return { version: win.Highcharts.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'InfoVis': {\n icon: 'jit',\n url: 'http://philogb.github.com/jit/',\n test: function test(win) {\n if(win.$jit && win.$jit.PieChart) {\n return { version: win.$jit.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'FlotCharts': {\n icon: 'flotcharts',\n url: 'http://www.flotcharts.org/',\n npm: 'flot',\n test: function(win) {\n if(win.$ && win.$.plot) {\n return { version: win.$.plot.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'CreateJS': {\n icon: 'createjs',\n url: 'https://createjs.com/',\n npm: 'createjs',\n test: function(win) {\n if(win.createjs && win.createjs.promote) {\n return { version: UNKNOWN_VERSION}; // no version info available\n }\n return false;\n }\n },\n\n 'Google Maps': {\n icon: 'gmaps',\n url: 'https://developers.google.com/maps/',\n test: function(win) {\n if (win.google && win.google.maps) {\n return { version: win.google.maps.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'jQuery': {\n icon: 'jquery',\n url: 'http://jquery.com',\n npm: 'jquery',\n test: function(win) {\n var jq = win.jQuery || win.$;\n if (jq && jq.fn && jq.fn.jquery) {\n return { version: jq.fn.jquery.replace(/[^\\d+\\.+]/g, '') || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'jQuery (Fast path)': {\n icon: 'jquery',\n url: 'http://jquery.com',\n npm: 'jquery',\n test: function (win) {\n var jq = win.jQuery || win.$;\n if (jq && jq.fn) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'jQuery UI': {\n icon: 'jquery_ui',\n url: 'http://jqueryui.com',\n npm: 'jquery-ui',\n test: function(win) {\n var jq = win.jQuery || win.$ || win.$jq || win.$j;\n if(jq && jq.fn && jq.fn.jquery && jq.ui) {\n var plugins = 'accordion,datepicker,dialog,draggable,droppable,progressbar,resizable,selectable,slider,menu,grid,tabs'.split(','), concat = [];\n for (var i=0; i < plugins.length; i++) { if(jq.ui[plugins[i]]) concat.push(plugins[i].substr(0,1).toUpperCase() + plugins[i].substr(1)); }\n return { version: jq.ui.version || UNKNOWN_VERSION, details: concat.length ? 'Plugins used: '+concat.join(',') : '' };\n }\n return false;\n }\n },\n\n 'Dojo': {\n icon: 'dojo',\n url: 'http://dojotoolkit.org',\n npm: 'dojo',\n test: function(win) {\n if(win.dojo && win.dojo.delegate) {\n var version = win.dojo.version ? win.dojo.version.toString() : UNKNOWN_VERSION;\n return { version: version, details: 'Details: '+(win.dijit ? 'Uses Dijit' : 'none') };\n }\n return false;\n }\n },\n\n 'Prototype': {\n icon: 'prototype',\n url: 'http://prototypejs.org',\n test: function(win) {\n if(win.Prototype && win.Prototype.BrowserFeatures) {\n return { version: win.Prototype.Version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Scriptaculous': {\n icon: 'scriptaculous',\n url: 'http://script.aculo.us',\n test: function(win) {\n if(win.Scriptaculous && win.Scriptaculous.load) {\n return { version: win.Scriptaculous.Version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'MooTools': {\n icon: 'mootools',\n url: 'https://mootools.net/',\n test: function(win) {\n if(win.MooTools && win.MooTools.build) {\n return { version: win.MooTools.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Spry': {\n icon: 'spry',\n url: 'http://labs.adobe.com/technologies/spry',\n test: function(win) {\n if (win.Spry && win.Spry.Data) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'YUI 2': {\n icon: 'yui',\n url: 'http://developer.yahoo.com/yui/2/',\n test: function(win) {\n if (win.YAHOO && win.YAHOO.util) {\n return { version: win.YAHOO.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'YUI 3': {\n icon: 'yui3',\n url: 'https://yuilibrary.com/',\n npm: 'yui',\n test: function(win) {\n if (win.YUI && win.YUI.Env) {\n return { version: win.YUI.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Qooxdoo': {\n icon: 'qooxdoo',\n url: 'http://www.qooxdoo.org/',\n npm: 'qooxdoo',\n test: function(win) {\n if(win.qx && win.qx.Bootstrap) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Ext JS': {\n icon: 'extjs',\n url: 'https://www.sencha.com/products/extjs/',\n test: function(win) {\n if (win.Ext && win.Ext.versions) {\n return { version: win.Ext.versions.core.version };\n }\n else if(win.Ext) {\n return { version: win.Ext.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'base2': {\n icon: 'base2',\n url: 'http://code.google.com/p/base2',\n test: function(win) {\n if(win.base2 && win.base2.dom) {\n return { version: win.base2.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Closure Library': {\n icon: 'closure',\n url: 'https://developers.google.com/closure/library/',\n npm: 'google-closure-library',\n test: function(win) {\n if(win.goog && win.goog.provide) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Raphaël': {\n icon: 'raphael',\n url: 'http://dmitrybaranovskiy.github.io/raphael/',\n test: function(win) {\n if (win.Raphael && win.Raphael.circle) {\n return { version: win.Raphael.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'React': {\n icon: 'react',\n url: 'https://reactjs.org/',\n npm: 'react',\n test: function(win) {\n function isMatch(node) {\n return node!=null && node._reactRootContainer!=null;\n }\n function nodeFilter(node) {\n return isMatch(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n var reactRoot = document.getElementById('react-root');\n var altHasReact = document.querySelector('*[data-reactroot]');\n var bodyReactRoot = isMatch(document.body) || isMatch(document.body.firstElementChild);\n var hasReactRoot = bodyReactRoot|| document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, nodeFilter).nextNode() != null;\n if (hasReactRoot || reactRoot && reactRoot.innerText.length > 0 || altHasReact || win.React && win.React.Component) {\n return { version: win.React && win.React.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'React (Fast path)': {\n icon: 'react',\n url: 'https://reactjs.org/',\n npm: 'react',\n test: function (win) {\n function isMatch(node) {\n return node != null && node._reactRootContainer != null;\n }\n var reactRoot = document.getElementById('react-root');\n var altHasReact = document.querySelector('*[data-reactroot]');\n var hasReactRoot = isMatch(document.body) || isMatch(document.body.firstElementChild);\n if (hasReactRoot || reactRoot || altHasReact || win.React) {\n return { version: win.React && win.React.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Next.js': {\n icon: 'next',\n url: 'https://nextjs.org/',\n npm: 'next',\n test: function(win) {\n if (win.__NEXT_DATA__ && win.__NEXT_DATA__.buildId) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Next.js (Fast path)': {\n icon: 'next',\n url: 'https://nextjs.org/',\n npm: 'next',\n test: function (win) {\n if (win.__NEXT_DATA__) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Preact': {\n icon: 'preact',\n url: 'https://preactjs.com/',\n npm: 'preact',\n test: function(win) {\n var expando = typeof Symbol!='undefined' && Symbol.for && Symbol.for('preactattr');\n function isMatch(node) {\n return node._component!=null || node.__preactattr_!=null || expando && node[expando]!=null;\n }\n function getMatch(node) {\n return node!=null && isMatch(node) && node;\n }\n function nodeFilter(node) {\n return isMatch(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n var preactRoot = getMatch(document.body) || getMatch(document.body.firstElementChild);\n if (!preactRoot) {\n preactRoot = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, nodeFilter).nextNode();\n }\n if (preactRoot || win.preact) {\n var version = UNKNOWN_VERSION;\n if (expando && preactRoot && preactRoot[expando]!=null) {\n version = '7';\n }\n return { version: version };\n }\n return false;\n }\n },\n\n 'Preact (Fast path)': {\n icon: 'preact',\n url: 'https://preactjs.com/',\n npm: 'preact',\n test: function (win) {\n function isMatch(node) {\n return node._component != null || node.__preactattr_ != null;\n }\n function getMatch(node) {\n return node != null && isMatch(node);\n }\n var preactRoot = getMatch(document.body) || getMatch(document.body.firstElementChild);\n if (preactRoot || win.preact) {\n var version = UNKNOWN_VERSION;\n return { version: version };\n }\n return false;\n }\n },\n\n 'Modernizr': {\n icon: 'modernizr',\n url: 'https://modernizr.com/',\n npm: 'modernizr',\n test: function(win) {\n if (win.Modernizr && win.Modernizr.addTest) {\n return { version: win.Modernizr._version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Processing.js': {\n icon: 'processingjs',\n url: 'http://processingjs.org',\n npm: 'processing-js',\n test: function(win) {\n if(win.Processing && win.Processing.box) {\n return { version: Processing.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Backbone': {\n icon: 'backbone',\n url: 'http://backbonejs.org/',\n npm: 'backbone',\n test: function(win) {\n if (win.Backbone && win.Backbone.Model.extend) {\n return {version: win.Backbone.VERSION || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Leaflet': {\n icon: 'leaflet',\n url: 'http://leafletjs.com',\n npm: 'leaflet',\n test: function(win) {\n // Leaflet 3.1 uses L.Marker and L.VERSION; later versions use L.marker and L.version\n if (win.L && win.L.GeoJSON && (win.L.marker || win.L.Marker)) {\n return { version: win.L.version || win.L.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Mapbox': {\n icon: 'mapbox',\n url: 'https://www.mapbox.com/',\n npm: 'mapbox-gl',\n test: function(win) {\n if (win.L && win.L.mapbox && win.L.mapbox.geocoder) {\n return { version: win.L.mapbox.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Lo-Dash': {\n icon: 'lodash',\n url: 'https://lodash.com/',\n npm: 'lodash',\n test: function(win) {\n var _ = typeof (_ = win._) == 'function' && _,\n chain = typeof (chain = _ && _.chain) == 'function' && chain,\n wrapper = (chain || _ || function() { return {}; })(1);\n\n if (_ && wrapper.__wrapped__) {\n return { version: _.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Underscore': {\n icon: 'underscore',\n url: 'http://underscorejs.org/',\n npm: 'underscore',\n test: function(win) {\n if (win._ && typeof win._.tap === 'function' &&\n !d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests['Lo-Dash'].test(win)) {\n return {version: win._.VERSION || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Sammy': {\n icon: 'sammy',\n url: 'http://sammyjs.org',\n test: function(win) {\n if (win.Sammy && win.Sammy.Application.curry) {\n return {version: win.Sammy.VERSION || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Rico': {\n icon: 'rico',\n url: 'http://openrico.sourceforge.net/examples/index.html',\n test: function(win) {\n if (win.Rico && window.Rico.checkIfComplete) {\n return {version: win.Rico.Version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'MochiKit': {\n icon: 'mochikit',\n url: 'https://mochi.github.io/mochikit/',\n test: function(win) {\n if (win.MochiKit && win.MochiKit.Base.module) {\n return {version: MochiKit.VERSION || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'gRaphaël': {\n icon: 'graphael',\n url: 'https://github.com/DmitryBaranovskiy/g.raphael',\n test: function(win) {\n if (win.Raphael && win.Raphael.fn.g) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Glow': {\n icon: 'glow',\n url: 'http://www.bbc.co.uk/glow/',\n test: function(win) {\n if (win.gloader && win.gloader.getRequests) {\n return {version: UNKNOWN_VERSION};\n }\n else if (win.glow && win.glow.dom) {\n return {version: win.glow.VERSION || UNKNOWN_VERSION};\n }\n else if (win.Glow) {\n return {version: win.Glow.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Socket.IO': {\n icon: 'socketio', // currently has no icon\n url: 'https://socket.io/',\n npm: 'socket.io',\n test: function(win) {\n // version 0.6.2 uses only io.Socket; more recent versions also have io.sockets\n if (win.io && (win.io.sockets || win.io.Socket)) {\n return {version: win.io.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Mustache': {\n icon: 'mustache',\n url: 'http://mustache.github.io/',\n npm: 'mustache',\n test: function(win) {\n if (win.Mustache && win.Mustache.to_html) {\n return {version: win.Mustache.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Fabric.js': {\n icon: 'icon38', // currently has no icon\n url: 'http://fabricjs.com/',\n npm: 'fabric',\n test: function(win) {\n if (win.fabric && win.fabric.util) {\n return {version: win.fabric.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'FuseJS': {\n icon: 'fusejs',\n url: 'http://fusejs.io/',\n npm: 'fuse.js',\n test: function(win) {\n if (win.Fuse) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Tween.js': {\n icon: 'icon38', // currently has no icon\n url: 'https://github.com/tweenjs/tween.js',\n npm: 'tween.js',\n test: function(win) {\n if (win.TWEEN && win.TWEEN.Easing) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'SproutCore': {\n icon: 'sproutcore',\n url: 'http://sproutcore.com/',\n test: function(win) {\n if (win.SC && win.SC.Application) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Zepto.js': {\n icon: 'zepto',\n url: 'http://zeptojs.com',\n npm: 'zepto',\n test: function(win) {\n if (win.Zepto && win.Zepto.fn) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'three.js': {\n icon: 'icon38', // currently has no icon\n url: 'https://threejs.org/',\n npm: 'three',\n test: function(win) {\n if (win.THREE && win.THREE.REVISION) {\n return {version: 'r' + win.THREE.REVISION};\n }\n else if (win.THREE) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'PhiloGL': {\n icon: 'philogl',\n url: 'http://www.senchalabs.org/philogl/',\n npm: 'philogl',\n test: function(win) {\n if (win.PhiloGL && win.PhiloGL.Camera) {\n return {version: win.PhiloGL.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'CamanJS': {\n icon: 'camanjs',\n url: 'http://camanjs.com/',\n npm: 'caman',\n test: function(win) {\n if (win.Caman && win.Caman.version) {\n return {version: win.Caman.version.release};\n }\n else if (win.Caman) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'yepnope': {\n icon: 'yepnope',\n url: 'http://yepnopejs.com/',\n test: function(win) {\n if (win.yepnope && win.yepnope.injectJs) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'LABjs': {\n icon: 'icon38',\n url: 'https://github.com/getify/LABjs',\n test: function(win) {\n if (win.$LAB && win.$LAB.setOptions) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'Head JS': {\n icon: 'headjs',\n url: 'http://headjs.com/',\n npm: 'headjs',\n test: function(win) {\n if (win.head && win.head.js) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'ControlJS': {\n icon: 'icon38',\n url: 'http://stevesouders.com/controljs/',\n test: function(win) {\n if (win.CJS && win.CJS.start) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'RequireJS': {\n icon: 'requirejs',\n url: 'http://requirejs.org/',\n npm: 'requirejs',\n test: function(win) {\n var req = win.require || win.requirejs;\n if (req && (req.load || (req.s && req.s.contexts && req.s.contexts._ && (req.s.contexts._.loaded || req.s.contexts._.load)))) {\n return { version: req.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'RightJS': {\n icon: 'rightjs',\n url: 'http://rightjs.org/',\n test: function(win) {\n if (win.RightJS && win.RightJS.isNode) {\n return { version: win.RightJS.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'jQuery Tools': {\n icon: 'jquerytools',\n url: 'http://jquerytools.github.io/',\n test: function(win) {\n var jq = win.jQuery || win.$;\n if(jq && jq.tools) {\n return { version: jq.tools.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Pusher': {\n icon: 'pusher',\n url: 'https://pusher.com/docs/',\n npm: 'pusher-js',\n test: function(win) {\n if(win.Pusher && win.Pusher.Channel) {\n return { version: win.Pusher.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Paper.js': {\n icon: 'paperjs',\n url: 'http://paperjs.org/',\n npm: 'paper',\n test: function(win) {\n if(win.paper && win.paper.Point) {\n return { version: win.paper.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Swiffy': {\n icon: 'icon38',\n url: 'https://developers.google.com/swiffy/',\n test: function(win) {\n if(win.swiffy && win.swiffy.Stage) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Move': {\n icon: 'move',\n url: 'https://github.com/rsms/move',\n npm: 'move',\n test: function(win) {\n if(win.move && win.move.compile) {\n return { version: win.move.version() || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'AmplifyJS': {\n icon: 'amplifyjs',\n url: 'http://amplifyjs.com/',\n npm: 'amplifyjs',\n test: function(win) {\n if(win.amplify && win.amplify.publish) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Popcorn.js': {\n icon: 'popcornjs',\n url: 'https://github.com/mozilla/popcorn-js/',\n test: function(win) {\n if (win.Popcorn && win.Popcorn.Events) {\n return { version: win.Popcorn.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'D3': {\n icon: 'd3',\n url: 'https://d3js.org/',\n npm: 'd3',\n test: function(win) {\n if (win.d3 && win.d3.select) {\n return { version: win.d3.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Handlebars': {\n icon: 'handlebars',\n url: 'http://handlebarsjs.com/',\n npm: 'handlebars',\n test: function(win) {\n if(win.Handlebars && win.Handlebars.compile) {\n return { version: win.Handlebars.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Knockout': {\n icon: 'knockout',\n url: 'http://knockoutjs.com/',\n npm: 'knockout',\n test: function(win) {\n if (win.ko && win.ko.applyBindings) {\n return { version: win.ko.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Spine': {\n icon: 'icon38',\n url: 'http://spine.github.io/',\n test: function(win) {\n if (win.Spine && win.Spine.Controller) {\n return {version: win.Spine.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n\n 'jQuery Mobile': {\n icon: 'jquery_mobile',\n url: 'http://jquerymobile.com/',\n npm: 'jquery-mobile',\n test: function(win) {\n var jq = win.jQuery || win.$ || win.$jq || win.$j;\n if(jq && jq.fn && jq.fn.jquery && jq.mobile) {\n return { version: jq.mobile.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'WebFont Loader': {\n icon: 'icon38',\n url: 'https://github.com/typekit/webfontloader',\n npm: 'webfontloader',\n test: function(win) {\n if(win.WebFont && win.WebFont.load) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Angular': {\n icon: 'angular',\n url: 'https://angular.io/',\n npm: '@angular/core',\n test: function(win) {\n var ngVersion = win.document.querySelector('[ng-version]');\n if (ngVersion) {\n return { version: ngVersion.getAttribute('ng-version') || UNKNOWN_VERSION };\n }\n else if (win.ng && win.ng.probe instanceof Function) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'AngularJS': {\n icon: 'angularjs',\n url: 'https://angularjs.org/',\n npm: 'angular',\n test: function(win) {\n var ng = win.angular;\n if(ng && ng.version && ng.version.full) {\n return { version: ng.version.full };\n }\n else if (ng) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Ember.js': {\n icon: 'emberjs',\n url: 'https://emberjs.com/',\n npm: 'ember-source',\n test: function(win) {\n var ember = win.Ember || win.Em;\n if (ember && ember.GUID_KEY) {\n return { version: ember.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Ember.js (Fast path)': {\n icon: 'emberjs',\n url: 'https://emberjs.com/',\n npm: 'ember-source',\n test: function (win) {\n var ember = win.Ember || win.Em;\n if (ember) {\n return { version: ember.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Hammer.js': {\n icon: 'hammerjs',\n url: 'http://eightmedia.github.io/hammer.js/',\n npm: 'hammerjs',\n test: function(win) {\n if(win.Hammer && win.Hammer.Pinch) {\n // Hammer.VERSION available in 1.0.10+\n return { version: win.Hammer.VERSION || \"< 1.0.10\" };\n }\n return false;\n }\n },\n\n 'Visibility.js': {\n icon: 'icon38',\n url: 'https://github.com/ai/visibilityjs',\n npm: 'visibilityjs',\n test: function(win) {\n if(win.Visibility && win.Visibility.every) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'Velocity.js': {\n icon: 'icon38',\n url: 'http://velocityjs.org/',\n npm: 'velocity-animate',\n test: function(win) {\n var jq = win.jQuery || win.$,\n velocity = jq ? jq.Velocity : win.Velocity;\n\n if(velocity && velocity.RegisterEffect && velocity.version) {\n return {\n version:\n velocity.version.major + \".\" +\n velocity.version.minor + \".\" +\n velocity.version.patch\n };\n }\n else if (velocity && velocity.RegisterEffect) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n\n 'IfVisible.js': {\n icon: 'icon38',\n url: 'http://serkanyersen.github.io/ifvisible.js/',\n npm: 'ifvisible.js',\n test: function(win) {\n var iv = win.ifvisible;\n if(iv && iv.__ceGUID === \"ifvisible.object.event.identifier\") {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Pixi.js': {\n icon: 'pixi',\n url: 'http://www.pixijs.com/',\n npm: 'pixi.js',\n test: function(win) {\n var px = win.PIXI;\n if(px && px.WebGLRenderer && px.VERSION) {\n // version 4.4.3 returns simply \"4.4.3\"; version 1.5.2 returns \"v1.5.2\"\n return { version: px.VERSION.replace('v', '') || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'DC.js': {\n icon: 'dcjs',\n url: 'http://dc-js.github.io/dc.js/',\n npm: 'dc',\n test: function(win) {\n var dc = win.dc;\n if(dc && dc.registerChart) {\n return { version: dc.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'GreenSock JS': {\n icon: 'greensock',\n url: 'https://greensock.com/gsap',\n npm: 'gsap',\n test: function(win) {\n if (win.TweenMax && win.TweenMax.pauseAll) {\n return { version: win.TweenMax.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'FastClick': {\n icon: 'fastclick',\n url: 'https://github.com/ftlabs/fastclick',\n npm: 'fastclick',\n test: function(win) {\n if(win.FastClick && win.FastClick.notNeeded) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Isotope': {\n icon: 'isotope',\n url: 'https://isotope.metafizzy.co/',\n npm: 'isotope-layout',\n test: function(win) {\n if(win.Isotope || (win.$ != null && win.$.Isotope)) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Marionette': {\n icon: 'marionette',\n url: 'https://marionettejs.com/',\n npm: 'backbone.marionette',\n test: function(win) {\n if(win.Marionette && win.Marionette.Application) {\n return { version: win.Marionette.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Can': {\n icon: 'canjs',\n url: 'https://canjs.com/',\n npm: 'can',\n test: function (win) {\n if (win.can && win.can.Construct) {\n return { version: win.can.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Vue': {\n icon: 'vue',\n url: 'https://vuejs.org/',\n npm: 'vue',\n test: function(win) {\n function isVueNode(node) {\n return node.__vue__ != null ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n var hasVueNode = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, isVueNode).nextNode() !== null;\n if (hasVueNode) {\n return { version: win.Vue && win.Vue.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Vue (Fast path)': {\n icon: 'vue',\n url: 'https://vuejs.org/',\n npm: 'vue',\n test: function (win) {\n if (win.Vue) {\n return { version: win.Vue && win.Vue.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Nuxt.js': {\n icon: 'nuxt',\n url: 'https://nuxtjs.org/',\n npm: 'nuxt',\n test: function(win) {\n if ((win.__NUXT__ && win.__NUXT__.data != null) || win.$nuxt) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Nuxt.js (Fast path)': {\n icon: 'nuxt',\n url: 'https://nuxtjs.org/',\n npm: 'nuxt',\n test: function (win) {\n if (win.__NUXT__ || win.$nuxt) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Two': {\n icon: 'two',\n url: 'https://two.js.org/',\n npm: 'two.js',\n test: function(win) {\n if (win.Two && win.Two.Utils) {\n return { version: win.Two.Version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Brewser': {\n icon: 'brewser',\n url: 'https://robertpataki.github.io/brewser/',\n npm: 'brewser',\n test: function(win) {\n if(win.BREWSER && win.BREWSER.ua) {\n return { version: BREWSER.VERSION || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Material Design Lite': {\n icon: 'mdl',\n url: 'https://getmdl.io/',\n npm: 'material-design-lite',\n test: function(win) {\n if(win.componentHandler && win.componentHandler.upgradeElement) {\n return { version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n 'Kendo UI': {\n icon: 'kendoui',\n url: 'https://github.com/telerik/kendo-ui-core',\n npm: 'kendo-ui-core',\n test: function(win) {\n if (win.kendo && win.kendo.View && win.kendo.View.extend) {\n return {version: win.kendo.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n 'Matter.js': {\n icon: 'matter-js',\n url: 'http://brm.io/matter-js/',\n npm: 'matter-js',\n test: function(win) {\n if (win.Matter && win.Matter.Engine) {\n return {version: UNKNOWN_VERSION};\n }\n return false;\n }\n },\n 'Riot': {\n icon: 'riot',\n url: 'http://riotjs.com/',\n npm: 'riot',\n test: function(win) {\n if (win.riot && win.riot.mixin) {\n return { version: win.riot.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Sea.js': {\n icon: 'icon38',\n url: 'https://seajs.github.io/seajs/docs/',\n npm: 'seajs',\n test: function(win) {\n if(win.seajs && win.seajs.use) {\n return { version: win.seajs.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Moment.js': {\n icon: 'momentjs',\n url: 'http://momentjs.com/',\n npm: 'moment',\n test: function(win) {\n if(win.moment && (win.moment.isMoment || win.moment.lang)) {\n // version 1.0.0 has neither \"isMoment\" nor \"version\"\n return { version: win.moment.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Moment Timezone': {\n icon: 'momentjs',\n url: 'http://momentjs.com/timezone/',\n npm: 'moment-timezone',\n test: function(win) {\n if (win.moment && win.moment.tz) {\n return { version: win.moment.tz.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'ScrollMagic': {\n icon: 'scrollmagic',\n url: 'http://scrollmagic.io/',\n npm: 'scrollmagic',\n test: function(win) {\n if (win.ScrollMagic && win.ScrollMagic.Controller) {\n return {version: ScrollMagic.version || UNKNOWN_VERSION};\n }\n return false;\n }\n },\n 'SWFObject': {\n icon: 'icon38', // currently has no icon\n url: 'https://github.com/swfobject/swfobject',\n test: function(win) {\n if (win.swfobject && win.swfobject.embedSWF) {\n // 2.x - exact version only for 2.3\n return { version: win.swfobject.version || UNKNOWN_VERSION };\n } else if(win.deconcept && win.deconcept.SWFObject) {\n // 1.x\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'FlexSlider': {\n icon: 'icon38', // currently has no icon\n url: 'https://woocommerce.com/flexslider/',\n npm: 'flexslider',\n test: function(win) {\n var jq = win.jQuery || win.$ || win.$jq || win.$j;\n if (jq && jq.fn && jq.fn.jquery && jq.flexslider){\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'SPF': {\n icon: 'icon38', // currently has no icon\n url: 'https://youtube.github.io/spfjs/',\n npm: 'spf',\n test: function(win) {\n if (win.spf && win.spf.init) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Numeral.js': {\n icon: 'icon38', // currently has no icon\n url: 'http://numeraljs.com/',\n npm: 'numeraljs',\n test: function(win) {\n if (win.numeral && win.isNumeral) {\n return { version: win.numeral.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'boomerang.js': {\n icon: 'icon38', // currently has no icon\n url: 'https://soasta.github.io/boomerang/',\n npm: 'boomerangjs',\n test: function(win) {\n if (win.BOOMR && win.BOOMR.utils && win.BOOMR.init) {\n return { version: win.BOOMR.version || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Framer': {\n icon: 'framer',\n url: 'https://framer.com/',\n npm: 'framerjs',\n test: function(win) {\n if (win.Framer && win.Framer.Layer) {\n return { version: win.Framer.Version.build || UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Marko': {\n icon: 'marko',\n url: 'https://markojs.com/',\n npm: 'marko',\n test: function (win) {\n var selector = '[data-marko-key], [data-marko]';\n var markoElement = document.querySelector(selector);\n if (markoElement) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'AMP': {\n icon: 'amp',\n url: 'https://ampproject.org/',\n npm: null,\n test: function (win) {\n var version = win.document.documentElement.getAttribute(\"amp-version\");\n return version ? { version: version } : false;\n }\n },\n 'Gatsby': {\n icon: 'gatsby',\n url: 'https://www.gatsbyjs.org/',\n npm: 'gatsby',\n test: function (win) {\n if (document.getElementById('___gatsby')) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Shopify': {\n icon: 'shopify',\n url: 'https://www.shopify.com/',\n npm: null,\n test: function (win) {\n if (win.Shopify && win.Shopify.shop) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Magento': {\n icon: 'magento',\n url: 'https://magento.com/',\n npm: null,\n test: function (win) {\n // Same detecton used in Magento 2 DevTools: https://github.com/magento/m2-devtools\n const reRequireScript = /\\/static(?:\\/version\\d+)?\\/frontend\\/.+\\/.+\\/requirejs\\/require(?:\\.min)?\\.js/;\n const scripts = Array.from(document.querySelectorAll('script[src]') || []);\n if (scripts.some(s => reRequireScript.test(s.src))) {\n return { version: 2 }; // Magento 1 is no longer supported and this only verifies version 2\n }\n \n return false;\n }\n },\n 'WordPress': {\n icon: 'wordpress',\n url: 'https://wordpress.org/',\n npm: null,\n test: function (win) {\n const hasAPILinkElem = !!document.querySelector('link[rel=\"https://api.w.org/\"]');\n const hasWPIncludes = !!document.querySelectorAll('link[href*=\"wp-includes\"], script[src*=\"wp-includes\"]').length;\n\n if (!hasAPILinkElem && !hasWPIncludes) return false;\n\n const generatorMeta = document.querySelector('meta[name=generator][content^=\"WordPress\"]');\n const version = generatorMeta ? generatorMeta.getAttribute(\"content\").replace(/^\\w+\\s/,'') : UNKNOWN_VERSION;\n return { version };\n }\n },\n 'Wix': {\n icon: 'wix',\n url: 'https://www.wix.com/',\n npm: null,\n test: function (win) {\n if (win.wixBiSession) {\n return { version: UNKNOWN_VERSION };\n }\n return false;\n }\n },\n 'Workbox': {\n icon: 'workbox',\n url: 'https://developers.google.com/web/tools/workbox/',\n npm: 'workbox-sw',\n test: async function (win) {\n var nav = win.navigator;\n // Service Workers not supported\n if (!('serviceWorker' in nav)) {\n return false;\n }\n return nav.serviceWorker.getRegistration()\n .then(function(registration) {\n var scriptURL = nav.serviceWorker.controller.scriptURL;\n return fetch(scriptURL, { credentials: 'include',\n headers: { 'service-worker': 'script' }\n })\n .then(function(response) {\n return response.text();\n })\n .then(function(scriptContent) {\n var workboxRegExp = /new Workbox|new workbox|workbox\\.precaching\\.|workbox\\.strategies/gm;\n if (workboxRegExp.test(scriptContent)) {\n // Adapted from\n // https://github.com/semver/semver/issues/232#issue-48635632\n var semVerRegExp = /workbox.*?\\b((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?)\\b/gim;\n var matches = semVerRegExp.exec(scriptContent);\n var version = UNKNOWN_VERSION;\n if (Array.isArray(matches) && matches.length > 1 && matches[1]) {\n version = matches[1];\n }\n return { version: version };\n }\n return false;\n });\n }).catch(function(exception) {\n return false;\n });\n }\n }\n};\n"; @@ -31213,7 +31310,7 @@ module.exports=collectStacks; -},{}],80:[function(require,module,exports){ +},{}],81:[function(require,module,exports){ @@ -31229,9 +31326,27 @@ -const stackPacksToInclude=[{ +const stackPacksToInclude=[ +{ packId:'wordpress', -requiredStacks:['js:wordpress']}]; +requiredStacks:['js:wordpress']}, + +{ +packId:'react', +requiredStacks:['js:react']}, + +{ +packId:'angular', +requiredStacks:['js:@angular/core']}, + +{ +packId:'amp', +requiredStacks:['js:amp']}, + +{ +packId:'magento', +requiredStacks:['js:magento']}]; + @@ -31273,7 +31388,7 @@ getStackPacks}; -},{"../../stack-packs/index.js":176,"lighthouse-logger":124}],81:[function(require,module,exports){ +},{"../../stack-packs/index.js":177,"lighthouse-logger":125}],82:[function(require,module,exports){ @@ -31354,7 +31469,7 @@ getLogNormalDistribution}; -},{}],82:[function(require,module,exports){ +},{}],83:[function(require,module,exports){ @@ -31462,7 +31577,7 @@ getTappableRectsFromClientRects}; -},{"./rect-helpers.js":77}],83:[function(require,module,exports){ +},{"./rect-helpers.js":78}],84:[function(require,module,exports){ @@ -31506,31 +31621,38 @@ + class MainThreadTasks{ -static _createNewTaskNode(event,parent){ +static _createNewTaskNode(event,endEvent){ +const isCompleteEvent=event.ph==='X'&&!endEvent; +const isStartEndEventPair=event.ph==='B'&&endEvent&&endEvent.ph==='E'; +if(!isCompleteEvent&&!isStartEndEventPair){ +throw new Error('Invalid parameters for _createNewTaskNode'); +} + +const startTime=event.ts; +const endTime=endEvent?endEvent.ts:event.ts+Number(event.dur||0); + const newTask={ event, -startTime:event.ts, -endTime:event.ph==='X'?event.ts+Number(event.dur||0):NaN, -parent:parent, +startTime, +endTime, +duration:endTime-startTime, + + +unbounded:false, +parent:undefined, children:[], - - attributableURLs:[], group:taskGroups.other, -duration:NaN, selfTime:NaN}; -if(parent){ -parent.children.push(newTask); -} - return newTask; } @@ -31540,73 +31662,311 @@ -static _createTasksFromEvents(mainThreadEvents,priorTaskData,traceEndTs){ -const tasks=[]; +static _assignAllTimersUntilTs( +currentTask, +stopTs, +priorTaskData, +reverseEventsQueue) +{ +while(reverseEventsQueue.length){ +const nextTimerInstallEvent=reverseEventsQueue.pop(); -let currentTask; - -for(const event of mainThreadEvents){ - -if(event.name==='TimerInstall'&¤tTask){ +if(!nextTimerInstallEvent)break; -const timerId=event.args.data.timerId; -priorTaskData.timers.set(timerId,currentTask); +if(nextTimerInstallEvent.ts>stopTs){ +reverseEventsQueue.push(nextTimerInstallEvent); +break; } -if(event.ph!=='X'&&event.ph!=='B'&&event.ph!=='E')continue; +if(nextTimerInstallEvent.ts<currentTask.startTime){ +continue; +} + + + + +const timerId=nextTimerInstallEvent.args.data.timerId; +priorTaskData.timers.set(timerId,currentTask); +} +} + + + + + + + + + + + + + + + + +static _createTasksFromStartAndEndEvents(taskStartEvents,taskEndEvents,traceEndTs){ + +const tasks=[]; + + + +const taskEndEventsReverseQueue=taskEndEvents.slice().reverse(); + +for(let i=0;i<taskStartEvents.length;i++){ +const taskStartEvent=taskStartEvents[i]; +if(taskStartEvent.ph==='X'){ + +tasks.push(MainThreadTasks._createNewTaskNode(taskStartEvent)); +continue; +} + + +let matchedEventIndex=-1; +let matchingNestedEventCount=0; +let matchingNestedEventIndex=i+1; + + + + + +for(let j=taskEndEventsReverseQueue.length-1;j>=0;j--){ +const endEvent=taskEndEventsReverseQueue[j]; + +for(;matchingNestedEventIndex<taskStartEvents.length;matchingNestedEventIndex++){ +if(taskStartEvents[matchingNestedEventIndex].ts>=endEvent.ts)break; + +if(taskStartEvents[matchingNestedEventIndex].name===taskStartEvent.name){ +matchingNestedEventCount++; +} +} + + +if(endEvent.name!==taskStartEvent.name)continue; + +if(endEvent.ts<taskStartEvent.ts)continue; + + +if(matchingNestedEventCount>0){ + +matchingNestedEventCount--; +continue; +} + + +matchedEventIndex=j; +break; +} + + +let taskEndEvent; +let unbounded=false; +if(matchedEventIndex===-1){ + + +taskEndEvent={ph:'E',ts:traceEndTs}; +unbounded=true; +}else if(matchedEventIndex===taskEndEventsReverseQueue.length-1){ + + +taskEndEvent=taskEndEventsReverseQueue.pop(); +}else{ +taskEndEvent=taskEndEventsReverseQueue.splice(matchedEventIndex,1)[0]; +} + +const task=MainThreadTasks._createNewTaskNode(taskStartEvent,taskEndEvent); +task.unbounded=unbounded; +tasks.push(task); +} + +if(taskEndEventsReverseQueue.length){ +throw new Error( +`Fatal trace logic error - ${taskEndEventsReverseQueue.length} unmatched end events`); + +} + +return tasks; +} + + + + + + + + + + +static _createTaskRelationships(sortedTasks,timerInstallEvents,priorTaskData){ + +let currentTask; + +const timerInstallEventsReverseQueue=timerInstallEvents.slice().reverse(); + +for(let i=0;i<sortedTasks.length;i++){ +let nextTask=sortedTasks[i]; + + while( currentTask&& Number.isFinite(currentTask.endTime)&& -currentTask.endTime<=event.ts) +currentTask.endTime<=nextTask.startTime) { +MainThreadTasks._assignAllTimersUntilTs( +currentTask, +currentTask.endTime, +priorTaskData, +timerInstallEventsReverseQueue); + currentTask=currentTask.parent; } -if(!currentTask){ -if(event.ph==='E'){ -throw new Error('Fatal trace logic error - unexpected end event'); +if(currentTask){ +if(nextTask.endTime>currentTask.endTime){ +const timeDelta=nextTask.endTime-currentTask.endTime; + + +if(timeDelta<1000){ + +currentTask.endTime=nextTask.endTime; +currentTask.duration+=timeDelta; +}else if(nextTask.unbounded){ + +nextTask.endTime=currentTask.endTime; +nextTask.duration=nextTask.endTime-nextTask.startTime; +}else if( +nextTask.startTime-currentTask.startTime<1000&& +!currentTask.children.length) +{ + + + + + + + + +const actualParentTask=nextTask; +const actualChildTask=currentTask; + + + +const grandparentTask=currentTask.parent; +if(grandparentTask){ +const lastGrandparentChildIndex=grandparentTask.children.length-1; +if(grandparentTask.children[lastGrandparentChildIndex]!==actualChildTask){ + + +throw new Error('Fatal trace logic error - impossible children'); } -currentTask=MainThreadTasks._createNewTaskNode(event); -tasks.push(currentTask); - -continue; +grandparentTask.children.pop(); +grandparentTask.children.push(actualParentTask); } -if(event.ph==='X'||event.ph==='B'){ - -const newTask=MainThreadTasks._createNewTaskNode(event,currentTask); -tasks.push(newTask); -currentTask=newTask; +actualParentTask.parent=grandparentTask; +actualParentTask.startTime=actualChildTask.startTime; +actualParentTask.duration=actualParentTask.endTime-actualParentTask.startTime; +currentTask=actualParentTask; +nextTask=actualChildTask; }else{ -if(currentTask.event.ph!=='B'){ -throw new Error( -`Fatal trace logic error - expected start event, got ${currentTask.event.ph}`); + + + + + + + +const error=new Error('Fatal trace logic error - child cannot end after parent'); +error.timeDelta=timeDelta; +error.nextTaskEvent=nextTask.event; +error.nextTaskEndTime=nextTask.endTime; +error.currentTaskEvent=currentTask.event; +error.currentTaskEndTime=currentTask.endTime; +throw error; +} } +nextTask.parent=currentTask; +currentTask.children.push(nextTask); +MainThreadTasks._assignAllTimersUntilTs( +currentTask, +nextTask.startTime, +priorTaskData, +timerInstallEventsReverseQueue); -currentTask.endTime=event.ts; -currentTask=currentTask.parent; +} + +currentTask=nextTask; +} + +if(currentTask){ +MainThreadTasks._assignAllTimersUntilTs( +currentTask, +currentTask.endTime, +priorTaskData, +timerInstallEventsReverseQueue); + } } -while(currentTask&&!Number.isFinite(currentTask.endTime)){ -currentTask.endTime=traceEndTs; -currentTask=currentTask.parent; + + + + + + + + + + + + + +static _createTasksFromEvents(mainThreadEvents,priorTaskData,traceEndTs){ + +const taskStartEvents=[]; + +const taskEndEvents=[]; + +const timerInstallEvents=[]; + + +for(const event of mainThreadEvents){ +if(event.ph==='X'||event.ph==='B')taskStartEvents.push(event); +if(event.ph==='E')taskEndEvents.push(event); +if(event.name==='TimerInstall')timerInstallEvents.push(event); } -return tasks; +const tasks=MainThreadTasks._createTasksFromStartAndEndEvents( +taskStartEvents, +taskEndEvents, +traceEndTs); + + + +const sortedTasks=tasks.sort( +(taskA,taskB)=>taskA.startTime-taskB.startTime||taskB.duration-taskA.duration); + + + +MainThreadTasks._createTaskRelationships(sortedTasks,timerInstallEvents,priorTaskData); + + +return sortedTasks.sort( +(taskA,taskB)=>taskA.startTime-taskB.startTime||taskB.duration-taskA.duration); + } @@ -31622,7 +31982,6 @@ const childTime=task.children. map(child=>MainThreadTasks._computeRecursiveSelfTime(child,task)). reduce((sum,child)=>sum+child,0); -task.duration=task.endTime-task.startTime; task.selfTime=task.duration-childTime; return task.duration; } @@ -31679,6 +32038,7 @@ task.attributableURLs=attributableURLs; task.children.forEach(child=> MainThreadTasks._computeRecursiveAttributableURLs(child,attributableURLs,priorTaskData)); + } @@ -31696,10 +32056,14 @@ -static getMainThreadTasks(traceEvents,traceEndTs){ +static getMainThreadTasks(mainThreadEvents,traceEndTs){ const timers=new Map(); const priorTaskData={timers}; -const tasks=MainThreadTasks._createTasksFromEvents(traceEvents,priorTaskData,traceEndTs); +const tasks=MainThreadTasks._createTasksFromEvents( +mainThreadEvents, +priorTaskData, +traceEndTs); + for(const task of tasks){ @@ -31730,7 +32094,7 @@ module.exports=MainThreadTasks; -},{"./task-groups.js":84}],84:[function(require,module,exports){ +},{"./task-groups.js":85}],85:[function(require,module,exports){ @@ -31843,7 +32207,7 @@ taskNameToGroup}; -},{}],85:[function(require,module,exports){ +},{}],86:[function(require,module,exports){ @@ -32370,6 +32734,28 @@ firstMeaningfulPaint=lastCandidate; } + + + +let largestContentfulPaint; +let lcpInvalidated=false; + +for(let i=frameEvents.length-1;i>=0;i--){ +const e=frameEvents[i]; + +if(e.ts<=navigationStart.ts)break; + +if(e.name==='largestContentfulPaint::Invalidate'){ +lcpInvalidated=true; +break; +} + +if(e.name!=='largestContentfulPaint::Candidate')continue; + +largestContentfulPaint=e; +break; +} + const load=frameEvents.find(e=>e.name==='loadEventEnd'&&e.ts>navigationStart.ts); const domContentLoaded=frameEvents.find( e=>e.name==='domContentLoadedEventEnd'&&e.ts>navigationStart.ts); @@ -32397,6 +32783,7 @@ firstPaint:getTimestamp(firstPaint), firstContentfulPaint:getTimestamp(firstContentfulPaint), firstMeaningfulPaint:getTimestamp(firstMeaningfulPaint), +largestContentfulPaint:getTimestamp(largestContentfulPaint), traceEnd:fakeEndOfTraceEvt.ts, load:getTimestamp(load), domContentLoaded:getTimestamp(domContentLoaded)}; @@ -32412,6 +32799,7 @@ firstPaint:maybeGetTiming(timestamps.firstPaint), firstContentfulPaint:maybeGetTiming(timestamps.firstContentfulPaint), firstMeaningfulPaint:maybeGetTiming(timestamps.firstMeaningfulPaint), +largestContentfulPaint:maybeGetTiming(timestamps.largestContentfulPaint), traceEnd:getTiming(timestamps.traceEnd), load:maybeGetTiming(timestamps.load), domContentLoaded:maybeGetTiming(timestamps.domContentLoaded)}; @@ -32427,9 +32815,11 @@ firstPaintEvt:firstPaint, firstContentfulPaintEvt:firstContentfulPaint, firstMeaningfulPaintEvt:firstMeaningfulPaint, +largestContentfulPaintEvt:largestContentfulPaint, loadEvt:load, domContentLoadedEvt:domContentLoaded, -fmpFellBack}; +fmpFellBack, +lcpInvalidated}; }} @@ -32444,7 +32834,7 @@ -},{"lighthouse-logger":124}],86:[function(require,module,exports){ +},{"lighthouse-logger":125}],87:[function(require,module,exports){ @@ -32649,7 +33039,7 @@ module.exports=Metrics; -},{"lighthouse-logger":124}],87:[function(require,module,exports){ +},{"lighthouse-logger":125}],88:[function(require,module,exports){ @@ -33333,7 +33723,7 @@ self.Util=Util; } -},{}],88:[function(require,module,exports){ +},{}],89:[function(require,module,exports){ @@ -33453,7 +33843,7 @@ module.exports=ReportGenerator; -},{"./html/html-report-assets.js":100}],89:[function(require,module,exports){ +},{"./html/html-report-assets.js":101}],90:[function(require,module,exports){ (function(process){ @@ -33878,7 +34268,7 @@ static getGathererList(){ const fileList=[ -...["accessibility.js","anchor-elements.js","cache-contents.js","console-messages.js","css-usage.js","dobetterweb","gatherer.js","html-without-javascript.js","http-redirect.js","iframe-elements.js","image-elements.js","js-usage.js","link-elements.js","meta-elements.js","mixed-content.js","offline.js","runtime-exceptions.js","script-elements.js","seo","service-worker.js","source-maps.js","start-url.js","viewport-dimensions.js"], +...["accessibility.js","anchor-elements.js","cache-contents.js","console-messages.js","css-usage.js","dobetterweb","gatherer.js","html-without-javascript.js","http-redirect.js","iframe-elements.js","image-elements.js","js-usage.js","link-elements.js","main-document-content.js","meta-elements.js","mixed-content.js","offline.js","runtime-exceptions.js","script-elements.js","seo","service-worker.js","source-maps.js","start-url.js","viewport-dimensions.js"], ...["embedded-content.js","font-size.js","robots-txt.js","tap-targets.js"].map(f=>`seo/${f}`), ...["appcache.js","doctype.js","domstats.js","optimized-images.js","password-inputs-with-prevented-paste.js","response-compression.js","tags-blocking-first-paint.js"]. map(f=>`dobetterweb/${f}`)]; @@ -33905,7 +34295,7 @@ module.exports=Runner; }).call(this,require('_process')); -},{"../package.json":175,"./audits/audit.js":3,"./gather/driver.js":51,"./gather/gather-runner.js":52,"./lib/asset-saver.js":56,"./lib/i18n/i18n.js":67,"./lib/lh-error.js":71,"./lib/sentry.js":78,"./lib/stack-packs.js":80,"./lib/url-shim.js":"url","./report/report-generator.js":88,"./scoring.js":90,"_process":141,"lighthouse-logger":124,"lodash.isequal":125,"path":139}],90:[function(require,module,exports){ +},{"../package.json":176,"./audits/audit.js":3,"./gather/driver.js":52,"./gather/gather-runner.js":53,"./lib/asset-saver.js":57,"./lib/i18n/i18n.js":67,"./lib/lh-error.js":72,"./lib/sentry.js":79,"./lib/stack-packs.js":81,"./lib/url-shim.js":"url","./report/report-generator.js":89,"./scoring.js":91,"_process":142,"lighthouse-logger":125,"lodash.isequal":126,"path":140}],91:[function(require,module,exports){ @@ -34000,7 +34390,7 @@ module.exports=ReportScoring; -},{"./audits/audit.js":3}],91:[function(require,module,exports){ +},{"./audits/audit.js":3}],92:[function(require,module,exports){ (function(global){ 'use strict'; @@ -34494,7 +34884,7 @@ }; }).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{}); -},{"util/":94}],92:[function(require,module,exports){ +},{"util/":95}],93:[function(require,module,exports){ if(typeof Object.create==='function'){ module.exports=function inherits(ctor,superCtor){ @@ -34519,14 +34909,14 @@ }; } -},{}],93:[function(require,module,exports){ +},{}],94:[function(require,module,exports){ module.exports=function isBuffer(arg){ return arg&&typeof arg==='object'&& typeof arg.copy==='function'&& typeof arg.fill==='function'&& typeof arg.readUInt8==='function'; }; -},{}],94:[function(require,module,exports){ +},{}],95:[function(require,module,exports){ (function(process,global){ @@ -35116,7 +35506,7 @@ } }).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{}); -},{"./support/isBuffer":93,"_process":141,"inherits":92}],95:[function(require,module,exports){ +},{"./support/isBuffer":94,"_process":142,"inherits":93}],96:[function(require,module,exports){ const langs=[ 'aa', @@ -43270,7 +43660,7 @@ return langs; }; -},{}],96:[function(require,module,exports){ +},{}],97:[function(require,module,exports){ 'use strict'; exports.byteLength=byteLength; @@ -43423,9 +43813,9 @@ return parts.join(''); } -},{}],97:[function(require,module,exports){ - },{}],98:[function(require,module,exports){ + +},{}],99:[function(require,module,exports){ (function(process,Buffer){ 'use strict'; @@ -43837,7 +44227,7 @@ exports.Zlib=Zlib; }).call(this,require('_process'),require("buffer").Buffer); -},{"_process":141,"assert":91,"buffer":101,"pako/lib/zlib/constants":132,"pako/lib/zlib/deflate.js":134,"pako/lib/zlib/inflate.js":100,"pako/lib/zlib/zstream":137}],99:[function(require,module,exports){ +},{"_process":142,"assert":92,"buffer":102,"pako/lib/zlib/constants":133,"pako/lib/zlib/deflate.js":135,"pako/lib/zlib/inflate.js":101,"pako/lib/zlib/zstream":138}],100:[function(require,module,exports){ (function(process){ 'use strict'; @@ -44449,9 +44839,9 @@ util.inherits(InflateRaw,Zlib); util.inherits(Unzip,Zlib); }).call(this,require('_process')); -},{"./binding":98,"_process":141,"assert":91,"buffer":101,"stream":166,"util":174}],100:[function(require,module,exports){ -arguments[4][97][0].apply(exports,arguments); -},{"dup":97}],101:[function(require,module,exports){ +},{"./binding":99,"_process":142,"assert":92,"buffer":102,"stream":167,"util":175}],101:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments); +},{"dup":98}],102:[function(require,module,exports){ (function(Buffer){ @@ -46232,7 +46622,7 @@ } }).call(this,require("buffer").Buffer); -},{"base64-js":96,"buffer":101,"ieee754":110}],102:[function(require,module,exports){ +},{"base64-js":97,"buffer":102,"ieee754":111}],103:[function(require,module,exports){ (function(Buffer){ @@ -46343,7 +46733,7 @@ } }).call(this,{"isBuffer":require("../../is-buffer/index.js")}); -},{"../../is-buffer/index.js":119}],103:[function(require,module,exports){ +},{"../../is-buffer/index.js":120}],104:[function(require,module,exports){ module.exports=[ "aliceblue", "antiquewhite", @@ -46495,7 +46885,7 @@ "yellowgreen"]; -},{}],104:[function(require,module,exports){ +},{}],105:[function(require,module,exports){ @@ -47194,7 +47584,7 @@ return dashed; }; -},{"./named_colors.json":103}],105:[function(require,module,exports){ +},{"./named_colors.json":104}],106:[function(require,module,exports){ (function(process){ @@ -47383,7 +47773,7 @@ } }).call(this,require('_process')); -},{"./debug":106,"_process":141}],106:[function(require,module,exports){ +},{"./debug":107,"_process":142}],107:[function(require,module,exports){ @@ -47587,7 +47977,7 @@ return val; } -},{"ms":129}],107:[function(require,module,exports){ +},{"ms":130}],108:[function(require,module,exports){ @@ -48112,7 +48502,7 @@ }; } -},{}],108:[function(require,module,exports){ +},{}],109:[function(require,module,exports){ (function(Buffer){ var querystring=require('querystring'); var trim=require('./trim'); @@ -48419,12 +48809,12 @@ module.exports=Link; }).call(this,{"isBuffer":require("../../is-buffer/index.js")}); -},{"../../is-buffer/index.js":119,"./trim":109,"querystring":144}],109:[function(require,module,exports){ +},{"../../is-buffer/index.js":120,"./trim":110,"querystring":145}],110:[function(require,module,exports){ module.exports=function trim(value){ return value.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,''); }; -},{}],110:[function(require,module,exports){ +},{}],111:[function(require,module,exports){ exports.read=function(buffer,offset,isLE,mLen,nBytes){ var e,m; var eLen=nBytes*8-mLen-1; @@ -48510,7 +48900,7 @@ buffer[offset+i-d]|=s*128; }; -},{}],111:[function(require,module,exports){ +},{}],112:[function(require,module,exports){ @@ -48655,9 +49045,9 @@ })(ImageSSIM||(ImageSSIM={})); module.exports=ImageSSIM; -},{}],112:[function(require,module,exports){ -arguments[4][92][0].apply(exports,arguments); -},{"dup":92}],113:[function(require,module,exports){ +},{}],113:[function(require,module,exports){ +arguments[4][93][0].apply(exports,arguments); +},{"dup":93}],114:[function(require,module,exports){ 'use strict'; var parser=require('./lib/parser'); @@ -48665,7 +49055,7 @@ module.exports=parser; module.exports['default']=parser; -},{"./lib/parser":114}],114:[function(require,module,exports){ +},{"./lib/parser":115}],115:[function(require,module,exports){ @@ -50218,7 +50608,7 @@ parse:peg$parse}; -},{}],115:[function(require,module,exports){ +},{}],116:[function(require,module,exports){ "use strict"; @@ -50419,7 +50809,7 @@ } exports.isSelectOrPluralFormat=isSelectOrPluralFormat; -},{}],116:[function(require,module,exports){ +},{}],117:[function(require,module,exports){ "use strict"; @@ -50668,7 +51058,7 @@ exports.IntlMessageFormat=IntlMessageFormat; exports.default=IntlMessageFormat; -},{"./compiler":115}],117:[function(require,module,exports){ +},{"./compiler":116}],118:[function(require,module,exports){ "use strict"; @@ -50685,7 +51075,7 @@ __export(require("./core")); exports.default=core_1.default; -},{"./core":116,"intl-messageformat-parser":113}],118:[function(require,module,exports){ +},{"./core":117,"intl-messageformat-parser":114}],119:[function(require,module,exports){ 'use strict'; var IntlMessageFormat=require('./dist').default; @@ -50695,7 +51085,7 @@ exports=module.exports=IntlMessageFormat; exports['default']=exports; -},{"./dist":117}],119:[function(require,module,exports){ +},{"./dist":118}],120:[function(require,module,exports){ @@ -50718,14 +51108,14 @@ return typeof obj.readFloatLE==='function'&&typeof obj.slice==='function'&&isBuffer(obj.slice(0,0)); } -},{}],120:[function(require,module,exports){ +},{}],121:[function(require,module,exports){ var toString={}.toString; module.exports=Array.isArray||function(arr){ return toString.call(arr)=='[object Array]'; }; -},{}],121:[function(require,module,exports){ +},{}],122:[function(require,module,exports){ var encode=require('./lib/encoder'), decode=require('./lib/decoder'); @@ -50734,7 +51124,7 @@ decode:decode}; -},{"./lib/decoder":122,"./lib/encoder":123}],122:[function(require,module,exports){ +},{"./lib/decoder":123,"./lib/encoder":124}],123:[function(require,module,exports){ (function(Buffer){ @@ -51724,7 +52114,7 @@ } }).call(this,require("buffer").Buffer); -},{"buffer":101}],123:[function(require,module,exports){ +},{"buffer":102}],124:[function(require,module,exports){ (function(Buffer){ @@ -52494,7 +52884,7 @@ } }).call(this,require("buffer").Buffer); -},{"buffer":101}],124:[function(require,module,exports){ +},{"buffer":102}],125:[function(require,module,exports){ (function(process){ @@ -52739,7 +53129,7 @@ module.exports=Log; }).call(this,require('_process')); -},{"_process":141,"debug":105,"events":107,"marky":127}],125:[function(require,module,exports){ +},{"_process":142,"debug":106,"events":108,"marky":128}],126:[function(require,module,exports){ (function(global){ @@ -54591,7 +54981,7 @@ module.exports=isEqual; }).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{}); -},{}],126:[function(require,module,exports){ +},{}],127:[function(require,module,exports){ @@ -54608,7 +54998,7 @@ } }; -},{}],127:[function(require,module,exports){ +},{}],128:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports,'__esModule',{value:true}); @@ -54688,7 +55078,7 @@ exports.clear=function(){entries=[];}; } -},{}],128:[function(require,module,exports){ +},{}],129:[function(require,module,exports){ exports.getRenderingDataFromViewport=function(viewportProperties,uaDeviceWidth,uaDeviceHeight,uaMaxZoom,uaMinZoom){ var vw=uaDeviceWidth/100; @@ -55031,7 +55421,7 @@ "viewport-fit":["auto","cover"]}; -},{}],129:[function(require,module,exports){ +},{}],130:[function(require,module,exports){ @@ -55185,7 +55575,7 @@ return Math.ceil(ms/n)+' '+name+'s'; } -},{}],130:[function(require,module,exports){ +},{}],131:[function(require,module,exports){ 'use strict'; @@ -55292,7 +55682,7 @@ exports.setTyped(TYPED_OK); -},{}],131:[function(require,module,exports){ +},{}],132:[function(require,module,exports){ 'use strict'; @@ -55345,7 +55735,7 @@ module.exports=adler32; -},{}],132:[function(require,module,exports){ +},{}],133:[function(require,module,exports){ 'use strict'; @@ -55415,7 +55805,7 @@ -},{}],133:[function(require,module,exports){ +},{}],134:[function(require,module,exports){ 'use strict'; @@ -55476,7 +55866,7 @@ module.exports=crc32; -},{}],134:[function(require,module,exports){ +},{}],135:[function(require,module,exports){ 'use strict'; @@ -57352,7 +57742,7 @@ -},{"../utils/common":130,"./adler32":131,"./crc32":133,"./messages":135,"./trees":136}],135:[function(require,module,exports){ +},{"../utils/common":131,"./adler32":132,"./crc32":134,"./messages":136,"./trees":137}],136:[function(require,module,exports){ 'use strict'; @@ -57386,7 +57776,7 @@ '-6':'incompatible version'}; -},{}],136:[function(require,module,exports){ +},{}],137:[function(require,module,exports){ 'use strict'; @@ -58610,7 +59000,7 @@ exports._tr_tally=_tr_tally; exports._tr_align=_tr_align; -},{"../utils/common":130}],137:[function(require,module,exports){ +},{"../utils/common":131}],138:[function(require,module,exports){ 'use strict'; @@ -58659,7 +59049,7 @@ module.exports=ZStream; -},{}],138:[function(require,module,exports){ +},{}],139:[function(require,module,exports){ module.exports=function parseCacheControl(field){ if(typeof field!=='string'){ @@ -58698,7 +59088,7 @@ return err?null:header; }; -},{}],139:[function(require,module,exports){ +},{}],140:[function(require,module,exports){ (function(process){ @@ -59004,7 +59394,7 @@ }).call(this,require('_process')); -},{"_process":141}],140:[function(require,module,exports){ +},{"_process":142}],141:[function(require,module,exports){ (function(process){ 'use strict'; @@ -59052,7 +59442,7 @@ }).call(this,require('_process')); -},{"_process":141}],141:[function(require,module,exports){ +},{"_process":142}],142:[function(require,module,exports){ var process=module.exports={}; @@ -59238,7 +59628,7 @@ }; process.umask=function(){return 0;}; -},{}],142:[function(require,module,exports){ +},{}],143:[function(require,module,exports){ @@ -59324,7 +59714,7 @@ return Object.prototype.toString.call(xs)==='[object Array]'; }; -},{}],143:[function(require,module,exports){ +},{}],144:[function(require,module,exports){ @@ -59411,16 +59801,16 @@ return res; }; -},{}],144:[function(require,module,exports){ +},{}],145:[function(require,module,exports){ 'use strict'; exports.decode=exports.parse=require('./decode'); exports.encode=exports.stringify=require('./encode'); -},{"./decode":142,"./encode":143}],145:[function(require,module,exports){ +},{"./decode":143,"./encode":144}],146:[function(require,module,exports){ module.exports=require('./lib/_stream_duplex.js'); -},{"./lib/_stream_duplex.js":146}],146:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":147}],147:[function(require,module,exports){ @@ -59552,7 +59942,7 @@ pna.nextTick(cb,err); }; -},{"./_stream_readable":148,"./_stream_writable":150,"core-util-is":102,"inherits":112,"process-nextick-args":140}],147:[function(require,module,exports){ +},{"./_stream_readable":149,"./_stream_writable":151,"core-util-is":103,"inherits":113,"process-nextick-args":141}],148:[function(require,module,exports){ @@ -59600,7 +59990,7 @@ PassThrough.prototype._transform=function(chunk,encoding,cb){ cb(null,chunk); }; -},{"./_stream_transform":149,"core-util-is":102,"inherits":112}],148:[function(require,module,exports){ +},{"./_stream_transform":150,"core-util-is":103,"inherits":113}],149:[function(require,module,exports){ (function(process,global){ @@ -60622,7 +61012,7 @@ return-1; } }).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{}); -},{"./_stream_duplex":146,"./internal/streams/BufferList":151,"./internal/streams/destroy":152,"./internal/streams/stream":153,"_process":141,"core-util-is":102,"events":107,"inherits":112,"isarray":120,"process-nextick-args":140,"safe-buffer":161,"string_decoder/":154,"util":97}],149:[function(require,module,exports){ +},{"./_stream_duplex":147,"./internal/streams/BufferList":152,"./internal/streams/destroy":153,"./internal/streams/stream":154,"_process":142,"core-util-is":103,"events":108,"inherits":113,"isarray":121,"process-nextick-args":141,"safe-buffer":162,"string_decoder/":155,"util":98}],150:[function(require,module,exports){ @@ -60837,7 +61227,7 @@ return stream.push(null); } -},{"./_stream_duplex":146,"core-util-is":102,"inherits":112}],150:[function(require,module,exports){ +},{"./_stream_duplex":147,"core-util-is":103,"inherits":113}],151:[function(require,module,exports){ (function(process,global,setImmediate){ @@ -61527,7 +61917,7 @@ cb(err); }; }).call(this,require('_process'),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("timers").setImmediate); -},{"./_stream_duplex":146,"./internal/streams/destroy":152,"./internal/streams/stream":153,"_process":141,"core-util-is":102,"inherits":112,"process-nextick-args":140,"safe-buffer":161,"timers":171,"util-deprecate":172}],151:[function(require,module,exports){ +},{"./_stream_duplex":147,"./internal/streams/destroy":153,"./internal/streams/stream":154,"_process":142,"core-util-is":103,"inherits":113,"process-nextick-args":141,"safe-buffer":162,"timers":172,"util-deprecate":173}],152:[function(require,module,exports){ 'use strict'; function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} @@ -61607,7 +61997,7 @@ return this.constructor.name+' '+obj; }; } -},{"safe-buffer":161,"util":97}],152:[function(require,module,exports){ +},{"safe-buffer":162,"util":98}],153:[function(require,module,exports){ 'use strict'; @@ -61682,10 +62072,10 @@ destroy:destroy, undestroy:undestroy}; -},{"process-nextick-args":140}],153:[function(require,module,exports){ +},{"process-nextick-args":141}],154:[function(require,module,exports){ module.exports=require('events').EventEmitter; -},{"events":107}],154:[function(require,module,exports){ +},{"events":108}],155:[function(require,module,exports){ @@ -61982,10 +62372,10 @@ function simpleEnd(buf){ return buf&&buf.length?this.write(buf):''; } -},{"safe-buffer":161}],155:[function(require,module,exports){ +},{"safe-buffer":162}],156:[function(require,module,exports){ module.exports=require('./readable').PassThrough; -},{"./readable":156}],156:[function(require,module,exports){ +},{"./readable":157}],157:[function(require,module,exports){ exports=module.exports=require('./lib/_stream_readable.js'); exports.Stream=exports; exports.Readable=exports; @@ -61994,13 +62384,13 @@ exports.Transform=require('./lib/_stream_transform.js'); exports.PassThrough=require('./lib/_stream_passthrough.js'); -},{"./lib/_stream_duplex.js":146,"./lib/_stream_passthrough.js":147,"./lib/_stream_readable.js":148,"./lib/_stream_transform.js":149,"./lib/_stream_writable.js":150}],157:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":147,"./lib/_stream_passthrough.js":148,"./lib/_stream_readable.js":149,"./lib/_stream_transform.js":150,"./lib/_stream_writable.js":151}],158:[function(require,module,exports){ module.exports=require('./readable').Transform; -},{"./readable":156}],158:[function(require,module,exports){ +},{"./readable":157}],159:[function(require,module,exports){ module.exports=require('./lib/_stream_writable.js'); -},{"./lib/_stream_writable.js":150}],159:[function(require,module,exports){ +},{"./lib/_stream_writable.js":151}],160:[function(require,module,exports){ var URL=require('url').URL; @@ -62423,13 +62813,13 @@ module.exports=Robots; -},{"url":"url"}],160:[function(require,module,exports){ +},{"url":"url"}],161:[function(require,module,exports){ var Robots=require('./Robots'); module.exports=function(url,contents){ return new Robots(url,contents); }; -},{"./Robots":159}],161:[function(require,module,exports){ +},{"./Robots":160}],162:[function(require,module,exports){ var buffer=require('buffer'); var Buffer=buffer.Buffer; @@ -62493,7 +62883,7 @@ return buffer.SlowBuffer(size); }; -},{"buffer":101}],162:[function(require,module,exports){ +},{"buffer":102}],163:[function(require,module,exports){ (function(process){ exports=module.exports=SemVer; @@ -63980,7 +64370,7 @@ } }).call(this,require('_process')); -},{"_process":141}],163:[function(require,module,exports){ +},{"_process":142}],164:[function(require,module,exports){ (function(Buffer){ 'use strict'; @@ -64222,7 +64612,7 @@ }).call(this,require("buffer").Buffer); -},{"buffer":101,"fs":100,"jpeg-js":121}],164:[function(require,module,exports){ +},{"buffer":102,"fs":101,"jpeg-js":122}],165:[function(require,module,exports){ 'use strict'; const frame=require('./frame'); @@ -64292,7 +64682,7 @@ }); }; -},{"./frame":163,"./speed-index":165}],165:[function(require,module,exports){ +},{"./frame":164,"./speed-index":166}],166:[function(require,module,exports){ 'use strict'; const imageSSIM=require('image-ssim'); @@ -64564,7 +64954,7 @@ calculateSpeedIndexes}; -},{"image-ssim":111}],166:[function(require,module,exports){ +},{"image-ssim":112}],167:[function(require,module,exports){ @@ -64693,17 +65083,20 @@ return dest; }; -},{"events":107,"inherits":112,"readable-stream/duplex.js":145,"readable-stream/passthrough.js":155,"readable-stream/readable.js":156,"readable-stream/transform.js":157,"readable-stream/writable.js":158}],167:[function(require,module,exports){ -module.exports=[{"name":"Google Analytics","company":"Google","homepage":"https://www.google.com/analytics/analytics/","categories":["analytics"],"domains":["www.google-analytics.com","ssl.google-analytics.com","google-analytics.com","urchin.com"]},{"name":"Facebook","homepage":"https://www.facebook.com","categories":["social"],"domains":["www.facebook.com","connect.facebook.net","staticxx.facebook.com","static.xx.fbcdn.net","m.facebook.com","atlassbx.com","fbcdn-photos-e-a.akamaihd.net","23.62.3.183","akamai.net","akamaiedge.net","akamaitechnologies.com","akamaitechnologies.fr","akamaized.net","edgefcs.net","edgekey.net","edgesuite.net","srip.net","cquotient.com","demandware.net","platform-lookaside.fbsbx.com"]},{"name":"Google CDN","company":"Google","homepage":"https://developers.google.com/speed/libraries/","categories":["library"],"domains":["ajax.googleapis.com","www.gstatic.com","commondatastorage.googleapis.com"]},{"name":"Google/Doubleclick Ads","company":"Google","homepage":"https://www.doubleclickbygoogle.com/","categories":["ad"],"domains":["pagead2.googlesyndication.com","tpc.googlesyndication.com","googleads.g.doubleclick.net","securepubads.g.doubleclick.net","cm.g.doubleclick.net","s0.2mdn.net","stats.g.doubleclick.net","survey.g.doubleclick.net","fls.doubleclick.net","ad.doubleclick.net","www.googleadservices.com","adservice.google.se","adservice.google.com","adservice.google.de","www.googletagservices.com"]},{"name":"Google Tag Manager","company":"Google","homepage":"https://marketingplatform.google.com/about/tag-manager/","categories":["tag-manager"],"domains":["www.googletagmanager.com"]},{"name":"Other Google APIs/SDKs","company":"Google","homepage":"https://developers.google.com/apis-explorer/#p/","categories":["utility"],"domains":["www.google.com","apis.google.com","cse.google.com","translate.googleapis.com","storage.googleapis.com","imasdk.googleapis.com","lh3.googleusercontent.com","calendar.google.com","pay.google.com","news.google.com","payments.google.com","clients2.google.com"]},{"name":"Twitter","homepage":"https://twitter.com","categories":["social"],"domains":["platform.twitter.com","cdn.syndication.twimg.com","twitpic.com","vine.co"]},{"name":"Yandex Metrica","company":"Yandex","homepage":"https://metrica.yandex.com/about?","categories":["analytics"],"domains":["mc.yandex.ru","d31j93rd8oukbv.cloudfront.net"]},{"name":"jQuery CDN","homepage":"https://code.jquery.com/","categories":["library"],"domains":["code.jquery.com"]},{"name":"AddThis","homepage":"http://www.addthis.com/","categories":["social"],"domains":["s7.addthis.com","addthiscdn.com","addthisedge.com","r.dlx.addthis.com","su.addthis.com","x.dlx.addthis.com"]},{"name":"Google Maps","company":"Google","homepage":"https://www.google.com/maps","categories":["utility"],"domains":["maps-api-ssl.google.com","maps.google.com","maps.gstatic.com","maps.googleapis.com","mts.googleapis.com"]},{"name":"Hotjar","homepage":"https://www.hotjar.com/","categories":["analytics"],"domains":["script.hotjar.com","static.hotjar.com","in.hotjar.com","vc.hotjar.io","vars.hotjar.com"]},{"name":"Cloudflare CDN","homepage":"https://cdnjs.com/","categories":["library"],"domains":["cdnjs.cloudflare.com","amp.cloudflare.com"]},{"name":"WordPress","company":"Automattic","homepage":"https://wp.com/","categories":["hosting"],"domains":["s0.wp.com","s2.wp.com","s.w.org","wordpress.com","stats.wp.com"]},{"name":"Shopify","homepage":"https://www.shopify.com/","categories":["hosting"],"domains":["cdn.shopify.com","productreviews.shopifycdn.com","shopifyapps.com"]},{"name":"Criteo","homepage":"https://www.criteo.com/","categories":["ad"],"domains":["static.criteo.net","bidder.criteo.com","emailretargeting.com"]},{"name":"ZenDesk","homepage":"https://zendesk.com/","categories":["customer-success"],"domains":["assets.zendesk.com","static.zdassets.com","v2.zopim.com"]},{"name":"Tawk.to","homepage":"https://www.tawk.to/","categories":["customer-success"],"domains":["embed.tawk.to"]},{"name":"AMP","homepage":"https://www.ampproject.org/","categories":["content"],"domains":["cdn.ampproject.org"]},{"name":"Wix","homepage":"https://www.wix.com/","categories":["hosting"],"domains":["static.parastorage.com","static.wixstatic.com","www.wix.com"]},{"name":"Squarespace","homepage":"https://www.squarespace.com/","categories":["hosting"],"domains":["static.squarespace.com","static1.squarespace.com"]},{"name":"YouTube","homepage":"https://youtube.com","categories":["video"],"domains":["www.youtube.com","s.ytimg.com","yt3.ggpht.com","youtube-nocookie.com"]},{"name":"Jivochat","homepage":"https://www.jivochat.com/","categories":["customer-success"],"domains":["cdn-ca.jivosite.com","code.jivosite.com"]},{"name":"Amazon Web Services","homepage":"https://aws.amazon.com/s3/","categories":["other"],"domains":["s3.amazonaws.com","amazonwebservices.com","api-cdn.amazon.com","ecx.images-amazon.com","elasticbeanstalk.com","amazonwebapps.com","ws.amazon.co.uk","payments-amazon.com"]},{"name":"Adobe Tag Manager","company":"Adobe","homepage":"https://www.adobe.com/experience-platform/","categories":["tag-manager"],"domains":["assets.adobedtm.com","dpm.demdex.net","sync-tm.everesttech.net"]},{"name":"PIXNET","homepage":"https://www.pixnet.net/","categories":["social"],"domains":["front.pixfs.net","falcon-asset.pixfs.net","pixgame-asset.pixfs.net"]},{"name":"JSDelivr CDN","homepage":"https://www.jsdelivr.com/","categories":["library"],"domains":["cdn.jsdelivr.net"]},{"name":"Yandex Ads","company":"Yandex","homepage":"https://yandex.com/adv/","categories":["ad"],"domains":["an.yandex.ru"]},{"name":"Yandex Share","company":"Yandex","homepage":"https://yastatic.net/share2/share.js","categories":["social"],"domains":["yastatic.net"]},{"name":"Yandex APIs","company":"Yandex","homepage":"https://yandex.ru/","categories":["utility"],"domains":["api-maps.yandex.ru","money.yandex.ru"]},{"name":"Salesforce","homepage":"https://www.salesforce.com/products/marketing-cloud/","categories":["analytics"],"domains":["cdn.krxd.net","beacon.krxd.net","consumer.krxd.net","usermatch.krxd.net"]},{"name":"Sumo","homepage":"https://sumo.com/","categories":["marketing"],"domains":["sumo.b-cdn.net","load.sumo.com","load.sumome.com"]},{"name":"Beeketing","homepage":"https://beeketing.com/","categories":["marketing"],"domains":["sdk-cdn.beeketing.com","sdk.beeketing.com"]},{"name":"FontAwesome CDN","homepage":"https://fontawesome.com/","categories":["library"],"domains":["use.fontawesome.com"]},{"name":"ShareThis","homepage":"https://www.sharethis.com/","categories":["social"],"domains":["w.sharethis.com","ws.sharethis.com","t.sharethis.com"]},{"name":"Hatena Blog","homepage":"https://hatenablog.com/","categories":["hosting"],"domains":["cdn.blog.st-hatena.com","cdn.pool.st-hatena.com","cdn7.www.st-hatena.com","s.hatena.ne.jp","b.st-hatena.com"]},{"name":"Mailchimp","homepage":"https://mailchimp.com/","categories":["marketing"],"domains":["downloads.mailchimp.com","chimpstatic.com","list-manage.com"]},{"name":"Amazon Ads","homepage":"https://ad.amazon.com/","categories":["ad"],"domains":["s.amazon-adsystem.com","c.amazon-adsystem.com","aax.amazon-adsystem.com","z-na.amazon-adsystem.com"]},{"name":"Sentry","homepage":"https://sentry.io/","categories":["utility"],"domains":["cdn.ravenjs.com","browser.sentry-cdn.com","getsentry.com"]},{"name":"Pinterest","homepage":"https://pinterest.com/","categories":["social"],"domains":["assets.pinterest.com","pinimg.com","ct.pinterest.com"]},{"name":"Hubspot","homepage":"https://hubspot.com/","categories":["marketing"],"domains":["forms.hubspot.com","js.hsforms.net","js.hs-analytics.net","hscollectedforms.net","hscta.net","hsleadflows.net","js.leadin.com","hs-scripts.com","hsstatic.net","hubspot.net"]},{"name":"LinkedIn","homepage":"https://www.linkedin.com/","categories":["social"],"domains":["platform.linkedin.com","bizographics.com","slideshare.com","slidesharecdn.com"]},{"name":"Taboola","homepage":"https://www.taboola.com/","categories":["ad"],"domains":["cdn.taboola.com","trc.taboola.com","vidstat.taboola.com","taboolasyndication.com"]},{"name":"Intercom","homepage":"https://www.intercom.com/","categories":["customer-success"],"domains":["js.intercomcdn.com"]},{"name":"Histats","homepage":"http://histats.com/","categories":["analytics"],"domains":["s10.histats.com"]},{"name":"Optimizely","homepage":"https://www.optimizely.com/","categories":["analytics"],"domains":["cdn.optimizely.com","cdn-pci.optimizely.com","logx.optimizely.com","cdn3.optimizely.com"]},{"name":"Moat","homepage":"https://moat.com/","categories":["ad"],"domains":["z.moatads.com","moatpixel.com","px.moatads.com","geo.moatads.com","sejs.moatads.com","mb.moatads.com","v4.moatads.com"]},{"name":"Tealium","homepage":"https://tealium.com/","categories":["tag-manager"],"domains":["tags.tiqcdn.com","tealium.hs.llnwd.net","aniview.com","delvenetworks.com","link.videoplatform.limelight.com"]},{"name":"Distil Networks","homepage":"https://www.distilnetworks.com/","categories":["utility"],"domains":["n-cdn.areyouahuman.com"]},{"name":"Scorecard Research","homepage":"https://www.scorecardresearch.com/","categories":["ad"],"domains":["sb.scorecardresearch.com"]},{"name":"Blogger","homepage":"http://www.blogger.com/","categories":["hosting"],"domains":["1.bp.blogspot.com","www.blogger.com","images-blogger-opensocial.googleusercontent.com"]},{"name":"Wistia","homepage":"https://wistia.com/","categories":["video"],"domains":["fast.wistia.com","fast.wistia.net"]},{"name":"LiveChat","homepage":"https://www.livechatinc.com/","categories":["customer-success"],"domains":["cdn.livechatinc.com","secure.livechatinc.com"]},{"name":"Adobe TypeKit","company":"Adobe","homepage":"https://fonts.adobe.com/","categories":["library"],"domains":["use.typekit.net","typekit.com","p.typekit.net"]},{"name":"Shareaholic","homepage":"https://www.shareaholic.com/","categories":["social"],"domains":["dsms0mj1bbhn4.cloudfront.net","shareaholic.com"]},{"name":"OneSignal","homepage":"https://onesignal.com/","categories":["utility"],"domains":["cdn.onesignal.com"]},{"name":"Cookiebot","homepage":"https://www.cookiebot.com/","categories":["utility"],"domains":["consent.cookiebot.com"]},{"name":"Tumblr","homepage":"https://tumblr.com/","categories":["social"],"domains":["assets.tumblr.com","static.tumblr.com"]},{"name":"Cloudflare","homepage":"https://www.cloudflare.com/website-optimization/","categories":["utility"],"domains":["ajax.cloudflare.com"]},{"name":"Integral Ad Science","homepage":"https://integralads.com/uk/","categories":["ad"],"domains":["pixel.adsafeprotected.com","static.adsafeprotected.com","fw.adsafeprotected.com","cdn.adsafeprotected.com","dt.adsafeprotected.com","iasds01.com"]},{"name":"PayPal","homepage":"https://paypal.com","categories":["utility"],"domains":["www.paypalobjects.com","paypal.com"]},{"name":"Segment","homepage":"https://segment.com/","categories":["analytics"],"domains":["cdn.segment.com","api.segment.io"]},{"name":"Baidu Analytics","homepage":"https://tongji.baidu.com/web/welcome/login","categories":["analytics"],"domains":["hm.baidu.com"]},{"name":"Dealer","homepage":"https://www.dealer.com/","categories":["hosting"],"domains":["static.dealer.com"]},{"name":"Olark","homepage":"https://www.olark.com/","categories":["customer-success"],"domains":["static.olark.com"]},{"name":"VK","homepage":"https://vk.com/","categories":["social"],"domains":["vk.com"]},{"name":"OpenX","homepage":"https://www.openx.com/","categories":["ad"],"domains":["uk-ads.openx.net","us-ads.openx.net","33across-d.openx.net","rtb.openx.net","us-u.openx.net","eu-u.openx.net","u.openx.net","deliverimp.com","jump-time.net","openxadexchange.com","servedbyopenx.com"]},{"name":"Lucky Orange","homepage":"https://www.luckyorange.com/","categories":["analytics"],"domains":["d10lpsik1i8c69.cloudfront.net","luckyorange.com","luckyorange.net"]},{"name":"OptinMonster","homepage":"https://optinmonster.com/","categories":["marketing"],"domains":["a.optmstr.com","api.opmnstr.com","a.optmnstr.com"]},{"name":"Snapchat","homepage":"https://www.snapchat.com","categories":["analytics"],"domains":["tr.snapchat.com","sc-static.net"]},{"name":"33 Across","homepage":"https://33across.com/","categories":["ad"],"domains":["sic.33across.com","cdn-sic.33across.com"]},{"name":"Ensighten","homepage":"https://www.ensighten.com/","categories":["tag-manager"],"domains":["nexus.ensighten.com"]},{"name":"WordAds","company":"Automattic","homepage":"https://wordads.co/","categories":["ad"],"domains":["s.pubmine.com"]},{"name":"Snowplow","homepage":"https://snowplowanalytics.com/","categories":["analytics"],"domains":["d32hwlnfiv2gyn.cloudfront.net"]},{"name":"Brightcove","homepage":"https://www.brightcove.com/en/","categories":["video"],"domains":["vjs.zencdn.net","players.brightcove.net","brightcove.com"]},{"name":"Drift","homepage":"https://www.drift.com/","categories":["marketing"],"domains":["js.driftt.com","api.drift.com"]},{"name":"Microsoft Hosted Libs","company":"Microsoft","categories":["library"],"domains":["ajax.aspnetcdn.com"]},{"name":"Stripe","homepage":"https://stripe.com","categories":["utility"],"domains":["m.stripe.network","js.stripe.com","stripecdn.com"]},{"name":"Parking Crew","homepage":"http://parkingcrew.net/","categories":["other"],"domains":["d1lxhc4jvstzrp.cloudfront.net","parkingcrew.net"]},{"name":"Popads","homepage":"https://www.popads.net/","categories":["ad"],"domains":["serve.popads.net","c1.popads.net"]},{"name":"DigiTrust","homepage":"http://www.digitru.st/","categories":["analytics"],"domains":["cdn.digitru.st"]},{"name":"Mixpanel","homepage":"https://mixpanel.com/","categories":["analytics"],"domains":["cdn.mxpnl.com","mixpanel.com"]},{"name":"MediaVine","homepage":"https://www.mediavine.com/","categories":["ad"],"domains":["scripts.mediavine.com","video.mediavine.com"]},{"name":"FullStory","categories":["analytics"],"domains":["fullstory.com","rs.fullstory.com"]},{"name":"Sizmek","homepage":"https://www.sizmek.com/","categories":["ad"],"domains":["secure-ds.serving-sys.com","ds.serving-sys.com","peer39.net","bs.serving-sys.com"]},{"name":"CDK Dealer Management","company":"CDK Global","homepage":"https://www.cdkglobal.com/us","categories":["hosting"],"domains":["media-cf.assets-cdk.com"]},{"name":"Quantcast","homepage":"https://www.quantcast.com","categories":["analytics"],"domains":["pixel.quantserve.com","secure.quantserve.com","rules.quantcount.com","brtstats.com","ntv.io","semantictec.com"]},{"name":"Pubmatic","homepage":"https://pubmatic.com/","categories":["ad"],"domains":["image6.pubmatic.com","ads.pubmatic.com","image2.pubmatic.com","simage2.pubmatic.com","image4.pubmatic.com","simage4.pubmatic.com"]},{"name":"RD Station","homepage":"https://www.rdstation.com/en/","categories":["marketing"],"domains":["d335luupugsy2.cloudfront.net"]},{"name":"MGID","homepage":"https://www.mgid.com/","categories":["ad"],"domains":["servicer.mgid.com","dt07.net"]},{"name":"Media.net","homepage":"https://www.media.net/","categories":["ad"],"domains":["contextual.media.net","mnet-ad.net"]},{"name":"New Relic","homepage":"https://newrelic.com/","categories":["utility"],"domains":["js-agent.newrelic.com","bam.nr-data.net"]},{"name":"Rubicon Project","homepage":"https://rubiconproject.com/","categories":["ad"],"domains":["pixel.rubiconproject.com","fastlane.rubiconproject.com","secure-assets.rubiconproject.com","eus.rubiconproject.com","pixel-us-east.rubiconproject.com","token.rubiconproject.com","ads.rubiconproject.com","chango.com","fimserve.com"]},{"name":"VWO","homepage":"https://vwo.com","categories":["analytics"],"domains":["dev.visualwebsiteoptimizer.com"]},{"name":"Keen","company":"Keen","homepage":"https://keen.io/","categories":["analytics"],"domains":["d26b395fwzu5fz.cloudfront.net","keen.io"]},{"name":"Adroll","homepage":"https://www.adroll.com/","categories":["ad"],"domains":["d.adroll.com","s.adroll.com"]},{"name":"Unpkg","homepage":"https://unpkg.com","categories":["library"],"domains":["unpkg.com"]},{"name":"Parse.ly","categories":["analytics"],"domains":["d1z2jf7jlzjs58.cloudfront.net","parsely.com"]},{"name":"Searchanise","categories":["analytics"],"domains":["www.searchanise.com"]},{"name":"AppNexus","homepage":"https://www.appnexus.com/","categories":["ad"],"domains":["acdn.adnxs.com","secure.adnxs.com","ctasnet.com","ib.adnxs.com"]},{"name":"uLogin","categories":["other"],"domains":["ulogin.ru"]},{"name":"fam","company":"Fing Co Ltd.","homepage":"http://admin.fam-ad.com/report/","categories":["ad"],"domains":["fam-ad.com","img.fam-ad.com"]},{"name":"Yandex CDN","company":"Yandex","homepage":"https://yandex.ru/","categories":["library"],"domains":["yandex.st"]},{"name":"Albacross","homepage":"https://albacross.com/","categories":["marketing"],"domains":["serve.albacross.com"]},{"name":"CreateJS CDN","homepage":"http://code.createjs.com/","categories":["library"],"domains":["code.createjs.com"]},{"name":"Help Scout","homepage":"https://www.helpscout.net/","categories":["customer-success"],"domains":["djtflbt20bdde.cloudfront.net","beacon-v2.helpscout.net"]},{"name":"AppDynamics","homepage":"https://www.appdynamics.com/","categories":["utility"],"domains":["cdn.appdynamics.com","d3tjaysgumg9lf.cloudfront.net","eum-appdynamics.com"]},{"name":"Siteimprove","categories":["utility"],"domains":["siteimprove.com","siteimproveanalytics.com"]},{"name":"DoubleVerify","homepage":"https://www.doubleverify.com/","categories":["ad"],"domains":["cdn.doubleverify.com","rtb0.doubleverify.com","rtbcdn.doubleverify.com","dvtps.com","tm.iqfp1.com"]},{"name":"AOL / Oath / Verizon Media","homepage":"https://www.oath.com/","categories":["ad"],"domains":["pixel.advertising.com","dtm.advertising.com","tag.sp.advertising.com","service.sp.advertising.com","adtech.advertising.com","aol.co.uk","aol.com","aolcdn.com","blogsmithmedia.com","mighty.aol.net","tacoda.net","consent.cmp.oath.com"]},{"name":"Alexa","homepage":"https://www.alexa.com/","categories":["analytics"],"domains":["d31qbv1cthcecs.cloudfront.net"]},{"name":"SessionCam","company":"ServiceTick","categories":["analytics"],"domains":["d2oh4tlt9mrke9.cloudfront.net","sessioncam.com"]},{"name":"Foursixty","categories":["customer-success"],"domains":["foursixty.com"]},{"name":"Listrak","homepage":"https://www.listrak.com/","categories":["marketing"],"domains":["cdn.listrakbi.com","s1.listrakbi.com","listrak.com"]},{"name":"mPulse","homepage":"https://developer.akamai.com/akamai-mpulse","categories":["analytics"],"domains":["c.go-mpulse.net","0211c83c.akstat.io","mpstat.us","mpulse.net"]},{"name":"Opentag","company":"Qubit","categories":["tag-manager"],"domains":["d3c3cq33003psk.cloudfront.net","opentag-stats.qutics.com"]},{"name":"Market GID","homepage":"https://www.marketgid.com/","categories":["ad"],"domains":["jsc.marketgid.com"]},{"name":"Freshdesk","homepage":"https://freshdesk.com/","categories":["customer-success"],"domains":["d36mpcpuzc4ztk.cloudfront.net"]},{"name":"IBM Digital Analytics","company":"IBM","categories":["analytics"],"domains":["cmcore.com","coremetrics.com","data.coremetrics.com","data.coremetrics.eu","data.de.coremetrics.com","iocdn.coremetrics.com","libs.coremetrics.com","libs.de.coremetrics.com","s81c.com","tmscdn.coremetrics.com","tmscdn.de.coremetrics.com","unica.com"]},{"name":"Usabilla","homepage":"https://usabilla.com","categories":["analytics"],"domains":["w.usabilla.com","d6tizftlrpuof.cloudfront.net"]},{"name":"Bugsnag","categories":["utility"],"domains":["d2wy8f7a9ursnm.cloudfront.net","notify.bugsnag.com"]},{"name":"AddShoppers","categories":["social"],"domains":["addshoppers.com","d3rr3d0n31t48m.cloudfront.net","shop.pe"]},{"name":"Po.st","company":"RadiumOne","categories":["utility"],"domains":["po.st"]},{"name":"Disqus","homepage":"http://disqus.com/","categories":["social"],"domains":["c.disquscdn.com","disqus.com"]},{"name":"PhotoBucket","categories":["content"],"domains":["photobucket.com"]},{"name":"GitHub","categories":["utility"],"domains":["cdn.rawgit.com"]},{"name":"Bootstrap CDN","homepage":"https://www.bootstrapcdn.com/","categories":["library"],"domains":["maxcdn.bootstrapcdn.com","stackpath.bootstrapcdn.com"]},{"name":"Radar","company":"Cedexis","homepage":"https://www.cedexis.com/radar/","categories":["analytics"],"domains":["radar.cedexis.com","rpt.cedexis.com","2-01-49cd-0002.cdx.cedexis.net","a-cedexis.msedge.net","bench.cedexis-test.com","cedexis-radar.net","cedexis-test01.insnw.net","cedexis.leasewebcdn.com","cedexisakamaitest.azureedge.net","cedexispub.cdnetworks.net","cs600.wac.alphacdn.net","cs600.wpc.edgecastdns.net","global2.cmdolb.com","img-cedexis.mncdn.com","zn3vgszfh.fastestcdn.net","edgecastcdn.net"]},{"name":"SnapWidget","categories":["content"],"domains":["snapwidget.com"]},{"name":"Media Math","homepage":"http://www.mediamath.com/","categories":["ad"],"domains":["mathid.mathtag.com","mathads.com","sync.mathtag.com","pixel.mathtag.com"]},{"name":"ClickDesk","categories":["customer-success"],"domains":["clickdesk.com","d1gwclp1pmzk26.cloudfront.net"]},{"name":"Google Plus","company":"Google","categories":["social"],"domains":["plus.google.com"]},{"name":"LinkedIn Ads","categories":["ad"],"domains":["ads.linkedin.com","snap.licdn.com","www.linkedin.com"]},{"name":"Madison Logic","categories":["marketing"],"domains":["ml314.com"]},{"name":"Smarter Click","categories":["ad"],"domains":["smarterclick.co.uk","smct.co"]},{"name":"Bing Ads","homepage":"https://bingads.microsoft.com","categories":["ad"],"domains":["bat.bing.com","c.bing.com","bat.r.msn.com","ajax.microsoft.com","msads.net","msecnd.net","s-msft.com","s-msn.com","windows.net"]},{"name":"Fresh Relevance","categories":["analytics"],"domains":["d1y9qtn9cuc3xw.cloudfront.ne","d1y9qtn9cuc3xw.cloudfront.net","d81mfvml8p5ml.cloudfront.net","dkpklk99llpj0.cloudfront.net","freshrelevance.com"]},{"name":"Browsealoud","homepage":"https://www.texthelp.com/en-gb/products/browsealoud/","categories":["other"],"domains":["www.browsealoud.com","texthelp.com"]},{"name":"Qubit Deliver","company":"Qubit","categories":["analytics"],"domains":["d1m54pdnjzjnhe.cloudfront.net","d22rutvoghj3db.cloudfront.net","dd6zx4ibq538k.cloudfront.net"]},{"name":"Crazy Egg","homepage":"https://www.crazyegg.com/","categories":["analytics"],"domains":["dnn506yrbagrg.cloudfront.net","cetrk.com","crazyegg.com","hellobar.com"]},{"name":"Vox Media","homepage":"https://www.voxmedia.com/","categories":["content"],"domains":["cdn.vox-cdn.com","voxmedia.com"]},{"name":"SaleCycle","categories":["ad"],"domains":["d16fk4ms6rqz1v.cloudfront.net","d22j4fzzszoii2.cloudfront.net","d30ke5tqu2tkyx.cloudfront.net","salecycle.com"]},{"name":"Sidecar","categories":["other"],"domains":["d3v27wwd40f0xu.cloudfront.net","getsidecar.com"]},{"name":"Concert","homepage":"https://concert.io/","categories":["ad"],"domains":["cdn.concert.io"]},{"name":"Kaizen Platform","categories":["analytics"],"domains":["cdn.kaizenplatform.net","log-v4.kaizenplatform.net"]},{"name":"unpkg","categories":["utility"],"domains":["npmcdn.com"]},{"name":"Edge Web Fonts","company":"Adobe Systems","categories":["library"],"domains":["use.edgefonts.net"]},{"name":"The Trade Desk","homepage":"https://www.thetradedesk.com/","categories":["ad"],"domains":["js.adsrvr.org","match.adsrvr.org","d1eoo1tco6rr5e.cloudfront.net","snap.adsrvr.org"]},{"name":"Ipify","homepage":"https://www.ipify.org","categories":["utility"],"domains":["api.ipify.org","geo.ipify.org"]},{"name":"Permutive","categories":["ad"],"domains":["d3alqb8vzo7fun.cloudfront.net","permutive.com"]},{"name":"Pingdom RUM","homepage":"https://www.pingdom.com/product/performance-monitoring/","categories":["analytics"],"domains":["rum-static.pingdom.net","rum-collector-2.pingdom.net"]},{"name":"Clicktripz","categories":["content"],"domains":["static.clicktripz.com","www.clicktripz.com"]},{"name":"Talkable","categories":["ad"],"domains":["d2jjzw81hqbuqv.cloudfront.net","www.talkable.com"]},{"name":"GoSquared","homepage":"https://www.gosquared.com","categories":["analytics"],"domains":["data.gosquared.com","d1l6p2sc9645hc.cloudfront.net","data2.gosquared.com"]},{"name":"Republer","categories":["ad"],"domains":["sync.republer.com"]},{"name":"TrackJS","categories":["analytics"],"domains":["d2zah9y47r7bi2.cloudfront.net","usage.trackjs.com"]},{"name":"Vimeo","homepage":"http://vimeo.com/","categories":["video"],"domains":["f.vimeocdn.com","player.vimeo.com"]},{"name":"Yieldify","categories":["ad"],"domains":["d33wq5gej88ld6.cloudfront.net","dwmvwp56lzq5t.cloudfront.net","geo.yieldifylabs.com","yieldify.com"]},{"name":"DialogTech SourceTrak","company":"DialogTech","categories":["ad"],"domains":["d31y97ze264gaa.cloudfront.net"]},{"name":"Twitter Online Conversion Tracking","company":"Twitter","categories":["ad"],"domains":["static.ads-twitter.com","analytics.twitter.com"]},{"name":"CleverTap","categories":["analytics"],"domains":["d2r1yp2w7bby2u.cloudfront.net"]},{"name":"Omniconvert","categories":["analytics"],"domains":["d2tgfbvjf3q6hn.cloudfront.net","d3vbj265bmdenw.cloudfront.net","omniconvert.com"]},{"name":"Underdog Media","categories":["ad"],"domains":["udmserve.net","underdog.media"]},{"name":"[24]7","categories":["customer-success"],"domains":["247-inc.net","247inc.net","d1af033869koo7.cloudfront.net"]},{"name":"Reflektion","categories":["analytics"],"domains":["d26opx5dl8t69i.cloudfront.net","reflektion.com"]},{"name":"Auto Link Maker","company":"Apple","categories":["ad"],"domains":["autolinkmaker.itunes.apple.com"]},{"name":"Friendbuy","categories":["ad"],"domains":["djnf6e5yyirys.cloudfront.net","friendbuy.com"]},{"name":"Opinion Stage","categories":["analytics"],"domains":["www.opinionstage.com"]},{"name":"LongTail Ad Solutions","categories":["ad"],"domains":["jwpcdn.com","jwplatform.com","jwplayer.com","jwpltx.com","jwpsrv.com","longtailvideo.com"]},{"name":"Marketo","homepage":"https://www.marketo.com","categories":["analytics"],"domains":["munchkin.marketo.net","marketo.com","mktoresp.com"]},{"name":"Sourcepoint","categories":["ad"],"domains":["d2lv4zbk7v5f93.cloudfront.net","d3qxwzhswv93jk.cloudfront.net","www.decenthat.com","www.fallingfalcon.com"]},{"name":"Net Reviews","categories":["analytics"],"domains":["www.avis-verifies.com"]},{"name":"Tag Inspector","company":"InfoTrust","categories":["analytics"],"domains":["d22xmn10vbouk4.cloudfront.net"]},{"name":"Polldaddy","company":"Automattic","categories":["analytics"],"domains":["polldaddy.com"]},{"name":"Freespee","categories":["customer-success"],"domains":["analytics.freespee.com"]},{"name":"KISSmetrics","categories":["analytics"],"domains":["doug1izaerwt3.cloudfront.net","dsyszv14g9ymi.cloudfront.net","kissmetrics.com"]},{"name":"Adthink","company":"Adthink Media","categories":["ad"],"domains":["d.adxcore.com","dcoengine.com"]},{"name":"Extole","categories":["ad"],"domains":["extole.com","origin.extole.io"]},{"name":"AnswerDash","categories":["customer-success"],"domains":["p1.answerdash.com"]},{"name":"Cookie-Script.com","categories":["utility"],"domains":["cookie-script.com"]},{"name":"Fastly Insights","homepage":"https://insights.fastlylabs.com","categories":["analytics"],"domains":["www.fastly-insights.com"]},{"name":"Amplitude Mobile Analytics","company":"Amplitude","categories":["analytics"],"domains":["amplitude.com","d24n15hnbwhuhn.cloudfront.net"]},{"name":"MLveda","categories":["utility"],"domains":["www.mlveda.com"]},{"name":"CNET Content Solutions","company":"CBS Interactive","categories":["content"],"domains":["cdn.cnetcontent.com","cnetcontent.com","ws.cnetcontent.com"]},{"name":"Browser-Update.org","categories":["other"],"domains":["browser-update.org"]},{"name":"Triblio","categories":["marketing"],"domains":["tribl.io"]},{"name":"Fonecall","categories":["analytics"],"domains":["web-call-analytics.com"]},{"name":"LoyaltyLion","categories":["ad"],"domains":["dg1f2pfrgjxdq.cloudfront.net","loyaltylion.com"]},{"name":"StatCounter","categories":["analytics"],"domains":["statcounter.com"]},{"name":"Curalate","categories":["marketing"],"domains":["curalate.com","d116tqlcqfmz3v.cloudfront.net"]},{"name":"piano","categories":["ad"],"domains":["tinypass.com","www.npttech.com"]},{"name":"UpSellit","categories":["analytics"],"domains":["www.upsellit.com"]},{"name":"Soundest","categories":["ad"],"domains":["soundest.net","soundestlink.com"]},{"name":"Micropat","categories":["social"],"domains":["addtoany.com"]},{"name":"Weebly","homepage":"https://www.weebly.com/","categories":["hosting"],"domains":["editmysite.com"]},{"name":"Tynt","company":"33 Across","categories":["ad"],"domains":["tynt.com"]},{"name":"Datacamp","categories":["utility"],"domains":["cdn77.org"]},{"name":"Treasure Data","categories":["analytics"],"domains":["treasuredata.com"]},{"name":"Nielsen NetRatings SiteCensus","company":"The Nielsen Company","homepage":"http://www.nielsen-online.com/intlpage.html","categories":["analytics"],"domains":["imrworldwide.com"]},{"name":"iubenda","categories":["utility"],"domains":["www.iubenda.com"]},{"name":"Yotpo","homepage":"https://www.yotpo.com/","categories":["marketing"],"domains":["yotpo.com"]},{"name":"Privy","categories":["ad"],"domains":["privy.com","privymktg.com"]},{"name":"VigLink","categories":["ad"],"domains":["viglink.com"]},{"name":"Kakao","categories":["social"],"domains":["daum.net","daumcdn.net"]},{"name":"Chartbeat","categories":["analytics"],"domains":["chartbeat.com","chartbeat.net"]},{"name":"Klaviyo","categories":["ad"],"domains":["klaviyo.com"]},{"name":"BrightTag / Signal","company":"Signal","homepage":"https://www.signal.co","categories":["tag-manager"],"domains":["btstatic.com","thebrighttag.com"]},{"name":"fluct","categories":["ad"],"domains":["adingo.jp"]},{"name":"AudienceSearch","company":"Intimate Merger","categories":["ad"],"domains":["im-apps.net"]},{"name":"Inspectlet","categories":["analytics"],"domains":["inspectlet.com"]},{"name":"Skimbit","categories":["ad"],"domains":["redirectingat.com","skimresources.com","skimresources.net"]},{"name":"DTSCOUT","categories":["ad"],"domains":["dtscout.com"]},{"name":"Rambler","company":"Rambler & Co","categories":["utility"],"domains":["rambler.ru"]},{"name":"Bigcommerce","categories":["marketing"],"domains":["bigcommerce.com"]},{"name":"Tidio Live Chat","company":"Tidio","homepage":"https://www.tidiochat.com/en/","categories":["customer-success"],"domains":["tidiochat.com"]},{"name":"CallRail","categories":["analytics"],"domains":["callrail.com"]},{"name":"Teads","categories":["ad"],"domains":["teads.tv"]},{"name":"Instagram","homepage":"https://www.instagram.com","categories":["social"],"domains":["scontent.cdninstagram.com","instagram.com"]},{"name":"Fastly","categories":["utility"],"domains":["fastly.net"]},{"name":"MailMunch","categories":["ad"],"domains":["mailmunch.co"]},{"name":"LivePerson","categories":["customer-success"],"homepage":"https://www.liveperson.com/","domains":["liveperson.com","liveperson.net","look.io","lpsnmedia.net"]},{"name":"Monotype","categories":["library"],"domains":["fonts.com","fonts.net"]},{"name":"Outbrain","homepage":"https://www.outbrain.com/","categories":["ad"],"domains":["outbrain.com","visualrevenue.com"]},{"name":"Pure Chat","categories":["customer-success"],"domains":["purechat.com"]},{"name":"LiveJournal","categories":["social"],"domains":["livejournal.com","livejournal.net"]},{"name":"PushCrew","categories":["ad"],"domains":["pushcrew.com"]},{"name":"Index Exchange","company":"WPP","categories":["ad"],"domains":["casalemedia.com","indexww.com"]},{"name":"StickyADS.tv","categories":["ad"],"domains":["stickyadstv.com"]},{"name":"GumGum","categories":["ad"],"domains":["gumgum.com"]},{"name":"AB Tasty","categories":["analytics"],"domains":["abtasty.com","d1447tq2m68ekg.cloudfront.net"]},{"name":"Trust Pilot","categories":["analytics"],"domains":["trustpilot.com"]},{"name":"Embedly","categories":["content"],"domains":["embed.ly","embedly.com"]},{"name":"Adform","categories":["ad"],"domains":["adform.net","adformdsp.net"]},{"name":"sovrn","categories":["ad"],"domains":["lijit.com"]},{"name":"iPerceptions","categories":["customer-success"],"domains":["iperceptions.com"]},{"name":"Cxense","categories":["ad"],"domains":["cxense.com","cxpublic.com","emediate.dk","emediate.eu"]},{"name":"Bold Commerce","categories":["utility"],"domains":["boldapps.net","shappify-cdn.com","shappify.com"]},{"name":"Marchex","categories":["analytics"],"domains":["marchex.io","voicestar.com"]},{"name":"BlueKai","company":"Oracle","categories":["ad"],"domains":["bkrtx.com","bluekai.com"]},{"name":"PubNation","categories":["ad"],"domains":["pubnation.com"]},{"name":"Infolinks","categories":["ad"],"domains":["infolinks.com"]},{"name":"Ezoic","categories":["analytics"],"domains":["ezoic.net"]},{"name":"Sharethrough","categories":["ad"],"domains":["sharethrough.com"]},{"name":"Ve","company":"Ve Interactive","categories":["marketing"],"domains":["veinteractive.com"]},{"name":"Roxr Software","categories":["analytics"],"domains":["getclicky.com"]},{"name":"LiveTex","categories":["customer-success"],"domains":["livetex.ru"]},{"name":"Crowd Control","company":"Lotame","categories":["ad"],"domains":["crwdcntrl.net"]},{"name":"Digital ad Consortium","categories":["ad"],"domains":["impact-ad.jp"]},{"name":"GetSiteControl","company":"GetWebCraft","categories":["utility"],"domains":["getsitecontrol.com"]},{"name":"Mapbox","categories":["utility"],"domains":["mapbox.com"]},{"name":"Adloox","categories":["ad"],"domains":["adlooxtracking.com"]},{"name":"Nosto","categories":["analytics"],"domains":["nosto.com"]},{"name":"Gigya","categories":["analytics"],"domains":["gigya.com"]},{"name":"Heap","categories":["analytics"],"domains":["heapanalytics.com"]},{"name":"ExoClick","categories":["ad"],"domains":["exoclick.com"]},{"name":"OpenTable","company":"Priceline Group","categories":["content"],"domains":["opentable.co.uk","opentable.com","www.toptable.co.uk"]},{"name":"iBillboard","categories":["ad"],"domains":["ibillboard.com"]},{"name":"Microad","categories":["ad"],"domains":["microad.jp"]},{"name":"Rakuten Marketing","company":"Rakuten","categories":["ad"],"domains":["rakuten-static.com","rmtag.com"]},{"name":"JuicyAds","categories":["ad"],"domains":["juicyads.com"]},{"name":"Mouseflow","categories":["analytics"],"domains":["mouseflow.com"]},{"name":"Swiftype","categories":["utility"],"domains":["swiftype.com","swiftypecdn.com"]},{"name":"Yahoo!","homepage":"https://www.yahoo.com/","categories":["ad"],"domains":["ads.yahoo.com","analytics.yahoo.com","bluelithium.com","hostingprod.com","lexity.com","yahoo.net","yahooapis.com","yimg.com","zenfs.com","geo.yahoo.com"]},{"name":"etracker","categories":["analytics"],"domains":["etracker.de","www.etracker.com"]},{"name":"Accuweather","categories":["content"],"domains":["accuweather.com"]},{"name":"Feefo.com","company":"Feefo","categories":["analytics"],"domains":["feefo.com"]},{"name":"Smart AdServer","categories":["ad"],"domains":["sasqos.com","smartadserver.com"]},{"name":"Medium","categories":["content"],"domains":["medium.com"]},{"name":"Trusted Shops","categories":["utility"],"domains":["trustedshops.com"]},{"name":"Constant Contact","categories":["ad"],"domains":["ctctcdn.com"]},{"name":"AdMatic","categories":["ad"],"domains":["admatic.com.tr"]},{"name":"Unbounce","categories":["ad"],"domains":["d2xxq4ijfwetlm.cloudfront.net","d9hhrg4mnvzow.cloudfront.net","ubembed.com","unbounce.com"]},{"name":"Evidon","categories":["analytics"],"domains":["evidon.com"]},{"name":"SmartAdServer","categories":["ad"],"domains":["sascdn.com","securite.01net.com"]},{"name":"Gemius","categories":["ad"],"domains":["gemius.pl"]},{"name":"SocialShopWave","categories":["social"],"domains":["socialshopwave.com"]},{"name":"Sift Science","categories":["utility"],"domains":["siftscience.com"]},{"name":"Affirm","categories":["utility"],"domains":["affirm.com"]},{"name":"Admixer for Publishers","company":"Admixer","categories":["ad"],"domains":["admixer.net"]},{"name":"LKQD","categories":["ad"],"domains":["lkqd.net"]},{"name":"Hotmart","homepage":"https://www.hotmart.com/","categories":["content"],"domains":["launchermodule.hotmart.com"]},{"name":"Secomapp","categories":["utility"],"domains":["secomapp.com"]},{"name":"Sortable","categories":["ad"],"domains":["deployads.com"]},{"name":"Bazaarvoice","categories":["analytics"],"domains":["bazaarvoice.com","feedmagnet.com"]},{"name":"Seznam","categories":["utility"],"domains":["imedia.cz"]},{"name":"Vidible","categories":["ad"],"domains":["vidible.tv"]},{"name":"Affiliate Window","company":"Digital Window","categories":["ad"],"domains":["dwin1.com"]},{"name":"OptiMonk","categories":["ad"],"domains":["optimonk.com"]},{"name":"Refersion","categories":["ad"],"domains":["refersion.com"]},{"name":"Pagely","categories":["other"],"domains":["optnmstr.com"]},{"name":"BounceX","categories":["analytics"],"homepage":"https://www.bouncex.com/","domains":["bounceexchange.com","events.bouncex.net"]},{"name":"TrafficStars","categories":["ad"],"domains":["trafficstars.com","tsyndicate.com"]},{"name":"SnapEngage","categories":["customer-success"],"domains":["snapengage.com"]},{"name":"Esri ArcGIS","company":"Esri","categories":["utility"],"domains":["arcgis.com","arcgisonline.com"]},{"name":"ForeSee","company":"Answers","categories":["analytics"],"domains":["4seeresults.com","answerscloud.com","foresee.com","foreseeresults.com"]},{"name":"TagCommander","categories":["tag-manager"],"domains":["commander1.com","tagcommander.com"]},{"name":"Convert Insights","categories":["analytics"],"domains":["convertexperiments.com"]},{"name":"iovation","categories":["utility"],"domains":["iesnare.com"]},{"name":"Clicktale","categories":["analytics"],"domains":["clicktale.net","clicktalecdn.sslcs.cdngc.net"]},{"name":"Comm100","categories":["customer-success"],"domains":["comm100.com"]},{"name":"Yieldmo","categories":["ad"],"domains":["yieldmo.com"]},{"name":"IPONWEB","categories":["ad"],"domains":["company-target.com","liadm.com","p161.net","pool.udsp.iponweb.net"]},{"name":"Nend","categories":["ad"],"domains":["nend.net"]},{"name":"Perfect Market","categories":["ad"],"domains":["perfectmarket.com"]},{"name":"Fraudlogix","categories":["utility"],"domains":["yabidos.com"]},{"name":"Symantec","categories":["utility"],"domains":["extended-validation-ssl.websecurity.symantec.com","norton.com","symantec.com","symcb.com","symcd.com"]},{"name":"Bizible","categories":["ad"],"domains":["bizible.com"]},{"name":"Between Digital","categories":["ad"],"domains":["betweendigital.com"]},{"name":"Maxymiser","categories":["analytics"],"domains":["maxymiser.net"]},{"name":"Branch Metrics","categories":["ad"],"domains":["app.link","branch.io"]},{"name":"Tradelab","categories":["ad"],"domains":["tradelab.fr"]},{"name":"Digioh","categories":["ad"],"domains":["lightboxcdn.com"]},{"name":"Tail Target","company":"Tail","categories":["ad"],"domains":["tailtarget.com"]},{"name":"GetResponse","categories":["ad"],"domains":["getresponse.com"]},{"name":"OwnerIQ","categories":["ad"],"domains":["owneriq.net"]},{"name":"Dynamic Yield","categories":["customer-success"],"domains":["dynamicyield.com"]},{"name":"Fort Awesome","categories":["library"],"domains":["fortawesome.com"]},{"name":"Clerk.io ApS","categories":["analytics"],"domains":["clerk.io"]},{"name":"Adyoulike","categories":["ad"],"domains":["adyoulike.com","adyoulike.net","omnitagjs.com"]},{"name":"iAdvize SAS","categories":["customer-success"],"domains":["iadvize.com"]},{"name":"Ecwid","categories":["hosting"],"domains":["d3fi9i0jj23cau.cloudfront.net","d3j0zfs7paavns.cloudfront.net","ecwid.com","shopsettings.com"]},{"name":"issuu","categories":["content"],"domains":["issuu.com","isu.pub"]},{"name":"Effective Measure","categories":["ad"],"domains":["effectivemeasure.net"]},{"name":"Geniee","categories":["ad"],"domains":["cs.gssprt.jp","genieessp.jp","genieesspv.jp","gssprt.jp","href.asia"]},{"name":"Bronto Software","categories":["marketing"],"domains":["bm23.com","bronto.com","brontops.com"]},{"name":"eBay","categories":["ad"],"domains":["ebay.com","ebayimg.com","fetchback.com"]},{"name":"Elastic Ad","categories":["ad"],"domains":["elasticad.net"]},{"name":"PowerReviews","categories":["analytics"],"domains":["powerreviews.com"]},{"name":"Okas Concepts","categories":["utility"],"domains":["okasconcepts.com"]},{"name":"Media Management Technologies","categories":["ad"],"domains":["speedshiftmedia.com"]},{"name":"Blindado","categories":["utility"],"domains":["siteblindado.com"]},{"name":"Nativo","categories":["ad"],"domains":["postrelease.com"]},{"name":"Autopilot","categories":["ad"],"domains":["autopilothq.com"]},{"name":"Picreel","categories":["analytics"],"domains":["pcrl.co","picreel.com"]},{"name":"Celtra","categories":["ad"],"domains":["celtra.com"]},{"name":"UserReport","categories":["analytics"],"domains":["userreport.com"]},{"name":"Adverline Board","company":"Adverline","categories":["ad"],"domains":["adnext.fr","adverline.com"]},{"name":"The ADEX","categories":["ad"],"domains":["theadex.com"]},{"name":"Mather Economics","categories":["analytics"],"domains":["matheranalytics.com"]},{"name":"Decibel Insight","categories":["analytics"],"domains":["decibelinsight.net"]},{"name":"Revcontent","categories":["content"],"domains":["revcontent.com"]},{"name":"LightWidget","categories":["utility"],"domains":["lightwidget.com"]},{"name":"Wishpond Technologies","categories":["marketing"],"domains":["wishpond.com","wishpond.net"]},{"name":"Riskified","categories":["utility"],"domains":["riskified.com"]},{"name":"Kaltura Video Platform","company":"Kaltura","categories":["content"],"domains":["cdnsecakmi.kaltura.com"]},{"name":"TRUSTe","categories":["utility"],"domains":["truste.com"]},{"name":"Navegg","categories":["ad"],"domains":["navdmp.com"]},{"name":"LoopMe","categories":["ad"],"domains":["loopme.biz","loopme.com","loopme.me","vntsm.com"]},{"name":"Weborama","categories":["ad"],"domains":["weborama.com","weborama.fr"]},{"name":"Polar Mobile Group","categories":["ad"],"domains":["mediavoice.com","polarmobile.com"]},{"name":"Interpublic Group","categories":["ad"],"domains":["mbww.com"]},{"name":"Sekindo","categories":["content"],"domains":["sekindo.com"]},{"name":"WebEngage","categories":["customer-success"],"domains":["d23nd6ymopvz52.cloudfront.net","d3701cc9l7v9a6.cloudfront.net","webengage.co","webengage.com"]},{"name":"Cross Pixel Media","categories":["ad"],"domains":["crsspxl.com"]},{"name":"plista","categories":["ad"],"domains":["plista.com"]},{"name":"Kampyle","categories":["analytics"],"domains":["kampyle.com"]},{"name":"Tribal Fusion","company":"Exponential Interactive","categories":["ad"],"domains":["tribalfusion.com"]},{"name":"Gleam","categories":["marketing"],"domains":["gleam.io"]},{"name":"Forensiq","categories":["utility"],"domains":["fqtag.com"]},{"name":"Audience 360","company":"Datapoint Media","categories":["ad"],"domains":["dpmsrv.com"]},{"name":"Flowplayer","categories":["content"],"domains":["flowplayer.org"]},{"name":"Sooqr Search","company":"Sooqr","categories":["utility"],"domains":["sooqr.com"]},{"name":"MaxCDN Enterprise","company":"MaxCDN","categories":["utility"],"domains":["netdna-cdn.com","netdna-ssl.com"]},{"name":"Shopgate","categories":["utility"],"domains":["shopgate.com"]},{"name":"BoldChat","company":"LogMeIn","categories":["customer-success"],"domains":["boldchat.com"]},{"name":"smartclip","categories":["ad"],"domains":["smartclip.net"]},{"name":"rewardStyle.com","categories":["ad"],"domains":["rewardstyle.com"]},{"name":"Chitika","categories":["ad"],"domains":["chitika.net"]},{"name":"WisePops","categories":["utility"],"domains":["wisepops.com"]},{"name":"Monetate","categories":["analytics"],"domains":["monetate.net"]},{"name":"SpotXchange","categories":["ad"],"domains":["spotx.tv","spotxcdn.com","spotxchange.com"]},{"name":"Zanox","categories":["ad"],"domains":["zanox.com","zanox.ws"]},{"name":"SublimeSkinz","categories":["ad"],"domains":["ayads.co"]},{"name":"Adocean","company":"Gemius","categories":["ad"],"domains":["adocean.pl"]},{"name":"Meetrics","categories":["ad"],"domains":["meetrics.net","mxcdn.net","research.de.com"]},{"name":"Booking.com","categories":["content"],"domains":["bstatic.com"]},{"name":"Sparkflow","company":"Intercept Interactive","categories":["ad"],"domains":["sparkflow.net"]},{"name":"Lytics","categories":["ad"],"domains":["lytics.io"]},{"name":"ResponsiveVoice","categories":["other"],"domains":["responsivevoice.org"]},{"name":"Ooyala","categories":["ad"],"domains":["ooyala.com"]},{"name":"Snacktools","categories":["ad"],"domains":["bannersnack.com"]},{"name":"linkpulse","categories":["analytics"],"domains":["lp4.io"]},{"name":"Tencent","categories":["content"],"domains":["qq.com","ywxi.net"]},{"name":"Rocket Fuel","categories":["ad"],"domains":["rfihub.com","rfihub.net","ru4.com"]},{"name":"Adnium","categories":["ad"],"domains":["adnium.com"]},{"name":"Appier","categories":["ad"],"domains":["appier.net"]},{"name":"Stackla PTY","categories":["social"],"domains":["stackla.com"]},{"name":"Hupso Website Analyzer","company":"Hupso","categories":["analytics"],"domains":["hupso.com"]},{"name":"ReadSpeaker","homepage":"https://www.readspeaker.com","categories":["other"],"domains":["sf1-eu.readspeaker.com"]},{"name":"ShopiMind","company":"ShopIMind","categories":["ad"],"domains":["shopimind.com"]},{"name":"DialogTech","categories":["ad"],"domains":["dialogtech.com"]},{"name":"FoxyCart","categories":["utility"],"domains":["foxycart.com"]},{"name":"Neodata","categories":["ad"],"domains":["neodatagroup.com"]},{"name":"WebpageFX","categories":["ad"],"domains":["leadmanagerfx.com"]},{"name":"Smart Insight Tracking","company":"Emarsys","categories":["analytics"],"domains":["scarabresearch.com"]},{"name":"Feedbackify","company":"InsideMetrics","categories":["analytics"],"domains":["feedbackify.com"]},{"name":"Survicate","categories":["analytics"],"domains":["survicate.com"]},{"name":"Aggregate Knowledge","company":"Neustar","categories":["ad"],"domains":["agkn.com"]},{"name":"Exponea","categories":["analytics"],"domains":["exponea.com"]},{"name":"eXelate","categories":["ad"],"domains":["exelator.com"]},{"name":"Adition","homepage":"https://www.adition.com","categories":["ad"],"domains":["dsp.adfarm1.adition.com"]},{"name":"Highcharts","categories":["utility"],"domains":["highcharts.com"]},{"name":"FirstImpression","categories":["ad"],"domains":["firstimpression.io"]},{"name":"LiveHelpNow","categories":["customer-success"],"domains":["livehelpnow.net"]},{"name":"SearchSpring","categories":["utility"],"domains":["searchspring.net"]},{"name":"Pardot","categories":["marketing"],"domains":["pardot.com"]},{"name":"JustPremium Ads","company":"JustPremium","categories":["ad"],"domains":["justpremium.com"]},{"name":"DMD Marketing","homepage":"https://www.dmdconnects.com/","categories":["ad"],"domains":["medtargetsystem.com"]},{"name":"The Hut Group","categories":["content"],"domains":["thcdn.com"]},{"name":"Cloudinary","categories":["content"],"domains":["cloudinary.com"]},{"name":"Technorati","company":"Synacor","categories":["ad"],"domains":["technoratimedia.com"]},{"name":"Github","categories":["utility"],"domains":["github.com","github.io","raw.githubusercontent.com"]},{"name":"Bootstrap Chinese network","categories":["library"],"domains":["bootcss.com"]},{"name":"Typepad","categories":["hosting"],"domains":["typepad.com"]},{"name":"Keywee","categories":["ad"],"domains":["keywee.co"]},{"name":"Skype","categories":["other"],"domains":["skype.com"]},{"name":"Opta","company":"Perform Group","categories":["content"],"domains":["opta.net"]},{"name":"Livefyre","categories":["content"],"domains":["fyre.co","livefyre.com"]},{"name":"ReTargeter","categories":["ad"],"domains":["retargeter.com"]},{"name":"TruConversion","categories":["analytics"],"domains":["truconversion.com"]},{"name":"fifty-five","categories":["ad"],"domains":["55labs.com"]},{"name":"Time","categories":["content"],"domains":["timeinc.net"]},{"name":"Pixlee","categories":["social"],"domains":["pixlee.com"]},{"name":"Reevoo","categories":["analytics"],"domains":["reevoo.com"]},{"name":"Accordant Media","categories":["ad"],"domains":["segment.a3cloud.net"]},{"name":"Evergage","categories":["analytics"],"domains":["evergage.com"]},{"name":"Exponential Interactive","categories":["ad"],"domains":["exponential.com"]},{"name":"Best Of Media S.A.","categories":["content"],"domains":["servebom.com"]},{"name":"Steelhouse","categories":["ad"],"domains":["steelhousemedia.com"]},{"name":"Dailymotion","categories":["content"],"domains":["ad.pxlad.io","dm.gg","dmcdn.net","sublimevideo.net","www.dailymotion.com"]},{"name":"TripleLift","categories":["ad"],"domains":["3lift.com"]},{"name":"DemandBase","categories":["marketing"],"domains":["demandbase.com"]},{"name":"One by AOL","company":"AOL","categories":["ad"],"domains":["adtech.de","adtechjp.com"]},{"name":"Adkontekst","categories":["ad"],"domains":["adkontekst.pl"]},{"name":"Profitshare","categories":["ad"],"domains":["profitshare.ro"]},{"name":"Drip","company":"The Numa Group","categories":["ad"],"domains":["getdrip.com"]},{"name":"Ghostery Enterprise","company":"Ghostery","categories":["marketing"],"domains":["betrad.com"]},{"name":"Socialphotos","categories":["social"],"domains":["slpht.com"]},{"name":"SoundCloud","homepage":"https://www.soundcloud.com/","categories":["content"],"domains":["widget.sndcdn.com","soundcloud.com","stratus.sc"]},{"name":"Rackspace","categories":["hosting"],"domains":["rackcdn.com","rackspacecloud.com","raxcdn.com","websitetestlink.com"]},{"name":"NetAffiliation","company":"Kwanco","categories":["ad"],"domains":["metaffiliation.com"]},{"name":"CPEx","categories":["content"],"domains":["cpex.cz"]},{"name":"Sweet Tooth","categories":["ad"],"domains":["sweettooth.io"]},{"name":"Playbuzz","categories":["hosting"],"domains":["playbuzz.com"]},{"name":"Civic","categories":["hosting"],"domains":["civiccomputing.com"]},{"name":"Sajari Pty","categories":["utility"],"domains":["sajari.com"]},{"name":"PerimeterX Bot Defender","company":"PerimeterX","categories":["utility"],"domains":["perimeterx.net","pxi.pub"]},{"name":"Marketplace Web Service","company":"Amazon","categories":["other"],"domains":["ssl-images-amazon.com"]},{"name":"Ambassador","categories":["ad"],"domains":["getambassador.com"]},{"name":"Pictela (AOL)","categories":["analytics"],"domains":["pictela.net"]},{"name":"AdSniper","categories":["ad"],"domains":["adsniper.ru","sniperlog.ru"]},{"name":"Adscale","categories":["ad"],"domains":["adscale.de"]},{"name":"Signyfyd","categories":["utility"],"domains":["signifyd.com"]},{"name":"Connatix","categories":["ad"],"domains":["connatix.com"]},{"name":"Zarget","categories":["analytics"],"domains":["zarget.com"]},{"name":"Woopra","categories":["analytics"],"domains":["woopra.com"]},{"name":"Infinity Tracking","categories":["analytics"],"domains":["infinity-tracking.net"]},{"name":"ResponseTap","categories":["analytics"],"domains":["adinsight.com","responsetap.com"]},{"name":"Sirv","categories":["other"],"domains":["sirv.com"]},{"name":"Salesforce.com","categories":["ad"],"domains":["force.com","salesforce.com","secure.force.com"]},{"name":"Conversant Tag Manager","company":"Conversant","categories":["tag-manager"],"domains":["mplxtms.com"]},{"name":"Petametrics","categories":["analytics"],"domains":["petametrics.com"]},{"name":"BannerFlow","company":"Nordic Factory Solutions","categories":["ad"],"domains":["bannerflow.com"]},{"name":"Pixalate","categories":["utility"],"domains":["adrta.com"]},{"name":"reEmbed","categories":["other"],"domains":["reembed.com"]},{"name":"FreakOut","categories":["ad"],"domains":["fout.jp"]},{"name":"VoiceFive","categories":["analytics"],"domains":["voicefive.com"]},{"name":"Impact Radius","categories":["ad"],"domains":["7eer.net","a.impactradius-go.com","d3cxv97fi8q177.cloudfront.net","impactradius-event.com","microsoft-uk.evyy.net","ojrq.net"]},{"name":"AWeber","categories":["ad"],"domains":["aweber.com"]},{"name":"Simpli.fi","categories":["ad"],"domains":["simpli.fi"]},{"name":"Unruly Media","categories":["ad"],"domains":["unrulymedia.com"]},{"name":"Hola Networks","categories":["other"],"domains":["h-cdn.com"]},{"name":"Customer.io","categories":["ad"],"domains":["customer.io"]},{"name":"Delta Projects AB","categories":["ad"],"domains":["de17a.com"]},{"name":"Advance Magazine Group","categories":["content"],"domains":["condenast.co.uk","condenastdigital.com","condenet.com"]},{"name":"Key CDN","categories":["utility"],"domains":["kxcdn.com"]},{"name":"ThreatMetrix","categories":["utility"],"domains":["online-metrix.net"]},{"name":"Adtech (AOL)","categories":["ad"],"domains":["adtechus.com"]},{"name":"News","categories":["social"],"domains":["news-static.com","news.com.au","newsanalytics.com.au","newsapi.com.au","newscdn.com.au","newsdata.com.au","newsdiscover.com.au"]},{"name":"AvantLink","categories":["ad"],"domains":["avmws.com"]},{"name":"CyberSource (Visa)","categories":["utility"],"domains":["authorize.net"]},{"name":"Vibrant Media","categories":["ad"],"domains":["intellitxt.com","picadmedia.com"]},{"name":"FLXone","company":"Teradata","categories":["ad"],"domains":["d2hlpp31teaww3.cloudfront.net","flx1.com","pangolin.blue"]},{"name":"Adobe Marketing Cloud","company":"Adobe Systems","categories":["ad"],"domains":["adobetag.com"]},{"name":"WebSpectator","categories":["ad"],"domains":["webspectator.com"]},{"name":"Intercept Interactive","categories":["ad"],"domains":["undertone.com"]},{"name":"Simplicity Marketing","categories":["ad"],"domains":["flashtalking.com"]},{"name":"AdRiver","categories":["ad"],"domains":["adriver.ru"]},{"name":"Mobify","categories":["utility"],"domains":["mobify.com","mobify.net"]},{"name":"Apester","categories":["analytics"],"domains":["apester.com","qmerce.com"]},{"name":"Covert Pics","categories":["content"],"domains":["covet.pics"]},{"name":"CleverDATA","categories":["ad"],"domains":["1dmp.io"]},{"name":"SecuredVisit","company":"4Cite Marketing","categories":["ad"],"domains":["securedvisit.com"]},{"name":"SlimCut Media Outstream","company":"SlimCut Media","categories":["ad"],"domains":["freeskreen.com"]},{"name":"Exactag","categories":["ad"],"domains":["exactag.com"]},{"name":"Postcode Anywhere (Holdings)","categories":["utility"],"domains":["postcodeanywhere.co.uk"]},{"name":"Flickr","categories":["content"],"domains":["flickr.com","staticflickr.com"]},{"name":"bRealTime","categories":["ad"],"domains":["brealtime.com"]},{"name":"Research Online","company":"Skills Development Scotland","categories":["content"],"domains":["www.researchonline.org.uk"]},{"name":"Swoop","categories":["ad"],"domains":["swoop.com"]},{"name":"Widespace","homepage":"https://www.widespace.com","categories":["ad"],"domains":["sync.widespace.com"]},{"name":"Eyeota","categories":["ad"],"domains":["eyeota.net"]},{"name":"Pagefair","categories":["ad"],"domains":["pagefair.com","pagefair.net"]},{"name":"Wow Analytics","categories":["analytics"],"domains":["wowanalytics.co.uk"]},{"name":"Rakuten LinkShare","company":"Rakuten","categories":["ad"],"domains":["linksynergy.com"]},{"name":"Transifex","categories":["utility"],"domains":["transifex.com"]},{"name":"Ziff Davis Tech","categories":["ad"],"domains":["adziff.com","zdbb.net"]},{"name":"Betgenius","company":"Genius Sports","categories":["content"],"domains":["connextra.com"]},{"name":"AIR.TV","categories":["ad"],"domains":["air.tv"]},{"name":"MaxMind","categories":["utility"],"domains":["maxmind.com"]},{"name":"Expedia","categories":["content"],"domains":["travel-assets.com","trvl-media.com","www.trvl-px.com","www.uciservice.com"]},{"name":"ContextWeb","categories":["ad"],"domains":["contextweb.com"]},{"name":"Pusher","homepage":"https://pusher.com/","categories":["utility"],"domains":["stats.pusher.com","pusherapp.com"]},{"name":"LeasdBoxer","company":"LeadBoxer","categories":["ad"],"domains":["leadboxer.com"]},{"name":"SkyScanner","categories":["content"],"domains":["api.skyscanner.net"]},{"name":"WalkMe","categories":["customer-success"],"domains":["walkme.com"]},{"name":"AdTrue","company":"FPT AdTrue","categories":["ad"],"domains":["adtrue.com"]},{"name":"Resonance Insights","categories":["analytics"],"domains":["res-x.com"]},{"name":"Hull.js","categories":["utility"],"domains":["hull.io","hullapp.io"]},{"name":"Video Media Groep","categories":["ad"],"domains":["inpagevideo.nl","vmg.host"]},{"name":"MonetizeMore","categories":["ad"],"domains":["m2.ai"]},{"name":"Fanplayr","categories":["analytics"],"domains":["d38nbbai6u794i.cloudfront.net","fanplayr.com"]},{"name":"Onet","categories":["ad"],"domains":["onet.pl"]},{"name":"Boomtrain","categories":["ad"],"domains":["boomtrain.com","boomtrain.net"]},{"name":"Proper Media","categories":["content"],"domains":["proper.io"]},{"name":"StumbleUpon","categories":["content"],"domains":["stumble-upon.com","stumbleupon.com"]},{"name":"Zmags","categories":["marketing"],"domains":["zmags.com"]},{"name":"Vee24","categories":["customer-success"],"domains":["vee24.com"]},{"name":"Sailthru","categories":["analytics"],"domains":["sail-horizon.com","sail-personalize.com","sail-track.com"]},{"name":"Klevu Search","company":"Klevu","categories":["utility"],"domains":["klevu.com"]},{"name":"Cedato","categories":["ad"],"domains":["algovid.com","vdoserv.com"]},{"name":"Trip Advisor","categories":["content"],"domains":["tacdn.com","tripadvisor.co.uk","tripadvisor.com","viator.com","www.jscache.com","www.tamgrt.com"]},{"name":"Captify Media","categories":["ad"],"domains":["cpx.to"]},{"name":"Yottaa","categories":["hosting"],"domains":["yottaa.com","yottaa.net"]},{"name":"PERFORM","categories":["content"],"domains":["performgroup.com"]},{"name":"Vindico","company":"Viant","categories":["ad"],"domains":["vindicosuite.com"]},{"name":"Snack Media","categories":["content"],"domains":["snack-media.com"]},{"name":"FuelX","categories":["ad"],"domains":["fuelx.com"]},{"name":"OnScroll","categories":["ad"],"domains":["onscroll.com"]},{"name":"Alliance for Audited Media","categories":["ad"],"domains":["aamsitecertifier.com"]},{"name":"ShopRunner","categories":["content"],"domains":["s-9.us","shoprunner.com"]},{"name":"Janrain","categories":["analytics"],"domains":["d3hmp0045zy3cs.cloudfront.net","janrain.com","janrainbackplane.com","rpxnow.com"]},{"name":"AliveChat","company":"AYU Technology Solutions","categories":["customer-success"],"domains":["websitealive.com","websitealive7.com"]},{"name":"SpringServer","categories":["ad"],"domains":["springserve.com"]},{"name":"Global-e","categories":["hosting"],"domains":["global-e.com"]},{"name":"cloudIQ","categories":["analytics"],"domains":["cloud-iq.com"]},{"name":"ZEDO","categories":["ad"],"domains":["zedo.com"]},{"name":"Forter","categories":["utility"],"domains":["forter.com"]},{"name":"Silverpop","company":"IBM","categories":["ad"],"domains":["mkt51.net","mkt61.net","mkt912.com","mkt922.com","mkt932.com","mkt941.com","pages01.net","pages02.net","pages03.net","pages04.net","pages05.net"]},{"name":"Polyfill service","company":"Polyfill.io","categories":["other"],"domains":["polyfill.io"]},{"name":"epoq internet services","categories":["analytics"],"domains":["epoq.de"]},{"name":"CDN.net","categories":["utility"],"domains":["uk.cdn-net.com"]},{"name":"Kameleoon","categories":["analytics"],"domains":["kameleoon.com"]},{"name":"Council ad Network","categories":["ad"],"domains":["counciladvertising.net"]},{"name":"Oracle Recommendations On Demand","company":"Oracle","categories":["analytics"],"domains":["atgsvcs.com"]},{"name":"Viacom","categories":["content"],"domains":["mtvnservices.com"]},{"name":"Optimove","company":"Mobius Solutions","categories":["analytics"],"domains":["optimove.net"]},{"name":"Cookie Reports","categories":["utility"],"domains":["cookiereports.com"]},{"name":"Storygize","categories":["ad"],"domains":["www.storygize.net"]},{"name":"Revolver Maps","categories":["analytics"],"domains":["revolvermaps.com"]},{"name":"Reactful","categories":["analytics"],"domains":["reactful.com"]},{"name":"NaviStone","categories":["ad"],"domains":["murdoog.com"]},{"name":"Vertical Mass","categories":["ad"],"domains":["vmweb.net"]},{"name":"Conversant","categories":["analytics"],"domains":["dotomi.com","dtmpub.com","emjcd.com","fastclick.net","mediaplex.com","www.tqlkg.com"]},{"name":"BlueCava","categories":["ad"],"domains":["bluecava.com"]},{"name":"VidPulse","categories":["analytics"],"domains":["vidpulse.com"]},{"name":"LoginRadius","categories":["social"],"domains":["loginradius.com"]},{"name":"Byside","homepage":"http://www.byside.com","categories":["analytics"],"domains":["byce2.byside.com","wce2.byside.com"]},{"name":"MailPlus","categories":["ad"],"domains":["mailplus.nl"]},{"name":"Touch Commerce","categories":["customer-success"],"domains":["inq.com","touchcommerce.com"]},{"name":"Netlify","homepage":"https://www.netlify.com/","categories":["utility"],"domains":["netlify.com","cloud.netlifyusercontent.com"]},{"name":"Kargo","categories":["marketing"],"domains":["kargo.com"]},{"name":"SurveyMonkey","categories":["analytics"],"domains":["surveymonkey.com"]},{"name":"User Replay","categories":["analytics"],"domains":["userreplay.net"]},{"name":"Catchpoint","homepage":"https://www.catchpoint.com/","categories":["analytics"],"domains":["3gl.net"]},{"name":"Conversio","categories":["ad"],"domains":["conversio.com"]},{"name":"AdvertServe","categories":["ad"],"domains":["advertserve.com"]},{"name":"PrintFriendly","categories":["utility"],"domains":["printfriendly.com"]},{"name":"Mopinion","categories":["analytics"],"domains":["mopinion.com"]},{"name":"Barilliance","categories":["analytics"],"domains":["barilliance.net","dn3y71tq7jf07.cloudfront.net"]},{"name":"Flockler","categories":["ad"],"domains":["flockler.com"]},{"name":"Attribution","categories":["ad"],"domains":["attributionapp.com"]},{"name":"Vergic AB","categories":["customer-success"],"domains":["psplugin.com"]},{"name":"CANDDi","company":"Campaign and Digital Intelligence","categories":["ad"],"domains":["canddi.com"]},{"name":"PebblePost","categories":["ad"],"domains":["pbbl.co"]},{"name":"Braintree Payments","company":"Paypal","categories":["utility"],"domains":["braintreegateway.com"]},{"name":"InSkin Media","categories":["ad"],"domains":["inskinad.com","inskinmedia.com"]},{"name":"StreamRail","categories":["ad"],"domains":["streamrail.com","streamrail.net"]},{"name":"Site24x7 Real User Monitoring","company":"Site24x7","categories":["analytics"],"domains":["site24x7rum.com"]},{"name":"YoYo","categories":["utility"],"domains":["goadservices.com"]},{"name":"Adunity","categories":["ad"],"domains":["adunity.com"]},{"name":"PlayAd Media Group","categories":["ad"],"domains":["youplay.se"]},{"name":"BuySellAds","categories":["ad"],"domains":["buysellads.com"]},{"name":"Moovweb","categories":["utility"],"domains":["moovweb.net"]},{"name":"Bookatable","categories":["content"],"domains":["bookatable.com","livebookings.com"]},{"name":"Raygun","categories":["utility"],"domains":["raygun.io"]},{"name":"Sociomantic Labs","company":"DunnHumby","categories":["ad"],"domains":["sociomantic.com"]},{"name":"Borderfree","company":"pitney bowes","categories":["utility"],"domains":["borderfree.com","fiftyone.com"]},{"name":"Dynamic Converter","categories":["utility"],"domains":["dynamicconverter.com"]},{"name":"C3 Metrics","categories":["analytics"],"domains":["c3tag.com"]},{"name":"eGain","categories":["analytics"],"domains":["analytics-egain.com","egain.com"]},{"name":"TechTarget","categories":["content"],"domains":["techtarget.com","ttgtmedia.com"]},{"name":"Adobe Scene7","company":"Adobe Systems","categories":["content"],"domains":["everestads.net","everestjs.net","scene7.com","wwwimages.adobe.com"]},{"name":"HotelsCombined","categories":["content"],"domains":["datahc.com"]},{"name":"StackAdapt","categories":["ad"],"domains":["stackadapt.com"]},{"name":"The Publisher Desk","categories":["ad"],"domains":["206ads.com","publisherdesk.com"]},{"name":"Ekm Systems","categories":["analytics"],"domains":["ekmpinpoint.co.uk","ekmsecure.com","globalstats.ekmsecure.com"]},{"name":"DistroScale","categories":["ad"],"domains":["jsrdn.com"]},{"name":"Knight Lab","company":"Northwestern University","categories":["utility"],"domains":["knightlab.com"]},{"name":"Vergic Engage Platform","company":"Vergic","categories":["customer-success"],"domains":["vergic.com"]},{"name":"AdCurve","categories":["ad"],"domains":["shop2market.com"]},{"name":"StackExchange","categories":["social"],"domains":["sstatic.net"]},{"name":"MathJax","categories":["utility"],"domains":["mathjax.org"]},{"name":"RebelMouse","categories":["ad"],"domains":["rbl.ms","www.rebelmouse.com"]},{"name":"ShopStorm","categories":["utility"],"domains":["shopstorm.com"]},{"name":"Ad6Media","categories":["ad"],"domains":["ad6media.fr"]},{"name":"OCSP","company":"GoDaddy","categories":["utility"],"domains":["ocsp.godaddy.com","seal.godaddy.com"]},{"name":"Bluecore","categories":["analytics"],"domains":["www.bluecore.com"]},{"name":"Cachefly","categories":["utility"],"domains":["cachefly.net"]},{"name":"Nanorep","company":"Nanorep Technologies","categories":["customer-success"],"domains":["nanorep.com"]},{"name":"AdSpruce","categories":["ad"],"domains":["adspruce.com"]},{"name":"content.ad","categories":["ad"],"domains":["content.ad"]},{"name":"Improve Digital","categories":["ad"],"domains":["360yield.com"]},{"name":"Fastest Forward","categories":["analytics"],"domains":["gaug.es"]},{"name":"RichRelevance","categories":["analytics"],"domains":["richrelevance.com"]},{"name":"ARM","categories":["analytics"],"domains":["tag4arm.com"]},{"name":"Webtrends","categories":["analytics"],"domains":["d1q62gfb8siqnm.cloudfront.net","webtrends.com","webtrendslive.com"]},{"name":"Click4Assistance","categories":["customer-success"],"domains":["click4assistance.co.uk"]},{"name":"Realytics","categories":["analytics"],"domains":["dcniko1cv0rz.cloudfront.net","realytics.net"]},{"name":"Xaxis","homepage":"https://www.xaxis.com/","categories":["ad"],"domains":["t.mookie1.com","247realmedia.com","gmads.net","odr.mookie1.com"]},{"name":"UPS i-parcel","company":"UPS","categories":["other"],"domains":["i-parcel.com"]},{"name":"Qualtrics","categories":["analytics"],"domains":["qualtrics.com"]},{"name":"Adobe Test & Target","company":"Adobe Systems","categories":["analytics"],"domains":["tt.omtrdc.net"]}]; -},{}],168:[function(require,module,exports){ +},{"events":108,"inherits":113,"readable-stream/duplex.js":146,"readable-stream/passthrough.js":156,"readable-stream/readable.js":157,"readable-stream/transform.js":158,"readable-stream/writable.js":159}],168:[function(require,module,exports){ +module.exports=[{"name":"Google Analytics","company":"Google","homepage":"https://www.google.com/analytics/analytics/","categories":["analytics"],"domains":["*.google-analytics.com","*.urchin.com"],"examples":["www.google-analytics.com","ssl.google-analytics.com"]},{"name":"Facebook","homepage":"https://www.facebook.com","categories":["social"],"domains":["*.atlassbx.com","*.facebook.com","*.fbsbx.com","fbcdn-photos-e-a.akamaihd.net","*.facebook.net","*.fbcdn.net"],"examples":["www.facebook.com","connect.facebook.net","staticxx.facebook.com","static.xx.fbcdn.net","m.facebook.com","an.facebook.com","platform-lookaside.fbsbx.com"]},{"name":"Google CDN","company":"Google","homepage":"https://developers.google.com/speed/libraries/","categories":["cdn"],"domains":["ajax.googleapis.com","commondatastorage.googleapis.com","www.gstatic.com"]},{"name":"Google/Doubleclick Ads","company":"Google","homepage":"https://www.doubleclickbygoogle.com/","categories":["ad"],"domains":["adservice.google.com","adservice.google.com.au","adservice.google.com.sg","adservice.google.com.br","adservice.google.com.ua","adservice.google.co.uk","adservice.google.co.jp","adservice.google.co.in","adservice.google.co.kr","adservice.google.co.id","adservice.google.co.nz","adservice.google.ie","adservice.google.se","adservice.google.de","adservice.google.ca","adservice.google.be","adservice.google.es","adservice.google.ch","adservice.google.fr","adservice.google.nl","*.googleadservices.com","*.googlesyndication.com","*.googletagservices.com","*.2mdn.net","*.doubleclick.net"],"examples":["pagead2.googlesyndication.com","tpc.googlesyndication.com","ade.googlesyndication.com","googleads.g.doubleclick.net","googleads4.g.doubleclick.net","securepubads.g.doubleclick.net","pubads.g.doubleclick.net","static.doubleclick.net","cm.g.doubleclick.net","bid.g.doubleclick.net","s0.2mdn.net","stats.g.doubleclick.net","survey.g.doubleclick.net","fls.doubleclick.net","ad.doubleclick.net","www.googleadservices.com","https://www.googletagservices.com/tag/js/gpt.js"]},{"name":"Google Tag Manager","company":"Google","homepage":"https://marketingplatform.google.com/about/tag-manager/","categories":["tag-manager"],"domains":["*.googletagmanager.com"],"examples":["www.googletagmanager.com"]},{"name":"Other Google APIs/SDKs","company":"Google","homepage":"https://developers.google.com/apis-explorer/#p/","categories":["utility"],"domains":["accounts.google.com","apis.google.com","calendar.google.com","clients2.google.com","cse.google.com","news.google.com","pay.google.com","payments.google.com","play.google.com","smartlock.google.com","www.google.com","www.google.de","www.google.co.jp","www.google.com.au","www.google.co.uk","www.google.ie","www.google.com.sg","www.google.co.in","www.google.com.br","www.google.ca","www.google.co.kr","www.google.co.nz","www.google.co.id","www.google.fr","www.google.be","www.google.com.ua","www.google.nl","www.google.ru","www.google.se","imasdk.googleapis.com","storage.googleapis.com","translate.googleapis.com","lh3.googleusercontent.com","csi.gstatic.com"]},{"name":"YouTube","homepage":"https://youtube.com","categories":["video"],"domains":["*.ggpht.com","*.youtube-nocookie.com","*.youtube.com","*.ytimg.com"],"examples":["www.youtube.com","s.ytimg.com","yt3.ggpht.com","img.youtube.com","fcmatch.youtube.com"]},{"name":"Google Maps","company":"Google","homepage":"https://www.google.com/maps","categories":["utility"],"domains":["maps.google.com","maps-api-ssl.google.com","maps.googleapis.com","mts.googleapis.com","maps.gstatic.com"]},{"name":"Twitter","homepage":"https://twitter.com","categories":["social"],"domains":["*.vine.co","*.twimg.com","*.twitpic.com","platform.twitter.com","syndication.twitter.com"],"examples":["cdn.syndication.twimg.com","abs.twimg.com","pbs.twimg.com"]},{"name":"Yandex Metrica","company":"Yandex","homepage":"https://metrica.yandex.com/about?","categories":["analytics"],"domains":["d31j93rd8oukbv.cloudfront.net","mc.yandex.ru"]},{"name":"jQuery CDN","homepage":"https://code.jquery.com/","categories":["cdn"],"domains":["*.jquery.com"],"examples":["code.jquery.com"]},{"name":"Hotjar","homepage":"https://www.hotjar.com/","categories":["analytics"],"domains":["*.hotjar.com","*.hotjar.io"],"examples":["script.hotjar.com","static.hotjar.com","in.hotjar.com","vc.hotjar.io","vars.hotjar.com"]},{"name":"AddThis","homepage":"http://www.addthis.com/","categories":["social"],"domains":["*.addthis.com","*.addthiscdn.com","*.addthisedge.com"],"examples":["s7.addthis.com","r.dlx.addthis.com","su.addthis.com","x.dlx.addthis.com"]},{"name":"WordPress","company":"Automattic","homepage":"https://wp.com/","categories":["hosting"],"domains":["*.wordpress.com","s0.wp.com","s2.wp.com","*.w.org","c0.wp.com","s1.wp.com","widgets.wp.com"],"examples":["s.w.org"]},{"name":"Cloudflare CDN","homepage":"https://cdnjs.com/","categories":["cdn"],"domains":["amp.cloudflare.com","cdnjs.cloudflare.com"]},{"name":"Shopify","homepage":"https://www.shopify.com/","categories":["hosting"],"domains":["*.shopify.com","*.shopifyapps.com","*.shopifycdn.com"],"examples":["cdn.shopify.com","productreviews.shopifycdn.com"]},{"name":"ZenDesk","homepage":"https://zendesk.com/","categories":["customer-success"],"domains":["*.zdassets.com","*.zendesk.com","*.zopim.com"],"examples":["assets.zendesk.com","static.zdassets.com","v2.zopim.com"]},{"name":"Criteo","homepage":"https://www.criteo.com/","categories":["ad"],"domains":["*.criteo.com","*.emailretargeting.com","*.criteo.net"],"examples":["static.criteo.net","bidder.criteo.com","dis.criteo.com","gum.criteo.com","sslwidget.criteo.com","dis.us.criteo.com"]},{"name":"Pubmatic","homepage":"https://pubmatic.com/","categories":["ad"],"domains":["*.pubmatic.com"],"examples":["image6.pubmatic.com","ads.pubmatic.com","image2.pubmatic.com","simage2.pubmatic.com","image4.pubmatic.com","simage4.pubmatic.com","image5.pubmatic.com","hbopenbid.pubmatic.com"]},{"name":"Tawk.to","homepage":"https://www.tawk.to/","categories":["customer-success"],"domains":["*.tawk.to"],"examples":["embed.tawk.to"]},{"name":"AMP","homepage":"https://amp.dev/","categories":["content"],"domains":["*.ampproject.org"],"examples":["cdn.ampproject.org"]},{"name":"Wix","homepage":"https://www.wix.com/","categories":["hosting"],"domains":["*.parastorage.com","*.wix.com","*.wixstatic.com","*.wixapps.net"],"examples":["static.parastorage.com","static.wixstatic.com","www.wix.com","instagram.codev.wixapps.net"]},{"name":"Squarespace","homepage":"https://www.squarespace.com/","categories":["hosting"],"domains":["*.squarespace.com"],"examples":["static.squarespace.com","static1.squarespace.com"]},{"name":"Amazon Web Services","homepage":"https://aws.amazon.com/s3/","categories":["other"],"domains":["*.amazon.com","*.amazonaws.com","*.amazonwebapps.com","*.amazonwebservices.com","*.elasticbeanstalk.com","*.images-amazon.com","*.amazon.co.uk"],"examples":["s3.amazonaws.com","us-east-1.amazonaws.com","api-cdn.amazon.com","ecx.images-amazon.com","ws.amazon.co.uk"]},{"name":"ShareThis","homepage":"https://www.sharethis.com/","categories":["social"],"domains":["*.sharethis.com"],"examples":["w.sharethis.com","ws.sharethis.com","t.sharethis.com"]},{"name":"Vimeo","homepage":"http://vimeo.com/","categories":["video"],"domains":["*.vimeo.com","*.vimeocdn.com"],"examples":["f.vimeocdn.com","player.vimeo.com","i.vimeocdn.com"]},{"name":"JSDelivr CDN","homepage":"https://www.jsdelivr.com/","categories":["cdn"],"domains":["*.jsdelivr.net"],"examples":["cdn.jsdelivr.net"]},{"name":"Adobe Tag Manager","company":"Adobe","homepage":"https://www.adobe.com/experience-platform/","categories":["tag-manager"],"domains":["*.adobedtm.com","*.demdex.net","*.everesttech.net"],"examples":["assets.adobedtm.com","sync-tm.everesttech.net","cm.everesttech.net"]},{"name":"Jivochat","homepage":"https://www.jivochat.com/","categories":["customer-success"],"domains":["*.jivosite.com"],"examples":["cdn-ca.jivosite.com","code.jivosite.com"]},{"name":"PIXNET","homepage":"https://www.pixnet.net/","categories":["social"],"domains":["*.pixfs.net"],"examples":["front.pixfs.net","falcon-asset.pixfs.net","pixgame-asset.pixfs.net"]},{"name":"Yandex Share","company":"Yandex","homepage":"https://yastatic.net/share2/share.js","categories":["social"],"domains":["*.yastatic.net"]},{"name":"Scorecard Research","homepage":"https://www.scorecardresearch.com/","categories":["ad"],"domains":["*.scorecardresearch.com"],"examples":["sb.scorecardresearch.com","sa.scorecardresearch.com","b.scorecardresearch.com"]},{"name":"Rubicon Project","homepage":"https://rubiconproject.com/","categories":["ad"],"domains":["*.chango.com","*.fimserve.com","*.rubiconproject.com"],"examples":["pixel.rubiconproject.com","fastlane.rubiconproject.com","secure-assets.rubiconproject.com","eus.rubiconproject.com","pixel-us-east.rubiconproject.com","token.rubiconproject.com","ads.rubiconproject.com"]},{"name":"FontAwesome CDN","homepage":"https://fontawesome.com/","categories":["cdn"],"domains":["*.fontawesome.com"],"examples":["use.fontawesome.com"]},{"name":"Cloudflare","homepage":"https://www.cloudflare.com/website-optimization/","categories":["utility"],"domains":["ajax.cloudflare.com"]},{"name":"Blogger","homepage":"http://www.blogger.com/","categories":["hosting"],"domains":["*.blogblog.com","*.blogger.com","*.blogspot.com","images-blogger-opensocial.googleusercontent.com"],"examples":["1.bp.blogspot.com","www.blogger.com"]},{"name":"Salesforce","homepage":"https://www.salesforce.com/products/marketing-cloud/","categories":["analytics"],"domains":["*.krxd.net"],"examples":["cdn.krxd.net","beacon.krxd.net","consumer.krxd.net","usermatch.krxd.net"]},{"name":"Yandex Ads","company":"Yandex","homepage":"https://yandex.com/adv/","categories":["ad"],"domains":["an.yandex.ru"]},{"name":"Tynt","company":"33 Across","categories":["ad"],"domains":["*.tynt.com"]},{"name":"Yandex APIs","company":"Yandex","homepage":"https://yandex.ru/","categories":["utility"],"domains":["api-maps.yandex.ru","money.yandex.ru"]},{"name":"Micropat","categories":["social"],"domains":["*.addtoany.com"]},{"name":"Hubspot","homepage":"https://hubspot.com/","categories":["marketing"],"domains":["*.hs-scripts.com","*.hubspot.com","*.leadin.com","*.hs-analytics.net","*.hscollectedforms.net","*.hscta.net","*.hsforms.net","*.hsleadflows.net","*.hsstatic.net","*.hubspot.net"],"examples":["forms.hubspot.com","js.hsforms.net","js.hs-analytics.net","js.leadin.com"]},{"name":"Sumo","homepage":"https://sumo.com/","categories":["marketing"],"domains":["*.sumo.com","*.sumome.com","sumo.b-cdn.net"],"examples":["sumo.b-cdn.net","load.sumo.com","load.sumome.com"]},{"name":"Beeketing","homepage":"https://beeketing.com/","categories":["marketing"],"domains":["*.beeketing.com"],"examples":["sdk-cdn.beeketing.com","sdk.beeketing.com"]},{"name":"Mailchimp","homepage":"https://mailchimp.com/","categories":["marketing"],"domains":["*.chimpstatic.com","*.list-manage.com","*.mailchimp.com"],"examples":["downloads.mailchimp.com"]},{"name":"Media.net","homepage":"https://www.media.net/","categories":["ad"],"domains":["*.media.net","*.mnet-ad.net"],"examples":["contextual.media.net","cdnwest-xch.media.net","hbx.media.net","cs.media.net","hblg.media.net"]},{"name":"Skimbit","categories":["ad"],"domains":["*.redirectingat.com","*.skimresources.com","*.skimresources.net"]},{"name":"Moat","homepage":"https://moat.com/","categories":["ad"],"domains":["*.moatads.com","*.moatpixel.com"],"examples":["z.moatads.com","px.moatads.com","geo.moatads.com","sejs.moatads.com","mb.moatads.com","v4.moatads.com"]},{"name":"AppNexus","homepage":"https://www.appnexus.com/","categories":["ad"],"domains":["*.adnxs.com","*.ctasnet.com"],"examples":["acdn.adnxs.com","secure.adnxs.com","ib.adnxs.com","sharethrough.adnxs.com","cdn.adnxs.com","vcdn.adnxs.com"]},{"name":"VK","homepage":"https://vk.com/","categories":["social"],"domains":["*.vk.com"]},{"name":"LiveChat","homepage":"https://www.livechatinc.com/","categories":["customer-success"],"domains":["*.livechatinc.com"],"examples":["cdn.livechatinc.com","secure.livechatinc.com"]},{"name":"OneSignal","homepage":"https://onesignal.com/","categories":["utility"],"domains":["*.onesignal.com"],"examples":["cdn.onesignal.com","https://onesignal.com/api/v1/sync/"]},{"name":"WordAds","company":"Automattic","homepage":"https://wordads.co/","categories":["ad"],"domains":["*.pubmine.com"],"examples":["s.pubmine.com"]},{"name":"Integral Ad Science","homepage":"https://integralads.com/uk/","categories":["ad"],"domains":["*.adsafeprotected.com","*.iasds01.com"],"examples":["pixel.adsafeprotected.com","static.adsafeprotected.com","fw.adsafeprotected.com","cdn.adsafeprotected.com","dt.adsafeprotected.com"]},{"name":"Amazon Ads","homepage":"https://ad.amazon.com/","categories":["ad"],"domains":["*.amazon-adsystem.com"],"examples":["s.amazon-adsystem.com","c.amazon-adsystem.com","aax.amazon-adsystem.com","z-na.amazon-adsystem.com","fls-na.amazon-adsystem.com","aax-us-east.amazon-adsystem.com","ir-na.amazon-adsystem.com"]},{"name":"Yahoo!","homepage":"https://www.yahoo.com/","categories":["ad"],"domains":["*.bluelithium.com","*.hostingprod.com","*.lexity.com","*.yahoo.com","*.yahooapis.com","*.yimg.com","*.yimg.jp","*.zenfs.com","*.yahoo.net"],"examples":["ads.yahoo.com","analytics.yahoo.com","geo.yahoo.com","udc.yahoo.com","ganon.yahoo.com","ads.yap.yahoo.com"]},{"name":"Hatena Blog","homepage":"https://hatenablog.com/","categories":["hosting"],"domains":["*.st-hatena.com","*.hatena.ne.jp"],"examples":["cdn.blog.st-hatena.com","cdn.pool.st-hatena.com","cdn7.www.st-hatena.com","s.hatena.ne.jp","b.st-hatena.com"]},{"name":"Pinterest","homepage":"https://pinterest.com/","categories":["social"],"domains":["*.pinimg.com","*.pinterest.com"],"examples":["assets.pinterest.com","ct.pinterest.com","log.pinterest.com"]},{"name":"LinkedIn","homepage":"https://www.linkedin.com/","categories":["social"],"domains":["*.bizographics.com","platform.linkedin.com","*.slideshare.com","*.slidesharecdn.com"]},{"name":"Stripe","homepage":"https://stripe.com","categories":["utility"],"domains":["*.stripe.com","*.stripecdn.com","*.stripe.network"],"examples":["m.stripe.network","js.stripe.com"]},{"name":"Taboola","homepage":"https://www.taboola.com/","categories":["ad"],"domains":["*.taboola.com","*.taboolasyndication.com"],"examples":["cdn.taboola.com","trc.taboola.com","vidstat.taboola.com","images.taboola.com"]},{"name":"Weebly","homepage":"https://www.weebly.com/","categories":["hosting"],"domains":["*.editmysite.com"]},{"name":"Bing Ads","homepage":"https://bingads.microsoft.com","categories":["ad"],"domains":["*.bing.com","*.microsoft.com","*.msn.com","*.s-msft.com","*.s-msn.com","*.msads.net","*.msecnd.net","*.windows.net"],"examples":["bat.bing.com","c.bing.com","bat.r.msn.com","ajax.microsoft.com"]},{"name":"Intercom","homepage":"https://www.intercom.com","categories":["customer-success"],"domains":["*.intercomcdn.com","*.intercom.io"],"examples":["js.intercomcdn.com","api-iam.intercom.io","widget.intercom.io","nexus-websocket-a.intercom.io"]},{"name":"Crazy Egg","homepage":"https://www.crazyegg.com/","categories":["analytics"],"domains":["*.cetrk.com","*.crazyegg.com","*.hellobar.com","dnn506yrbagrg.cloudfront.net"]},{"name":"Amazon Pay","homepage":"https://pay.amazon.com","categories":["utility"],"domains":["payments.amazon.com","*.payments-amazon.com"]},{"name":"Histats","homepage":"http://histats.com/","categories":["analytics"],"domains":["*.histats.com"],"examples":["s10.histats.com"]},{"name":"Adform","categories":["ad"],"domains":["*.adform.net","*.adformdsp.net"]},{"name":"Datacamp","categories":["utility"],"domains":["*.cdn77.org"]},{"name":"Tealium","homepage":"https://tealium.com/","categories":["tag-manager"],"domains":["*.aniview.com","*.delvenetworks.com","*.limelight.com","*.tiqcdn.com","*.llnwd.net","*.tealiumiq.com"],"examples":["tags.tiqcdn.com","tealium.hs.llnwd.net","link.videoplatform.limelight.com","datacloud.tealiumiq.com"]},{"name":"Optimizely","homepage":"https://www.optimizely.com/","categories":["analytics"],"domains":["*.optimizely.com"],"examples":["cdn.optimizely.com","cdn-pci.optimizely.com","logx.optimizely.com","cdn3.optimizely.com"]},{"name":"Yotpo","homepage":"https://www.yotpo.com/","categories":["marketing"],"domains":["*.yotpo.com"]},{"name":"Trust Pilot","categories":["analytics"],"domains":["*.trustpilot.com"]},{"name":"Privy","categories":["ad"],"domains":["*.privy.com","*.privymktg.com"]},{"name":"Baidu Analytics","homepage":"https://tongji.baidu.com/web/welcome/login","categories":["analytics"],"domains":["*.baidu.com"],"examples":["hm.baidu.com"]},{"name":"Wistia","homepage":"https://wistia.com/","categories":["video"],"domains":["*.wistia.com","embedwistia-a.akamaihd.net","*.wistia.net"],"examples":["fast.wistia.com","fast.wistia.net","distillery.wistia.com","pipedream.wistia.com"]},{"name":"iubenda","categories":["utility"],"domains":["*.iubenda.com"],"examples":["www.iubenda.com"]},{"name":"Nielsen NetRatings SiteCensus","company":"The Nielsen Company","homepage":"http://www.nielsen-online.com/intlpage.html","categories":["analytics"],"domains":["*.imrworldwide.com"]},{"name":"BrightTag / Signal","company":"Signal","homepage":"https://www.signal.co","categories":["tag-manager"],"domains":["*.btstatic.com","*.thebrighttag.com"]},{"name":"mPulse","homepage":"https://developer.akamai.com/akamai-mpulse","categories":["analytics"],"domains":["*.akstat.io","*.go-mpulse.net","*.mpulse.net","*.mpstat.us"],"examples":["c.go-mpulse.net","0211c83c.akstat.io"]},{"name":"PayPal","homepage":"https://paypal.com","categories":["utility"],"domains":["*.paypal.com","*.paypalobjects.com"],"examples":["www.paypalobjects.com"]},{"name":"Sentry","homepage":"https://sentry.io/","categories":["utility"],"domains":["*.getsentry.com","*.ravenjs.com","*.sentry-cdn.com"],"examples":["cdn.ravenjs.com","browser.sentry-cdn.com"]},{"name":"Cookiebot","homepage":"https://www.cookiebot.com/","categories":["utility"],"domains":["*.cookiebot.com"],"examples":["consent.cookiebot.com"]},{"name":"Distil Networks","homepage":"https://www.distilnetworks.com/","categories":["utility"],"domains":["*.areyouahuman.com"],"examples":["n-cdn.areyouahuman.com"]},{"name":"Adobe TypeKit","company":"Adobe","homepage":"https://fonts.adobe.com/","categories":["cdn"],"domains":["*.typekit.com","*.typekit.net"],"examples":["use.typekit.net","p.typekit.net"]},{"name":"Kakao","categories":["social"],"domains":["*.daum.net","*.daumcdn.net"]},{"name":"Bold Commerce","categories":["utility"],"domains":["*.shappify-cdn.com","*.shappify.com","*.boldapps.net"]},{"name":"Akamai","homepage":"https://www.akamai.com/","categories":["cdn"],"domains":["23.62.3.183","*.akamaitechnologies.com","*.akamaitechnologies.fr","*.akamai.net","*.akamaiedge.net","*.akamaihd.net","*.akamaized.net","*.edgefcs.net","*.edgekey.net","edgesuite.net","*.srip.net"]},{"name":"Segment","homepage":"https://segment.com/","categories":["analytics"],"domains":["*.segment.com","*.segment.io"],"examples":["cdn.segment.com","api.segment.io"]},{"name":"District M","categories":["ad"],"domains":["*.districtm.io"]},{"name":"Bigcommerce","categories":["marketing"],"domains":["*.bigcommerce.com"]},{"name":"Dealer","homepage":"https://www.dealer.com/","categories":["hosting"],"domains":["*.dealer.com"],"examples":["static.dealer.com"]},{"name":"Klaviyo","categories":["ad"],"domains":["*.klaviyo.com"]},{"name":"Rambler","company":"Rambler & Co","categories":["utility"],"domains":["*.rambler.ru"]},{"name":"Tumblr","homepage":"https://tumblr.com/","categories":["social"],"domains":["*.tumblr.com"],"examples":["assets.tumblr.com","static.tumblr.com"]},{"name":"Snapchat","homepage":"https://www.snapchat.com","categories":["analytics"],"domains":["*.snapchat.com","*.sc-static.net"],"examples":["tr.snapchat.com"]},{"name":"VigLink","categories":["ad"],"domains":["*.viglink.com"]},{"name":"StatCounter","categories":["analytics"],"domains":["*.statcounter.com"]},{"name":"TrustArc","homepage":"https://www.trustarc.com/","categories":["utility"],"domains":["*.trustarc.com"],"examples":["choices.trustarc.com","consent.trustarc.com"]},{"name":"Tidio Live Chat","company":"Tidio","homepage":"https://www.tidiochat.com/en/","categories":["customer-success"],"domains":["*.tidiochat.com"]},{"name":"DoubleVerify","homepage":"https://www.doubleverify.com/","categories":["ad"],"domains":["*.doubleverify.com","*.dvtps.com","*.iqfp1.com"],"examples":["cdn.doubleverify.com","cdn3.doubleverify.com","tps.doubleverify.com","tps712.doubleverify.com","tps714.doubleverify.com","tps706.doubleverify.com","tps700.doubleverify.com","tps707.doubleverify.com","rtb2.doubleverify.com","rtb0.doubleverify.com","rtbcdn.doubleverify.com","tps11020.doubleverify.com","tm.iqfp1.com"]},{"name":"Instagram","homepage":"https://www.instagram.com","categories":["social"],"domains":["*.cdninstagram.com","*.instagram.com"],"examples":["scontent.cdninstagram.com"]},{"name":"OptinMonster","homepage":"https://optinmonster.com/","categories":["marketing"],"domains":["*.opmnstr.com","*.optmnstr.com","*.optmstr.com"],"examples":["a.optmstr.com","api.opmnstr.com","a.optmnstr.com"]},{"name":"Evidon","categories":["analytics"],"domains":["*.evidon.com"]},{"name":"Lucky Orange","homepage":"https://www.luckyorange.com/","categories":["analytics"],"domains":["*.luckyorange.com","d10lpsik1i8c69.cloudfront.net","*.luckyorange.net"]},{"name":"Gemius","categories":["ad"],"domains":["*.gemius.pl"]},{"name":"Olark","homepage":"https://www.olark.com/","categories":["customer-success"],"domains":["*.olark.com"],"examples":["static.olark.com"]},{"name":"CallRail","categories":["analytics"],"domains":["*.callrail.com"]},{"name":"Mixpanel","homepage":"https://mixpanel.com/","categories":["analytics"],"domains":["*.mixpanel.com","*.mxpnl.com"],"examples":["cdn.mxpnl.com"]},{"name":"OpenX","homepage":"https://www.openx.com/","categories":["ad"],"domains":["*.deliverimp.com","*.openxadexchange.com","*.servedbyopenx.com","*.jump-time.net","*.openx.net"],"examples":["uk-ads.openx.net","us-ads.openx.net","33across-d.openx.net","rtb.openx.net","us-u.openx.net","eu-u.openx.net","u.openx.net"]},{"name":"CreateJS CDN","homepage":"http://code.createjs.com/","categories":["cdn"],"domains":["*.createjs.com"],"examples":["code.createjs.com"]},{"name":"Chartbeat","categories":["analytics"],"domains":["*.chartbeat.com","*.chartbeat.net"]},{"name":"Sizmek","homepage":"https://www.sizmek.com/","categories":["ad"],"domains":["*.serving-sys.com","*.peer39.net"],"examples":["secure-ds.serving-sys.com","ds.serving-sys.com","bs.serving-sys.com"]},{"name":"FullStory","categories":["analytics"],"domains":["*.fullstory.com"],"examples":["rs.fullstory.com"]},{"name":"Snowplow","homepage":"https://snowplowanalytics.com/","categories":["analytics"],"domains":["d32hwlnfiv2gyn.cloudfront.net"]},{"name":"Brightcove","homepage":"https://www.brightcove.com/en/","categories":["video"],"domains":["*.brightcove.com","*.brightcove.net","*.zencdn.net"],"examples":["vjs.zencdn.net","players.brightcove.net"]},{"name":"GoDaddy","homepage":"https://www.godaddy.com/","categories":["utility"],"domains":["*.godaddy.com","*.wsimg.com"],"examples":["ocsp.godaddy.com","seal.godaddy.com"]},{"name":"Inspectlet","categories":["analytics"],"domains":["*.inspectlet.com"]},{"name":"Teads","categories":["ad"],"domains":["*.teads.tv"]},{"name":"New Relic","homepage":"https://newrelic.com/","categories":["utility"],"domains":["*.newrelic.com","*.nr-data.net"],"examples":["js-agent.newrelic.com","bam.nr-data.net"]},{"name":"Ensighten","homepage":"https://www.ensighten.com/","categories":["tag-manager"],"domains":["*.ensighten.com"],"examples":["nexus.ensighten.com"]},{"name":"Parking Crew","homepage":"http://parkingcrew.net/","categories":["other"],"domains":["d1lxhc4jvstzrp.cloudfront.net","*.parkingcrew.net"]},{"name":"Azure Web Services","company":"Microsoft","categories":["cdn"],"domains":["*.azurewebsites.net","*.azureedge.net","*.msedge.net"]},{"name":"BlueKai","company":"Oracle","categories":["ad"],"domains":["*.bkrtx.com","*.bluekai.com"]},{"name":"Treasure Data","categories":["analytics"],"domains":["*.treasuredata.com"]},{"name":"Drift","homepage":"https://www.drift.com/","categories":["marketing"],"domains":["*.drift.com","*.driftt.com"],"examples":["js.driftt.com","api.drift.com"]},{"name":"MGID","homepage":"https://www.mgid.com/","categories":["ad"],"domains":["*.mgid.com","*.dt07.net"],"examples":["servicer.mgid.com"]},{"name":"Microsoft Hosted Libs","company":"Microsoft","categories":["cdn"],"domains":["*.aspnetcdn.com"],"examples":["ajax.aspnetcdn.com"]},{"name":"33 Across","homepage":"https://33across.com/","categories":["ad"],"domains":["*.33across.com"],"examples":["sic.33across.com","cdn-sic.33across.com"]},{"name":"Monotype","categories":["cdn"],"domains":["*.fonts.com","*.fonts.net"]},{"name":"DTSCOUT","categories":["ad"],"domains":["*.dtscout.com"]},{"name":"WordPress Site Stats","company":"Automattic","homepage":"https://wp.com/","categories":["analytics"],"domains":["pixel.wp.com","stats.wp.com"]},{"name":"Mapbox","categories":["utility"],"domains":["*.mapbox.com"]},{"name":"MediaVine","homepage":"https://www.mediavine.com/","categories":["ad"],"domains":["*.mediavine.com"],"examples":["scripts.mediavine.com","video.mediavine.com"]},{"name":"Shareaholic","homepage":"https://www.shareaholic.com/","categories":["social"],"domains":["*.shareaholic.com","dsms0mj1bbhn4.cloudfront.net"]},{"name":"Dataxu","categories":["marketing"],"domains":["*.w55c.net"]},{"name":"MailMunch","categories":["ad"],"domains":["*.mailmunch.co"]},{"name":"Cxense","categories":["ad"],"domains":["*.cxense.com","*.cxpublic.com","*.emediate.dk","*.emediate.eu"]},{"name":"Marchex","categories":["analytics"],"domains":["*.voicestar.com","*.marchex.io"]},{"name":"Fastly","categories":["utility"],"domains":["*.fastly.net"]},{"name":"Unpkg","homepage":"https://unpkg.com","categories":["cdn"],"domains":["*.unpkg.com"]},{"name":"LivePerson","categories":["customer-success"],"homepage":"https://www.liveperson.com/","domains":["*.liveperson.com","*.look.io","*.liveperson.net","*.lpsnmedia.net"]},{"name":"SoundCloud","homepage":"https://www.soundcloud.com/","categories":["content"],"domains":["*.sndcdn.com","*.soundcloud.com","*.stratus.sc"],"examples":["widget.sndcdn.com"]},{"name":"VWO","homepage":"https://vwo.com","categories":["analytics"],"domains":["*.visualwebsiteoptimizer.com"],"examples":["dev.visualwebsiteoptimizer.com"]},{"name":"StickyADS.tv","categories":["ad"],"domains":["*.stickyadstv.com"]},{"name":"PushCrew","categories":["ad"],"domains":["*.pushcrew.com"]},{"name":"Embedly","categories":["content"],"domains":["*.embedly.com","*.embed.ly"]},{"name":"CDK Dealer Management","company":"CDK Global","homepage":"https://www.cdkglobal.com/us","categories":["hosting"],"domains":["*.assets-cdk.com"],"examples":["media-cf.assets-cdk.com"]},{"name":"Popads","homepage":"https://www.popads.net/","categories":["ad"],"domains":["*.popads.net"],"examples":["serve.popads.net","c1.popads.net"]},{"name":"FreakOut","categories":["ad"],"domains":["*.fout.jp"]},{"name":"SnapWidget","categories":["content"],"domains":["*.snapwidget.com"]},{"name":"Pure Chat","categories":["customer-success"],"domains":["*.purechat.com"]},{"name":"Outbrain","homepage":"https://www.outbrain.com/","categories":["ad"],"domains":["*.outbrain.com","*.outbrainimg.com","*.visualrevenue.com"]},{"name":"RD Station","homepage":"https://www.rdstation.com/en/","categories":["marketing"],"domains":["d335luupugsy2.cloudfront.net"]},{"name":"LiveJournal","categories":["social"],"domains":["*.livejournal.com","*.livejournal.net"]},{"name":"ContactAtOnce","homepage":"https://www.contactatonce.com/","categories":["customer-success"],"domains":["*.contactatonce.com"],"examples":["tag.contactatonce.com","agentpresence.contactatonce.com"]},{"name":"Ezoic","categories":["analytics"],"domains":["*.ezoic.net"]},{"name":"AB Tasty","categories":["analytics"],"domains":["*.abtasty.com","d1447tq2m68ekg.cloudfront.net"]},{"name":"Quantcast","homepage":"https://www.quantcast.com","categories":["analytics"],"domains":["*.brtstats.com","*.quantcount.com","*.quantserve.com","*.semantictec.com","*.ntv.io"],"examples":["pixel.quantserve.com","secure.quantserve.com","cms.quantserve.com","rules.quantcount.com"]},{"name":"DigiTrust","homepage":"http://www.digitru.st/","categories":["analytics"],"domains":["*.digitru.st"],"examples":["cdn.digitru.st"]},{"name":"LongTail Ad Solutions","categories":["ad"],"domains":["*.jwpcdn.com","*.jwplatform.com","*.jwplayer.com","*.jwpltx.com","*.jwpsrv.com","*.longtailvideo.com"]},{"name":"Parse.ly","categories":["analytics"],"domains":["*.parsely.com","d1z2jf7jlzjs58.cloudfront.net"]},{"name":"Index Exchange","company":"WPP","categories":["ad"],"domains":["*.casalemedia.com","*.indexww.com"]},{"name":"Clicktripz","categories":["content"],"domains":["*.clicktripz.com"],"examples":["static.clicktripz.com","www.clicktripz.com"]},{"name":"Ve","company":"Ve Interactive","categories":["marketing"],"domains":["*.veinteractive.com"]},{"name":"Adloox","categories":["ad"],"domains":["*.adlooxtracking.com"]},{"name":"GumGum","categories":["ad"],"domains":["*.gumgum.com"]},{"name":"Digital ad Consortium","categories":["ad"],"domains":["*.impact-ad.jp"]},{"name":"Amplitude Mobile Analytics","company":"Amplitude","categories":["analytics"],"domains":["*.amplitude.com","d24n15hnbwhuhn.cloudfront.net"]},{"name":"Adobe Business Catalyst","homepage":"https://www.businesscatalyst.com/","categories":["hosting"],"domains":["*.businesscatalyst.com"]},{"name":"LightWidget","categories":["utility"],"domains":["*.lightwidget.com"]},{"name":"Spotify","homepage":"https://www.spotify.com/","categories":["content"],"domains":["*.scdn.co","*.spotify.com"],"examples":["open.spotify.com","open.scdn.co","i.scdn.co"]},{"name":"SmartAdServer","categories":["ad"],"domains":["*.01net.com","*.sascdn.com"],"examples":["securite.01net.com"]},{"name":"Adroll","homepage":"https://www.adroll.com/","categories":["ad"],"domains":["*.adroll.com"],"examples":["d.adroll.com","s.adroll.com"]},{"name":"PureCars","homepage":"https://www.purecars.com/","categories":["marketing"],"domains":["*.purecars.com"],"examples":["cdn.purecars.com"]},{"name":"Keen","company":"Keen","homepage":"https://keen.io/","categories":["analytics"],"domains":["*.keen.io","d26b395fwzu5fz.cloudfront.net"]},{"name":"Infolinks","categories":["ad"],"domains":["*.infolinks.com"]},{"name":"Unbounce","categories":["ad"],"domains":["*.ubembed.com","*.unbounce.com","d2xxq4ijfwetlm.cloudfront.net","d9hhrg4mnvzow.cloudfront.net"]},{"name":"Roxr Software","categories":["analytics"],"domains":["*.getclicky.com"]},{"name":"OpenTable","company":"Priceline Group","categories":["content"],"domains":["*.opentable.com","*.opentable.co.uk","*.toptable.co.uk"],"examples":["www.toptable.co.uk"]},{"name":"uLogin","categories":["other"],"domains":["*.ulogin.ru"]},{"name":"Searchanise","categories":["analytics"],"domains":["*.searchanise.com"],"examples":["www.searchanise.com"]},{"name":"Gigya","categories":["analytics"],"domains":["*.gigya.com"]},{"name":"Net Reviews","categories":["analytics"],"domains":["*.avis-verifies.com"],"examples":["www.avis-verifies.com"]},{"name":"Booking.com","categories":["content"],"domains":["*.bstatic.com"]},{"name":"Disqus","homepage":"http://disqus.com/","categories":["social"],"domains":["*.disqus.com","*.disquscdn.com"],"examples":["c.disquscdn.com"]},{"name":"Tray Commerce","homepage":"https://www.tray.com.br/","categories":["marketing"],"domains":["*.tcdn.com.br"],"examples":["images.tcdn.com.br"]},{"name":"Crowd Control","company":"Lotame","categories":["ad"],"domains":["*.crwdcntrl.net"]},{"name":"Intent Media","homepage":"https://intent.com/","categories":["ad"],"domains":["*.intentmedia.net"]},{"name":"issuu","categories":["content"],"domains":["*.issuu.com","*.isu.pub"]},{"name":"Salesforce Commerce Cloud","homepage":"https://www.salesforce.com/products/commerce-cloud/overview/","categories":["hosting"],"domains":["*.cquotient.com","*.demandware.net","demandware.edgesuite.net"]},{"name":"sovrn","categories":["ad"],"domains":["*.lijit.com"]},{"name":"JuicyAds","categories":["ad"],"domains":["*.juicyads.com"]},{"name":"Sharethrough","categories":["ad"],"domains":["*.sharethrough.com"]},{"name":"Heap","categories":["analytics"],"domains":["*.heapanalytics.com"]},{"name":"LiveTex","categories":["customer-success"],"domains":["*.livetex.ru"]},{"name":"Nosto","categories":["analytics"],"domains":["*.nosto.com"]},{"name":"fluct","categories":["ad"],"domains":["*.adingo.jp"]},{"name":"Smart AdServer","categories":["ad"],"domains":["*.sasqos.com","*.smartadserver.com"]},{"name":"fam","company":"Fing Co Ltd.","homepage":"http://admin.fam-ad.com/report/","categories":["ad"],"domains":["*.fam-ad.com"],"examples":["img.fam-ad.com"]},{"name":"ExoClick","categories":["ad"],"domains":["*.exoclick.com"]},{"name":"BannerFlow","company":"Nordic Factory Solutions","categories":["ad"],"domains":["*.bannerflow.com"]},{"name":"iPerceptions","categories":["customer-success"],"domains":["*.iperceptions.com"]},{"name":"Albacross","homepage":"https://albacross.com/","categories":["marketing"],"domains":["*.albacross.com"],"examples":["serve.albacross.com"]},{"name":"RevJet","homepage":"https://www.revjet.com/","categories":["ad"],"domains":["*.revjet.com"],"examples":["pix.revjet.com","ads.revjet.com"]},{"name":"Trusted Shops","categories":["utility"],"domains":["*.trustedshops.com"]},{"name":"MaxCDN Enterprise","company":"MaxCDN","categories":["utility"],"domains":["*.netdna-cdn.com","*.netdna-ssl.com"]},{"name":"etracker","categories":["analytics"],"domains":["*.etracker.com","*.etracker.de"],"examples":["www.etracker.com"]},{"name":"Yandex CDN","company":"Yandex","homepage":"https://yandex.ru/","categories":["cdn"],"domains":["*.yandex.st"]},{"name":"LKQD","categories":["ad"],"domains":["*.lkqd.net"]},{"name":"Sift Science","categories":["utility"],"domains":["*.siftscience.com"]},{"name":"Help Scout","homepage":"https://www.helpscout.net/","categories":["customer-success"],"domains":["djtflbt20bdde.cloudfront.net","*.helpscout.net"],"examples":["beacon-v2.helpscout.net"]},{"name":"Seznam","categories":["utility"],"domains":["*.imedia.cz"]},{"name":"Vidible","categories":["ad"],"domains":["*.vidible.tv"]},{"name":"Media Math","homepage":"http://www.mediamath.com/","categories":["ad"],"domains":["*.mathads.com","*.mathtag.com"],"examples":["mathid.mathtag.com","sync.mathtag.com","pixel.mathtag.com"]},{"name":"Simplicity Marketing","categories":["ad"],"domains":["*.flashtalking.com"]},{"name":"Mouseflow","categories":["analytics"],"domains":["*.mouseflow.com"]},{"name":"Siteimprove","categories":["utility"],"domains":["*.siteimprove.com","*.siteimproveanalytics.com"]},{"name":"GetSiteControl","company":"GetWebCraft","categories":["utility"],"domains":["*.getsitecontrol.com"]},{"name":"AOL / Oath / Verizon Media","homepage":"https://www.oath.com/","categories":["ad"],"domains":["*.advertising.com","*.aol.com","*.aolcdn.com","*.blogsmithmedia.com","*.oath.com","*.aol.net","*.tacoda.net","*.aol.co.uk"],"examples":["pixel.advertising.com","dtm.advertising.com","tag.sp.advertising.com","service.sp.advertising.com","adtech.advertising.com","adaptv.advertising.com","mighty.aol.net","consent.cmp.oath.com"]},{"name":"Accuweather","categories":["content"],"domains":["*.accuweather.com"]},{"name":"Feefo.com","company":"Feefo","categories":["analytics"],"domains":["*.feefo.com"]},{"name":"Constant Contact","categories":["ad"],"domains":["*.ctctcdn.com"]},{"name":"Rakuten Marketing","company":"Rakuten","categories":["ad"],"domains":["*.rakuten-static.com","*.rmtag.com"]},{"name":"TrafficStars","categories":["ad"],"domains":["*.trafficstars.com","*.tsyndicate.com"]},{"name":"ForeSee","company":"Answers","categories":["analytics"],"domains":["*.4seeresults.com","*.answerscloud.com","*.foresee.com","*.foreseeresults.com"]},{"name":"Swiftype","categories":["utility"],"domains":["*.swiftype.com","*.swiftypecdn.com"]},{"name":"Bazaarvoice","categories":["analytics"],"domains":["*.bazaarvoice.com","*.feedmagnet.com"]},{"name":"SocialShopWave","categories":["social"],"domains":["*.socialshopwave.com"]},{"name":"Bootstrap CDN","homepage":"https://www.bootstrapcdn.com/","categories":["cdn"],"domains":["*.bootstrapcdn.com"],"examples":["maxcdn.bootstrapcdn.com","stackpath.bootstrapcdn.com"]},{"name":"SessionCam","company":"ServiceTick","categories":["analytics"],"domains":["*.sessioncam.com","d2oh4tlt9mrke9.cloudfront.net"]},{"name":"AppDynamics","homepage":"https://www.appdynamics.com/","categories":["utility"],"domains":["*.appdynamics.com","*.eum-appdynamics.com","d3tjaysgumg9lf.cloudfront.net"],"examples":["cdn.appdynamics.com"]},{"name":"Adyoulike","categories":["ad"],"domains":["*.adyoulike.com","*.omnitagjs.com","*.adyoulike.net"]},{"name":"Affirm","categories":["utility"],"domains":["*.affirm.com"]},{"name":"Sortable","categories":["ad"],"domains":["*.deployads.com"]},{"name":"Neodata","categories":["ad"],"domains":["*.neodatagroup.com"]},{"name":"Adnium","categories":["ad"],"domains":["*.adnium.com"]},{"name":"AdScore","homepage":"https://www.adscore.com/","categories":["ad"],"domains":["*.adsco.re"],"examples":["c.adsco.re"]},{"name":"Comm100","categories":["customer-success"],"domains":["*.comm100.com"]},{"name":"Medium","categories":["content"],"domains":["*.medium.com"]},{"name":"Esri ArcGIS","company":"Esri","categories":["utility"],"domains":["*.arcgis.com","*.arcgisonline.com"]},{"name":"iBillboard","categories":["ad"],"domains":["*.ibillboard.com"]},{"name":"Hotmart","homepage":"https://www.hotmart.com/","categories":["content"],"domains":["*.hotmart.com"],"examples":["launchermodule.hotmart.com"]},{"name":"Secomapp","categories":["utility"],"domains":["*.secomapp.com"]},{"name":"AdMatic","categories":["ad"],"domains":["*.admatic.com.tr"]},{"name":"Dailymotion","categories":["content"],"domains":["*.dailymotion.com","*.dmxleo.com","*.dm.gg","*.pxlad.io","*.dmcdn.net","*.sublimevideo.net"],"examples":["ad.pxlad.io","www.dailymotion.com"]},{"name":"Foursixty","categories":["customer-success"],"domains":["*.foursixty.com"]},{"name":"OptiMonk","categories":["ad"],"domains":["*.optimonk.com"]},{"name":"Refersion","categories":["ad"],"domains":["*.refersion.com"]},{"name":"Pardot","categories":["marketing"],"domains":["*.pardot.com"]},{"name":"GitHub","categories":["utility"],"domains":["*.rawgit.com"],"examples":["cdn.rawgit.com"]},{"name":"Alexa","homepage":"https://www.alexa.com/","categories":["analytics"],"domains":["*.alexametrics.com","d31qbv1cthcecs.cloudfront.net"],"examples":["certify.alexametrics.com"]},{"name":"Bugsnag","categories":["utility"],"domains":["*.bugsnag.com","d2wy8f7a9ursnm.cloudfront.net"],"examples":["notify.bugsnag.com"]},{"name":"ResponsiveVoice","categories":["other"],"domains":["*.responsivevoice.org"]},{"name":"ContentSquare","categories":["analytics"],"domains":["d1m6l9dfulcyw7.cloudfront.net","*.content-square.net","*.contentsquare.net"]},{"name":"BounceX","categories":["analytics"],"homepage":"https://www.bouncex.com/","domains":["*.bounceexchange.com","*.bouncex.net"],"examples":["events.bouncex.net"]},{"name":"Tencent","categories":["content"],"domains":["*.qq.com","*.ywxi.net"]},{"name":"TagCommander","categories":["tag-manager"],"domains":["*.commander1.com","*.tagcommander.com"]},{"name":"Between Digital","categories":["ad"],"domains":["*.betweendigital.com"]},{"name":"Tribal Fusion","company":"Exponential Interactive","categories":["ad"],"domains":["*.tribalfusion.com"]},{"name":"iovation","categories":["utility"],"domains":["*.iesnare.com"]},{"name":"Auto Link Maker","company":"Apple","categories":["ad"],"domains":["*.apple.com"],"examples":["autolinkmaker.itunes.apple.com"]},{"name":"SnapEngage","categories":["customer-success"],"domains":["*.snapengage.com"]},{"name":"iAdvize SAS","categories":["customer-success"],"domains":["*.iadvize.com"]},{"name":"Listrak","homepage":"https://www.listrak.com/","categories":["marketing"],"domains":["*.listrak.com","*.listrakbi.com"],"examples":["cdn.listrakbi.com","s1.listrakbi.com"]},{"name":"Branch Metrics","categories":["ad"],"domains":["*.branch.io","*.app.link"]},{"name":"Admixer for Publishers","company":"Admixer","categories":["ad"],"domains":["*.admixer.net"]},{"name":"Tail Target","company":"Tail","categories":["ad"],"domains":["*.tailtarget.com"]},{"name":"Clicktale","categories":["analytics"],"domains":["*.cdngc.net","*.clicktale.net"],"examples":["clicktalecdn.sslcs.cdngc.net"]},{"name":"Maxymiser","categories":["analytics"],"domains":["*.maxymiser.net"]},{"name":"Marketo","homepage":"https://www.marketo.com","categories":["analytics"],"domains":["*.marketo.com","*.mktoresp.com","*.marketo.net"],"examples":["munchkin.marketo.net"]},{"name":"Bizible","categories":["ad"],"domains":["*.bizible.com","*.bizibly.com"]},{"name":"LoyaltyLion","categories":["ad"],"domains":["*.loyaltylion.com","*.loyaltylion.net","dg1f2pfrgjxdq.cloudfront.net"]},{"name":"Convert Insights","categories":["analytics"],"domains":["*.convertexperiments.com"]},{"name":"Opentag","company":"Qubit","categories":["tag-manager"],"domains":["*.qutics.com","d3c3cq33003psk.cloudfront.net"],"examples":["opentag-stats.qutics.com"]},{"name":"Adverline Board","company":"Adverline","categories":["ad"],"domains":["*.adverline.com","*.adnext.fr"]},{"name":"Optanon","homepage":"https://www.cookielaw.org/","categories":["utility"],"domains":["*.onetrust.com","*.cookielaw.org"],"examples":["cdn.cookielaw.org","geolocation.onetrust.com"]},{"name":"Adocean","company":"Gemius","categories":["ad"],"domains":["*.adocean.pl"]},{"name":"Po.st","company":"RadiumOne","categories":["utility"],"domains":["*.po.st"]},{"name":"Yieldmo","categories":["ad"],"domains":["*.yieldmo.com"]},{"name":"Market GID","homepage":"https://www.marketgid.com/","categories":["ad"],"domains":["*.marketgid.com"],"examples":["jsc.marketgid.com"]},{"name":"TRUSTe","categories":["utility"],"domains":["*.truste.com"]},{"name":"One by AOL","company":"AOL","categories":["ad"],"domains":["*.adtechjp.com","*.adtech.de"]},{"name":"Affiliate Window","company":"Digital Window","categories":["ad"],"domains":["*.dwin1.com"]},{"name":"Pagely","categories":["other"],"domains":["*.optnmstr.com"]},{"name":"Perfect Market","categories":["ad"],"domains":["*.perfectmarket.com"]},{"name":"Symantec","categories":["utility"],"domains":["*.norton.com","*.symantec.com","*.symcb.com","*.symcd.com"],"examples":["extended-validation-ssl.websecurity.symantec.com"]},{"name":"piano","categories":["ad"],"domains":["*.npttech.com","*.tinypass.com"],"examples":["www.npttech.com"]},{"name":"Elastic Ad","categories":["ad"],"domains":["*.elasticad.net"]},{"name":"Freshdesk","homepage":"https://freshdesk.com/","categories":["customer-success"],"domains":["d36mpcpuzc4ztk.cloudfront.net"]},{"name":"IPONWEB","categories":["ad"],"domains":["*.company-target.com","*.liadm.com","*.iponweb.net","*.p161.net"],"examples":["pool.udsp.iponweb.net"]},{"name":"Ecwid","categories":["hosting"],"domains":["*.ecwid.com","*.shopsettings.com","d3fi9i0jj23cau.cloudfront.net","d3j0zfs7paavns.cloudfront.net"]},{"name":"Digioh","categories":["ad"],"domains":["*.lightboxcdn.com"]},{"name":"Fort Awesome","categories":["cdn"],"domains":["*.fortawesome.com"]},{"name":"Nend","categories":["ad"],"domains":["*.nend.net"]},{"name":"Bronto Software","categories":["marketing"],"domains":["*.bm23.com","*.bronto.com","*.brontops.com"]},{"name":"TrackJS","categories":["analytics"],"domains":["*.trackjs.com","d2zah9y47r7bi2.cloudfront.net"],"examples":["usage.trackjs.com"]},{"name":"Dynamic Yield","categories":["customer-success"],"domains":["*.dynamicyield.com"]},{"name":"Clerk.io ApS","categories":["analytics"],"domains":["*.clerk.io"]},{"name":"IBM Digital Analytics","company":"IBM","categories":["analytics"],"domains":["*.cmcore.com","coremetrics.com","data.coremetrics.com","data.de.coremetrics.com","libs.de.coremetrics.com","tmscdn.de.coremetrics.com","iocdn.coremetrics.com","libs.coremetrics.com","tmscdn.coremetrics.com","*.s81c.com","*.unica.com","*.coremetrics.eu"],"examples":["data.coremetrics.eu"]},{"name":"Usabilla","homepage":"https://usabilla.com","categories":["analytics"],"domains":["*.usabilla.com","d6tizftlrpuof.cloudfront.net"],"examples":["w.usabilla.com"]},{"name":"Meetrics","categories":["ad"],"domains":["*.de.com","*.meetrics.net","*.mxcdn.net"],"examples":["research.de.com"]},{"name":"Forensiq","categories":["utility"],"domains":["*.fqtag.com"]},{"name":"Revolver Maps","categories":["analytics"],"domains":["*.revolvermaps.com"]},{"name":"Monetate","categories":["analytics"],"domains":["*.monetate.net"]},{"name":"Fraudlogix","categories":["utility"],"domains":["*.yabidos.com"]},{"name":"Mather Economics","categories":["analytics"],"domains":["*.matheranalytics.com"]},{"name":"Blindado","categories":["utility"],"domains":["*.siteblindado.com"]},{"name":"UserReport","categories":["analytics"],"domains":["*.userreport.com"]},{"name":"OwnerIQ","categories":["ad"],"domains":["*.owneriq.net"]},{"name":"CPEx","categories":["content"],"domains":["*.cpex.cz"]},{"name":"eBay","categories":["ad"],"domains":["*.ebay.com","*.ebayimg.com","*.fetchback.com"]},{"name":"Skype","categories":["other"],"domains":["*.skype.com"]},{"name":"DialogTech","categories":["ad"],"domains":["*.dialogtech.com"]},{"name":"WebsiteBuilder.com","homepage":"https://www.websitebuilder.com","categories":["hosting"],"domains":["*.mywebsitebuilder.com"]},{"name":"iZooto","homepage":"https://www.izooto.com","categories":["marketing"],"domains":["*.izooto.com"],"examples":["cdn.izooto.com"]},{"name":"AddEvent","categories":["utility"],"domains":["*.addevent.com"],"examples":["www.addevent.com"]},{"name":"GetResponse","categories":["ad"],"domains":["*.getresponse.com"]},{"name":"Twitch","homepage":"https://twitch.tv/","categories":["video"],"domains":["*.twitch.tv"],"examples":["player.twitch.tv"]},{"name":"Radar","company":"Cedexis","homepage":"https://www.cedexis.com/radar/","categories":["analytics"],"domains":["*.cedexis-test.com","*.cedexis.com","*.cmdolb.com","cedexis.leasewebcdn.com","*.cedexis-radar.net","*.cedexis.net","cedexis-test01.insnw.net","cedexisakamaitest.azureedge.net","cedexispub.cdnetworks.net","cs600.wac.alphacdn.net","cs600.wpc.edgecastdns.net","global2.cmdolb.com","img-cedexis.mncdn.com","a-cedexis.msedge.net","zn3vgszfh.fastestcdn.net"],"examples":["radar.cedexis.com","rpt.cedexis.com","2-01-49cd-0002.cdx.cedexis.net","bench.cedexis-test.com"]},{"name":"Smart Insight Tracking","company":"Emarsys","categories":["analytics"],"domains":["*.scarabresearch.com"]},{"name":"Polar","homepage":"https://polar.me/","categories":["ad"],"domains":["*.polarmobile.ca","*.mediaeverywhere.com","*.mediavoice.com","*.plrsrvcs.com","*.polarcdn-engine.com","*.polarcdn-meraxes.com","*.polarcdn-pentos.com","*.polarcdn-static.com","*.polarcdn-terrax.com","*.polarcdn.com","*.polarmobile.com","*.poweredbypolar.com","*.mediaconductor.me","*.polaracademy.me"]},{"name":"AudienceSearch","company":"Intimate Merger","categories":["ad"],"domains":["*.im-apps.net"]},{"name":"Autopilot","categories":["ad"],"domains":["*.autopilothq.com"]},{"name":"Rackspace","categories":["hosting"],"domains":["*.rackcdn.com","*.rackspacecloud.com","*.raxcdn.com","*.websitetestlink.com"]},{"name":"PowerReviews","categories":["analytics"],"domains":["*.powerreviews.com"]},{"name":"Rocket Fuel","categories":["ad"],"domains":["*.rfihub.com","*.ru4.com","*.rfihub.net","*.ad1x.com"]},{"name":"Okas Concepts","categories":["utility"],"domains":["*.okasconcepts.com"]},{"name":"Madison Logic","categories":["marketing"],"domains":["*.ml314.com"]},{"name":"Celtra","categories":["ad"],"domains":["*.celtra.com"]},{"name":"Snacktools","categories":["ad"],"domains":["*.bannersnack.com"]},{"name":"ClickDesk","categories":["customer-success"],"domains":["*.clickdesk.com","d1gwclp1pmzk26.cloudfront.net"]},{"name":"F@N Communications","homepage":"https://www.fancs.com/","categories":["ad"],"domains":["*.ladsp.com"],"examples":["px.ladsp.com"]},{"name":"Tradelab","categories":["ad"],"domains":["*.tradelab.fr"]},{"name":"CleverDATA","categories":["ad"],"domains":["*.1dmp.io"]},{"name":"Media Management Technologies","categories":["ad"],"domains":["*.speedshiftmedia.com"]},{"name":"Wishpond Technologies","categories":["marketing"],"domains":["*.wishpond.com","*.wishpond.net"]},{"name":"Reviews.co.uk","categories":["analytics"],"domains":["*.reviews.co.uk"]},{"name":"Adobe Scene7","company":"Adobe Systems","categories":["content"],"domains":["wwwimages.adobe.com","*.scene7.com","*.everestads.net","*.everestjs.net"]},{"name":"Permutive","categories":["ad"],"domains":["*.permutive.com","d3alqb8vzo7fun.cloudfront.net"]},{"name":"plista","categories":["ad"],"domains":["*.plista.com"]},{"name":"Kampyle","categories":["analytics"],"domains":["*.kampyle.com"]},{"name":"LinkedIn Ads","categories":["ad"],"domains":["*.licdn.com","ads.linkedin.com","www.linkedin.com"],"examples":["snap.licdn.com"]},{"name":"Survicate","categories":["analytics"],"domains":["*.survicate.com"]},{"name":"Nativo","categories":["ad"],"domains":["*.postrelease.com"]},{"name":"Decibel Insight","categories":["analytics"],"domains":["*.decibelinsight.net"]},{"name":"Github","categories":["utility"],"domains":["*.github.com","*.githubusercontent.com","*.github.io"],"examples":["raw.githubusercontent.com"]},{"name":"WebEngage","categories":["customer-success"],"domains":["*.webengage.co","*.webengage.com","d23nd6ymopvz52.cloudfront.net","d3701cc9l7v9a6.cloudfront.net"]},{"name":"Geniee","categories":["ad"],"domains":["*.href.asia","*.genieessp.jp","*.genieesspv.jp","*.gssprt.jp"],"examples":["cs.gssprt.jp"]},{"name":"The Trade Desk","homepage":"https://www.thetradedesk.com/","categories":["ad"],"domains":["d1eoo1tco6rr5e.cloudfront.net","*.adsrvr.org"],"examples":["js.adsrvr.org","match.adsrvr.org","insight.adsrvr.org","usw-lax.adsrvr.org","data.adsrvr.org","snap.adsrvr.org"]},{"name":"Lytics","categories":["ad"],"domains":["*.lytics.io"]},{"name":"rewardStyle.com","categories":["ad"],"domains":["*.rewardstyle.com"]},{"name":"Kaltura Video Platform","company":"Kaltura","categories":["content"],"domains":["*.kaltura.com"],"examples":["cdnsecakmi.kaltura.com"]},{"name":"WisePops","categories":["utility"],"domains":["*.wisepops.com"]},{"name":"Picreel","categories":["analytics"],"domains":["*.pcrl.co","*.picreel.com"]},{"name":"Riskified","categories":["utility"],"domains":["*.riskified.com"]},{"name":"Supership","homepage":"https://supership.jp/","categories":["ad"],"domains":["*.socdm.com"]},{"name":"Google Plus","company":"Google","categories":["social"],"domains":["plus.google.com"]},{"name":"Yieldify","categories":["ad"],"domains":["*.yieldify.com","*.yieldifylabs.com","d33wq5gej88ld6.cloudfront.net","dwmvwp56lzq5t.cloudfront.net"],"examples":["geo.yieldifylabs.com"]},{"name":"Smarter Click","categories":["ad"],"domains":["*.smct.co","*.smarterclick.co.uk"]},{"name":"Evergage","categories":["analytics"],"domains":["*.evergage.com","*.evgnet.com"],"examples":["cdn.evgnet.com"]},{"name":"SaleCycle","categories":["ad"],"domains":["*.salecycle.com","d16fk4ms6rqz1v.cloudfront.net","d22j4fzzszoii2.cloudfront.net","d30ke5tqu2tkyx.cloudfront.net"]},{"name":"Zanox","categories":["ad"],"domains":["*.zanox.com","*.zanox.ws"]},{"name":"AddShoppers","categories":["social"],"domains":["*.addshoppers.com","d3rr3d0n31t48m.cloudfront.net","*.shop.pe"]},{"name":"Interpublic Group","categories":["ad"],"domains":["*.mbww.com"]},{"name":"Qualaroo","categories":["analytics"],"domains":["*.qualaroo.com"]},{"name":"BoldChat","company":"LogMeIn","categories":["customer-success"],"domains":["*.boldchat.com"]},{"name":"Effective Measure","categories":["ad"],"domains":["*.effectivemeasure.net"]},{"name":"LoopMe","categories":["ad"],"domains":["*.loopme.biz","*.loopme.com","*.vntsm.com","*.loopme.me"]},{"name":"Sooqr Search","company":"Sooqr","categories":["utility"],"domains":["*.sooqr.com"]},{"name":"smartclip","categories":["ad"],"domains":["*.smartclip.net"]},{"name":"Cloudinary","categories":["content"],"domains":["*.cloudinary.com"]},{"name":"Gleam","categories":["marketing"],"domains":["*.gleam.io"]},{"name":"Revcontent","categories":["content"],"domains":["*.revcontent.com"]},{"name":"Browsealoud","homepage":"https://www.texthelp.com/en-gb/products/browsealoud/","categories":["other"],"domains":["*.browsealoud.com","*.texthelp.com"],"examples":["www.browsealoud.com"]},{"name":"Ooyala","categories":["ad"],"domains":["*.ooyala.com"]},{"name":"Intercept Interactive","categories":["ad"],"domains":["*.undertone.com"]},{"name":"Appier","categories":["ad"],"domains":["*.appier.net"]},{"name":"SublimeSkinz","categories":["ad"],"domains":["*.ayads.co"]},{"name":"KISSmetrics","categories":["analytics"],"domains":["*.kissmetrics.com","doug1izaerwt3.cloudfront.net","dsyszv14g9ymi.cloudfront.net"]},{"name":"Pixlee","categories":["social"],"domains":["*.pixlee.com"]},{"name":"NetFlix","categories":["content"],"domains":["*.nflxext.com","*.nflximg.net"]},{"name":"Shopgate","categories":["utility"],"domains":["*.shopgate.com"]},{"name":"Highcharts","categories":["utility"],"domains":["*.highcharts.com"]},{"name":"Audience 360","company":"Datapoint Media","categories":["ad"],"domains":["*.dpmsrv.com"]},{"name":"Bootstrap Chinese network","categories":["cdn"],"domains":["*.bootcss.com"]},{"name":"Sparkflow","company":"Intercept Interactive","categories":["ad"],"domains":["*.sparkflow.net"]},{"name":"Flowplayer","categories":["content"],"domains":["*.flowplayer.org"]},{"name":"Fresh Relevance","categories":["analytics"],"domains":["*.freshrelevance.com","*.cloudfront.ne","d1y9qtn9cuc3xw.cloudfront.net","d81mfvml8p5ml.cloudfront.net","dkpklk99llpj0.cloudfront.net"],"examples":["d1y9qtn9cuc3xw.cloudfront.ne"]},{"name":"WebpageFX","categories":["ad"],"domains":["*.leadmanagerfx.com"]},{"name":"Simpli.fi","categories":["ad"],"domains":["*.simpli.fi"]},{"name":"Omniconvert","categories":["analytics"],"domains":["*.omniconvert.com","d2tgfbvjf3q6hn.cloudfront.net","d3vbj265bmdenw.cloudfront.net"]},{"name":"Adscale","categories":["ad"],"domains":["*.adscale.de"]},{"name":"Covert Pics","categories":["content"],"domains":["*.covet.pics"]},{"name":"Curalate","categories":["marketing"],"domains":["*.curalate.com","d116tqlcqfmz3v.cloudfront.net"]},{"name":"ReadSpeaker","homepage":"https://www.readspeaker.com","categories":["other"],"domains":["*.readspeaker.com"],"examples":["sf1-eu.readspeaker.com"]},{"name":"Stackla PTY","categories":["social"],"domains":["*.stackla.com"]},{"name":"SpotXchange","categories":["ad"],"domains":["*.spotxcdn.com","*.spotxchange.com","*.spotx.tv"]},{"name":"Qubit Deliver","company":"Qubit","categories":["analytics"],"domains":["d1m54pdnjzjnhe.cloudfront.net","d22rutvoghj3db.cloudfront.net","dd6zx4ibq538k.cloudfront.net"]},{"name":"Opta","company":"Perform Group","categories":["content"],"domains":["*.opta.net"]},{"name":"Unruly Media","categories":["ad"],"domains":["*.unrulymedia.com"]},{"name":"Quantum Metric","homepage":"https://www.quantummetric.com/","categories":["analytics"],"domains":["*.quantummetric.com"]},{"name":"Weborama","categories":["ad"],"domains":["*.weborama.com","*.weborama.fr"]},{"name":"Republer","categories":["ad"],"domains":["*.republer.com"],"examples":["sync.republer.com"]},{"name":"Vox Media","homepage":"https://www.voxmedia.com/","categories":["content"],"domains":["*.vox-cdn.com","*.voxmedia.com"],"examples":["cdn.vox-cdn.com"]},{"name":"FoxyCart","categories":["utility"],"domains":["*.foxycart.com"]},{"name":"Adition","homepage":"https://www.adition.com","categories":["ad"],"domains":["*.adition.com"],"examples":["dsp.adfarm1.adition.com"]},{"name":"LiveHelpNow","categories":["customer-success"],"domains":["*.livehelpnow.net"]},{"name":"DemandBase","categories":["marketing"],"domains":["*.demandbase.com"]},{"name":"Concert","homepage":"https://concert.io/","categories":["ad"],"domains":["*.concert.io"],"examples":["cdn.concert.io"]},{"name":"TINT","categories":["content"],"domains":["*.71n7.com","d33w9bm0n1egwm.cloudfront.net","d36hc0p18k1aoc.cloudfront.net","d3l7tj34e9fc43.cloudfront.net"],"examples":["www.71n7.com"]},{"name":"Arbor","company":"LiveRamp","categories":["other"],"domains":["*.pippio.com"]},{"name":"Vidyard","homepage":"https://www.vidyard.com/","categories":["utility"],"domains":["*.vidyard.com"]},{"name":"linkpulse","categories":["analytics"],"domains":["*.lp4.io"]},{"name":"Edge Web Fonts","company":"Adobe Systems","categories":["cdn"],"domains":["*.edgefonts.net"],"examples":["use.edgefonts.net"]},{"name":"ShopiMind","company":"ShopIMind","categories":["ad"],"domains":["*.shopimind.com"]},{"name":"Feedbackify","company":"InsideMetrics","categories":["analytics"],"domains":["*.feedbackify.com"]},{"name":"Sidecar","categories":["other"],"domains":["*.getsidecar.com","d3v27wwd40f0xu.cloudfront.net"]},{"name":"SearchSpring","categories":["utility"],"domains":["*.searchspring.net"]},{"name":"DMD Marketing","homepage":"https://www.dmdconnects.com/","categories":["ad"],"domains":["*.medtargetsystem.com"]},{"name":"C3 Metrics","categories":["analytics"],"domains":["*.c3tag.com"]},{"name":"FirstImpression","categories":["ad"],"domains":["*.firstimpression.io"]},{"name":"GetIntent RTBSuite","company":"GetIntent","categories":["ad"],"domains":["*.adhigh.net"]},{"name":"unpkg","categories":["utility"],"domains":["*.npmcdn.com"]},{"name":"PerimeterX Bot Defender","company":"PerimeterX","categories":["utility"],"domains":["*.perimeterx.net","*.pxi.pub"]},{"name":"JustPremium Ads","company":"JustPremium","categories":["ad"],"domains":["*.justpremium.com"]},{"name":"Talkable","categories":["ad"],"domains":["*.talkable.com","d2jjzw81hqbuqv.cloudfront.net"],"examples":["www.talkable.com"]},{"name":"Steelhouse","categories":["ad"],"domains":["*.steelhousemedia.com"]},{"name":"Adtech (AOL)","categories":["ad"],"domains":["*.adtechus.com"]},{"name":"Technorati","company":"Synacor","categories":["ad"],"domains":["*.technoratimedia.com"]},{"name":"Drip","company":"The Numa Group","categories":["ad"],"domains":["*.getdrip.com"]},{"name":"VoiceFive","categories":["analytics"],"domains":["*.voicefive.com"]},{"name":"Adkontekst","categories":["ad"],"domains":["*.adkontekst.pl"]},{"name":"Cedato","categories":["ad"],"domains":["*.algovid.com","*.vdoserv.com"]},{"name":"TripAdvisor","categories":["content"],"domains":["*.jscache.com","*.tacdn.com","*.tamgrt.com","*.tripadvisor.com","*.viator.com","*.tripadvisor.co.uk"],"examples":["www.jscache.com","www.tamgrt.com"]},{"name":"Typepad","categories":["hosting"],"domains":["*.typepad.com"]},{"name":"Silverpop","company":"IBM","categories":["ad"],"domains":["*.mkt912.com","*.mkt922.com","*.mkt932.com","*.mkt941.com","*.mkt51.net","*.mkt61.net","*.pages01.net","*.pages02.net","*.pages03.net","*.pages04.net","*.pages05.net"]},{"name":"Attentive","homepage":"https://attentivemobile.com/","categories":["ad"],"domains":["*.attn.tv","*.attentivemobile.com"]},{"name":"Salesforce.com","categories":["ad"],"domains":["*.force.com","*.salesforce.com"],"examples":["secure.force.com"]},{"name":"WebSpectator","categories":["ad"],"domains":["*.webspectator.com"]},{"name":"Kaizen Platform","categories":["analytics"],"domains":["*.kaizenplatform.net"],"examples":["cdn.kaizenplatform.net","log-v4.kaizenplatform.net"]},{"name":"Global-e","categories":["hosting"],"domains":["*.global-e.com"]},{"name":"TruConversion","categories":["analytics"],"domains":["*.truconversion.com"]},{"name":"White Ops","categories":["utility"],"domains":["*.acexedge.com","*.tagsrvcs.com"]},{"name":"Accordant Media","categories":["ad"],"domains":["*.a3cloud.net"],"examples":["segment.a3cloud.net"]},{"name":"Keywee","categories":["ad"],"domains":["*.keywee.co"]},{"name":"Hupso Website Analyzer","company":"Hupso","categories":["analytics"],"domains":["*.hupso.com"]},{"name":"ThreatMetrix","categories":["utility"],"domains":["*.online-metrix.net"]},{"name":"eXelate","categories":["ad"],"domains":["*.exelator.com"]},{"name":"Delta Projects AB","categories":["ad"],"domains":["*.de17a.com"]},{"name":"Profitshare","categories":["ad"],"domains":["*.profitshare.ro"]},{"name":"TubeMogul","categories":["ad"],"domains":["*.tubemogul.com"]},{"name":"Ipify","homepage":"https://www.ipify.org","categories":["utility"],"domains":["*.ipify.org"],"examples":["api.ipify.org","geo.ipify.org"]},{"name":"Marketplace Web Service","company":"Amazon","categories":["other"],"domains":["*.ssl-images-amazon.com"]},{"name":"Key CDN","categories":["utility"],"domains":["*.kxcdn.com"]},{"name":"The ADEX","categories":["ad"],"domains":["*.theadex.com"]},{"name":"ZEDO","categories":["ad"],"domains":["*.zedo.com"]},{"name":"Sajari Pty","categories":["utility"],"domains":["*.sajari.com"]},{"name":"The Hut Group","categories":["content"],"domains":["*.thcdn.com"]},{"name":"Signyfyd","categories":["utility"],"domains":["*.signifyd.com"]},{"name":"Apester","categories":["analytics"],"domains":["*.apester.com","*.qmerce.com"]},{"name":"mParticle","homepage":"https://www.mparticle.com/","categories":["utility"],"domains":["*.mparticle.com"],"examples":["jssdks.mparticle.com","identity.mparticle.com"]},{"name":"AdSniper","categories":["ad"],"domains":["*.adsniper.ru","*.sniperlog.ru"]},{"name":"Time","categories":["content"],"domains":["*.timeinc.net"]},{"name":"SurveyMonkey","categories":["analytics"],"domains":["*.surveymonkey.com"]},{"name":"GIPHY","categories":["content"],"domains":["*.giphy.com"]},{"name":"Socialphotos","categories":["social"],"domains":["*.slpht.com"]},{"name":"Livefyre","categories":["content"],"domains":["*.fyre.co","*.livefyre.com"]},{"name":"Civic","categories":["hosting"],"domains":["*.civiccomputing.com"]},{"name":"Auth0","homepage":"https://auth0.com/","categories":["utility"],"domains":["*.auth0.com"],"examples":["cdn.auth0.com"]},{"name":"Flickr","categories":["content"],"domains":["*.flickr.com","*.staticflickr.com"]},{"name":"Reevoo","categories":["analytics"],"domains":["*.reevoo.com"]},{"name":"Sirv","categories":["other"],"domains":["*.sirv.com"]},{"name":"Underdog Media","categories":["ad"],"domains":["*.underdog.media","*.udmserve.net"]},{"name":"Petametrics","categories":["analytics"],"domains":["*.petametrics.com"]},{"name":"Sweet Tooth","categories":["ad"],"domains":["*.sweettooth.io"]},{"name":"Hola Networks","categories":["other"],"domains":["*.h-cdn.com"]},{"name":"Verizon Digital Media CDN","homepage":"https://www.verizondigitalmedia.com/","categories":["cdn"],"domains":["*.edgecastcdn.net","*.edgecastdns.net"]},{"name":"Zarget","categories":["analytics"],"domains":["*.zarget.com"]},{"name":"ResponseTap","categories":["analytics"],"domains":["*.adinsight.com","*.responsetap.com"]},{"name":"ReTargeter","categories":["ad"],"domains":["*.retargeter.com"]},{"name":"Yottaa","categories":["hosting"],"domains":["*.yottaa.com","*.yottaa.net"]},{"name":"Connatix","categories":["ad"],"domains":["*.connatix.com"]},{"name":"Klevu Search","company":"Klevu","categories":["utility"],"domains":["*.klevu.com"]},{"name":"Best Of Media S.A.","categories":["content"],"domains":["*.servebom.com"]},{"name":"AdTrue","company":"FPT AdTrue","categories":["ad"],"domains":["*.adtrue.com"]},{"name":"Customer.io","categories":["ad"],"domains":["*.customer.io"]},{"name":"Advance Magazine Group","categories":["content"],"domains":["*.condenastdigital.com","*.condenet.com","*.condenast.co.uk"]},{"name":"StreamRail","categories":["ad"],"domains":["*.streamrail.com","*.streamrail.net"]},{"name":"Opinion Stage","categories":["analytics"],"domains":["*.opinionstage.com"],"examples":["www.opinionstage.com"]},{"name":"CleverTap","categories":["analytics"],"domains":["d2r1yp2w7bby2u.cloudfront.net"]},{"name":"Fanplayr","categories":["analytics"],"domains":["*.fanplayr.com","d38nbbai6u794i.cloudfront.net"]},{"name":"Calendly","categories":["other"],"domains":["*.calendly.com"]},{"name":"Adobe Test & Target","company":"Adobe Systems","categories":["analytics"],"domains":["*.omtrdc.net"],"examples":["tt.omtrdc.net"]},{"name":"Navegg","categories":["ad"],"domains":["*.navdmp.com"]},{"name":"Sekindo","categories":["content"],"domains":["*.sekindo.com"]},{"name":"Conversio","categories":["ad"],"domains":["*.conversio.com"]},{"name":"CyberSource (Visa)","categories":["utility"],"domains":["*.authorize.net"]},{"name":"Pixalate","categories":["utility"],"domains":["*.adrta.com"]},{"name":"Reviews.io","categories":["analytics"],"domains":["*.reviews.io"]},{"name":"NetAffiliation","company":"Kwanco","categories":["ad"],"domains":["*.metaffiliation.com"]},{"name":"FuelX","categories":["ad"],"domains":["*.fuelx.com"]},{"name":"Touch Commerce","categories":["customer-success"],"domains":["*.inq.com","*.touchcommerce.com"]},{"name":"TripleLift","categories":["ad"],"domains":["*.3lift.com"]},{"name":"Ambassador","categories":["ad"],"domains":["*.getambassador.com"]},{"name":"epoq internet services","categories":["analytics"],"domains":["*.epoq.de"]},{"name":"Woopra","categories":["analytics"],"domains":["*.woopra.com"]},{"name":"Playbuzz","categories":["hosting"],"domains":["*.playbuzz.com"]},{"name":"Exponential Interactive","categories":["ad"],"domains":["*.exponential.com"]},{"name":"JustUno","categories":["ad"],"domains":["*.justuno.com"]},{"name":"Widespace","homepage":"https://www.widespace.com","categories":["ad"],"domains":["*.widespace.com"],"examples":["sync.widespace.com"]},{"name":"VisScore","categories":["analytics"],"domains":["*.visscore.com","d2hkbi3gan6yg6.cloudfront.net"]},{"name":"AWeber","categories":["ad"],"domains":["*.aweber.com"]},{"name":"AvantLink","categories":["ad"],"domains":["*.avmws.com"]},{"name":"Conversant Tag Manager","company":"Conversant","categories":["tag-manager"],"domains":["*.mplxtms.com"]},{"name":"Postcode Anywhere (Holdings)","categories":["utility"],"domains":["*.postcodeanywhere.co.uk"]},{"name":"Conversant","categories":["analytics"],"domains":["*.dotomi.com","*.dtmpub.com","*.emjcd.com","mediaplex.com","*.tqlkg.com","*.fastclick.net"],"examples":["www.tqlkg.com"]},{"name":"FLXone","company":"Teradata","categories":["ad"],"domains":["*.pangolin.blue","*.flx1.com","d2hlpp31teaww3.cloudfront.net"]},{"name":"Infinity Tracking","categories":["analytics"],"domains":["*.infinity-tracking.net"]},{"name":"reEmbed","categories":["other"],"domains":["*.reembed.com"]},{"name":"Kameleoon","categories":["analytics"],"domains":["*.kameleoon.com"]},{"name":"Impact Radius","categories":["ad"],"domains":["*.impactradius-event.com","*.impactradius-go.com","*.7eer.net","d3cxv97fi8q177.cloudfront.net","*.evyy.net","*.ojrq.net"],"examples":["a.impactradius-go.com","microsoft-uk.evyy.net"]},{"name":"Heroku","categories":["other"],"domains":["*.herokuapp.com"]},{"name":"AdsWizz","categories":["ad"],"domains":["*.adswizz.com"]},{"name":"MaxMind","categories":["utility"],"domains":["*.maxmind.com"]},{"name":"Pusher","homepage":"https://pusher.com/","categories":["utility"],"domains":["*.pusher.com","*.pusherapp.com"],"examples":["stats.pusher.com"]},{"name":"Admitad","categories":["ad"],"domains":["*.lenmit.com"]},{"name":"AdsNative","categories":["ad"],"domains":["*.adsnative.com"]},{"name":"Viacom","categories":["content"],"domains":["*.mtvnservices.com"]},{"name":"Cookie-Script.com","categories":["utility"],"domains":["*.cookie-script.com"]},{"name":"MonetizeMore","categories":["ad"],"domains":["*.m2.ai"]},{"name":"Mediahawk","categories":["analytics"],"domains":["*.mediahawk.co.uk"]},{"name":"GoSquared","homepage":"https://www.gosquared.com","categories":["analytics"],"domains":["*.gosquared.com","d1l6p2sc9645hc.cloudfront.net"],"examples":["data.gosquared.com","data2.gosquared.com"]},{"name":"Datonics","categories":["ad"],"domains":["*.pro-market.net"],"examples":["pbid.pro-market.net"]},{"name":"Adobe Marketing Cloud","company":"Adobe Systems","categories":["ad"],"domains":["*.adobetag.com"]},{"name":"News","categories":["social"],"domains":["*.news.com.au","*.newsanalytics.com.au","*.newsapi.com.au","*.newscdn.com.au","*.newsdata.com.au","*.newsdiscover.com.au","*.news-static.com"]},{"name":"Experian Cross-Channel Marketing Platform","company":"Experian","categories":["marketing"],"domains":["*.eccmp.com","*.ccmp.eu"]},{"name":"SkyScanner","categories":["content"],"domains":["*.skyscanner.net"],"examples":["api.skyscanner.net"]},{"name":"Vibrant Media","categories":["ad"],"domains":["*.intellitxt.com","*.picadmedia.com"]},{"name":"Mobify","categories":["utility"],"domains":["*.mobify.com","*.mobify.net"]},{"name":"Bookatable","categories":["content"],"domains":["*.bookatable.com","*.livebookings.com"]},{"name":"SecuredVisit","company":"4Cite Marketing","categories":["ad"],"domains":["*.securedvisit.com"]},{"name":"[24]7","categories":["customer-success"],"domains":["*.247-inc.net","*.247inc.net","d1af033869koo7.cloudfront.net"]},{"name":"Transifex","categories":["utility"],"domains":["*.transifex.com"]},{"name":"Tagboard","categories":["social"],"domains":["*.tagboard.com"]},{"name":"Council ad Network","categories":["ad"],"domains":["*.counciladvertising.net"]},{"name":"WalkMe","categories":["customer-success"],"domains":["*.walkme.com"]},{"name":"Betgenius","company":"Genius Sports","categories":["content"],"domains":["*.connextra.com"]},{"name":"Exactag","categories":["ad"],"domains":["*.exactag.com"]},{"name":"Knight Lab","company":"Northwestern University","categories":["utility"],"domains":["*.knightlab.com"]},{"name":"Reflektion","categories":["analytics"],"domains":["*.reflektion.com","d26opx5dl8t69i.cloudfront.net"]},{"name":"Expedia","categories":["content"],"domains":["*.travel-assets.com","*.trvl-media.com","*.trvl-px.com","*.uciservice.com"],"examples":["www.trvl-px.com","www.uciservice.com"]},{"name":"Performio","categories":["ad"],"domains":["*.performax.cz"],"examples":["ut.performax.cz"]},{"name":"Janrain","categories":["analytics"],"domains":["*.janrain.com","*.janrainbackplane.com","*.rpxnow.com","d3hmp0045zy3cs.cloudfront.net"]},{"name":"Resonance Insights","categories":["analytics"],"domains":["*.res-x.com"]},{"name":"cloudIQ","categories":["analytics"],"domains":["*.cloud-iq.com"]},{"name":"Snack Media","categories":["content"],"domains":["*.snack-media.com"]},{"name":"Ekm Systems","categories":["analytics"],"domains":["*.ekmsecure.com","*.ekmpinpoint.co.uk"],"examples":["globalstats.ekmsecure.com"]},{"name":"Wow Analytics","categories":["analytics"],"domains":["*.wowanalytics.co.uk"]},{"name":"AdvertServe","categories":["ad"],"domains":["*.advertserve.com"]},{"name":"Pingdom RUM","homepage":"https://www.pingdom.com/product/performance-monitoring/","categories":["analytics"],"domains":["*.pingdom.net"],"examples":["rum-static.pingdom.net","rum-collector-2.pingdom.net"]},{"name":"DialogTech SourceTrak","company":"DialogTech","categories":["ad"],"domains":["d31y97ze264gaa.cloudfront.net"]},{"name":"bRealTime","categories":["ad"],"domains":["*.brealtime.com"]},{"name":"Tag Inspector","company":"InfoTrust","categories":["analytics"],"domains":["d22xmn10vbouk4.cloudfront.net"]},{"name":"Zmags","categories":["marketing"],"domains":["*.zmags.com"]},{"name":"LeasdBoxer","company":"LeadBoxer","categories":["ad"],"domains":["*.leadboxer.com"]},{"name":"Friendbuy","categories":["ad"],"domains":["*.friendbuy.com","djnf6e5yyirys.cloudfront.net"]},{"name":"Acceptable Ads","homepage":"https://acceptableads.com/","categories":["ad"],"domains":["*.aaxads.com","*.aaxdetect.com"]},{"name":"Onet","categories":["ad"],"domains":["*.onet.pl"]},{"name":"Netlify","homepage":"https://www.netlify.com/","categories":["utility"],"domains":["*.netlify.com","*.netlifyusercontent.com"],"examples":["cloud.netlifyusercontent.com"]},{"name":"Twitter Online Conversion Tracking","company":"Twitter","categories":["ad"],"domains":["*.ads-twitter.com","analytics.twitter.com"],"examples":["static.ads-twitter.com"]},{"name":"AdRiver","categories":["ad"],"domains":["*.adriver.ru"]},{"name":"Proper Media","categories":["content"],"domains":["*.proper.io"]},{"name":"Storygize","categories":["ad"],"domains":["*.storygize.net"],"examples":["www.storygize.net"]},{"name":"Oracle Recommendations On Demand","company":"Oracle","categories":["analytics"],"domains":["*.atgsvcs.com"]},{"name":"Raygun","categories":["utility"],"domains":["*.raygun.io"]},{"name":"Rakuten LinkShare","company":"Rakuten","categories":["ad"],"domains":["*.linksynergy.com"]},{"name":"BlueCava","categories":["ad"],"domains":["*.bluecava.com"]},{"name":"Hull.js","categories":["utility"],"domains":["*.hull.io","*.hullapp.io"]},{"name":"PERFORM","categories":["content"],"domains":["*.performgroup.com"]},{"name":"Moxie","homepage":"https://www.gomoxie.com/","categories":["utility"],"domains":["*.gomoxie.solutions"]},{"name":"Vee24","categories":["customer-success"],"domains":["*.vee24.com"]},{"name":"Aggregate Knowledge","company":"Neustar","categories":["ad"],"domains":["*.agkn.com"]},{"name":"Cookie Reports","categories":["utility"],"domains":["*.cookiereports.com"]},{"name":"PlayAd Media Group","categories":["ad"],"domains":["*.youplay.se"]},{"name":"Exponea","categories":["analytics"],"domains":["*.exponea.com"]},{"name":"AIR.TV","categories":["ad"],"domains":["*.air.tv"]},{"name":"SlimCut Media Outstream","company":"SlimCut Media","categories":["ad"],"domains":["*.freeskreen.com"]},{"name":"Mopinion","categories":["analytics"],"domains":["*.mopinion.com"]},{"name":"Dynamic Converter","categories":["utility"],"domains":["*.dynamicconverter.com"]},{"name":"Remintrex","company":"SmartUp Venture","categories":["ad"],"domains":["*.remintrex.com"]},{"name":"Attribution","categories":["ad"],"domains":["*.attributionapp.com"]},{"name":"Browser-Update.org","categories":["other"],"domains":["*.browser-update.org"]},{"name":"Sailthru","categories":["analytics"],"domains":["*.sail-horizon.com","*.sail-personalize.com","*.sail-track.com"]},{"name":"AnswerDash","categories":["customer-success"],"domains":["*.answerdash.com"],"examples":["p1.answerdash.com"]},{"name":"Ziff Davis Tech","categories":["ad"],"domains":["*.adziff.com","*.zdbb.net"]},{"name":"Adthink","company":"Adthink Media","categories":["ad"],"domains":["*.adxcore.com","*.dcoengine.com"],"examples":["d.adxcore.com"]},{"name":"Site24x7 Real User Monitoring","company":"Site24x7","categories":["analytics"],"domains":["*.site24x7rum.com"]},{"name":"SpringServer","categories":["ad"],"domains":["*.springserve.com"]},{"name":"Freespee","categories":["customer-success"],"domains":["*.freespee.com"],"examples":["analytics.freespee.com"]},{"name":"VidPulse","categories":["analytics"],"domains":["*.vidpulse.com"]},{"name":"InAuth","categories":["utility"],"homepage":"https://www.inauth.com/","domains":["*.cdn-net.com"],"examples":["uk.cdn-net.com"]},{"name":"MLveda","categories":["utility"],"domains":["*.mlveda.com"],"examples":["www.mlveda.com"]},{"name":"Microad","categories":["ad"],"domains":["*.microad.jp"]},{"name":"ShopRunner","categories":["content"],"domains":["*.shoprunner.com","*.s-9.us"]},{"name":"Reactful","categories":["analytics"],"domains":["*.reactful.com"]},{"name":"Vergic AB","categories":["customer-success"],"domains":["*.psplugin.com"]},{"name":"Alliance for Audited Media","categories":["ad"],"domains":["*.aamsitecertifier.com"]},{"name":"Forter","categories":["utility"],"domains":["*.forter.com"]},{"name":"Swoop","categories":["ad"],"domains":["*.swoop.com"]},{"name":"Gfycat","company":"Gycat","categories":["utility"],"domains":["*.gfycat.com"]},{"name":"Optimove","company":"Mobius Solutions","categories":["analytics"],"domains":["*.optimove.net"]},{"name":"LoginRadius","categories":["social"],"domains":["*.loginradius.com"]},{"name":"Flockler","categories":["ad"],"domains":["*.flockler.com"]},{"name":"Moovweb","categories":["utility"],"domains":["*.moovweb.net"]},{"name":"Cachefly","categories":["utility"],"domains":["*.cachefly.net"]},{"name":"emetriq","homepage":"https://www.emetriq.com/","categories":["ad"],"domains":["*.emetriq.de","*.xplosion.de"]},{"name":"CANDDi","company":"Campaign and Digital Intelligence","categories":["ad"],"domains":["*.canddi.com"]},{"name":"Braintree Payments","company":"Paypal","categories":["utility"],"domains":["*.braintreegateway.com"]},{"name":"Meltwater Group","categories":["customer-success"],"domains":["*.meltwaternews.com"]},{"name":"Video Media Groep","categories":["ad"],"domains":["*.vmg.host","*.inpagevideo.nl"]},{"name":"Polldaddy","company":"Automattic","categories":["analytics"],"domains":["polldaddy.com"]},{"name":"Triblio","categories":["marketing"],"domains":["*.tribl.io"]},{"name":"Wufoo","categories":["utility"],"domains":["*.wufoo.com"]},{"name":"User Replay","categories":["analytics"],"domains":["*.userreplay.net"]},{"name":"Barilliance","categories":["analytics"],"domains":["*.barilliance.net","dn3y71tq7jf07.cloudfront.net"]},{"name":"Boomtrain","categories":["ad"],"domains":["*.boomtrain.com","*.boomtrain.net"]},{"name":"Extole","categories":["ad"],"domains":["*.extole.com","*.extole.io"],"examples":["origin.extole.io"]},{"name":"infogr.am","categories":["utility"],"domains":["*.infogr.am","*.jifo.co"]},{"name":"Catchpoint","homepage":"https://www.catchpoint.com/","categories":["analytics"],"domains":["*.3gl.net"]},{"name":"InSkin Media","categories":["ad"],"domains":["*.inskinad.com","*.inskinmedia.com"]},{"name":"Kargo","categories":["marketing"],"domains":["*.kargo.com"]},{"name":"Byside","homepage":"http://www.byside.com","categories":["analytics"],"domains":["*.byside.com"],"examples":["byce2.byside.com","wce2.byside.com"]},{"name":"CNET Content Solutions","company":"CBS Interactive","categories":["content"],"domains":["*.cnetcontent.com"],"examples":["cdn.cnetcontent.com","ws.cnetcontent.com"]},{"name":"HotelsCombined","categories":["content"],"domains":["*.datahc.com"]},{"name":"Hawk Search","categories":["utility"],"domains":["*.hawksearch.com"]},{"name":"Vergic Engage Platform","company":"Vergic","categories":["customer-success"],"domains":["*.vergic.com"]},{"name":"Vertical Mass","categories":["ad"],"domains":["*.vmweb.net"]},{"name":"ShopStorm","categories":["utility"],"domains":["*.shopstorm.com"]},{"name":"Borderfree","company":"pitney bowes","categories":["utility"],"domains":["*.borderfree.com","*.fiftyone.com"]},{"name":"Fonecall","categories":["analytics"],"domains":["*.web-call-analytics.com"]},{"name":"PebblePost","categories":["ad"],"domains":["*.pbbl.co"]},{"name":"DemandJump","categories":["analytics"],"domains":["*.demandjump.com"]},{"name":"Kiosked","categories":["ad"],"domains":["*.kiosked.com"]},{"name":"Ad6Media","categories":["ad"],"domains":["*.ad6media.fr"]},{"name":"The Publisher Desk","categories":["ad"],"domains":["*.206ads.com","*.publisherdesk.com"]},{"name":"Ghostery Enterprise","company":"Ghostery","categories":["marketing"],"domains":["*.betrad.com"]},{"name":"content.ad","categories":["ad"],"domains":["*.content.ad"]},{"name":"Innovid","categories":["ad"],"homepage":"https://www.innovid.com/","domains":["*.innovid.com"],"examples":["ag.innovid.com","rtr.innovid.com"]},{"name":"RightNow Service Cloud","company":"Oracle","categories":["customer-success"],"domains":["*.rightnowtech.com","*.rnengage.com"]},{"name":"Polyfill service","company":"Polyfill.io","categories":["other"],"domains":["*.polyfill.io"]},{"name":"Prezi","categories":["utility"],"domains":["*.prezi.com"]},{"name":"Sourcepoint","categories":["ad"],"domains":["*.decenthat.com","*.fallingfalcon.com","*.summerhamster.com","d2lv4zbk7v5f93.cloudfront.net","d3qxwzhswv93jk.cloudfront.net"],"examples":["www.decenthat.com","www.fallingfalcon.com","www.summerhamster.com"]},{"name":"PowerFront","categories":["hosting"],"domains":["*.inside-graph.com"]},{"name":"Bidswitch","homepage":"https://www.bidswitch.com/","categories":["ad"],"domains":["*.bidswitch.net"],"examples":["x.bidswitch.net"]},{"name":"Bet365","categories":["ad"],"domains":["*.bet365affiliates.com"]},{"name":"RichRelevance","categories":["analytics"],"domains":["*.richrelevance.com"]},{"name":"Elecard StreamEye","company":"Elecard","categories":["other"],"domains":["*.streameye.net"]},{"name":"NaviStone","categories":["ad"],"domains":["*.murdoog.com"]},{"name":"MailPlus","categories":["ad"],"domains":["*.mailplus.nl"]},{"name":"Cross Pixel Media","categories":["ad"],"domains":["*.crsspxl.com"]},{"name":"TurnTo","homepage":"https://www.turntonetworks.com/","categories":["utility"],"domains":["*.turnto.com"]},{"name":"Connexity","homepage":"http://connexity.com/","categories":["analytics"],"domains":["*.connexity.net"]},{"name":"Iterate","homepage":"https://iteratehq.com/","categories":["analytics"],"domains":["*.iteratehq.com"]},{"name":"OnScroll","categories":["ad"],"domains":["*.onscroll.com"]},{"name":"Web Dissector","company":"Beijing Gridsum Technologies","categories":["analytics"],"domains":["*.gridsumdissector.com","*.webdissector.com"],"examples":["www.webdissector.com"]},{"name":"Bluecore","categories":["analytics"],"domains":["*.bluecore.com"],"examples":["www.bluecore.com"]},{"name":"Flipboard","categories":["social"],"domains":["*.flipboard.com"]},{"name":"UPS i-parcel","company":"UPS","categories":["other"],"domains":["*.i-parcel.com"]},{"name":"TechTarget","categories":["content"],"domains":["*.techtarget.com","*.ttgtmedia.com"]},{"name":"Realytics","categories":["analytics"],"domains":["dcniko1cv0rz.cloudfront.net","*.realytics.net"]},{"name":"Dropbox","categories":["utility"],"domains":["*.dropboxusercontent.com"]},{"name":"StumbleUpon","categories":["content"],"domains":["*.stumble-upon.com","*.stumbleupon.com"]},{"name":"ReCollect","categories":["utility"],"domains":["*.recollect.net"]},{"name":"AdSpruce","categories":["ad"],"domains":["*.adspruce.com"]},{"name":"RebelMouse","categories":["ad"],"domains":["*.rebelmouse.com","*.rbl.ms"],"examples":["www.rebelmouse.com"]},{"name":"Intilery","categories":["customer-success"],"domains":["*.intilery-analytics.com"]},{"name":"Adunity","categories":["ad"],"domains":["*.adunity.com"]},{"name":"UpSellit","categories":["analytics"],"domains":["*.upsellit.com"],"examples":["www.upsellit.com"]},{"name":"AdSupply","categories":["ad"],"domains":["*.doublepimp.com"]},{"name":"Better Business Bureau","categories":["analytics"],"domains":["*.bbb.org"]},{"name":"Spot.IM","categories":["social"],"domains":["*.spot.im"]},{"name":"Improve Digital","categories":["ad"],"domains":["*.360yield.com"]},{"name":"Sociomantic Labs","company":"DunnHumby","categories":["ad"],"domains":["*.sociomantic.com"]},{"name":"MathJax","categories":["utility"],"domains":["*.mathjax.org"]},{"name":"Qualtrics","categories":["analytics"],"domains":["*.qualtrics.com"]},{"name":"ConvertMedia","categories":["ad"],"domains":["*.admailtiser.com","*.basebanner.com","*.cmbestsrv.com","*.vidfuture.com","*.zorosrv.com"],"examples":["www.cmbestsrv.com"]},{"name":"Soundest","categories":["ad"],"domains":["*.soundestlink.com","*.soundest.net"]},{"name":"Xaxis","homepage":"https://www.xaxis.com/","categories":["ad"],"domains":["*.247realmedia.com","*.mookie1.com","*.gmads.net"],"examples":["t.mookie1.com","odr.mookie1.com"]},{"name":"Research Online","company":"Skills Development Scotland","categories":["content"],"domains":["*.org.uk"],"examples":["www.researchonline.org.uk"]},{"name":"DistroScale","categories":["ad"],"domains":["*.jsrdn.com"]},{"name":"StackExchange","categories":["social"],"domains":["*.sstatic.net"]},{"name":"BuySellAds","categories":["ad"],"domains":["*.buysellads.com"]},{"name":"Reklama","categories":["ad"],"domains":["*.o2.pl","*.wp.pl"],"examples":["dot.wp.pl","px.o2.pl","px.wp.pl"]},{"name":"eGain","categories":["analytics"],"domains":["*.analytics-egain.com","*.egain.com"]},{"name":"Sonobi","categories":["ad"],"domains":["*.sonobi.com"]},{"name":"AliveChat","company":"AYU Technology Solutions","categories":["customer-success"],"domains":["*.websitealive.com","*.websitealive7.com"]},{"name":"Zolando","categories":["content"],"domains":["*.ztat.net"]},{"name":"AdCurve","categories":["ad"],"domains":["*.shop2market.com"]},{"name":"Pagefair","categories":["ad"],"domains":["*.pagefair.com","*.pagefair.net"]},{"name":"StackAdapt","categories":["ad"],"domains":["*.stackadapt.com"]},{"name":"United Internet","categories":["hosting"],"domains":["*.uicdn.com"]},{"name":"Nanorep","company":"Nanorep Technologies","categories":["customer-success"],"domains":["*.nanorep.com"]},{"name":"Fastest Forward","categories":["analytics"],"domains":["*.gaug.es"]},{"name":"Ceros","categories":["other"],"domains":["ceros.com","view.ceros.com"]},{"name":"Investis","categories":["utility"],"domains":["*.investis.com"]},{"name":"Channel.me","categories":["customer-success"],"domains":["*.channel.me"]},{"name":"ARM","categories":["analytics"],"domains":["*.tag4arm.com"]},{"name":"Webtrends","categories":["analytics"],"domains":["*.webtrends.com","*.webtrendslive.com","d1q62gfb8siqnm.cloudfront.net"]},{"name":"Scoota","categories":["ad"],"domains":["*.rockabox.co","*.scoota.co","d31i2625d5nv27.cloudfront.net","dyjnzf8evxrp2.cloudfront.net"]},{"name":"TrafficJunky","homepage":"https://www.trafficjunky.com/","categories":["ad"],"domains":["*.contentabc.com","*.trafficjunky.net"],"examples":["ads2.contentabc.com","hw-cdn.contentabc.com","media.trafficjunky.net","ads.trafficjunky.net","hw-cdn.trafficjunky.net"]},{"name":"PrintFriendly","categories":["utility"],"domains":["*.printfriendly.com"]},{"name":"Datawrapper","categories":["utility"],"domains":["*.datawrapper.de","*.dwcdn.net"],"examples":["www.datawrapper.de"]},{"name":"Click4Assistance","categories":["customer-success"],"domains":["*.click4assistance.co.uk"]},{"name":"Glassdoor","categories":["content"],"domains":["*.glassdoor.com"]},{"name":"Highwinds","categories":["utility"],"domains":["*.hwcdn.net"]},{"name":"YoYo","categories":["utility"],"domains":["*.goadservices.com"]},{"name":"Webtrekk","categories":["analytics"],"domains":["*.wbtrk.net","*.webtrekk-asia.net","*.webtrekk.net","*.wt-eu02.net"]},{"name":"Fastly Insights","homepage":"https://insights.fastlylabs.com","categories":["analytics"],"domains":["*.fastly-insights.com"],"examples":["www.fastly-insights.com"]},{"name":"HP Optimost","company":"Hewlett-Packard Development Company","categories":["marketing"],"domains":["*.hp.com","d2uncb19xzxhzx.cloudfront.net"],"examples":["by.marketinghub.hp.com","marketinghub.hp.com"]},{"name":"Eyeota","categories":["ad"],"domains":["*.eyeota.net"]},{"name":"PhotoBucket","categories":["content"],"domains":["*.photobucket.com"]},{"name":"ContextWeb","categories":["ad"],"domains":["*.contextweb.com"]},{"name":"Captify Media","categories":["ad"],"domains":["*.cpx.to"]},{"name":"Intent IQ","categories":["ad"],"domains":["*.intentiq.com"]},{"name":"Vindico","company":"Viant","categories":["ad"],"domains":["*.vindicosuite.com"]},{"name":"Pictela (AOL)","categories":["analytics"],"domains":["*.pictela.net"]},{"name":"PubNation","categories":["ad"],"domains":["*.pubnation.com"]},{"name":"Freshchat","homepage":"https://www.freshworks.com/live-chat-software/","categories":["utility"],"domains":["*.freshchat.com"]},{"name":"Bridgewell DSP","homepage":"https://www.bridgewell.com/","categories":["ad"],"domains":["*.scupio.com"],"examples":["img.scupio.com"]},{"name":"PageSense","homepage":"https://www.zoho.com/pagesense/","categories":["analytics"],"domains":["*.pagesense.io"],"examples":["cdn.pagesense.io"]},{"name":"Wicked Reports","homepage":"https://www.wickedreports.com/","categories":["marketing"],"domains":["*.wickedreports.com"],"examples":["widget.wickedreports.com"]},{"name":"Pendo","homepage":"https://www.pendo.io","categories":["analytics"],"domains":["*.pendo.io"],"examples":["app.pendo.io"]},{"name":"Dynatrace","categories":["analytics"],"domains":["*.ruxit.com","js-cdn.dynatrace.com"]},{"name":"Click Guardian","homepage":"https://www.clickguardian.co.uk/","categories":["advertising"],"domains":["*.clickguardian.app","*.clickguardian.co.uk"],"examples":["v2.clickguardian.app","protection.clickguardian.co.uk"]}]; +},{}],169:[function(require,module,exports){ module.exports=require("./lib/subsets/httparchive-nostats.js"); -},{"./lib/subsets/httparchive-nostats.js":170}],169:[function(require,module,exports){ -const DOMAIN_IN_URL_REGEX=/:\/\/(.*?)(\/|$)/; -const DOMAIN_CHARACTERS=/[a-z0-9.-]+\.[a-z0-9]+/i; +},{"./lib/subsets/httparchive-nostats.js":171}],170:[function(require,module,exports){ +const DOMAIN_IN_URL_REGEX=/:\/\/(\S*?)(:\d+)?(\/|$)/; +const DOMAIN_CHARACTERS=/([a-z0-9.-]+\.[a-z0-9]+|localhost)/i; +const IP_REGEX=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; const ROOT_DOMAIN_REGEX=/[^.]+\.([^.]+|(gov|com|co|ne)\.\w{2})$/i; function getDomainFromOriginOrURL(originOrURL){ +if(typeof originOrURL!=='string')return null; +if(originOrURL.length>10000||originOrURL.startsWith('data:'))return null; if(DOMAIN_IN_URL_REGEX.test(originOrURL))return originOrURL.match(DOMAIN_IN_URL_REGEX)[1]; if(DOMAIN_CHARACTERS.test(originOrURL))return originOrURL.match(DOMAIN_CHARACTERS)[0]; throw new Error(`Unable to find domain in "${originOrURL}"`); @@ -64711,6 +65104,8 @@ function getRootDomain(originOrURL){ const domain=getDomainFromOriginOrURL(originOrURL); +if(!domain)return null; +if(IP_REGEX.test(domain))return domain; const match=domain.match(ROOT_DOMAIN_REGEX); return match&&match[0]||domain; } @@ -64718,6 +65113,7 @@ function getEntityInDataset(entityByDomain,entityByRootDomain,originOrURL){ const domain=getDomainFromOriginOrURL(originOrURL); const rootDomain=getRootDomain(domain); +if(!domain||!rootDomain)return undefined; if(entityByDomain.has(domain))return entityByDomain.get(domain); if(entityByRootDomain.has(rootDomain))return entityByRootDomain.get(rootDomain); return undefined; @@ -64737,10 +65133,9 @@ for(const domain of entity.domains){ if(entityByDomain.has(domain))throw new Error(`Duplicate domain ${domain}`); entityByDomain.set(domain,entity); + const rootDomain=getRootDomain(domain); -if(entityByRootDomain.has(rootDomain)&&entityByRootDomain.get(rootDomain)!==entity){ -entityByRootDomain.set(rootDomain,false); -}else{ +if(domain.startsWith('*.')){ entityByRootDomain.set(rootDomain,entity); } } @@ -64756,12 +65151,12 @@ module.exports={createAPIFromDataset}; -},{}],170:[function(require,module,exports){ +},{}],171:[function(require,module,exports){ const{createAPIFromDataset}=require('../create-entity-finder-api.js'); const entities=require('../../dist/entities-httparchive-nostats.json'); module.exports=createAPIFromDataset(entities); -},{"../../dist/entities-httparchive-nostats.json":167,"../create-entity-finder-api.js":169}],171:[function(require,module,exports){ +},{"../../dist/entities-httparchive-nostats.json":168,"../create-entity-finder-api.js":170}],172:[function(require,module,exports){ (function(setImmediate,clearImmediate){ var nextTick=require('process/browser.js').nextTick; var apply=Function.prototype.apply; @@ -64840,7 +65235,7 @@ delete immediateIds[id]; }; }).call(this,require("timers").setImmediate,require("timers").clearImmediate); -},{"process/browser.js":141,"timers":171}],172:[function(require,module,exports){ +},{"process/browser.js":142,"timers":172}],173:[function(require,module,exports){ (function(global){ @@ -64911,15 +65306,15 @@ } }).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{}); -},{}],173:[function(require,module,exports){ -arguments[4][93][0].apply(exports,arguments); -},{"dup":93}],174:[function(require,module,exports){ +},{}],174:[function(require,module,exports){ arguments[4][94][0].apply(exports,arguments); -},{"./support/isBuffer":173,"_process":141,"dup":94,"inherits":112}],175:[function(require,module,exports){ +},{"dup":94}],175:[function(require,module,exports){ +arguments[4][95][0].apply(exports,arguments); +},{"./support/isBuffer":174,"_process":142,"dup":95,"inherits":113}],176:[function(require,module,exports){ module.exports={ -"version":"5.4.0"}; +"version":"5.5.0"}; -},{}],176:[function(require,module,exports){ +},{}],177:[function(require,module,exports){ @@ -64930,12 +65325,231 @@ const stackPacks=[ -require('./packs/wordpress.js')]; +require('./packs/wordpress.js'), +require('./packs/react.js'), +require('./packs/angular.js'), +require('./packs/amp.js'), +require('./packs/magento.js')]; module.exports=stackPacks; -},{"./packs/wordpress.js":177}],177:[function(require,module,exports){ +},{"./packs/amp.js":178,"./packs/angular.js":179,"./packs/magento.js":180,"./packs/react.js":181,"./packs/wordpress.js":182}],178:[function(require,module,exports){ +(function(__filename){ + + + + + + + +'use strict'; + +const i18n=require('../../lighthouse-core/lib/i18n/i18n.js'); + +const ampIcon=`data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"%3E%3Cpath d="M171.887 116.28l-53.696 89.36h-9.728l9.617-58.227-30.2.047a4.852 4.852 0 01-4.855-4.855c0-1.152 1.07-3.102 1.07-3.102l53.52-89.254 9.9.043-9.86 58.317 30.413-.043a4.852 4.852 0 014.855 4.855c0 1.088-.427 2.044-1.033 2.854l.004.004zM128 0C57.306 0 0 57.3 0 128s57.306 128 128 128 128-57.306 128-128S198.7 0 128 0z" fill="%230379c4" fill-rule="evenodd"/%3E%3C/svg%3E`; + +const UIStrings={ + +uses_webp_images:'Consider displaying all your `amp-img` components in WebP formats while specifying an appropriate fallback for other browsers. [Learn more](https://amp.dev/documentation/components/amp-img/#example:-specifying-a-fallback-image).', + +offscreen_images:'Ensure that you are you using valid `amp-img` tags for your images which automatically lazy-load outside the first viewport. [Learn more](https://amp.dev/documentation/guides-and-tutorials/develop/media_iframes_3p/?format=websites#images).', + +render_blocking_resources:'Use tools such as [AMP Optimizer](https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer) to [server-side render AMP layouts](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/server-side-rendering/).', + +unminified_css:'Refer to the [AMP documentation](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/style_pages/) to ensure all your styles are supported.', + +efficient_animated_content:'For animated content, use [amp-anim](https://amp.dev/documentation/components/amp-anim/) to minimize CPU usage while the content remains offscreen.', + +uses_responsive_images:'The `amp-img` element supports the `srcset` attribute to specify which image assets to use based on the screen size. [Learn more](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/art_direction/).'}; + + +const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); + +module.exports={ +id:'amp', +iconDataURL:ampIcon, +title:'AMP', +descriptions:{ +'uses-webp-images':str_(UIStrings.uses_webp_images), +'offscreen-images':str_(UIStrings.offscreen_images), +'render-blocking-resources':str_(UIStrings.render_blocking_resources), +'unminified-css':str_(UIStrings.unminified_css), +'efficient-animated-content':str_(UIStrings.efficient_animated_content), +'uses-responsive-images':str_(UIStrings.uses_responsive_images)}}; + + +module.exports.UIStrings=UIStrings; + +}).call(this,"/stack-packs/packs/amp.js"); +},{"../../lighthouse-core/lib/i18n/i18n.js":67}],179:[function(require,module,exports){ +(function(__filename){ + + + + + + + +'use strict'; + +const i18n=require('../../lighthouse-core/lib/i18n/i18n.js'); + +const angularIcon=`data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 250 250"%3E%3Cpath fill="%23dd0031" d="M125 30L31.9 63.2l14.2 123.1L125 230l78.9-43.7 14.2-123.1z"/%3E%3Cpath fill="%23c3002f" d="M125 30v22.2-.1V230l78.9-43.7 14.2-123.1L125 30z"/%3E%3Cpath d="M125 52.1L66.8 182.6h21.7l11.7-29.2h49.4l11.7 29.2H183L125 52.1zm17 83.3h-34l17-40.9 17 40.9z" fill="%23fff"/%3E%3C/svg%3E`; + +const UIStrings={ + +total_byte_weight:'Apply [route-level code-splitting](https://web.dev/route-level-code-splitting-in-angular/) to minimize the size of your JavaScript bundles. Also, consider precaching assets with the [Angular service worker](https://web.dev/precaching-with-the-angular-service-worker/).', + +unminified_warning:'If you are using Angular CLI, ensure that builds are generated in production mode. [Learn more](https://angular.io/guide/deployment#enable-runtime-production-mode).', + +unused_javascript:'If you are using Angular CLI, include source maps into your production build to inspect your bundles. [Learn more](https://angular.io/guide/deployment#inspect-the-bundles).', + +uses_responsive_images:'Consider using the `BreakpointObserver` utility in the Component Dev Kit (CDK) to manage image breakpoints. [Learn more](https://material.angular.io/cdk/layout/overview).', + +uses_rel_preload:'Preload routes ahead of time to speed up navigation. [Learn more](https://web.dev/route-preloading-in-angular/).', + +dom_size:'Consider virtual scrolling with the Component Dev Kit (CDK) if very large lists are being rendered. [Learn more](https://web.dev/virtualize-lists-with-angular-cdk/).'}; + + +const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); + +module.exports={ +id:'angular', +iconDataURL:angularIcon, +title:'Angular', +descriptions:{ +'total-byte-weight':str_(UIStrings.total_byte_weight), +'unminified-css':str_(UIStrings.unminified_warning), +'unminified-javascript':str_(UIStrings.unminified_warning), +'unused-javascript':str_(UIStrings.unused_javascript), +'uses-responsive-images':str_(UIStrings.uses_responsive_images), +'uses-rel-preload':str_(UIStrings.uses_rel_preload), +'dom-size':str_(UIStrings.dom_size)}}; + + +module.exports.UIStrings=UIStrings; + +}).call(this,"/stack-packs/packs/angular.js"); +},{"../../lighthouse-core/lib/i18n/i18n.js":67}],180:[function(require,module,exports){ +(function(__filename){ + + + + + + + +'use strict'; + +const i18n=require('../../lighthouse-core/lib/i18n/i18n.js'); + +const magentoIcon=`data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23f26322" viewBox="0 0 1000 1000"%3E%3Cpath d="M916.9 267.4v465.3l-111.3 67.4V331.4l-1.5-.9-303.9-189-304.6 189.2-1.2.8V799L83.1 732.6V267.4l.7-.4L500.3 10l416 257 .6.4zM560.7 468.5v383.3L500.3 890l-61-38.2V306.7l-136 84.3v476.6l197 122.5 196.4-122.5V391l-136-84.3v161.8z"/%3E%3C/svg%3E`; + +const UIStrings={ + +uses_webp_images:'Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=webp) for a variety of third-party extensions to leverage newer image formats.', + +offscreen_images:'Consider modifying your product and catalog templates to make use of the web platform\'s [lazy loading](https://web.dev/native-lazy-loading) feature.', + +disable_bundling:'Disable Magento\'s built-in [JavaScript bundling and minification](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html), and consider using [baler](https://github.com/magento/baler/) instead.', + +unminified_css:'Enable the "Minify CSS Files" option in your store\'s Developer settings. [Learn more](https://devdocs.magento.com/guides/v2.3/performance-best-practices/configuration.html?itm_source=devdocs&itm_medium=search_page&itm_campaign=federated_search&itm_term=minify%20css%20files).', + +unminified_javascript:'Use [Terser](https://www.npmjs.com/package/terser) to minify all JavaScript assets outfrom from static content deployment, and disable the built-in minification feature.', + +unused_javascript:'Disable Magento\'s built-in [JavaScript bundling](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html).', + +uses_optimized_images:'Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=optimize%20image) for a variety of third party extensions to optimize images.', + +time_to_first_byte:'Use Magento\'s [Varnish integration](https://devdocs.magento.com/guides/v2.3/config-guide/varnish/config-varnish.html).', + +uses_rel_preconnect:'Preconnect or dns-prefetch resource hints can be added by [modifying a themes\'s layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html).', + +uses_rel_preload:'`<link rel=preload>` tags can be added by [modifying a themes\'s layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html).', + +critical_request_chains:'If you are not bundling your JavaScript assets, consider using [baler](https://github.com/magento/baler).', + +font_display:'Specify `@font-display` when [defining custom fonts](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/using-fonts.html).'}; + + +const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); + +module.exports={ +id:'magento', +iconDataURL:magentoIcon, +title:'Magento', +descriptions:{ +'uses-webp-images':str_(UIStrings.uses_webp_images), +'offscreen-images':str_(UIStrings.offscreen_images), +'total-byte-weight':str_(UIStrings.disable_bundling), +'render-blocking-resources':str_(UIStrings.disable_bundling), +'unminified-css':str_(UIStrings.unminified_css), +'unminified-javascript':str_(UIStrings.unminified_javascript), +'unused-javascript':str_(UIStrings.unused_javascript), +'uses-optimized-images':str_(UIStrings.uses_optimized_images), +'time-to-first-byte':str_(UIStrings.time_to_first_byte), +'uses-rel-preconnect':str_(UIStrings.uses_rel_preconnect), +'uses-rel-preload':str_(UIStrings.uses_rel_preload), +'critical-request-chains':str_(UIStrings.critical_request_chains), +'font-display':str_(UIStrings.font_display)}}; + + +module.exports.UIStrings=UIStrings; + +}).call(this,"/stack-packs/packs/magento.js"); +},{"../../lighthouse-core/lib/i18n/i18n.js":67}],181:[function(require,module,exports){ +(function(__filename){ + + + + + + + +'use strict'; + +const i18n=require('../../lighthouse-core/lib/i18n/i18n.js'); + +const reactIcon=`data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"%3E %3Cg fill="%2361DAFB"%3E%3Cpath d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/%3E %3Ccircle cx="420.9" cy="296.5" r="45.7"/%3E %3Cpath d="M520.5 78.1z"/%3E%3C/g%3E%3C/svg%3E`; + +const UIStrings={ + +unminified_css:'If your build system minifies your CSS files automatically, ensure that you are deploying the production build of your application. You can check this with the React Developer Tools extension. [Learn more](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build).', + +unminified_javascript:'If your build system minifies your JS files automatically, ensure that you are deploying the production build of your application. You can check this with the React Developer Tools extension. [Learn more](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build).', + +unused_javascript:'If you are not server-side rendering, [split your JavaScript bundles](https://web.dev/code-splitting-suspense/) with `React.lazy()`. Otherwise, code-split using a third-party library such as [loadable-components](https://www.smooth-code.com/open-source/loadable-components/docs/getting-started/).', + +time_to_first_byte:'If you are server-side rendering any React components, consider using `renderToNodeStream()` or `renderToStaticNodeStream()` to allow the client to receive and hydrate different parts of the markup instead of all at once. [Learn more](https://reactjs.org/docs/react-dom-server.html#rendertonodestream).', + +redirects:'If you are using React Router, minimize usage of the `<Redirect>` component for [route navigations](https://reacttraining.com/react-router/web/api/Redirect).', + +user_timings:'Use the React DevTools Profiler, which makes use of the Profiler API, to measure the rendering performance of your components. [Learn more.](https://reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html)', + +dom_size:'Consider using a “windowing” library like `react-window` to minimize the number of DOM nodes created if you are rendering many repeated elements on the page. [Learn more](https://web.dev/virtualize-long-lists-react-window/). Also, minimize unecessary re-renders using [shouldComponentUpdate](https://reactjs.org/docs/optimizing-performance.html#shouldcomponentupdate-in-action), [PureComponent](https://reactjs.org/docs/react-api.html#reactpurecomponent), or [React.memo](https://reactjs.org/docs/react-api.html#reactmemo) and [skip effects](https://reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects) only until certain dependencies have changed if you are using the Effect hook to improve runtime performance.'}; + + +const str_=i18n.createMessageInstanceIdFn(__filename,UIStrings); + +module.exports={ +id:'react', +iconDataURL:reactIcon, +title:'React', +descriptions:{ +'unminified-css':str_(UIStrings.unminified_css), +'unminified-javascript':str_(UIStrings.unminified_javascript), +'unused-javascript':str_(UIStrings.unused_javascript), +'time-to-first-byte':str_(UIStrings.time_to_first_byte), +'redirects':str_(UIStrings.redirects), +'user-timings':str_(UIStrings.user_timings), +'dom-size':str_(UIStrings.dom_size)}}; + + +module.exports.UIStrings=UIStrings; + +}).call(this,"/stack-packs/packs/react.js"); +},{"../../lighthouse-core/lib/i18n/i18n.js":67}],182:[function(require,module,exports){ (function(__filename){ @@ -65007,29 +65621,32 @@ module.exports.UIStrings=UIStrings; }).call(this,"/stack-packs/packs/wordpress.js"); -},{"../../lighthouse-core/lib/i18n/i18n.js":67}],178:[function(require,module,exports){ +},{"../../lighthouse-core/lib/i18n/i18n.js":67}],183:[function(require,module,exports){ module.exports={ "npm":{ "angular":[ +{"id":"SNYK-JS-ANGULAR-471885","severity":"medium","semver":{"vulnerable":["<1.6.3"]}}, +{"id":"SNYK-JS-ANGULAR-471882","severity":"medium","semver":{"vulnerable":["<1.6.5"]}}, +{"id":"SNYK-JS-ANGULAR-471879","severity":"medium","semver":{"vulnerable":["<1.6.0-rc.0"]}}, {"id":"npm:angular:20180202","severity":"medium","semver":{"vulnerable":["<1.6.9"]}}, {"id":"npm:angular:20171018","severity":"medium","semver":{"vulnerable":["<1.6.7"]}}, -{"id":"npm:angular:20160527","severity":"medium","semver":{"vulnerable":["<1.2.30 >=1.0.0"]}}, -{"id":"npm:angular:20160122","severity":"medium","semver":{"vulnerable":["<1.5.0-rc.2 >=1.3.0"]}}, +{"id":"npm:angular:20160527","severity":"medium","semver":{"vulnerable":[">=1.0.0 <1.2.30"]}}, +{"id":"npm:angular:20160122","severity":"medium","semver":{"vulnerable":[">=1.3.0 <1.5.0-rc.2"]}}, {"id":"npm:angular:20140608","severity":"low","semver":{"vulnerable":["<1.3.0"]}}, {"id":"npm:angular:20131113","severity":"high","semver":{"vulnerable":["<1.2.2"]}}, {"id":"npm:angular:20140908","severity":"medium","semver":{"vulnerable":["<1.3.0-rc.4"]}}, -{"id":"npm:angular:20161101","severity":"medium","semver":{"vulnerable":["<1.5.9 >=1.5.0"]}}, +{"id":"npm:angular:20161101","severity":"medium","semver":{"vulnerable":[">=1.5.0 <1.5.9"]}}, {"id":"npm:angular:20150909","severity":"high","semver":{"vulnerable":["<1.5.0-beta.2"]}}, {"id":"npm:angular:20151205","severity":"medium","semver":{"vulnerable":["<1.5.0-rc.0"]}}, {"id":"npm:angular:20151130","severity":"medium","semver":{"vulnerable":["<1.4.10"]}}, -{"id":"npm:angular:20130622","severity":"medium","semver":{"vulnerable":["<1.2.0 >=1.0.0"]}}, -{"id":"npm:angular:20150807-1","severity":"medium","semver":{"vulnerable":["<1.5.0-beta.0 >=1.3.1"]}}, -{"id":"npm:angular:20150807","severity":"high","semver":{"vulnerable":["<1.5.0-beta.0 >=1.0.0"]}}, +{"id":"npm:angular:20130622","severity":"medium","semver":{"vulnerable":[">=1.0.0 <1.2.0"]}}, +{"id":"npm:angular:20150807-1","severity":"medium","semver":{"vulnerable":[">=1.3.1 <1.5.0-beta.0"]}}, +{"id":"npm:angular:20150807","severity":"high","semver":{"vulnerable":[">=1.0.0 <1.5.0-beta.0"]}}, {"id":"npm:angular:20150315","severity":"medium","semver":{"vulnerable":["<1.6.1"]}}, {"id":"npm:angular:20150310","severity":"high","semver":{"vulnerable":["<1.5.0-beta.2"]}}, {"id":"npm:angular:20141104","severity":"medium","semver":{"vulnerable":["<1.3.2"]}}, -{"id":"npm:angular:20130621","severity":"medium","semver":{"vulnerable":["<=1.1.5"]}}, -{"id":"npm:angular:20140909","severity":"high","semver":{"vulnerable":["<1.2.24 >=1.2.19"]}}, +{"id":"npm:angular:20130621","severity":"medium","semver":{"vulnerable":["<1.2.0"]}}, +{"id":"npm:angular:20140909","severity":"high","semver":{"vulnerable":[">=1.2.19 <1.2.24"]}}, {"id":"npm:angular:20130625","severity":"high","semver":{"vulnerable":["<1.1.5"]}}], "backbone":[ @@ -65046,9 +65663,11 @@ {"id":"npm:bootstrap:20120510","severity":"medium","semver":{"vulnerable":["<2.1.0"]}}], "dojo":[ +{"id":"SNYK-JS-DOJO-174934","severity":"medium","semver":{"vulnerable":[">=1.0.0 <1.0.3",">=1.1.0 <1.1.2",">=1.2.0 <1.2.4",">=1.3.0 <1.3.3",">=1.4.0 <1.4.2"]}}, +{"id":"SNYK-JS-DOJO-174933","severity":"medium","semver":{"vulnerable":["<1.2.0"]}}, {"id":"SNYK-JS-DOJO-72305","severity":"medium","semver":{"vulnerable":["<1.14"]}}, {"id":"npm:dojo:20180818","severity":"medium","semver":{"vulnerable":["<1.10.10 || >=1.11.0 <1.11.6 || >=1.12.0 <1.12.4 || >=1.13.0 <1.13.1"]}}, -{"id":"npm:dojo:20160523","severity":"medium","semver":{"vulnerable":["<= 1.0.0"]}}, +{"id":"npm:dojo:20160523","severity":"medium","semver":{"vulnerable":["<1.1.0"]}}, {"id":"npm:dojo:20100614-6","severity":"medium","semver":{"vulnerable":["<1.4.2"]}}, {"id":"npm:dojo:20100614","severity":"high","semver":{"vulnerable":[">=0.4 <0.4.4 || >=1.0 <1.0.3 || >=1.1 <1.1.2 || >=1.2 <1.2.4 || >=1.3 <1.3.3 || >=1.4 <1.4.2"]}}, {"id":"npm:dojo:20090409","severity":"medium","semver":{"vulnerable":["<1.1"]}}], @@ -65058,8 +65677,12 @@ {"id":"npm:foundation-sites:20150619","severity":"medium","semver":{"vulnerable":["<5.5.3"]}}, {"id":"npm:foundation-sites:20120717","severity":"medium","semver":{"vulnerable":["<3.0.6 >=3.0.0"]}}], +"google-closure-library":[ +{"id":"SNYK-JS-GOOGLECLOSURELIBRARY-174519","severity":"medium","semver":{"vulnerable":[">=20190121.0.0 <20190301.0.0"]}}], + "handlebars":[ -{"id":"SNYK-JS-HANDLEBARS-174183","severity":"high","semver":{"vulnerable":[">=4.1.0 <4.1.2","<4.0.14"]}}, +{"id":"SNYK-JS-HANDLEBARS-469063","severity":"high","semver":{"vulnerable":["<4.3.0"]}}, +{"id":"SNYK-JS-HANDLEBARS-174183","severity":"high","semver":{"vulnerable":["<3.0.7",">=4.1.0 <4.1.2","<4.0.14"]}}, {"id":"SNYK-JS-HANDLEBARS-173692","severity":"high","semver":{"vulnerable":["<4.0.13"]}}, {"id":"npm:handlebars:20151207","severity":"medium","semver":{"vulnerable":["<4.0.0"]}}, {"id":"npm:handlebars:20110425","severity":"medium","semver":{"vulnerable":["<=1.0.0-beta.3"]}}], @@ -65069,25 +65692,27 @@ "jquery":[ {"id":"SNYK-JS-JQUERY-174006","severity":"medium","semver":{"vulnerable":["<3.4.0"]}}, -{"id":"npm:jquery:20160529","severity":"low","semver":{"vulnerable":["=3.0.0-rc1"]}}, +{"id":"npm:jquery:20160529","severity":"low","semver":{"vulnerable":[">=3.0.0-rc1 <3.0.0"]}}, {"id":"npm:jquery:20150627","severity":"medium","semver":{"vulnerable":["<1.12.2",">=1.12.3 <2.2.2",">=2.2.3 <3.0.0"]}}, {"id":"npm:jquery:20140902","severity":"medium","semver":{"vulnerable":[">=1.4.2 <1.6.2"]}}, {"id":"npm:jquery:20120206","severity":"medium","semver":{"vulnerable":[">=1.7.1 <1.9.0"]}}, {"id":"npm:jquery:20110606","severity":"medium","semver":{"vulnerable":["<1.6.3"]}}], "jquery-mobile":[ +{"id":"SNYK-JS-JQUERYMOBILE-174599","severity":"medium","semver":{"vulnerable":["<=1.5.0-alpha.1"]}}, {"id":"npm:jquery-mobile:20120802","severity":"medium","semver":{"vulnerable":["<1.2.0"]}}], "jquery-ui":[ {"id":"npm:jquery-ui:20121127","severity":"medium","semver":{"vulnerable":["<1.10.0"]}}, {"id":"npm:jquery-ui:20100903","severity":"medium","semver":{"vulnerable":["<1.10.0"]}}, -{"id":"npm:jquery-ui:20160721","severity":"high","semver":{"vulnerable":["<=1.11.4"]}}], +{"id":"npm:jquery-ui:20160721","severity":"high","semver":{"vulnerable":["<1.12.0"]}}], "knockout":[ {"id":"npm:knockout:20180213","severity":"medium","semver":{"vulnerable":["<3.5.0-beta"]}}, {"id":"npm:knockout:20130701","severity":"medium","semver":{"vulnerable":["<3.0.0 >=2.1.0-pre"]}}], "lodash":[ +{"id":"SNYK-JS-LODASH-450202","severity":"high","semver":{"vulnerable":["<4.17.12"]}}, {"id":"SNYK-JS-LODASH-73639","severity":"medium","semver":{"vulnerable":["<4.17.11"]}}, {"id":"SNYK-JS-LODASH-73638","severity":"high","semver":{"vulnerable":["<4.17.11"]}}, {"id":"npm:lodash:20180130","severity":"medium","semver":{"vulnerable":["<4.17.5"]}}], @@ -65095,7 +65720,7 @@ "moment":[ {"id":"npm:moment:20170905","severity":"low","semver":{"vulnerable":["<2.19.3"]}}, {"id":"npm:moment:20161019","severity":"medium","semver":{"vulnerable":["<2.15.2"]}}, -{"id":"npm:moment:20160126","severity":"medium","semver":{"vulnerable":["<=2.11.1"]}}], +{"id":"npm:moment:20160126","severity":"medium","semver":{"vulnerable":["<2.11.2"]}}], "mustache":[ {"id":"npm:mustache:20151207","severity":"medium","semver":{"vulnerable":["<2.2.1"]}}, @@ -65116,7 +65741,7 @@ {"id":"npm:vue:20170829","severity":"medium","semver":{"vulnerable":["<2.4.3"]}}, {"id":"npm:vue:20170401","severity":"medium","semver":{"vulnerable":["<2.3.0-beta.1"]}}, {"id":"npm:vue:20180802","severity":"medium","semver":{"vulnerable":["<2.5.17"]}}, -{"id":"npm:vue:20180222","severity":"low","semver":{"vulnerable":["<=2.5.14"]}}], +{"id":"npm:vue:20180222","severity":"low","semver":{"vulnerable":["<2.5.14"]}}], "yui":[ {"id":"npm:yui:20130604","severity":"medium","semver":{"vulnerable":[">=3.0.0 <3.10.1 || =3.10.2"]}}, @@ -65314,4 +65939,4 @@ module.exports=URLShim; -},{"../report/html/renderer/util.js":87}]},{},[1]); \ No newline at end of file +},{"../report/html/renderer/util.js":88}]},{},[1]); \ No newline at end of file
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar-XB.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar-XB.json index cd3adda..e295430 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar-XB.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar-XB.json
@@ -30,10 +30,10 @@ "message": "Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Elements with `[role]` that require specific children `[role]`s, are missing." + "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Elements with `[role]` that require specific children `[role]`s, are present" + "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Cells in a `<table>` element that use the `[headers]` attribute refers to other cells of that same table." + "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to an element `id` not found within the same table." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Cells in a `<table>` element that use the `[headers]` attribute only refer to other cells of that same table." + "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Screen readers have features to make navigating tables easier. Ensuring table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "`<video>` elements contain a `<track>` element with `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "For ideal appearance on iOS when users add a progressive web app to the home screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) square PNG. [Learn More](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "For ideal appearance on iOS when users add a progressive web app to the home screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) square PNG. [Learn More](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Does not provide a valid `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Total CPU Time" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reduce JavaScript execution time" @@ -351,25 +351,25 @@ "message": "JavaScript execution time" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Use video formats for animated content" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Defer offscreen images" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Eliminate render-blocking resources" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Total size was {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Avoids enormous network payloads" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Minifying CSS files can reduce network payload sizes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Minifying CSS files can reduce network payload sizes. [Learn more](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minify CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minify JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Remove dead rules from stylesheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Remove dead rules from stylesheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. [Learn more](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Remove unused CSS" @@ -405,7 +405,7 @@ "message": "Remove unused JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 resource found}zero{# resources found}two{# resources found}few{# resources found}many{# resources found}other{# resources found}}" @@ -417,31 +417,31 @@ "message": "Uses efficient cache policy on static assets" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimized images load faster and consume less cellular data. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimized images load faster and consume less cellular data. [Learn more](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Efficiently encode images" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Serve images that are appropriately-sized to save cellular data and improve load time. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Serve images that are appropriately-sized to save cellular data and improve load time. [Learn more](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Properly size images" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Enable text compression" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Serve images in next-gen formats" }, "lighthouse-core/audits/content-width.js | description": { - "message": "If the width of your app's content doesn't match the width of the viewport, your app might not be optimized for mobile screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "If the width of your app's content doesn't match the width of the viewport, your app might not be optimized for mobile screens. [Learn more](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "The viewport size of {innerWidth}px does not match the window size of {outerWidth}px." @@ -453,7 +453,7 @@ "message": "Content is sized correctly for the viewport" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn more](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 chain found}zero{# chains found}two{# chains found}few{# chains found}many{# chains found}other{# chains found}}" @@ -675,7 +675,7 @@ "message": "No browser errors logged to the console" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Ensure text remains visible during webfont load" @@ -705,7 +705,7 @@ "message": "Invalid image sizing information {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement. [Learn more](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Web app manifest does not meet the installability requirements" @@ -729,7 +729,7 @@ "message": "Uses HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "A fast page load over a cellular network ensures a good mobile user experience. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "A fast page load over a cellular network ensures a good mobile user experience. [Learn more](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interactive at {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Category" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this." + "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimize main-thread work" @@ -759,49 +759,49 @@ "message": "Minimizes main-thread work" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "To reach the most number of users, sites should work across every major browser. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "To reach the most number of users, sites should work across every major browser. [Learn more](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Site works cross-browser" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Ensure individual pages are deep linkable via URL and that URLs are unique for the purpose of shareability on social media. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Ensure individual pages are deep linkable via URL and that URLs are unique for the purpose of shareability on social media. [Learn more](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Each page has a URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Transitions should feel snappy as you tap around, even on a slow network, a key to perceived performance. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Transitions should feel snappy as you tap around, even on a slow network. This experience is key to a user's perception of performance. [Learn more](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Page transitions don't feel like they block on the network" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Estimated Input Latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Estimated Input Latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Estimated Input Latency" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "First Contentful Paint" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "First CPU Idle" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "First Meaningful Paint" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Time to interactive is the amount of time it takes for the page to become fully interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Time to interactive is the amount of time it takes for the page to become fully interactive. [Learn more](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Time to Interactive" @@ -813,7 +813,7 @@ "message": "Max Potential First Input Delay" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Speed Index" @@ -837,7 +837,7 @@ "message": "Server Backend Latencies" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "A service worker enables your web app to be reliable in unpredictable network conditions. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "A service worker enables your web app to be reliable in unpredictable network conditions. [Learn more](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` does not respond with a 200 when offline" @@ -861,7 +861,7 @@ "message": "Performance budget" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "If you've already set up HTTPS, make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "If you've already set up HTTPS, make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Does not redirect HTTP traffic to HTTPS" @@ -870,7 +870,7 @@ "message": "Redirects HTTP traffic to HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Avoid multiple page redirects" @@ -1035,7 +1035,7 @@ "message": "Tap targets are sized appropriately" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "The service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "The service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. [Learn more](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "This page is controlled by a service worker, however no `start_url` was found because manifest failed to parse as valid JSON" @@ -1056,7 +1056,7 @@ "message": "Registers a service worker that controls page and `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "A themed splash screen ensures a high-quality experience when users launch your app from their homescreens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "A themed splash screen ensures a high-quality experience when users launch your app from their homescreens. [Learn more](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Is not configured for a custom splash screen" @@ -1065,7 +1065,7 @@ "message": "Configured for a custom splash screen" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "The browser address bar can be themed to match your site. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "The browser address bar can be themed to match your site. [Learn more](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Does not set a theme color for the address bar." @@ -1092,7 +1092,7 @@ "message": "Third-Party usage" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Time To First Byte identifies the time at which your server sends a response. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Time To First Byte identifies the time at which your server sends a response. [Learn more](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Root document took {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Type" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 user timing}zero{# user timings}two{# user timings}few{# user timings}many{# user timings}other{# user timings}}" @@ -1125,7 +1125,7 @@ "message": "A preconnect <link> was found for \"{securityOrigin}\" but was not used by the browser. Check that you are using the `crossorigin` attribute properly." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn more](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn more](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Preconnect to required origins" @@ -1134,13 +1134,13 @@ "message": "A preload <link> was found for \"{preloadURL}\" but was not used by the browser. Check that you are using the `crossorigin` attribute properly." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. [Learn more](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Preload key requests" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Add a `<meta name=\"viewport\">` tag to optimize your app for mobile screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Add a `<meta name=\"viewport\">` tag to optimize your app for mobile screens. [Learn more](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "No `<meta name=\"viewport\">` tag found" @@ -1152,7 +1152,7 @@ "message": "Has a `<meta name=\"viewport\">` tag with `width` or `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Your app should display some content when JavaScript is disabled, even if it's just a warning to the user that JavaScript is required to use the app. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Your app should display some content when JavaScript is disabled, even if it's just a warning to the user that JavaScript is required to use the app. [Learn more](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "The page body should render some content if its scripts are not available." @@ -1164,7 +1164,7 @@ "message": "Contains some content when JavaScript is not available" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "If you're building a Progressive Web App, consider using a service worker so that your app can work offline. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "If you're building a Progressive Web App, consider using a service worker so that your app can work offline. [Learn more](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Current page does not respond with a 200 when offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar.json index d3b9bd6..1b7d16c 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar.json
@@ -30,10 +30,10 @@ "message": "يجب أن تحتوي بعض أدوار ARIA الرئيسية على أدوار ثانوية محدّدة لأداء وظائف إمكانية الوصول المقصودة. [مزيد من المعلومات](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "العناصر التي تتضمّن `[role]` والتي تتطلب `[role]`محدّدة للأطفال مفقودة." + "message": "العناصر التي تتضمن ARIA `[role]` والتي تتطلب عناصر ثانوية للاحتواء على `[role]` محدد تفقد بعض هذه العناصر الثانوية المطلوبة أو جميعها." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "العناصر التي تتضمن `[role]` والتي تتطلب `[role]` محدّدة للأطفال متوفّرة" + "message": "العناصر التي تتضمن ARIA `[role]` والتي تتطلب عناصر ثانوية للاحتواء على `[role]` محدد تشتمل على جميع العناصر الثانوية المطلوبة." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "يجب أن يتم تضمين بعض أدوار ثانوية ARIA ضمن أدوار رئيسية محدّدة لتنفيذ وظائف إمكانية الوصول المقصودة بشكل صحيح. [مزيد من المعلومات](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "تحتوي برامج قراءة الشاشة على ميزات لتسهيل التنقل بين الجداول. يمكن تحسين تجربة استخدام برامج قراءة الشاشة من خلال ضمان إشارة الخلايا `<td>` التي تستخدم السمة `[headers]` إلى خلايا أخرى في الجدول نفسه فقط. [مزيد من المعلومات](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "الخلايا الواردة في عنصر `<table>` التي تستخدم السمة `[headers]` تشير فقط إلى خلايا أخرى في الجدول نفسه." + "message": "الخلايا الواردة في عنصر `<table>` التي تستخدم السمة `[headers]` تشير إلى عنصر `id` لم يتم العثور عليه في الجدول نفسه." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "الخلايا الموجودة في عنصر `<table>` والتي تستخدم السمة `[headers]` تشير فقط إلى خلايا أخرى في الجدول نفسه." + "message": "الخلايا الواردة في عنصر `<table>` التي تستخدم السمة `[headers]` تشير إلى خلايا الجدول في الجدول نفسه." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "تحتوي برامج قراءة الشاشة على ميزات لتسهيل التنقل بين الجداول. قد يؤدي ضمان أن عناوين الجداول تشير دائمًا إلى بعض مجموعات الخلايا إلى تحسين تجربة مستخدمي برامج قراءة الشاشة. [مزيد من المعلومات](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "العناصر `<video>` تحتوي على عنصر `<track>` مع `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "للحصول على المظهر المثالي على نظام التشغيل iOS عند إضافة المستخدمين تطبيق ويب تقدّمي إلى الشاشة الرئيسية، يمكنك تحديد `apple-touch-icon`. يجب أن تشير هذه السمة إلى مربع غير شفاف بتنسيق PNG مقاسه 192 بكسل (أو 180 بكسل). [مزيد من المعلومات](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "للحصول على المظهر المثالي على نظام التشغيل iOS عند إضافة المستخدمين تطبيق ويب تقدّمي إلى الشاشة الرئيسية، يمكنك تحديد `apple-touch-icon`. يجب أن تشير هذه السمة إلى مربع غير شفاف بتنسيق PNG مقاسه 192 بكسل (أو 180 بكسل). [مزيد من المعلومات](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "لا يتم تقديم رمز `apple-touch-icon` صالح" @@ -342,7 +342,7 @@ "message": "الوقت الإجمالي لوحدة المعالجة المركزية" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "يمكنك تقليل الوقت المستغرق في تحليل جافا سكريبت وإنشائها وتنفيذها. قد يتبين لك أن تسليم أحمال جافا سكريبت بحجم أصغر يساعد على ذلك. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "يمكنك تقليل الوقت المستغرق في تحليل جافا سكريبت وإنشائها وتنفيذها. قد يتبين لك أن تسليم أحمال جافا سكريبت بحجم أصغر يساعد على ذلك. [مزيد من المعلومات](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "تقليل وقت تنفيذ جافا سكريبت" @@ -351,25 +351,25 @@ "message": "وقت تنفيذ جافا سكريبت" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "ملفات GIF الكبيرة غير كافية لعرض محتوى صور متحركة. يمكنك استخدام فيديوهات MPEG4/WebM للصور المتحركة وملفات PNG/WebP للصور الثابتة بدلاً من ملف GIF لحفظ وحدات البايت للشبكة. [مزيد من المعلومات](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "ملفات GIF الكبيرة غير كافية لعرض محتوى صور متحركة. يمكنك استخدام فيديوهات MPEG4/WebM للصور المتحركة وملفات PNG/WebP للصور الثابتة بدلاً من ملف GIF لحفظ وحدات البايت للشبكة. [مزيد من المعلومات](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "استخدام تنسيقات الفيديو لمحتوى الصور المتحركة" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "يمكنك إجراء تحميل بطيء للصور الموجودة خارج الشاشة والصور المخفية بعد الانتهاء من تحميل جميع الموارد المهمة من أجل تقليص وقت التفاعل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "يمكنك إجراء تحميل بطيء للصور الموجودة خارج الشاشة والصور المخفية بعد الانتهاء من تحميل جميع الموارد المهمة من أجل تقليص وقت التفاعل. [مزيد من المعلومات](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "تأجيل الصور خارج الشاشة" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "تحظر الموارد سرعة عرض الصفحة لصفحتك. ويمكنك تضمين عناصر جافا سكريبت/CSS المهمة وتأجيل جميع الأنماط/عناصر جافا سكريبت غير المهمة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "تحظر الموارد سرعة عرض الصفحة لصفحتك. ويمكنك تضمين عناصر جافا سكريبت/CSS المهمة وتأجيل جميع الأنماط/عناصر جافا سكريبت غير المهمة. [مزيد من المعلومات](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "استبعاد موارد حظر العرض" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "تُكلِّف أحمال الشبكة الكبيرة المستخدمين الكثير من الأموال وترتبط مباشرةً بأوقات التحميل الطويلة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "تُكلِّف أحمال الشبكة الكبيرة المستخدمين الكثير من الأموال وترتبط مباشرةً بأوقات التحميل الطويلة. [مزيد من المعلومات](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "كان إجمالي الحجم {totalBytes, number, bytes} كيلوبايت." @@ -381,19 +381,19 @@ "message": "تجنُّب الأحمال الضخمة للشبكة" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "يمكن أن يؤدي تصغير ملفات CSS إلى تقليل أحجام حمولة الشبكة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "يمكن أن يؤدي تصغير ملفات CSS إلى تقليل أحجام حمولة الشبكة. [مزيد من المعلومات](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "تصغير CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "يمكن أن يؤدي تصغير ملفات جافا سكريبت إلى تقليل أحجام الأحمال ووقت تحليل النص البرمجي. [مزيد من المعلومات](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "يمكن أن يؤدي تصغير ملفات جافا سكريبت إلى تقليل أحجام الأحمال ووقت تحليل النص البرمجي. [مزيد من المعلومات](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "تصغير جافا سكريبت" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "يمكنك إزالة القواعد الضارة من أوراق الأنماط وتأجيل تحميل خدمة CSS غير المستخدمة في محتوى الجزء المرئي من الصفحة للحد من وحدات البايت غير الضرورية المستهلكة من خلال نشاط الشبكة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "يمكنك إزالة القواعد الضارة من أوراق الأنماط وتأجيل تحميل خدمة CSS غير المستخدمة في محتوى الجزء المرئي من الصفحة للحد من وحدات البايت غير الضرورية المستهلكة من خلال نشاط الشبكة. [مزيد من المعلومات](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "إزالة خدمة CSS غير المُستخدَمة" @@ -405,7 +405,7 @@ "message": "إزالة جافا سكريبت غير المستخدم" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "يمكن لفترة التخزين المؤقت الطويلة تسريع عملية تكرار الزيارات إلى صفحتك. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "يمكن لفترة التخزين المؤقت الطويلة تسريع عملية تكرار الزيارات إلى صفحتك. [مزيد من المعلومات](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{تم العثور على مورد واحد}zero{تم العثور على # مورد}two{تم العثور على مورديْنِ (#)}few{تم العثور على # موارد}many{تم العثور على # موردًا}other{تم العثور على # مورد}}" @@ -417,31 +417,31 @@ "message": "استخدام سياسة ذاكرة التخزين المؤقت الفعالة على الأصول الثابتة" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "يتم تحميل الصور المحسَّنة بشكلٍ أسرع وتستهلك بيانات أقل لشبكة الجوّال. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "يتم تحميل الصور المحسَّنة بشكلٍ أسرع وتستهلك بيانات أقل لشبكة الجوّال. [مزيد من المعلومات](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "تشفير الصور بكفاءة" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "يمكنك عرض صور بحجم مناسب لحفظ بيانات شبكة الجوّال وتحسين وقت التحميل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "يمكنك عرض صور بحجم مناسب لحفظ بيانات شبكة الجوّال وتحسين وقت التحميل. [مزيد من المعلومات](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "الصور ذات الحجم المناسب" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "يجب عرض الموارد المستندة إلى النص باستخدام الضغط (gzip أو الانكماش أو brotli) لتقليل إجمالي وحدات البايت للشبكة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "يجب عرض الموارد المستندة إلى النص باستخدام الضغط (gzip أو الانكماش أو brotli) لتقليل إجمالي وحدات البايت للشبكة. [مزيد من المعلومات](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "تفعيل ضغط النص" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "غالبًا ما توفِّر تنسيقات الصور، مثل JPEG 2000 وJPEG XR وWebP، ضغطًا أفضل من تنسيق PNG أو JPEG، وهذا يعني تنزيلاً أسرع واستهلاكًا أقل للبيانات. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "غالبًا ما توفِّر تنسيقات الصور، مثل JPEG 2000 وJPEG XR وWebP، ضغطًا أفضل من تنسيق PNG أو JPEG، وهذا يعني تنزيلاً أسرع واستهلاكًا أقل للبيانات. [مزيد من المعلومات](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "عرض الصور بتنسيقات الجيل القادم" }, "lighthouse-core/audits/content-width.js | description": { - "message": "في حال كان عرض محتوى التطبيق لا يتطابق مع عرض إطار العرض، قد لا يتم تحسين تطبيقك لشاشات الجوّال. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "في حال كان عرض محتوى التطبيق لا يتطابق مع عرض إطار العرض، قد لا يتم تحسين تطبيقك لشاشات الجوّال. [مزيد من المعلومات](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "لا يتطابق حجم إطار العرض {innerWidth} بكسل مع حجم النافذة {outerWidth} بكسل." @@ -453,7 +453,7 @@ "message": "تحديد حجم المحتوى بشكلٍ صحيح لإطار العرض" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "توضح لك \"سلاسل الطلبات المهمة\" أدناه الموارد التي تم تحميلها بأولوية عالية. ويمكنك تقليل طول السلاسل أو تقليل حجم تنزيل الموارد أو تأجيل تنزيل الموارد غير الضرورية لتحسين تحميل الصفحة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "توضح لك \"سلاسل الطلبات المهمة\" أدناه الموارد التي تم تحميلها بأولوية عالية. ويمكنك تقليل طول السلاسل أو تقليل حجم تنزيل الموارد أو تأجيل تنزيل الموارد غير الضرورية لتحسين تحميل الصفحة. [مزيد من المعلومات](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{تم العثور على سلسلة واحدة}zero{تم العثور على # سلسلة}two{تم العثور على سلسلتيْنِ (#)}few{تم العثور على # سلاسل}many{تم العثور على # سلسلةً}other{تم العثور على # سلسلة}}" @@ -675,7 +675,7 @@ "message": "لم يتم تسجيل أخطاء المتصفح في وحدة التحكّم" }, "lighthouse-core/audits/font-display.js | description": { - "message": "يمكنك الاستفادة من ميزة CSS لعرض الخطوط لضمان أن يكون النص مرئيًا للمستخدم أثناء تحميل خطوط موقع ويب. [مزيد من المعلومات](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "يمكنك الاستفادة من ميزة CSS لعرض الخطوط لضمان أن يكون النص مرئيًا للمستخدم أثناء تحميل خطوط موقع ويب. [مزيد من المعلومات](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "التأكد من بقاء النص مرئيًا أثناء تحميل خط موقع ويب" @@ -705,7 +705,7 @@ "message": "معلومات تغيير حجم الصورة غير صالحة {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "يمكن للمتصفحات أن تطلب من المستخدمين بشكل مسبق إضافة تطبيقك إلى الشاشة الرئيسية، ويمكن بذلك زيادة التفاعل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "يمكن للمتصفحات أن تطلب من المستخدمين بشكل مسبق إضافة تطبيقك إلى الشاشة الرئيسية، ويمكن بذلك زيادة التفاعل. [مزيد من المعلومات](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "عدم استيفاء بيان تطبيق الويب متطلبات التثبيت" @@ -729,7 +729,7 @@ "message": "يتم استخدام HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "إنّ تحميل الصفحات بشكل سريع عبر شبكة الجوّال يضمن توفير تجربة استخدام عالية الجودة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "إنّ تحميل الصفحات بشكل سريع عبر شبكة الجوّال يضمن توفير تجربة استخدام عالية الجودة. [مزيد من المعلومات](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "الوقت التفاعلي {timeInMs, number, seconds} ثانية" @@ -750,7 +750,7 @@ "message": "الفئة" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "يمكنك تقليل الوقت المستغرق في تحليل جافا سكريبت وإنشائه وتنفيذه. قد يتبين لك أن تسليم أحمال جافا سكريبت بحجم أصغر يساعد في ذلك." + "message": "يمكنك تقليل الوقت المستغرق في تحليل جافا سكريبت وإنشائه وتنفيذه. قد يتبين لك أن تسليم أحمال جافا سكريبت بحجم أصغر يساعد على ذلك. [مزيد من المعلومات](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "تقليل سلسلة العمل الرئيسية" @@ -759,49 +759,49 @@ "message": "تقليل سلسلة العمل الرئيسية" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "للوصول إلى أكبر عدد من المستخدمين، يجب استخدام المواقع الإلكترونية على كل متصفح رئيسي. [مزيد من المعلومات](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "للوصول إلى أكبر عدد من المستخدمين، يجب استخدام المواقع الإلكترونية على كل متصفح رئيسي. [مزيد من المعلومات](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "الموقع الإلكتروني يعمل عبر المتصفح" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "يُرجى التأكّد من أن الصفحات الفردية قابلة للربط بشكلٍ كبير عبر عنوان URL وأن عناوين URL فريدة لغرض إمكانية المشاركة على وسائل التواصل الاجتماعي. [مزيد من المعلومات](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "يُرجى التأكّد من أن الصفحات الفردية قابلة للربط بشكلٍ كبير عبر عنوان URL وأن عناوين URL فريدة لغرض إمكانية المشاركة على وسائل التواصل الاجتماعي. [مزيد من المعلومات](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "كل صفحة تحتوي على عنوان URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "من المفترض إجراء عمليات النقل بسرعة عند النقر حولها، حتى على شبكة بطيئة، وهو مفتاح للأداء المُلاحظ. [مزيد من المعلومات](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "من المفترض إجراء عمليات النقل بسرعة عند النقر حولها، حتى على شبكة بطيئة. هذه التجربة هي عنصر أساسي لإدراك مستخدم لمستوى الأداء. [مزيد من المعلومات](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "عمليات نقل الصفحة لا تبدو أنها محظورة على الشبكة" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "إن \"وقت الاستجابة المقدر للإدخال\" هو تقدير لطول المدة التي يستغرقها تطبيقك للاستجابة لإدخال المستخدم بالمللي ثانية، وذلك أثناء الثواني الخمس الأكثر انشغالاً في فترة تحميل الصفحة. وفي حال كان وقت الاستجابة أكثر من 50 مللي ثانية، يمكن للمستخدمين اعتبار تطبيقك بأنه بطيء في التفاعل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "إن \"وقت الاستجابة المقدر للإدخال\" هو تقدير لطول المدة التي يستغرقها تطبيقك للاستجابة لإدخال المستخدم بالمللي ثانية، وذلك أثناء الثواني الخمس الأكثر انشغالاً في فترة تحميل الصفحة. وفي حال كان وقت الاستجابة أكثر من 50 مللي ثانية، يمكن للمستخدمين اعتبار تطبيقك بأنه بطيء في التفاعل. [مزيد من المعلومات](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "وقت الاستجابة المُقدّر للإدخال" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "تحدد \"سرعة عرض المحتوى على الصفحة\" الوقت الذي يُعرَض فيه أول صورة أو نص. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "تحدد \"سرعة عرض المحتوى على الصفحة\" الوقت الذي يُعرَض فيه أول صورة أو نص. [مزيد من المعلومات](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "First Contentful Paint" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "تشير \"وحدة المعالجة المركزية الأولى الخاملة\" إلى المرة الأولى التي يتوفر فيها وقت كافٍ للعملية الرئيسية للصفحة حتى تعالج إدخالات المستخدم. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "تشير \"وحدة المعالجة المركزية الأولى الخاملة\" إلى المرة الأولى التي يتوفر فيها وقت كافٍ للعملية الرئيسية للصفحة حتى تعالج إدخالات المستخدم. [مزيد من المعلومات](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "وحدة المعالجة المركزية الأولى الخاملة" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "تقيس \"سرعة عرض أوّل محتوى مفيد على الصفحة\" الوقت الذي يكون فيه المحتوى الأساسي لصفحة مرئيًا. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "تقيس \"سرعة عرض أوّل محتوى مفيد على الصفحة\" الوقت الذي يكون فيه المحتوى الأساسي لصفحة مرئيًا. [مزيد من المعلومات](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "First Meaningful Paint" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "وقت التفاعل هو مقدار الوقت المستغرق حتى تصبح الصفحة تفاعلية بالكامل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "وقت التفاعل هو مقدار الوقت المستغرق حتى تصبح الصفحة تفاعلية بالكامل. [مزيد من المعلومات](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "وقت التفاعل" @@ -813,7 +813,7 @@ "message": "الحد الأقصى المحتمل من مهلة الاستجابة لأوّل إدخال" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "يوضح مؤشر السرعة وتيرة تعبئة محتوى الصفحة على شاشة المستخدم. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "يوضح مؤشر السرعة وتيرة تعبئة محتوى الصفحة على شاشة المستخدم. [مزيد من المعلومات](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "مؤشر السرعة" @@ -837,7 +837,7 @@ "message": "أوقات الاستجابة لواجهة الخادم الخلفية" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "يمكّن مشغّل الخدمات تطبيق الويب من أن يصبح موثوقًا به في ظروف الشبكة التي لا يمكن التنبؤ بها. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "يمكّن مشغّل الخدمات تطبيق الويب من أن يصبح موثوقًا به في ظروف الشبكة التي لا يمكن التنبؤ بها. [مزيد من المعلومات](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` لا تستجيب باستخدام رمز 200 عند عدم الاتصال بالإنترنت" @@ -861,7 +861,7 @@ "message": "ميزانية الأداء" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "في حال أعددت HTTPS مسبقًا، تأكّد من إعادة توجيه جميع زيارات HTTP إلى HTTPS من أجل تفعيل ميزات الويب الآمنة لجميع المستخدمين. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "في حال أعددت HTTPS مسبقًا، تأكّد من إعادة توجيه جميع زيارات HTTP إلى HTTPS من أجل تفعيل ميزات الويب الآمنة لجميع المستخدمين. [مزيد من المعلومات](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "عدم إعادة توجيه زيارات HTTP إلى HTTPS" @@ -870,7 +870,7 @@ "message": "إعادة توجيه زيارات HTTP إلى HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "تؤدي عمليات إعادة التوجيه إلى حدوث تأخيرات إضافية قبل أن يتم تحميل الصفحة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "تؤدي عمليات إعادة التوجيه إلى حدوث تأخيرات إضافية قبل أن يتم تحميل الصفحة. [مزيد من المعلومات](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "تجنُب عمليات إعادة توجيه الصفحات المتعددة" @@ -1035,7 +1035,7 @@ "message": "يتم تحديد حجم أهداف النقر بشكل مناسب" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "مشغّل الخدمات هو التكنولوجيا التي تمكّن تطبيقك من استخدام ميزات عديدة من \"تطبيق الويب التقدّمي\"، مثل الاستجابة عند عدم الاتصال بالإنترنت والإضافة إلى الشاشة الرئيسية والإشعارات الفورية. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "مشغّل الخدمات هو التكنولوجيا التي تمكّن تطبيقك من استخدام ميزات عديدة من \"تطبيق الويب التقدّمي\"، مثل الاستجابة عند عدم الاتصال بالإنترنت والإضافة إلى الشاشة الرئيسية والإشعارات الفورية. [مزيد من المعلومات](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "يتحكم مشغّل الخدمات في هذه الصفحة، ومع ذلك لم يتم العثور على `start_url` بسبب تعذّر تحليل البيان كملف JSON صالح" @@ -1056,7 +1056,7 @@ "message": "تسجيل مشغّل الخدمات الذي يتحكّم في صفحة و`start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "تضمن شاشة البداية المميزة توفير تجربة عالية الجودة عند إطلاق المستخدمين تطبيقك من الشاشات الرئيسية. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "تضمن شاشة البداية المميزة توفير تجربة عالية الجودة عند إطلاق المستخدمين تطبيقك من الشاشات الرئيسية. [مزيد من المعلومات](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "عدم الضبط لشاشة بداية مخصّصة" @@ -1065,7 +1065,7 @@ "message": "تم الضبط لشاشة البداية المخصّصة" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "يمكن تصميم شريط العناوين للمتصفح لمطابقة موقعك الإلكتروني. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "يمكن تصميم شريط العناوين للمتصفح لمطابقة موقعك الإلكتروني. [مزيد من المعلومات](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "عدم ضبط لون تصميم لشريط العناوين" @@ -1092,7 +1092,7 @@ "message": "استخدام جهة خارجية" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "يحدّد \"وقت وصول أول بايت\" الوقت الذي يُرسل فيه الخادم استجابة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "يحدّد \"وقت وصول أول بايت\" الوقت الذي يُرسل فيه الخادم استجابة. [مزيد من المعلومات](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "استغرق مستند الجذر {timeInMs, number, milliseconds} مللي ثانية" @@ -1113,7 +1113,7 @@ "message": "النوع" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "يمكنك توجيه تطبيقك باستخدام \"واجهة برمجة التطبيقات لأوقات المستخدم\" لقياس الأداء الفعلي العالمي لتطبيقك أثناء التجارب الأساسية للمستخدمين. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "يمكنك توجيه تطبيقك باستخدام \"واجهة برمجة التطبيقات لأوقات المستخدم\" لقياس الأداء الفعلي العالمي لتطبيقك أثناء التجارب الأساسية للمستخدمين. [مزيد من المعلومات](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{وقت واحد للمستخدم}zero{# وقت للمستخدم}two{وقتا (#) المستخدم}few{# أوقات للمستخدم}many{# وقتًا للمستخدم}other{# وقت للمستخدم}}" @@ -1125,7 +1125,7 @@ "message": "تم العثور على <link> للربط المسبق لـ \"{securityOrigin}\"، ولكن لم يتم استخدامه من خلال المتصفح. يُرجى التحقّق من استخدام السمة `crossorigin` بشكل صحيح." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "يمكنك إضافة تعديلات المورد `preconnect` أو `dns-prefetch` لإنشاء اتصالات مبكرة بأصول مهمة تابعة لجهة خارجية. [مزيد من المعلومات](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "يمكنك إضافة تعديلات المورد `preconnect` أو `dns-prefetch` لإنشاء اتصالات مبكرة بأصول مهمة تابعة لجهة خارجية. [مزيد من المعلومات](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "الاتصال المسبق للأصول المطلوبة" @@ -1134,13 +1134,13 @@ "message": "تم العثور على <link> للتحميل المسبق لـ \"{preloadURL}\"، ولكن لم يتم استخدامه من خلال المتصفح. يُرجى التحقّق من استخدام السمة `crossorigin` بشكل صحيح." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "يمكنك استخدام `<link rel=preload>` لتحديد أولويات جلب الموارد المطلوبة حاليًا في وقتٍ لاحق في تحميل الصفحة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "يمكنك استخدام `<link rel=preload>` لتحديد أولويات جلب الموارد المطلوبة حاليًا في وقتٍ لاحق في تحميل الصفحة. [مزيد من المعلومات](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "التحميل المسبق للطلبات الأساسية" }, "lighthouse-core/audits/viewport.js | description": { - "message": "يُرجى إضافة علامة `<meta name=\"viewport\">` لتحسين تطبيقك لشاشات الجوّال. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "يُرجى إضافة علامة `<meta name=\"viewport\">` لتحسين تطبيقك لشاشات الجوّال. [مزيد من المعلومات](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "لم يتم العثور على علامة `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "تضمين علامة `<meta name=\"viewport\">` مع `width` أو `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "يجب أن يعرض تطبيقك بعض المحتوى عند إيقاف جافا سكريبت، حتى في حال كان مجرد تحذير للمستخدم يشير إلى ضرورة وجود جافا سكريبت لاستخدام التطبيق. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "يجب أن يعرض تطبيقك بعض المحتوى عند إيقاف جافا سكريبت، حتى في حال كان مجرد تحذير للمستخدم يشير إلى ضرورة وجود جافا سكريبت لاستخدام التطبيق. [مزيد من المعلومات](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "يجب أن يعرض نص الصفحة بعض المحتوى في حالة عدم توفر النصوص البرمجية." @@ -1164,7 +1164,7 @@ "message": "تضمين بعض المحتوى عند عدم توفّر جافا سكريبت" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "في حال كنت تنشئ \"تطبيق ويب تقدّمي\"، يمكنك استخدام مشغّل الخدمات حتى يتمكّن التطبيق من العمل بلا اتصال بالإنترنت. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "في حال كنت تنشئ \"تطبيق ويب تقدّمي\"، يمكنك استخدام مشغّل الخدمات حتى يتمكّن التطبيق من العمل بلا اتصال بالإنترنت. [مزيد من المعلومات](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "الصفحة الحالية لا تستجيب باستخدام رمز 200 عند عدم الاتصال بالإنترنت"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/bg.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/bg.json index 494aa16b..65eeca5 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/bg.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/bg.json
@@ -30,10 +30,10 @@ "message": "Някои родителски роли на ARIA трябва да съдържат конкретни дъщерни роли, за да изпълняват функциите за достъпност, за които са предназначени. [Научете повече](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Липсват задължителни дъщерни атрибути `[role]` за елементи с атрибут `[role]`." + "message": "Някои елементи с ARIA роля `[role]`, за които се изисква дъщерните им елементи да включват конкретна роля `[role]`, не съдържат някои или всички такива задължителни дъщерни елементи." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Елементите с атрибут `[role]`, за които са задължителни конкретни дъщерни елементи `[role]`, са налице" + "message": "Елементите с ARIA роля `[role]`, за които се изисква дъщерните им елементи да включват конкретна роля `[role]`, съдържат всички задължителни дъщерни елементи." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Някои дъщерни роли на ARIA трябва да се съдържат в конкретни родителски роли, за да изпълняват правилно функциите за достъпност, за които са предназначени. [Научете повече](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Екранните четци имат функции за улесняване на навигирането в таблици. Когато клетките от типа `<td>`, използващи атрибута `[headers]`, сочат само към други клетки от същата таблица, това може да подобри практическата работа за потребителите на екранни четци. [Научете повече](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Някои клетки в елемент `<table>`, които използват атрибута `[headers]`, не сочат към други клетки от същата таблица." + "message": "Някои клетки в елемент `<table>`, които използват атрибута `[headers]`, сочат към елемент `id`, който не бе намерен в същата таблица." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Клетките в елемент `<table>`, които използват атрибута `[headers]`, сочат само към други клетки от същата таблица." + "message": "Клетките в елемент `<table>`, които използват атрибута `[headers]`, сочат към клетки от същата таблица." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Екранните четци имат функции за улесняване на навигирането в таблици. Когато всички заглавки в таблицата сочат към някакъв набор от клетки, това може да подобри практическата работа за потребителите на екранни четци. [Научете повече](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Елементите `<video>` съдържат елемент `<track>` с `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "За най-добро изобразяване под iOS, когато потребителите добавят прогресивно уеб приложение (PWA) към началния екран, дефинирайте атрибут `apple-touch-icon`. Той трябва да сочи към непрозрачен квадратен PNG файл със страна от 192 (или 180) пиксела. [Научете повече](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "За най-добро изобразяване под iOS, когато потребителите добавят прогресивно уеб приложение (PWA) към началния екран, дефинирайте атрибут `apple-touch-icon`. Той трябва да сочи към непрозрачен квадратен PNG файл със страна от 192 (или 180) пиксела. [Научете повече](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Не осигурява валиден атрибут `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Общо процесорно време" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Препоръчваме да намалите времето, прекарвано в синтактичен анализ, компилиране и изпълнение на JS. Използването на JS ресурси с по-малък размер може да помогне за това. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Препоръчваме да намалите времето, прекарвано в синтактичен анализ, компилиране и изпълнение на JS. Използването на JS ресурси с по-малък размер може да помогне за това. [Научете повече](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Намалете времето за изпълнение на JavaScript" @@ -351,25 +351,25 @@ "message": "Време за изпълнение на JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Големите GIF файлове не са ефективни за показване на анимирано съдържание. Вместо това препоръчваме да използвате видеоклипове във формат MPEG4/WebM за анимации и PNG/WebP за статични изображения, за да намалите преноса на данни. [Научете повече](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Големите GIF файлове не са ефективни за показване на анимирано съдържание. Вместо това препоръчваме да използвате видеоклипове във формат MPEG4/WebM за анимации и PNG/WebP за статични изображения, за да намалите преноса на данни. [Научете повече](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Използвайте видеоформати за анимираното съдържание" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "За да намалите времето до интерактивност, препоръчваме скритите изображения и тези извън видимата част на екрана да се зареждат след всички критични ресурси. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "За да намалите времето до интерактивност, препоръчваме скритите изображения и тези извън видимата част на екрана да се зареждат след всички критични ресурси. [Научете повече](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Отложете зареждането на изображенията извън видимата част на екрана" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Ресурси блокират първото изобразяване на страницата ви. Препоръчваме да вградите критичните JS/CSS елементи и да отложите зареждането на всички некритични стилове или JS код. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Ресурси блокират първото изобразяване на страницата ви. Препоръчваме да вградите критичните JS/CSS елементи и да отложите зареждането на всички некритични стилове или JS код. [Научете повече](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Елиминирайте ресурсите, които блокират изобразяването" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Мрежовите ресурси с голям размер струват пари на потребителите и са тясно свързани с бавното зареждане. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Мрежовите ресурси с голям размер струват пари на потребителите и са тясно свързани с бавното зареждане. [Научете повече](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Общият размер бе {totalBytes, number, bytes} КБ" @@ -381,19 +381,19 @@ "message": "Не се използват мрежови ресурси с голям размер" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Минимизирането на файловете със CSS може да намали размера на мрежовите ресурси. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Минимизирането на файловете със CSS може да намали размера на мрежовите ресурси. [Научете повече](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Минимизирайте CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Минимизирането на файловете с JavaScript може да намали размера на ресурсите и времето за синтактичен анализ на скрипта. [Научете повече](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Минимизирането на файловете с JavaScript може да намали размера на ресурсите и времето за синтактичен анализ на скрипта. [Научете повече](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Минимизирайте JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Премахнете ненужните правила от стиловите листове и отложете зареждането на CSS кода, който не се използва за съдържанието на видимата на екрана част от страницата, за да намалите ненужния пренос на данни в мрежата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Премахнете ненужните правила от стиловите листове и отложете зареждането на CSS кода, който не се използва за съдържанието на видимата на екрана част от страницата, за да намалите ненужния пренос на данни в мрежата. [Научете повече](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Премахнете неизползвания CSS код" @@ -405,7 +405,7 @@ "message": "Премахнете неизползвания JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Продължителното съхраняване в кеша може да ускори повторните посещения на страницата ви. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Продължителното съхраняване в кеша може да ускори повторните посещения на страницата ви. [Научете повече](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Намерен е 1 ресурс}other{Намерени са # ресурса}}" @@ -417,31 +417,31 @@ "message": "Използват се ефективни правила за кеширане на статичните активи" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Оптимизираните изображения се зареждат по-бързо и използват по-малко мобилни данни. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Оптимизираните изображения се зареждат по-бързо и използват по-малко мобилни данни. [Научете повече](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Кодирайте изображенията ефективно" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Показвайте правилно оразмерени изображения, за да пестите мобилни данни и да ускорите зареждането. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Показвайте правилно оразмерени изображения, за да пестите мобилни данни и да ускорите зареждането. [Научете повече](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Оразмерете изображенията правилно" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "При показването на текстови ресурси трябва да се използва компресиране (gzip, deflate или brotli), за да се намали общият пренос на данни. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "При показването на текстови ресурси трябва да се използва компресиране (gzip, deflate или brotli), за да се намали общият пренос на данни. [Научете повече](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Активирайте компресирането на текста" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Графични формати, като JPEG 2000, JPEG XR и WebP, често осигуряват по-ефективно компресиране от PNG или JPEG. Това означава по-бързо изтегляне и използване на по-малко данни. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Графични формати, като JPEG 2000, JPEG XR и WebP, често осигуряват по-ефективно компресиране от PNG или JPEG. Това означава по-бързо изтегляне и използване на по-малко данни. [Научете повече](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Използвайте съвременни формати за показване на изображения" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Ако ширината на съдържанието на приложението ви не съответства на тази на прозоречния изглед, приложението ви може да не е оптимизирано за мобилни екрани. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Ако ширината на съдържанието на приложението ви не съответства на тази на прозоречния изглед, приложението ви може да не е оптимизирано за мобилни екрани. [Научете повече](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Размерът на прозоречния изглед ({innerWidth} пкс) не съответства на размера на прозореца ({outerWidth} пкс)." @@ -453,7 +453,7 @@ "message": "Съдържанието е оразмерено правилно за прозоречния изглед" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Веригите от критични заявки по-долу ви показват кои ресурси се зареждат с висок приоритет. За да ускорите зареждането на страницата, препоръчваме да скъсите веригите, да намалите размера за изтегляне на ресурсите или да отложите изтеглянето на ненужните от тях. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Веригите от критични заявки по-долу ви показват кои ресурси се зареждат с висок приоритет. За да ускорите зареждането на страницата, препоръчваме да скъсите веригите, да намалите размера за изтегляне на ресурсите или да отложите изтеглянето на ненужните от тях. [Научете повече](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Намерена е 1 верига}other{Намерени са # вериги}}" @@ -675,7 +675,7 @@ "message": "В конзолата не бяха записани грешки в браузъра" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Използвайте функцията font-display на CSS, така че текстът да е видим за потребителите, докато уеб шрифтовете се зареждат. [Научете повече](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Използвайте функцията font-display на CSS, така че текстът да е видим за потребителите, докато уеб шрифтовете се зареждат. [Научете повече](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Уверете се, че текстът остава видим при зареждането на уеб шрифтовете" @@ -705,7 +705,7 @@ "message": "Информацията за размера на изображението е невалидна: {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Браузърите могат проактивно да подканват потребителите да добавят приложението ви към началния екран, което може да повиши ангажираността. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Браузърите могат проактивно да подканват потребителите да добавят приложението ви към началния екран, което може да повиши ангажираността. [Научете повече](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Манифестът на уеб приложението не отговаря на изискванията за възможност за инсталиране" @@ -729,7 +729,7 @@ "message": "Използва HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Бързото зареждане на страниците през мобилни мрежи осигурява добра практическа работа за потребителите на мобилни устройства. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Бързото зареждане на страниците през мобилни мрежи осигурява добра практическа работа за потребителите на мобилни устройства. [Научете повече](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Интерактивна след {timeInMs, number, seconds} сек" @@ -750,7 +750,7 @@ "message": "Категория" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Препоръчваме да намалите времето, прекарвано в синтактичен анализ, компилиране и изпълнение на JS. Използването на JS ресурси с по-малък размер може да помогне за това." + "message": "Препоръчваме да намалите времето, прекарвано в синтактичен анализ, компилиране и изпълнение на JS. Използването на JS ресурси с по-малък размер може да помогне за това. [Научете повече](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Сведете до минимум работата по основната нишка" @@ -759,49 +759,49 @@ "message": "Работата по основната нишка е сведена до минимум" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "За да достигнат до възможно най-много потребители, сайтовете трябва да работят във всички основни браузъри. [Научете повече](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "За да достигнат до възможно най-много потребители, сайтовете трябва да работят във всички основни браузъри. [Научете повече](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Сайтът работи в различни браузъри" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Oтделните страници трябва да могат да се свързват пряко чрез URL адрес, а URL адресите трябва да са уникални, за да се даде възможност за споделянето им в социалните медии. [Научете повече](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Oтделните страници трябва да могат да се свързват пряко чрез URL адрес, а URL адресите трябва да са уникални, за да се даде възможност за споделянето им в социалните медии. [Научете повече](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Всяка страница има URL адрес" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Дори когато мрежата е бавна, преходите при докосване на различни елементи трябва да са бързи – така се създава усещане за добра ефективност. [Научете повече](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Дори когато мрежата е бавна, преходите при докосване на различни елементи трябва да са бързи – така у потребителите се създава усещане за добра ефективност. [Научете повече](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Преходите между страниците не създават усещане за забавяне на мрежата" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Приблизителното забавяне при входящо действие показва приблизително колко време (в милисекунди) е необходимо на приложението ви, за да реагира на входящо потребителско действие по време на най-натоварения 5-секунден период от зареждането на страницата. Ако забавянето е над 50 милисекунди, приложението ви може да се стори бавно на потребителите. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Приблизителното забавяне при входящо действие показва приблизително колко време (в милисекунди) е необходимо на приложението ви, за да реагира на входящо потребителско действие по време на най-натоварения 5-секунден период от зареждането на страницата. Ако забавянето е над 50 милисекунди, приложението ви може да се стори бавно на потребителите. [Научете повече](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Прогнозно забавяне при входящо действие" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Показателят „Първо изобразяване на съдържание (FCP)“ указва след колко време се изобразява първият текстов или графичен елемент. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Показателят „Първо изобразяване на съдържание (FCP)“ указва след колко време се изобразява първият текстов или графичен елемент. [Научете повече](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Първо изобразяване на съдържание" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Показателят „Първи момент на неактивност на процесора“ указва първия момент, в който основната нишка на страницата е достатъчно свободна, за да обработва входящи действия. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Показателят „Първи момент на неактивност на процесора“ указва първия момент, в който основната нишка на страницата е достатъчно свободна, за да обработва входящи действия. [Научете повече](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Първи момент на неактивност на процесора" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Показателят „Първо значимо изобразяване“ измерва времето, за което основното съдържание на страницата става видимо. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Показателят „Първо значимо изобразяване“ измерва времето, за което основното съдържание на страницата става видимо. [Научете повече](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Първо значимо изобразяване" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Времето до интерактивност показва след колко време страницата става напълно интерактивна. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Времето до интерактивност показва след колко време страницата става напълно интерактивна. [Научете повече](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Време до интерактивност" @@ -813,7 +813,7 @@ "message": "Макс. потенц. забавяне при 1. взаимодействие" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Индексът на скоростта показва колко бързо се постига визуална завършеност на страницата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Индексът на скоростта показва колко бързо се постига визуална завършеност на страницата. [Научете повече](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Индекс на скоростта" @@ -837,7 +837,7 @@ "message": "Забавяния в задния слой на сървъра" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Файлът service worker дава възможност на уеб приложението ви да работи надеждно при непредсказуеми условия в мрежата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Файлът service worker дава възможност на уеб приложението ви да работи надеждно при непредсказуеми условия в мрежата. [Научете повече](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` не отговаря с код 200, когато е офлайн" @@ -861,7 +861,7 @@ "message": "Бюджет за ефективността" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Ако вече сте настроили HTTPS, целият HTTP трафик трябва да се пренасочва към HTTPS, така че функциите за сигурност в мрежата да са активирани за всичките ви потребители. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Ако вече сте настроили HTTPS, целият HTTP трафик трябва да се пренасочва към HTTPS, така че функциите за сигурност в мрежата да са активирани за всичките ви потребители. [Научете повече](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "HTTP трафикът не се пренасочва към HTTPS" @@ -870,7 +870,7 @@ "message": "HTTP трафикът се пренасочва към HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Пренасочванията водят до допълнително забавяне на зареждането на страницата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Пренасочванията водят до допълнително забавяне на зареждането на страницата. [Научете повече](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Не използвайте пренасочвания през няколко страници" @@ -1035,7 +1035,7 @@ "message": "Целевите зони за докосване са оразмерени правилно" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service worker е технологията, която дава възможност на приложението ви да използва много от функциите на прогресивните уеб приложения (PWA), като например работа офлайн, добавяне към началния екран и насочени известия. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Service worker е технологията, която дава възможност на приложението ви да използва много от функциите на прогресивните уеб приложения (PWA), като например работа офлайн, добавяне към началния екран и насочени известия. [Научете повече](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Тази страница е контролирана от service worker, но не бе намерен параметър `start_url`, тъй като при синтактичния анализ бе установено, че манифестът не е във валиден формат JSON" @@ -1056,7 +1056,7 @@ "message": "Регистриран е service worker, който контролира страницата и `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Тематичният първоначален екран гарантира висококачествена практическа работа, когато потребителите стартират приложението ви от началния екран. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Тематичният първоначален екран гарантира висококачествена практическа работа, когато потребителите стартират приложението ви от началния екран. [Научете повече](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Няма персонализиран първоначален екран" @@ -1065,7 +1065,7 @@ "message": "Има персонализиран първоначален екран" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Адресната лента на браузъра може да бъде тематична, за да съответства на сайта ви. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Адресната лента на браузъра може да бъде тематична, за да съответства на сайта ви. [Научете повече](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Не е зададен тематичен цвят за адресната лента." @@ -1092,7 +1092,7 @@ "message": "Използване на код от трети страни" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Показателят „Време до първия байт“ указва след колко време сървърът изпраща отговор. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Показателят „Време до първия байт“ указва след колко време сървърът изпраща отговор. [Научете повече](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "За основния документ бяха необходими {timeInMs, number, milliseconds} мсек" @@ -1113,7 +1113,7 @@ "message": "Тип" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Препоръчваме да използвате API за разбивка на потребителските времена за приложението си, за да измервате действителната му ефективност по време на ключови аспекти от практическата работа на потребителите. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Препоръчваме да използвате API за разбивка на потребителските времена за приложението си, за да измервате действителната му ефективност по време на ключови аспекти от практическата работа на потребителите. [Научете повече](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 потребителско време}other{# потребителски времена}}" @@ -1125,7 +1125,7 @@ "message": "Намерен бе елемент <link> за предварително свързване за {securityOrigin}, който обаче не бе използван от браузъра. Проверете дали използвате правилно атрибута `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Препоръчваме да добавите подсказки `preconnect` или `dns-prefetch` за ресурсите с цел ранно установяване на връзка с важни източници от трети страни. [Научете повече](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Препоръчваме да добавите подсказки `preconnect` или `dns-prefetch` за ресурсите с цел ранно установяване на връзка с важни източници от трети страни. [Научете повече](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Осигурете предварително свързване с необходимите източници" @@ -1134,13 +1134,13 @@ "message": "Намерен бе елемент <link> за предварително зареждане за {preloadURL}, който обаче не бе използван от браузъра. Проверете дали използвате правилно атрибута `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Препоръчваме да използвате `<link rel=preload>`, за да укажете по-ранно извличане на ресурсите, които понастоящем се заявяват на по-късен етап от зареждането на страницата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Препоръчваме да използвате `<link rel=preload>`, за да укажете по-ранно извличане на ресурсите, които понастоящем се заявяват на по-късен етап от зареждането на страницата. [Научете повече](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Задайте ключовите заявки да се зареждат предварително" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Добавете маркер `<meta name=\"viewport\">`, за да оптимизирате приложението си за мобилни екрани. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Добавете маркер `<meta name=\"viewport\">`, за да оптимизирате приложението си за мобилни екрани. [Научете повече](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Не бе намерен маркер `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Има маркер `<meta name=\"viewport\">` с атрибут `width` или `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Когато JavaScript е деактивиран, в приложението ви трябва да се показва някакво съдържание, дори да е само предупреждение към потребителя, че за използване на приложението се изисква JavaScript. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Когато JavaScript е деактивиран, в приложението ви трябва да се показва някакво съдържание, дори да е само предупреждение към потребителя, че за използване на приложението се изисква JavaScript. [Научете повече](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "В основната част на страницата трябва да се изобразява съдържание, ако скриптовете ѝ не могат да бъдат заредени." @@ -1164,7 +1164,7 @@ "message": "Показва се част от съдържанието, когато JavaScript не е налице" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Ако създавате прогресивно уеб приложение (PWA), добре е да използвате service worker, за да може то да работи офлайн. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Ако създавате прогресивно уеб приложение (PWA), добре е да използвате service worker, за да може то да работи офлайн. [Научете повече](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Текущата страница не отговаря с код 200, когато е офлайн"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ca.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ca.json index da2b75cbe..78c72aed 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ca.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ca.json
@@ -30,10 +30,10 @@ "message": "Algunes funcions dels elements ARIA superiors han d'incloure funcions concretes dels elements secundaris perquè puguin dur a terme les funcions d'accessibilitat per a les quals s'han dissenyat. [Obtén més informació](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Falten elements amb l'atribut `[role]` que requereixen determinats atributs `[role]` secundaris." + "message": "Els elements amb un `[role]` ARIA que requereixen que els elements secundaris continguin un atribut `[role]` específic no tenen alguns o tots els elements secundaris requerits." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Hi ha elements amb l'atribut `[role]` que requereixen determinats atributs `[role]` secundaris" + "message": "Els elements amb un ARIA `[role]` que requereixen que els elements secundaris continguin un atribut `[role]` específic tenen tots els elements secundaris requerits." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Les funcions de determinats elements superiors han d'incloure algunes funcions dels elements ARIA secundaris perquè puguin dur a terme les funcions d'accessibilitat per a les quals s'han dissenyat. [Obtén més informació](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Els lectors de pantalla inclouen funcions perquè sigui més fàcil navegar per les taules. Assegura't que les cel·les `<td>` que fan servir l'atribut `[headers]` només facin referència a altres cel·les de la mateixa taula. Això pot millorar l'experiència dels usuaris de lectors de pantalla. [Obtén més informació](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Algunes cel·les d'un element `<table>` que fan servir l'atribut `[headers]` fan referència a altres cel·les de la mateixa taula." + "message": "Les cel·les d'un element `<table>` que fan servir l'atribut `[headers]` fan referència a un element `id` que no és a la mateixa taula." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Algunes cel·les d'un element `<table>` que fan servir l'atribut `[headers]` només fan referència a altres cel·les de la mateixa taula." + "message": "Les cel·les d'un element `<table>` que fan servir l'atribut `[headers]` fan referència a cel·les de taula incloses a la mateixa taula." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Els lectors de pantalla inclouen funcions perquè sigui més fàcil navegar per les taules. Assegura't que els encapçalaments de les taules facin sempre referència a un conjunt de cel·les. Això pot millorar l'experiència dels usuaris de lectors de pantalla. [Obtén més informació](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Els elements `<video>` contenen un element `<track>` amb `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Perquè l'aspecte a iOS sigui l'ideal quan els usuaris afegeixin una aplicació web progressiva a la pantalla d'inici, defineix un atribut `apple-touch-icon`. Ha de dirigir a una imatge PNG quadrada de 192 píxels o de 180 píxels que no sigui transparent. [Obtén més informació](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Perquè l'aspecte a iOS sigui l'ideal quan els usuaris afegeixin una aplicació web progressiva a la pantalla d'inici, defineix un atribut `apple-touch-icon`. Ha de dirigir a una imatge PNG quadrada de 192 píxels o de 180 píxels que no sigui transparent. [Obtén més informació](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "No conté un atribut `apple-touch-icon` vàlid" @@ -342,7 +342,7 @@ "message": "Temps total de la CPU" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Et recomanem que redueixis el temps dedicat a analitzar, compilar i executar JavaScript. Et pot ajudar utilitzar càrregues útils de JavaScript més petites. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Et recomanem que redueixis el temps dedicat a analitzar, compilar i executar JavaScript. Et pot ajudar utilitzar càrregues útils de JavaScript més petites. [Obtén més informació](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Redueix el temps d'execució de JavaScript" @@ -351,25 +351,25 @@ "message": "Temps d'execució de JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Els GIF grans no són eficients per publicar contingut animat. A fi d'estalviar bytes a la xarxa, pots substituir els GIF per vídeos MPEG4/WebM en el cas de les animacions i per PNG/WebP en el cas de les imatges estàtiques. [Més informació](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Els GIF grans no són eficients per publicar contingut animat. A fi d'estalviar bytes a la xarxa, pots substituir els GIF per vídeos MPEG4/WebM en el cas de les animacions i per PNG/WebP en el cas de les imatges estàtiques. [Més informació](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Utilitza formats de vídeo per al contingut animat" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Et recomanem que utilitzis la càrrega diferida de les imatges amagades i que no es mostren a la pantalla un cop s'acabin de carregar tots els recursos essencials a fi de reduir el temps necessari perquè la pàgina sigui interactiva. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Et recomanem que utilitzis la càrrega diferida de les imatges amagades i que no es mostren a la pantalla un cop s'acabin de carregar tots els recursos essencials a fi de reduir el temps necessari perquè la pàgina sigui interactiva. [Obtén més informació](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Ajorna les imatges fora de pantalla" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Els recursos estan bloquejant la primera renderització de la pàgina. Et recomanem que publiquis els fitxers JavaScript o CSS inserits que siguin essencials i ajornis tots els estils i els fitxers JavaScript que no ho siguin. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Els recursos estan bloquejant la primera renderització de la pàgina. Et recomanem que publiquis els fitxers JavaScript o CSS inserits que siguin essencials i ajornis tots els estils i els fitxers JavaScript que no ho siguin. [Obtén més informació](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Elimina els recursos que bloquegen la renderització" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Si la càrrega útil de la xarxa és molt gran, els usuaris consumeixen més dades mòbils i els temps de càrrega són més llargs. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Si la càrrega útil de la xarxa és molt gran, els usuaris consumeixen més dades mòbils i els temps de càrrega són més llargs. [Obtén més informació](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Mida total: {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Evita càrregues útils de xarxa enormes" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Reduir els fitxers CSS pot disminuir les mides de càrrega útil a la xarxa. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Reduir els fitxers CSS pot disminuir les mides de càrrega útil a la xarxa. [Obtén més informació](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Redueix els CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Reduir els fitxers JavaScript pot disminuir les mides de càrrega i els temps d'anàlisi de scripts. [Obtén més informació](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Reduir els fitxers JavaScript pot disminuir les mides de càrrega i els temps d'anàlisi de scripts. [Obtén més informació](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Redueix els fitxers JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Per reduir els bytes que es consumeixen de manera innecessària durant l'activitat de la xarxa, suprimeix dels fulls d'estil les regles que no s'utilitzin i ajorna la càrrega dels CSS que no es facin servir per al contingut de la part superior visible. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Per reduir els bytes que es consumeixen de manera innecessària durant l'activitat de la xarxa, suprimeix dels fulls d'estil les regles que no s'utilitzin i ajorna la càrrega dels CSS que no es facin servir per al contingut de la part superior visible. [Obtén més informació](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Suprimeix els CSS no utilitzats" @@ -405,7 +405,7 @@ "message": "Suprimeix els fitxers JavaScript no utilitzats" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Si la memòria cau té una vida llarga, es poden accelerar les visites repetides a la teva pàgina. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Si la memòria cau té una vida llarga, es poden accelerar les visites repetides a la teva pàgina. [Obtén més informació](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{S'ha trobat 1 recurs}other{S'han trobat # recursos}}" @@ -417,31 +417,31 @@ "message": "Utilitza una política de memòria cau eficient per als recursos estàtics" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Les imatges optimitzades es carreguen més ràpidament i utilitzen menys dades mòbils. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Les imatges optimitzades es carreguen més ràpidament i utilitzen menys dades mòbils. [Obtén més informació](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Codifica les imatges amb eficiència" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Publica imatges amb la mida correcta per estalviar dades mòbils i millorar el temps de càrrega. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Publica imatges amb la mida correcta per estalviar dades mòbils i millorar el temps de càrrega. [Obtén més informació](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Adapta la mida de les imatges" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Els recursos basats en text s'han de publicar comprimits (gzip, deflate o brotli) per minimitzar el total de bytes a la xarxa. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Els recursos basats en text s'han de publicar comprimits (gzip, deflate o brotli) per minimitzar el total de bytes a la xarxa. [Obtén més informació](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Activa la compressió de text" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Els formats d'imatge com JPEG 2000, JPEG XR i WebP solen oferir millors resultats de compressió que PNG o JPEG. Això implica baixades més ràpides i menys consum de dades. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Els formats d'imatge com JPEG 2000, JPEG XR i WebP solen oferir millors resultats de compressió que PNG o JPEG. Això implica baixades més ràpides i menys consum de dades. [Obtén més informació](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Publica imatges en format d'última generació" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Si l'amplada del contingut de l'aplicació no coincideix amb l'amplada de la finestra gràfica, és possible que l'aplicació no s'optimitzi per a pantalles de dispositius mòbils. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Si l'amplada del contingut de l'aplicació no coincideix amb l'amplada de la finestra gràfica, és possible que l'aplicació no s'optimitzi per a pantalles de dispositius mòbils. [Obtén més informació](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "La mida de la finestra gràfica ({innerWidth} píxels) no coincideix amb la mida de la finestra ({outerWidth} píxels)." @@ -453,7 +453,7 @@ "message": "El contingut té la mida correcta per a la finestra gràfica" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Les cadenes de sol·licituds essencials de sota et mostren quins recursos es carreguen amb prioritat alta. Et recomanem que escurcis les cadenes, redueixis la mida de baixada dels recursos o ajornis la baixada de recursos innecessaris per millorar la càrrega de pàgines. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Les cadenes de sol·licituds essencials de sota et mostren quins recursos es carreguen amb prioritat alta. Et recomanem que escurcis les cadenes, redueixis la mida de baixada dels recursos o ajornis la baixada de recursos innecessaris per millorar la càrrega de pàgines. [Obtén més informació](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{S'ha trobat 1 cadena}other{S'han trobat # cadenes}}" @@ -675,7 +675,7 @@ "message": "No s'ha registrat cap error del navegador a la consola" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Aprofita la funció CSS que permet mostrar els tipus de lletra per assegurar-te que els usuaris puguin veure el text mentre es carreguen els tipus de lletra per a llocs web. [Obtén més informació](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Aprofita la funció CSS que permet mostrar els tipus de lletra per assegurar-te que els usuaris puguin veure el text mentre es carreguen els tipus de lletra per a llocs web. [Obtén més informació](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Assegura't que el text continuï visible durant la càrrega dels tipus de lletra per a llocs web" @@ -705,7 +705,7 @@ "message": "La informació sobre la mida de la imatge no és vàlida: {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Els navegadors poden demanar de manera proactiva als usuaris que afegeixin la teva aplicació a la pantalla d'inici, cosa que permet que hi interaccionin més. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Els navegadors poden demanar de manera proactiva als usuaris que afegeixin la teva aplicació a la pantalla d'inici, cosa que permet que hi interaccionin més. [Obtén més informació](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "El fitxer de manifest de l'aplicació web no compleix els requisits d'instal·lació" @@ -729,7 +729,7 @@ "message": "Utilitza HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Carregar les pàgines ràpidament mitjançant una xarxa mòbil garanteix una experiència satisfactòria per als usuaris de mòbils. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Carregar les pàgines ràpidament mitjançant una xarxa mòbil garanteix una experiència satisfactòria per als usuaris de mòbils. [Obtén més informació](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Ha tardat {timeInMs, number, seconds} segons a fer-se interactiva" @@ -750,7 +750,7 @@ "message": "Categoria" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Et recomanem que redueixis el temps dedicat a analitzar, compilar i executar JavaScript. Et pot ajudar utilitzar càrregues útils de JavaScript més petites." + "message": "Et recomanem que redueixis el temps dedicat a analitzar, compilar i executar JavaScript. Et pot ajudar utilitzar càrregues útils de JavaScript més petites. [Més informació](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimitza el treball al fil principal" @@ -759,49 +759,49 @@ "message": "Minimitza el treball al fil principal" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Per arribar al major nombre d'usuaris possible, els llocs web han de funcionar en tots els navegadors principals. [Obtén més informació](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Per arribar al major nombre d'usuaris possible, els llocs web han de funcionar en tots els navegadors principals. [Obtén més informació](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "El lloc web funciona en diversos navegadors" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Comprova que l'URL de cada pàgina sigui un enllaç profund i únic per poder compartir-lo als mitjans socials. [Obtén més informació](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Comprova que l'URL de cada pàgina sigui un enllaç profund i únic per poder compartir-lo als mitjans socials. [Obtén més informació](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Cada pàgina té un URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Les transicions en navegar per l'aplicació han de ser àgils, fins i tot en xarxes lentes. És una qüestió clau en la percepció del rendiment. [Obtén més informació](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Les transicions en navegar per l'aplicació han de ser àgils, fins i tot en xarxes lentes. És una experiència clau en la percepció del rendiment per part de l'usuari. [Obtén més informació](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "No sembla que les transicions entre pàgines es bloquegin a la xarxa" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "La latència estimada d'una acció és un càlcul de quant tarda en mil·lisegons la teva aplicació a respondre a una acció de l'usuari durant el període de 5 segons amb més càrregues de pàgines. Si la latència és superior a 50 ms, és possible que els usuaris considerin que l'aplicació és lenta. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "La latència estimada d'una acció és un càlcul de quant tarda en mil·lisegons la teva aplicació a respondre a una acció de l'usuari durant el període de 5 segons amb més càrregues de pàgines. Si la latència és superior a 50 ms, és possible que els usuaris considerin que l'aplicació és lenta. [Obtén més informació](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Latència estimada de les accions" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "La mètrica Primera renderització de contingut marca el moment en què es renderitza el primer text o la primera imatge. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "La mètrica Primera renderització de contingut marca el moment en què es renderitza el primer text o la primera imatge. [Obtén més informació](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Primera renderització de contingut" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "La mètrica Primera inactivitat de la CPU marca el primer moment en què el fil principal de la pàgina està suficientment inactiu per gestionar accions. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "La mètrica Primera inactivitat de la CPU marca el primer moment en què el fil principal de la pàgina està suficientment inactiu per gestionar accions. [Obtén més informació](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Primera inactivitat de la CPU" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "La mètrica Primera renderització significativa mesura el moment en què el contingut principal d'una pàgina és visible. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "La mètrica Primera renderització significativa mesura el moment en què el contingut principal d'una pàgina és visible. [Obtén més informació](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Primera renderització significativa" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "La mètrica Temps fins que és interactiva és el que tarda la pàgina a fer-se completament interactiva. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "La mètrica Temps fins que és interactiva és el que tarda la pàgina a fer-se completament interactiva. [Obtén més informació](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Temps fins que és interactiva" @@ -813,7 +813,7 @@ "message": "Retard potencial màxim respecte a la primera interacció" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "L'índex de velocitat mostra la rapidesa amb què s'emplena el contingut d'una pàgina. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "L'índex de velocitat mostra la rapidesa amb què s'emplena el contingut d'una pàgina. [Obtén més informació](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Índex de velocitat" @@ -837,7 +837,7 @@ "message": "Latències dorsals del servidor" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Els Service Workers permeten que la teva aplicació sigui fiable en condicions imprevisibles de la xarxa. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Els Service Workers permeten que la teva aplicació sigui fiable en condicions imprevisibles de la xarxa. [Obtén més informació](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` no respon amb un codi 200 quan no hi ha connexió" @@ -861,7 +861,7 @@ "message": "Pressupost de rendiment" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Si ja has configurat el format HTTPS, assegura't de redirigir tot el trànsit HTTP cap a HTTPS per activar funcions web segures per a tots els usuaris. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Si ja has configurat el format HTTPS, assegura't de redirigir tot el trànsit HTTP cap a HTTPS per activar funcions web segures per a tots els usuaris. [Obtén més informació](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "No redirigeix el trànsit HTTP cap a HTTPS" @@ -870,7 +870,7 @@ "message": "Redirigeix el trànsit HTTP cap a HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "La mètrica Redireccions introdueix retards addicionals abans de poder carregar la pàgina. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "La mètrica Redireccions introdueix retards addicionals abans de poder carregar la pàgina. [Obtén més informació](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Evita les redireccions múltiples a pàgines" @@ -918,7 +918,7 @@ "message": "El {decimalProportion, number, extendedPercent} del text és llegible" }, "lighthouse-core/audits/seo/font-size.js | explanationViewport": { - "message": "El text és il·legible perquè no hi ha cap metaetiqueta de finestra gràfica optimitzada per a pantalles de mòbil." + "message": "El text és il·legible perquè no hi ha cap metaetiqueta de finestra gràfica optimitzada per a pantalles de dispositius mòbils." }, "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": { "message": "El {decimalProportion, number, extendedPercent} del text és massa petit (d'acord amb una mostra del {decimalProportionVisited, number, extendedPercent})." @@ -999,7 +999,7 @@ "message": "Si el format del fitxer robots.txt no és correcte, és possible que els rastrejadors no puguin entendre com vols que rastregin o indexin el lloc web. [Obtén més informació](https://web.dev/robots-txt)." }, "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": { - "message": "La sol·licitud del fitxer robots.txt ha tornat l'estat HTTP: {statusCode}" + "message": "La sol·licitud del fitxer robots.txt ha tornat l'estat HTTP següent: {statusCode}" }, "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": { "message": "{itemCount,plural, =1{S'ha trobat 1 error}other{S'han trobat # errors}}" @@ -1035,7 +1035,7 @@ "message": "La mida dels elements tàctils és correcta" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "El Service Worker és la tecnologia que fa possible que la teva aplicació utilitzi moltes funcions d'aplicació web progressiva, com ara funcionar sense connexió, poder afegir-se a la pàgina d'inici i mostrar notificacions automàtiques. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "El Service Worker és la tecnologia que fa possible que la teva aplicació utilitzi moltes funcions d'aplicació web progressiva, com ara funcionar sense connexió, poder afegir-se a la pàgina d'inici i mostrar notificacions automàtiques. [Obtén més informació](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Tot i que un Service Worker controla aquesta pàgina, no s'ha trobat cap atribut `start_url` perquè el fitxer de manifest no s'ha pogut analitzar com a format JSON vàlid" @@ -1056,7 +1056,7 @@ "message": "Registra un Service Worker que controla la pàgina i l'atribut `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Utilitzar una pantalla inicial temàtica garanteix una experiència d'alta qualitat quan els usuaris inicien l'aplicació des de la pantalla d'inici. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Utilitzar una pantalla inicial temàtica garanteix una experiència d'alta qualitat quan els usuaris inicien l'aplicació des de la pantalla d'inici. [Obtén més informació](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "No està configurat per a una pantalla inicial personalitzada" @@ -1065,7 +1065,7 @@ "message": "Està configurat per a una pantalla inicial personalitzada" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Es pot aplicar un tema a la barra d'adreces del navegador perquè faci joc amb el teu lloc web. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Es pot aplicar un tema a la barra d'adreces del navegador perquè faci joc amb el teu lloc web. [Obtén més informació](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "No estableix un color temàtic per a la barra d'adreces." @@ -1092,7 +1092,7 @@ "message": "Ús de tercers" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "La mètrica Temps fins al primer byte identifica el moment en què el teu servidor envia una resposta. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "La mètrica Temps fins al primer byte identifica el moment en què el teu servidor envia una resposta. [Obtén més informació](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "El document arrel ha tardat {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tipus" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Et recomanem que utilitzis l'API Temps d'usuari amb la teva aplicació per mesurar-ne el rendiment al món real durant experiències clau dels usuaris. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Et recomanem que utilitzis l'API Temps d'usuari amb la teva aplicació per mesurar-ne el rendiment al món real durant experiències clau dels usuaris. [Obtén més informació](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 temps d'usuari}other{# temps d'usuari}}" @@ -1125,7 +1125,7 @@ "message": "S'ha trobat un element <link> de connexió prèvia per a \"{securityOrigin}\", però el navegador no l'ha utilitzat. Comprova que estiguis utilitzant correctament l'atribut `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Et recomanem que afegeixis suggeriments de recursos `preconnect` o `dns-prefetch` per establir connexions anticipades a orígens importants de tercers. [Obtén més informació](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Et recomanem que afegeixis suggeriments de recursos `preconnect` o `dns-prefetch` per establir connexions anticipades a orígens importants de tercers. [Obtén més informació](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Connecta't prèviament als orígens necessaris" @@ -1134,13 +1134,13 @@ "message": "S'ha trobat un element <link> de càrrega prèvia per a \"{preloadURL}\", però el navegador no l'ha utilitzat. Comprova que estiguis utilitzant correctament l'atribut `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Et recomanem que utilitzis `<link rel=preload>` per prioritzar l'obtenció de recursos que en aquests moments se sol·liciten en un moment posterior de la càrrega de pàgines. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Et recomanem que utilitzis `<link rel=preload>` per prioritzar l'obtenció de recursos que en aquests moments se sol·liciten en un moment posterior de la càrrega de pàgines. [Obtén més informació](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Carrega prèviament les sol·licituds de clau" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Afegeix una etiqueta `<meta name=\"viewport\">` a fi d'optimitzar l'aplicació per a pantalles de dispositius mòbils. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Afegeix una etiqueta `<meta name=\"viewport\">` a fi d'optimitzar l'aplicació per a pantalles de dispositius mòbils. [Obtén més informació](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "No s'ha trobat cap etiqueta `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Té una etiqueta `<meta name=\"viewport\">` amb l'atribut `width` o `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "L'aplicació ha de mostrar algun tipus de contingut quan JavaScript estigui desactivat, encara que només sigui per avisar l'usuari que es requereix JavaScript per utilitzar l'aplicació. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "L'aplicació ha de mostrar algun tipus de contingut quan JavaScript estigui desactivat, encara que només sigui per avisar l'usuari que es requereix JavaScript per utilitzar l'aplicació. [Obtén més informació](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "El cos de la pàgina ha de renderitzar algun tipus de contingut si els scripts no estan disponibles." @@ -1164,7 +1164,7 @@ "message": "Inclou algun tipus de contingut quan JavaScript no està disponible" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Si vols crear una aplicació web progressiva, considera la possibilitat d'utilitzar un Service Worker perquè l'aplicació funcioni sense connexió. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Si vols crear una aplicació web progressiva, considera la possibilitat d'utilitzar un Service Worker perquè l'aplicació funcioni sense connexió. [Obtén més informació](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "La pàgina actual no respon amb un codi 200 quan no hi ha connexió"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/cs.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/cs.json index f2d5908..3da90d9 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/cs.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/cs.json
@@ -30,10 +30,10 @@ "message": "Některé nadřazené role ARIA musejí kvůli poskytovaní správných funkcí přístupnosti obsahovat určité podřízené role. [Další informace](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "V prvcích s atributem `[role]`, které by měly obsahovat podřízené prvky s určitými atributy `[role]`, tyto podřízené prvky chybí." + "message": "V prvcích s atributem ARIA `[role]`, jejichž podřízené prvky musí obsahovat konkrétní atribut `[role]`, některé z těchto povinných podřízených prvků chybí." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Prvky s atributem `[role]`, které by měly obsahovat podřízené prvky s určitými atributy `[role]`, tyto podřízené prvky obsahují" + "message": "Prvky s atributem ARIA `[role]`, jejichž podřízené prvky musí obsahovat konkrétní atribut `[role]`, obsahují všechny povinné podřízené prvky." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Aby poskytovaly správné funkce přístupnosti, musejí být některé podřízené role ARIA umístěny v konkrétních nadřazených rolích. [Další informace](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "Čtečky obrazovek mají funkce, které usnadňují procházení tabulek. Když zajistíte, aby buňky `<td>` s atributem `[headers]` odkazovaly pouze na jiné buňky ve stejné tabulce, můžete tím uživatelům čteček obrazovek usnadnit používání. [Další informace](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Buňky v prvku `<table>`, které mají atribut `[headers]`, odkazují na jiné buňky ve stejné tabulce." + "message": "Buňky v prvku `<table>`, které mají atribut `[headers]`, odkazují na prvek `id`, který se nenachází ve stejné tabulce." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Buňky v prvku `<table>`, které mají atribut `[headers]`, odkazují jen na buňky ve stejné tabulce." + "message": "Buňky v prvku `<table>`, které mají atribut `[headers]`, odkazují na buňky ve stejné tabulce." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Čtečky obrazovek mají funkce, které usnadňují procházení tabulek. Když zajistíte, aby záhlaví tabulek vždy odkazovala na nějakou množinu buněk, bude pro uživatele čteček obrazovek procházení stránky snazší. [Další informace](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "Prvky `<video>` obsahují prvek `<track>` s atributem `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Pro ideální vzhled po přidání progresivní webové aplikace na plochu v systému iOS definujte atribut `apple-touch-icon`. Musí odkazovat na neprůhledný čtvercový obrázek PNG se stranami o délce 192 px (nebo 180 px). [Další informace](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Pro ideální vzhled po přidání progresivní webové aplikace na plochu v systému iOS definujte atribut `apple-touch-icon`. Musí odkazovat na neprůhledný čtvercový obrázek PNG se stranami o délce 192 px (nebo 180 px). [Další informace](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Neobsahuje platný atribut `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Celková doba využití procesoru" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Pokuste se zkrátit dobu analyzování, kompilování a spouštění JavaScriptu. Mohlo by pomoci odesílat menší soubory JavaScript. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "Pokuste se zkrátit dobu analyzování, kompilování a spouštění JavaScriptu. Mohlo by pomoci odesílat menší soubory JavaScript. [Další informace](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Zkraťte dobu provádění JavaScriptu" @@ -351,25 +351,25 @@ "message": "Doba provádění JavaScriptu" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Velké soubory GIF nejsou efektivní k zobrazování animovaného obsahu. Zvažte, zda byste namísto souborů GIF nemohli pro animace použít videa MPEG4/WebM a pro statické obrázky soubory PNG/WebP. Snížíte tak množství přenášených dat. [Další informace](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Velké soubory GIF nejsou efektivní k zobrazování animovaného obsahu. Zvažte, zda byste namísto souborů GIF nemohli pro animace použít videa MPEG4/WebM a pro statické obrázky soubory PNG/WebP. Snížíte tak množství přenášených dat. [Další informace](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Pro animovaný obsah používejte formáty videa" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Zvažte možnost načítat obrázky mimo obrazovku a skryté obrázky „líně“ až po načtení všech kritických zdrojů, abyste zkrátili dobu k dosažení interaktivnosti. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "Zvažte možnost načítat obrázky mimo obrazovku a skryté obrázky „líně“ až po načtení všech kritických zdrojů, abyste zkrátili dobu k dosažení interaktivnosti. [Další informace](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Odložte načítání obrázků mimo obrazovku" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "První vykreslení stránky blokují zdroje. Zvažte, zda byste kriticky důležité zdroje JavaScript a CSS nemohli poskytovat přímo v kódu a stahování veškerého nekritického JavaScriptu a stylů odložit. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "První vykreslení stránky blokují zdroje. Zvažte, zda byste kriticky důležité zdroje JavaScript a CSS nemohli poskytovat přímo v kódu a stahování veškerého nekritického JavaScriptu a stylů odložit. [Další informace](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Eliminujte zdroje, které blokují vykreslení" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Přenášení velkého množství dat po síti je pro uživatele finančně nákladné a obvykle vede k pomalému načítání. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "Přenášení velkého množství dat po síti je pro uživatele finančně nákladné a obvykle vede k pomalému načítání. [Další informace](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Celková velikost byla {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Nepřenáší enormní množství dat" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Minifikací souborů CSS lze snížit množství přenášených dat. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "Minifikací souborů CSS lze snížit množství přenášených dat. [Další informace](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minifikujte kód CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Minifikací souborů JavaScript lze snížit množství přenášených dat a zrychlit analýzu skriptů. [Další informace](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "Minifikací souborů JavaScript lze snížit množství přenášených dat a zrychlit analýzu skriptů. [Další informace](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minifikujte JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Odstraňte ze šablon stylů nepoužívaná pravidla a odložte načítání stylů CSS, které se nepoužívají pro obsah zobrazený bez posouvání, abyste snížili množství nepotřebných dat využívaných síťovou aktivitou. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "Odstraňte ze šablon stylů nepoužívaná pravidla a odložte načítání stylů CSS, které se nepoužívají pro obsah zobrazený bez posouvání, abyste snížili množství nepotřebných dat využívaných síťovou aktivitou. [Další informace](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Odstraňte nepoužívané styly CSS" @@ -405,7 +405,7 @@ "message": "Odstraňte nepoužívaný JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Dlouhá platnost mezipaměti může zrychlit opakované návštěvy stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "Dlouhá platnost mezipaměti může zrychlit opakované návštěvy stránky. [Další informace](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Byl nalezen 1 zdroj}few{Byly nalezeny # zdroje}many{Bylo nalezeno # zdroje}other{Bylo nalezeno # zdrojů}}" @@ -417,31 +417,31 @@ "message": "Používá u statických podkladů efektivní zásady pro mezipaměť" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimalizované obrázky se načítají rychle a spotřebovávají méně mobilních dat. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "Optimalizované obrázky se načítají rychle a spotřebovávají méně mobilních dat. [Další informace](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Používejte efektivní kódování obrázků" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Zobrazujte obrázky s vhodnou velikostí, abyste ušetřili mobilní data a zrychlili načítání. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "Zobrazujte obrázky s vhodnou velikostí, abyste ušetřili mobilní data a zrychlili načítání. [Další informace](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Používejte správnou velikost obrázků" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Textové zdroje by se měly odesílat komprimované (gzip, deflate nebo brotli), aby se minimalizovalo množství přenášených dat. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "Textové zdroje by se měly odesílat komprimované (gzip, deflate nebo brotli), aby se minimalizovalo množství přenášených dat. [Další informace](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Zapněte kompresi textu" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Formáty obrázků JPEG 2000, JPEG XR a WebP často poskytují lepší kompresi než formáty PNG a JPEG, což znamená rychlejší stahování a menší spotřebu dat. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "Formáty obrázků JPEG 2000, JPEG XR a WebP často poskytují lepší kompresi než formáty PNG a JPEG, což znamená rychlejší stahování a menší spotřebu dat. [Další informace](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Zobrazujte obrázky ve formátech nové generace" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Pokud se šířka obsahu aplikace neshoduje se šířkou zobrazované oblasti, aplikace nemusí být optimalizována pro obrazovky mobilních telefonů. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Pokud se šířka obsahu aplikace neshoduje se šířkou zobrazované oblasti, aplikace nemusí být optimalizována pro obrazovky mobilních telefonů. [Další informace](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Velikost zobrazované oblasti {innerWidth} px se neshoduje s velikostí okna {outerWidth} px." @@ -453,7 +453,7 @@ "message": "Obsah má správnou velikost pro zobrazovanou oblast" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Řetězce kritických požadavků níže ukazují, které zdroje se načítají s vysokou prioritou. Zvažte, zda byste načítání stránky nemohli vylepšit tím, že řetězce zkrátíte, zmenšíte zdroje nebo odložíte stahování zdrojů, které nejsou nezbytné. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "Řetězce kritických požadavků níže ukazují, které zdroje se načítají s vysokou prioritou. Zvažte, zda byste načítání stránky nemohli vylepšit tím, že řetězce zkrátíte, zmenšíte zdroje nebo odložíte stahování zdrojů, které nejsou nezbytné. [Další informace](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Byl nalezen 1 řetězec}few{Byly nalezeny # řetězce}many{Bylo nalezeno # řetězce}other{Bylo nalezeno # řetězců}}" @@ -675,7 +675,7 @@ "message": "Do konzole nebyly zaprotokolovány žádné chyby prohlížeče" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Pomocí funkce font-display stylů CSS zajistěte, aby byl text při načítání webfontů viditelný uživatelům. [Další informace](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "Pomocí funkce font-display stylů CSS zajistěte, aby byl text při načítání webfontů viditelný uživatelům. [Další informace](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Zajistěte, aby text při načítání webfontů zůstal viditelný" @@ -705,7 +705,7 @@ "message": "Neplatné informace o velikosti obrázku {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Prohlížeče mohou uživatele aktivně vyzývat, aby si vaši aplikaci přidali na plochu, což může vést k vyšší míře interakce. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Prohlížeče mohou uživatele aktivně vyzývat, aby si vaši aplikaci přidali na plochu, což může vést k vyšší míře interakce. [Další informace](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Manifest webové aplikace nesplňuje instalační požadavky" @@ -729,7 +729,7 @@ "message": "Používá protokol HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Rychlé načítání stránky přes mobilní síť zajišťuje dobrý dojem pro uživatele mobilních zařízení. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "Rychlé načítání stránky přes mobilní síť zajišťuje dobrý dojem pro uživatele mobilních zařízení. [Další informace](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktivní za {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategorie" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Pokuste se zkrátit dobu analyzování, kompilování a spouštění JavaScriptu. Mohlo by pomoci odesílat menší soubory JavaScript." + "message": "Pokuste se zkrátit dobu analyzování, kompilování a spouštění JavaScriptu. Mohlo by pomoci odesílat menší soubory JavaScript. [Další informace](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimalizujte práci v hlavním podprocesu" @@ -759,49 +759,49 @@ "message": "Minimalizuje práci v hlavním podprocesu" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Chcete-li zasáhnout co největší počet uživatelů, měly by webové stránky fungovat ve všech nejpoužívanějších prohlížečích. [Další informace](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Chcete-li zasáhnout co největší počet uživatelů, měly by webové stránky fungovat ve všech nejpoužívanějších prohlížečích. [Další informace](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Web funguje v různých prohlížečích" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Zajistěte, aby na jednotlivé stránky bylo možné přidat přímý odkaz prostřednictvím adresy URL a aby s ohledem na možnost sdílení na sociálních sítích byly adresy URL jedinečné. [Další informace](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Zajistěte, aby na jednotlivé stránky bylo možné přidat přímý odkaz prostřednictvím adresy URL a aby s ohledem na možnost sdílení na sociálních sítích byly adresy URL jedinečné. [Další informace](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Každá stránka má adresu URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Přechody by měly být plynulé i v pomalé síti, zvyšuje se tím dojem výkonnosti. [Další informace](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Přechody by měly být plynulé i v pomalé síti. Je to velmi důležité pro dobrý uživatelský pocit. [Další informace](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Přechody na jiné stránky nepůsobí zabržděně" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Odhadovaná latence vstupu udává, jak dlouho (v milisekundách) bude aplikaci během nejvytíženějších pěti sekund při načítání stránky odhadem trvat reakce na uživatelský vstup. Pokud je latence větší než 50 ms, mohou uživatelé chování aplikace vnímat jako přerušované. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "Odhadovaná latence vstupu udává, jak dlouho (v milisekundách) bude aplikaci během nejvytíženějších pěti sekund při načítání stránky odhadem trvat reakce na uživatelský vstup. Pokud je latence větší než 50 ms, mohou uživatelé chování aplikace vnímat jako přerušované. [Další informace](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Odhadovaná latence vstupu" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "První vykreslení obsahu je okamžik vykreslení prvního textu nebo obrázku. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "První vykreslení obsahu je okamžik vykreslení prvního textu nebo obrázku. [Další informace](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "První vykreslení obsahu" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "První nečinnost procesoru udává čas, kdy je hlavní podproces stránky dostatečně nečinný na to, aby bylo možné zpracovat vstup. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "První nečinnost procesoru udává čas, kdy je hlavní podproces stránky dostatečně nečinný na to, aby bylo možné zpracovat vstup. [Další informace](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "První nečinnost procesoru" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "První smysluplné vykreslení udává, kdy začne být viditelný primární obsah stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "První smysluplné vykreslení udává, kdy začne být viditelný primární obsah stránky. [Další informace](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "První smysluplné vykreslení" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Doba do interaktivity udává, jak dlouho trvá, než stránka začne být plně interaktivní. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "Doba do interaktivity udává, jak dlouho trvá, než stránka začne být plně interaktivní. [Další informace](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Doba do interaktivity" @@ -813,7 +813,7 @@ "message": "Maximální potenciální prodleva prvního vstupu" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Index rychlosti ukazuje, jak rychle se viditelně vyplní obsah stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "Index rychlosti ukazuje, jak rychle se viditelně vyplní obsah stránky. [Další informace](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Index rychlosti" @@ -837,7 +837,7 @@ "message": "Latence backendu na serveru" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Soubor service worker vaší webové aplikaci umožňuje, aby byla spolehlivá i za nepředvídatelného stavu sítě. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Soubor service worker vaší webové aplikaci umožňuje, aby byla spolehlivá i za nepředvídatelného stavu sítě. [Další informace](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "V režimu offline `start_url` nereaguje stavovým kódem 200" @@ -861,7 +861,7 @@ "message": "Rozpočete výkonu" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Pokud jste protokol HTTPS už nastavili, nezapomeňte veškerý provoz přes protokol HTTP přesměrovat na HTTPS, aby všichni vaši uživatelé měli k dispozici funkce zabezpečeného webu. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Pokud jste protokol HTTPS už nastavili, nezapomeňte veškerý provoz přes protokol HTTP přesměrovat na HTTPS, aby všichni vaši uživatelé měli k dispozici funkce zabezpečeného webu. [Další informace](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Nepřesměrovává provoz přes protokol HTTP na HTTPS" @@ -870,7 +870,7 @@ "message": "Přesměrovává provoz přes protokol HTTP na HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Přesměrování způsobují další prodlevy před načtením stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "Přesměrování způsobují další prodlevy před načtením stránky. [Další informace](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "Nepoužívejte několik přesměrování stránky" @@ -1035,7 +1035,7 @@ "message": "Dotykové prvky jsou dostatečně velké" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service worker je technologie, která aplikaci umožňuje využívat mnoho funkcí progresivní webové aplikace, jako je režim offline, přidání na plochu nebo oznámení push. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Service worker je technologie, která aplikaci umožňuje využívat mnoho funkcí progresivní webové aplikace, jako je režim offline, přidání na plochu nebo oznámení push. [Další informace](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Tuto stránku ovládá soubor service worker, nebyl ale nalezen atribut `start_url`, protože se manifest nepodařilo analyzovat jako platný soubor JSON" @@ -1056,7 +1056,7 @@ "message": "Registruje soubor service worker, který ovládá stránku a atribut `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Stylová úvodní obrazovka zajišťuje kvalitní uživatelský dojem při spuštění aplikace z plochy. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Stylová úvodní obrazovka zajišťuje kvalitní uživatelský dojem při spuštění aplikace z plochy. [Další informace](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Není nakonfigurována vlastní úvodní obrazovka" @@ -1065,7 +1065,7 @@ "message": "Je nakonfigurována vlastní úvodní obrazovka" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Motiv adresního řádku prohlížeče lze přizpůsobit motivu vašeho webu. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "Motiv adresního řádku prohlížeče lze přizpůsobit motivu vašeho webu. [Další informace](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Nenastavuje barvu motivu adresního řádku." @@ -1092,7 +1092,7 @@ "message": "Použití zdrojů od třetích stran" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Doba do načtení prvního bajtu udává, jak dlouho vašemu serveru trvá, než odešle odpověď. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "Doba do načtení prvního bajtu udává, jak dlouho vašemu serveru trvá, než odešle odpověď. [Další informace](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Hlavní dokument trval {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Typ" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Zkuste v aplikaci pomocí rozhraní User Timing API implementovat měření reálného výkonu při událostech zásadních pro uživatelský dojem. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "Zkuste v aplikaci pomocí rozhraní User Timing API implementovat měření reálného výkonu při událostech zásadních pro uživatelský dojem. [Další informace](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 časování uživatelů}few{# časování uživatelů}many{# časování uživatelů}other{# časování uživatelů}}" @@ -1125,7 +1125,7 @@ "message": "Byl nalezen prvek <link> k předběžnému připojení ke zdroji {securityOrigin}, ale prohlížeč jej nepoužil. Zkontrolujte, zda správně používáte atribut `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Zvažte přidání signálů `preconnect` nebo `dns-prefetch`, aby bylo možné včas se připojit k důležitým zdrojům třetích stran. [Další informace](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Zvažte přidání signálů `preconnect` nebo `dns-prefetch`, aby bylo možné včas se připojit k důležitým zdrojům třetích stran. [Další informace](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "K potřebným zdrojům se připojujte předem" @@ -1134,13 +1134,13 @@ "message": "Byl nalezen prvek <link> k předběžnému načtení adresy {preloadURL}, ale prohlížeč jej nepoužil. Zkontrolujte, zda správně používáte atribut `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Zvažte použití značky `<link rel=preload>` k prioritnímu načtení zdrojů, o které se nyní žádá později během načítání stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "Zvažte použití značky `<link rel=preload>` k prioritnímu načtení zdrojů, o které se nyní žádá později během načítání stránky. [Další informace](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Klíčové požadavky načítejte předběžně" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Chcete-li aplikaci optimalizovat pro obrazovky mobilních zařízení, přidejte značku `<meta name=\"viewport\">`. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Chcete-li aplikaci optimalizovat pro obrazovky mobilních zařízení, přidejte značku `<meta name=\"viewport\">`. [Další informace](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nebyla nalezena značka `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Obsahuje značku `<meta name=\"viewport\">` s atributem `width` nebo `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Vaše aplikace by měla zobrazovat nějaký obsah, i v případě, že bude JavaScript zakázaný, i kdyby to mělo být jen upozornění pro uživatele, že k použití aplikace je potřeba JavaScript. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "Vaše aplikace by měla zobrazovat nějaký obsah, i v případě, že bude JavaScript zakázaný, i kdyby to mělo být jen upozornění pro uživatele, že k použití aplikace je potřeba JavaScript. [Další informace](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Pokud nejsou k dispozici skripty stránky, v hlavní části stránky by se měl vykreslit nějaký obsah." @@ -1164,7 +1164,7 @@ "message": "Obsahuje určitý obsah, když není k dispozici JavaScript" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Pokud vytváříte progresivní webovou aplikaci, doporučujeme použít soubor service worker, aby aplikace fungovala i offline. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Pokud vytváříte progresivní webovou aplikaci, doporučujeme použít soubor service worker, aby aplikace fungovala i offline. [Další informace](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Stávající stránka nereaguje stavovým kódem 200, když je offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/da.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/da.json index f015c0c8..24412e1 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/da.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/da.json
@@ -30,10 +30,10 @@ "message": "Nogle overordnede ARIA-roller skal indeholde bestemte underordnede roller for at udføre deres tilsigtede hjælpefunktioner [Få flere oplysninger](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Der mangler elementer med `[role]`, som kræver bestemte underordnede `[role]`-elementer." + "message": "Elementer med ARIA-rollen `[role]`, der kræver underordnede elementer med en bestemt `[role]`, mangler nogle eller alle disse påkrævede underordnede elementer." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Elementer med `[role]`, som kræver bestemte underordnede `[role]`-elementer, er til stede." + "message": "Elementer med ARIA-rollen `[role]`, der kræver underordnede elementer med en bestemt `[role]`, har alle de påkrævede underordnede elementer." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Nogle underordnede ARIA-roller skal indgå i bestemte overordnede roller for at udføre deres tilsigtede hjælpefunktioner korrekt. [Få flere oplysninger](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Skærmlæsere har funktioner, der gør det nemmere at finde rundt i tabeller. Du kan give brugere af skærmlæsere en bedre oplevelse ved at sikre, at `<td>`-celler, der anvender attributten `[headers]`, kun henviser til andre celler i samme tabel. [Få flere oplysninger](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Celler i et `<table>`-element, der anvender attributten `[headers]`, henviser til andre celler i den samme tabel." + "message": "Celler i et `<table>`-element, der anvender attributten `[headers]`, henviser til et element `id`, som ikke findes i samme tabel." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Celler i et `<table>`-element, der anvender attributten `[headers]`, henviser kun til andre celler i den samme tabel." + "message": "Celler i et `<table>`-element, der anvender attributten `[headers]`, henviser til tabelceller i den samme tabel." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Skærmlæsere har funktioner, der gør det nemmere at finde rundt i tabeller. Du kan give brugere af skærmlæsere en bedre oplevelse ved at sikre, at tabeloverskrifter altid henviser til nogle cellesæt. [Få flere oplysninger](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "`<video>`-elementerne indeholder et `<track>`-element med `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Angiv et `apple-touch-icon` for at optimere iOS-brugerfladen, når brugere føjer en progressiv app til startskærmen. Det skal føre til en ikke-transparent firkantet PNG på 192 px (eller 180 px). [Få flere oplysninger](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Angiv et `apple-touch-icon` for at optimere iOS-brugerfladen, når brugere føjer en progressiv app til startskærmen. Det skal føre til en ikke-transparent firkantet PNG på 192 px (eller 180 px). [Få flere oplysninger](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Angiver ikke en gyldig `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Samlet CPU-tid" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Overvej at reducere den tid, der bruges på at parse, kompilere og udføre JavaScript. Levering af mindre JavaScript-datapakker kan hjælpe med dette. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Overvej at reducere den tid, der bruges på at parse, kompilere og udføre JavaScript. Levering af mindre JavaScript-datapakker kan hjælpe med dette. [Få flere oplysninger](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reducer udførelsestiden for JavaScript" @@ -351,25 +351,25 @@ "message": "Udførelsestid for JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Store giffer er mindre effektive til at levere animeret indhold. Du kan også overveje at bruge MPEG4-/WebM-videoer til animationer og PNG/WebP til statiske billeder i stedet for giffer for at spare netværksbytes. [Få flere oplysninger](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Store giffer er mindre effektive til at levere animeret indhold. Du kan også overveje at bruge MPEG4-/WebM-videoer til animationer og PNG/WebP til statiske billeder i stedet for giffer for at spare netværksbytes. [Få flere oplysninger](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Brug videoformater til animeret indhold" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Overvej at udskyde indlæsningen af skjulte billeder og billeder, der ikke er på skærmen, til efter alle kritiske ressourcer er blevet indlæst for at reducere den tid, der går, inden siden bliver interaktiv. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Overvej at udskyde indlæsningen af skjulte billeder og billeder, der ikke er på skærmen, til efter alle kritiske ressourcer er blevet indlæst for at reducere den tid, der går, inden siden bliver interaktiv. [Få flere oplysninger](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Udskyd billeder, der ikke er på skærmen" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Ressourcer blokerer for første visning af din side. Overvej at levere kritisk JavaScript/CSS indlejret og udskyde alle ikke-kritiske JavaScript-elementer/typografier. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Ressourcer blokerer for første visning af din side. Overvej at levere kritisk JavaScript/CSS indlejret og udskyde alle ikke-kritiske JavaScript-elementer/typografier. [Få flere oplysninger](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Fjern ressourcer til blokering af gengivelse" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Store datapakker på netværk koster brugerne mange penge og er forbundet med lang indlæsningstid. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Store datapakker på netværk koster brugerne mange penge og er forbundet med lang indlæsningstid. [Få flere oplysninger](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Den samlede størrelse var {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Undgår kæmpe datapakker på netværk" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Formindskelse af CSS-filer kan reducere størrelsen på datapakker på netværk. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Formindskelse af CSS-filer kan reducere størrelsen på datapakker på netværk. [Få flere oplysninger](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Formindsk CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Formindskelse af JavaScript-filer kan reducere størrelsen på datapakker og varigheden af scriptparsing. [Få flere oplysninger](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Formindskelse af JavaScript-filer kan reducere størrelsen på datapakker og varigheden af scriptparsing. [Få flere oplysninger](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Formindsk JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Skær ned på unødvendigt forbrug af bytes i forbindelse med netværksaktivitet ved at fjerne forældede regler fra typografiark og udskyde indlæsning af CSS, der ikke bruges til indhold over skillelinjen. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Skær ned på unødvendigt forbrug af bytes i forbindelse med netværksaktivitet ved at fjerne forældede regler fra typografiark og udskyde indlæsning af CSS, der ikke bruges til indhold over skillelinjen. [Få flere oplysninger](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Fjern CSS, som ikke bruges" @@ -405,7 +405,7 @@ "message": "Fjern JavaScript, som ikke bruges" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "En lang cachelevetid kan gøre indlæsningen hurtigere for tilbagevendende besøgende på din side. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "En lang cachelevetid kan gøre indlæsningen hurtigere for tilbagevendende besøgende på din side. [Få flere oplysninger](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Der blev fundet 1 ressource}one{Der blev fundet # ressource}other{Der blev fundet # ressourcer}}" @@ -417,31 +417,31 @@ "message": "Anvender effektiv cachepolitik på statiske aktiver" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimerede billeder indlæses hurtigere og bruger mindre mobildata. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimerede billeder indlæses hurtigere og bruger mindre mobildata. [Få flere oplysninger](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Kryptér billeder effektivt" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Vis billeder i korrekte størrelser for at spare mobildata og forbedre indlæsningstiden. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Vis billeder i korrekte størrelser for at spare mobildata og forbedre indlæsningstiden. [Få flere oplysninger](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Brug korrekte billedstørrelser" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Tekstbaserede ressourcer bør vises i komprimeret format (gzip, Deflate eller Brotli), så netværkets samlede antal bytes formindskes. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Tekstbaserede ressourcer bør vises i komprimeret format (gzip, Deflate eller Brotli), så netværkets samlede antal bytes formindskes. [Få flere oplysninger](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Aktivér tekstkomprimering" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Billedformater såsom JPEG 2000, JPEG XR og WebP giver ofte en bedre komprimering end PNG og JPEG, hvilket betyder hurtigere downloads og mindre dataforbrug. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Billedformater såsom JPEG 2000, JPEG XR og WebP giver ofte en bedre komprimering end PNG og JPEG, hvilket betyder hurtigere downloads og mindre dataforbrug. [Få flere oplysninger](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Vis billeder i formater af næste generation" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Hvis bredden på indholdet i din app ikke stemmer overens med bredden på din visning, bliver din app muligvis ikke optimeret til mobilskærme. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Hvis bredden på indholdet i din app ikke stemmer overens med bredden på din visning, bliver din app muligvis ikke optimeret til mobilskærme. [Få flere oplysninger](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Visningens størrelse på {innerWidth} px stemmer ikke overens med vinduets størrelse på {outerWidth} px." @@ -453,7 +453,7 @@ "message": "Indholdet har den rigtige størrelse til visningen" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Kæderne med kritiske anmodninger nedenfor viser dig, hvilke ressourcer der indlæses med høj prioritet. Overvej at reducere kædernes længde, så ressourcernes downloadstørrelse bliver mindre, eller at udskyde download af unødvendige ressourcer, så sideindlæsningen forbedres. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Kæderne med kritiske anmodninger nedenfor viser dig, hvilke ressourcer der indlæses med høj prioritet. Overvej at reducere kædernes længde, så ressourcernes downloadstørrelse bliver mindre, eller at udskyde download af unødvendige ressourcer, så sideindlæsningen forbedres. [Få flere oplysninger](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Der blev fundet 1 kæde}one{Der blev fundet # kæde}other{Der blev fundet # kæder}}" @@ -675,7 +675,7 @@ "message": "Der blev ikke logført nogen browserfejl i konsollen" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Udnyt CSS-funktionen til skrifttypevisning for at sikre, at teksten kan ses af brugerne, mens webfonts indlæses. [Få flere oplysninger](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Udnyt CSS-funktionen til skrifttypevisning for at sikre, at teksten kan ses af brugerne, mens webfonts indlæses. [Få flere oplysninger](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Sørg for, at tekst forbliver synlig under indlæsning af webfont" @@ -705,7 +705,7 @@ "message": "Oplysningerne om billedstørrelse er ikke gyldige {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Browsere kan proaktivt bede brugere om at føje din app til deres startskærm, hvilket kan medføre større interaktion. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Browsere kan proaktivt bede brugere om at føje din app til deres startskærm, hvilket kan medføre større interaktion. [Få flere oplysninger](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Webappens manifest opfylder ikke kravene til installation" @@ -729,7 +729,7 @@ "message": "Bruger HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Hurtig sideindlæsning via mobilnetværk sikrer en god oplevelse for mobilbrugere. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Hurtig sideindlæsning via mobilnetværk sikrer en god oplevelse for mobilbrugere. [Få flere oplysninger](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktiv efter {timeInMs, number, seconds} sek." @@ -750,7 +750,7 @@ "message": "Kategori" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Overvej at reducere den tid, der bruges på at parse, kompilere og udføre JavaScript. Levering af mindre JavaScript-datapakker kan hjælpe med dette." + "message": "Overvej at reducere den tid, der bruges på at parse, kompilere og udføre JavaScript. Levering af mindre JavaScript-datapakker kan hjælpe med dette. [Få flere oplysninger](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Formindsk primært trådarbejde" @@ -759,49 +759,49 @@ "message": "Formindsker primært trådarbejde" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Websites bør fungere på alle de mest populære browsere, så de når ud til flest mulige brugere. [Få flere oplysninger](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Websites bør fungere på alle populære browsere, så de når ud til flest mulige brugere. [Få flere oplysninger](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Websitet fungerer i forskellige browsere" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Sørg for, at der kan føjes et dybt link til individuelle sider via en webadresse, og at denne webadresse er unik, så den kan deles på sociale medier. [Få flere oplysninger](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Sørg for, at der kan føjes et dybt link til individuelle sider via en webadresse, og at denne webadresse er unik, så den kan deles på sociale medier. [Få flere oplysninger](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Hver side har en webadresse" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Overgange bør være hurtige, når der trykkes på forskellige elementer, også selvom netværket er langsomt. Det er afgørende for brugerens opfattelse af effektiviteten. [Få flere oplysninger](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Overgange bør være hurtige, når der trykkes på forskellige elementer, også selvom netværket er langsomt. Det er afgørende for brugerens opfattelse af effektiviteten. [Få flere oplysninger](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Det føles ikke som om sideovergange blokeres på netværket" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Estimeret inputforsinkelse er en anslået værdi af, hvor længe din app er om at reagere på brugerinput i millisekunder i det travleste femsekundersvindue under en sideindlæsning. Hvis din forsinkelse er længere end 50 ms, kan brugerne opfatte din app som langsom. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Estimeret inputforsinkelse er en anslået værdi af, hvor længe din app er om at reagere på brugerinput i millisekunder i det travleste femsekundersvindue under en sideindlæsning. Hvis din forsinkelse er længere end 50 ms, kan brugerne opfatte din app som langsom. [Få flere oplysninger](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Estimeret inputforsinkelse" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Første visning af indhold markerer tidspunktet, hvor den første tekst eller det første billede vises. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Første visning af indhold markerer tidspunktet, hvor den første tekst eller det første billede vises. [Få flere oplysninger](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Første udfyldning af indhold" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Første stillestående CPU markerer det tidspunkt, hvor sidens primære tråd er stabil nok til at behandle input. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Første stillestående CPU markerer det tidspunkt, hvor sidens primære tråd er stabil nok til at behandle input. [Få flere oplysninger](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Første stillestående CPU" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Første meningsfulde visning måler, hvornår det primære indhold på en side kan ses. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Første meningsfulde visning måler, hvornår det primære indhold på en side kan ses. [Få flere oplysninger](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Første betydningsfulde udfyldning" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Tid inden interaktiv tilstand er den mængde tid, det tager, før siden er helt interaktiv. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Tid inden interaktiv tilstand er den mængde tid, det tager, før siden er helt interaktiv. [Få flere oplysninger](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tid inden interaktiv tilstand" @@ -813,7 +813,7 @@ "message": "Maks. potentiel ventetid efter første input" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Hastighedsindekset viser, hvor hurtigt indholdet på en side er visuelt udfyldt. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Hastighedsindekset viser, hvor hurtigt indholdet på en side er visuelt udfyldt. [Få flere oplysninger](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Hastighedsindeks" @@ -837,7 +837,7 @@ "message": "Forsinkelser for serverens backend" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "En scripttjeneste gør din webapp pålidelig ved uforudseelige netværksforhold. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "En scripttjeneste gør din webapp pålidelig ved uforudseelige netværksforhold. [Få flere oplysninger](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` svarer ikke med en 200-kode, når det er offline" @@ -861,7 +861,7 @@ "message": "Budget for ydeevne" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Hvis du allerede har konfigureret HTTPS, skal du sørge for at omdirigere al HTTP-trafik, så alle dine brugere får sikre webfunktioner. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Hvis du allerede har konfigureret HTTPS, skal du sørge for at omdirigere al HTTP-trafik, så alle dine brugere får sikre webfunktioner. [Få flere oplysninger](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Omdirigerer ikke HTTP-trafik til HTTPS" @@ -870,7 +870,7 @@ "message": "Omdirigerer HTTP-trafik til HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Omdirigeringer medfører yderligere forsinkelser, inden siden kan indlæses. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Omdirigeringer medfører yderligere forsinkelser, inden siden kan indlæses. [Få flere oplysninger](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Undgå mange sideomdirigeringer" @@ -1035,7 +1035,7 @@ "message": "Trykbare elementer har en passende størrelse" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Scripttjenesten er den teknologi, der gør det muligt for din app at bruge mange funktioner til progressive webapps, f.eks. offline, tilføjelse på startskærme og push-notifikationer. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Scripttjenesten er den teknologi, der gør det muligt for din app at bruge mange funktioner til progressive webapps, f.eks. offline, tilføjelse på startskærme og push-notifikationer. [Få flere oplysninger](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Denne side styres af en scripttjeneste, men der blev ikke fundet noget `start_url`, fordi manifestet ikke kunne parse den som en gyldig JSON-fil" @@ -1056,7 +1056,7 @@ "message": "Registrerer en scripttjeneste, der styrer siden og `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "En splash-skærm med tema sikrer, at brugerne får en god oplevelse, når de starter din app på deres startskærm. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "En splash-skærm med tema sikrer, at brugerne får en god oplevelse, når de starter din app på deres startskærm. [Få flere oplysninger](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Websitet er ikke konfigureret til en tilpasset splash-skærm" @@ -1065,7 +1065,7 @@ "message": "Konfigureret til en tilpasset splash-skærm" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Der kan angives et tema for browserens adresselinje, som matcher dit website. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Der kan angives et tema for browserens adresselinje, som matcher dit website. [Få flere oplysninger](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Angiver ikke en temafarve til adresselinjen." @@ -1092,7 +1092,7 @@ "message": "Tredjepartsbrug" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "TTFB (Time To First Byte) identificerer tidspunktet for, hvornår din server sender et svar. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "TTFB (Time To First Byte) identificerer tidspunktet for, hvornår din server sender et svar. [Få flere oplysninger](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Roddokumentet tog {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Type" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Du kan også vælge at bruge User Timing API som værktøj til din app for at måle appens ydeevne i den virkelige verden i forbindelse med vigtige brugeroplevelser. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Du kan også vælge at bruge User Timing API som værktøj til din app for at måle appens ydeevne i den virkelige verden i forbindelse med vigtige brugeroplevelser. [Få flere oplysninger](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 brugstid}one{# brugstid}other{# brugstider}}" @@ -1125,7 +1125,7 @@ "message": "Der blev fundet et <link>, der kan oprette forbindelse på forhånd for \"{securityOrigin}\", men det blev ikke brugt af browseren. Tjek, at du bruger attributten `crossorigin` korrekt." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Overvej at tilføje ressourcehints til `preconnect` eller `dns-prefetch` for at oprette tidlige forbindelser til vigtige tredjepartswebsites. [Få flere oplysninger](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Overvej at tilføje ressourcehints til `preconnect` eller `dns-prefetch` for at oprette tidlige forbindelser til vigtige tredjepartswebsites. [Få flere oplysninger](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Opret forbindelse på forhånd til påkrævede websites" @@ -1134,13 +1134,13 @@ "message": "Der blev fundet et <link> til forudindlæsning for \"{preloadURL}\", men det blev ikke brugt af browseren. Tjek, at du bruger attributten `crossorigin` korrekt." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Overvej at bruge `<link rel=preload>` til at prioritere hentning af ressourcer, der er anmodet om senere i sideindlæsningen. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Overvej at bruge `<link rel=preload>` til at prioritere hentning af ressourcer, der er anmodet om senere i sideindlæsningen. [Få flere oplysninger](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Forudindlæs vigtige anmodninger" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Tilføj et `<meta name=\"viewport\">`-tag for at optimere din app til mobilskærme. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Tilføj et `<meta name=\"viewport\">`-tag for at optimere din app til mobilskærme. [Få flere oplysninger](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Der blev ikke fundet noget `<meta name=\"viewport\">`-tag" @@ -1152,7 +1152,7 @@ "message": "Der er et `<meta name=\"viewport\">`-tag med `width` eller `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Din app bør vise noget indhold, når JavaScript er deaktiveret, også selvom det bare er en advarsel til brugeren om, at JavaScript er påkrævet for at bruge appen. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Din app bør vise noget indhold, når JavaScript er deaktiveret, også selvom det bare er en advarsel til brugeren om, at JavaScript er påkrævet for at bruge appen. [Få flere oplysninger](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Teksten på siden bør gengive noget indhold, hvis dens script ikke er tilgængelig." @@ -1164,7 +1164,7 @@ "message": "Indeholder noget indhold, når JavaScript ikke er tilgængelig" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Hvis du er ved at udvikle en progressiv webapp, kan du overveje at bruge en scripttjeneste, så din app kan fungere offline. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Hvis du er ved at udvikle en progressiv webapp, kan du overveje at bruge en scripttjeneste, så din app kan fungere offline. [Få flere oplysninger](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Den aktuelle side svarer ikke med en 200-kode, når den er offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/de.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/de.json index 51fb43eb..580319f 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/de.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/de.json
@@ -30,10 +30,10 @@ "message": "Einige übergeordnete ARIA-Rollen müssen bestimmte untergeordnete Rollen enthalten, damit sie die beabsichtigten Hilfsfunktionen erfüllen können. [Weitere Informationen.](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Bei Elementen mit `[role]`, die bestimmte untergeordnete `[role]`-Elemente erfordern, fehlen diese untergeordneten Elemente." + "message": "Den Elementen mit einer ARIA-`[role]`, deren untergeordnete Elemente eine bestimmte `[role]` enthalten müssen, fehlen einige oder alle dieser erforderlichen untergeordneten Elemente." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Bei Elementen mit `[role]`, die bestimmte untergeordnete `[role]`-Elemente erfordern, sind diese untergeordneten Elemente vorhanden" + "message": "Die Elemente mit einer ARIA-`[role]`, deren untergeordnete Elemente eine bestimmte `[role]` enthalten müssen, haben alle erforderlichen untergeordneten Elemente." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Einige untergeordnete ARIA-Rollen müssen in bestimmten übergeordneten Rollen enthalten sein, damit sie die beabsichtigten Hilfsfunktionen erfüllen können. [Weitere Informationen.](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "Screenreader bieten Funktionen, die die Navigation in Tabellen vereinfachen. Wenn Sie dafür sorgen, dass `<td>`-Zellen, die das `[headers]`-Attribut verwenden, nur auf andere Zellen in derselben Tabelle verweisen, kann dies für Screenreader-Nutzer hilfreich sein. [Weitere Informationen.](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Zellen in einem `<table>`-Element, die das `[headers]`-Attribut verwenden, verweisen nur auf andere Zellen in derselben Tabelle." + "message": "Zellen in einem \"`<table>`\"-Element, die das Attribut \"`[headers]`\" enthalten, verweisen auf ein \"`id`\"-Element, das sich nicht in derselben Tabelle befindet." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Zellen in einem `<table>`-Element, die das `[headers]`-Attribut verwenden, verweisen nur auf andere Zellen in derselben Tabelle." + "message": "Zellen in einem \"`<table>`\"-Element, die das Attribut \"`[headers]`\" enthalten, verweisen auf Zellen in derselben Tabelle." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Screenreader bieten Funktionen, die die Navigation in Tabellen vereinfachen. Wenn Sie dafür sorgen, dass Tabellenüberschriften immer auf eine Auswahl von Zellen verweisen, kann dies für Screenreader-Nutzer hilfreich sein. [Weitere Informationen.](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "`<video>`-Elemente enthalten ein `<track>`-Element mit `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Definieren Sie ein `apple-touch-icon` für eine ideale Darstellung unter iOS, wenn Nutzer die progressive Web-App dem Startbildschirm hinzufügen. Es muss auf eine nicht transparente, quadratische PNG-Datei mit 192 px (oder 180 px) verweisen. [Weitere Informationen.](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Definieren Sie ein `apple-touch-icon` für eine ideale Darstellung unter iOS, wenn Nutzer die progressive Web-App dem Startbildschirm hinzufügen. Es muss auf eine nicht transparente, quadratische PNG-Datei mit 192 px (oder 180 px) verweisen. [Weitere Informationen.](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Hat kein gültiges `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "CPU-Zeit insgesamt" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Versuchen Sie, die Zeit für das Parsen, Kompilieren und Ausführen von JavaScript zu reduzieren. Die Bereitstellung kleinerer JS-Nutzlasten kann dabei helfen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "Versuchen Sie, die Zeit für das Parsen, Kompilieren und Ausführen von JavaScript zu reduzieren. Die Bereitstellung kleinerer JS-Nutzlasten kann dabei helfen. [Weitere Informationen.](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Ausführungszeit von JavaScript reduzieren" @@ -351,25 +351,25 @@ "message": "JavaScript-Ausführungszeit" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Große GIF-Dateien sind nur bedingt für die Auslieferung animierter Inhalte geeignet. Sie können stattdessen MPEG4- oder WebM-Videos für Animationen und PNG oder WebP für statische Bilder verwenden und so die Netzwerk-Datenmenge reduzieren. [Weitere Informationen](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Große GIF-Dateien sind nur bedingt für die Auslieferung animierter Inhalte geeignet. Sie können stattdessen MPEG4- oder WebM-Videos für Animationen und PNG oder WebP für statische Bilder verwenden und so die Netzwerk-Datenmenge reduzieren. [Weitere Informationen](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Videoformate für animierte Inhalte verwenden" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Wenn Sie nicht sichtbare und versteckte Bilder erst laden lassen, nachdem alle wichtigen Ressourcen geladen wurden, können Sie die Zeit bis zur Interaktivität reduzieren. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "Wenn Sie nicht sichtbare und versteckte Bilder erst laden lassen, nachdem alle wichtigen Ressourcen geladen wurden, können Sie die Zeit bis zur Interaktivität reduzieren. [Weitere Informationen.](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Nicht sichtbare Bilder aufschieben" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Ressourcen blockieren den First Paint Ihrer Seite. Versuchen Sie, wichtiges JS und wichtige CSS inline anzugeben und alle nicht kritischen JS und Stile aufzuschieben. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "Ressourcen blockieren den First Paint Ihrer Seite. Versuchen Sie, wichtiges JS und wichtige CSS inline anzugeben und alle nicht kritischen JS und Stile aufzuschieben. [Weitere Informationen.](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Ressourcen beseitigen, die das Rendering blockieren" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Große Netzwerknutzlasten kosten Nutzer bares Geld und hängen eng mit langen Ladezeiten zusammen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "Große Netzwerknutzlasten kosten Nutzer bares Geld und hängen eng mit langen Ladezeiten zusammen. [Weitere Informationen.](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Die Gesamtgröße war {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Vermeidet sehr große Netzwerknutzlasten" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Durch die Komprimierung von CSS-Dateien können Netzwerknutzlasten verkleinert werden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "Durch die Komprimierung von CSS-Dateien können Netzwerknutzlasten verkleinert werden. [Weitere Informationen.](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "CSS komprimieren" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Durch die Komprimierung von JavaScript-Dateien können Nutzlastgrößen und die Zeit zum Parsen von Skripts reduziert werden. [Weitere Informationen.](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "Durch die Komprimierung von JavaScript-Dateien können Nutzlastgrößen und die Zeit zum Parsen von Skripts reduziert werden. [Weitere Informationen.](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "JavaScript komprimieren" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Sie können ungültige Regeln aus Stylesheets entfernen und das Laden von CSS aufschieben, die nicht für ohne Scrollen sichtbare Inhalte verwendet werden, um unnötigen Datenverbrauch durch Netzwerkaktivität zu vermeiden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "Sie können ungültige Regeln aus Stylesheets entfernen und das Laden von CSS aufschieben, die nicht für ohne Scrollen sichtbare Inhalte verwendet werden, um unnötigen Datenverbrauch durch Netzwerkaktivität zu vermeiden. [Weitere Informationen.](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Nicht verwendete CSS entfernen" @@ -405,7 +405,7 @@ "message": "Nicht genutztes JavaScript entfernen" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Eine lange Lebensdauer des Cache kann wiederholte Besuche Ihrer Seite beschleunigen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "Eine lange Lebensdauer des Cache kann wiederholte Besuche Ihrer Seite beschleunigen. [Weitere Informationen.](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 Ressource gefunden}other{# Ressourcen gefunden}}" @@ -417,31 +417,31 @@ "message": "Verwendet eine effiziente Cache-Richtlinie für statische Inhalte" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimierte Bilder werden schneller geladen und verbrauchen weniger mobile Daten. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "Optimierte Bilder werden schneller geladen und verbrauchen weniger mobile Daten. [Weitere Informationen.](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Bilder effizient codieren" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Stellen Sie Bilder bereit, die eine angemessene Größe haben, um mobile Daten zu sparen und die Ladezeit zu verbessern. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "Stellen Sie Bilder bereit, die eine angemessene Größe haben, um mobile Daten zu sparen und die Ladezeit zu verbessern. [Weitere Informationen.](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Bilder richtig dimensionieren" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Textbasierte Ressourcen sollten mit Komprimierung (gzip, Deflate oder Brotli) ausgeliefert werden, um die Datenmenge im Netzwerk insgesamt zu minimieren. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "Textbasierte Ressourcen sollten mit Komprimierung (gzip, Deflate oder Brotli) ausgeliefert werden, um die Datenmenge im Netzwerk insgesamt zu minimieren. [Weitere Informationen.](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Textkomprimierung aktivieren" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Bildformate wie JPEG 2000, JPEG XR und WebP bieten oft eine bessere Komprimierung als PNG oder JPEG, was schnellere Downloads und einen geringeren Datenverbrauch ermöglicht. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "Bildformate wie JPEG 2000, JPEG XR und WebP bieten oft eine bessere Komprimierung als PNG oder JPEG, was schnellere Downloads und einen geringeren Datenverbrauch ermöglicht. [Weitere Informationen.](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Bilder in modernen Formaten bereitstellen" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Wenn die Breite Ihrer App-Inhalte nicht mit der des Darstellungsbereichs übereinstimmt, ist Ihre App möglicherweise nicht für Bildschirme von Mobilgeräten optimiert. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Wenn die Breite Ihrer App-Inhalte nicht mit der des Darstellungsbereichs übereinstimmt, ist Ihre App möglicherweise nicht für Bildschirme von Mobilgeräten optimiert. [Weitere Informationen.](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Die Größe des Darstellungsbereichs von {innerWidth} Pixeln stimmt nicht mit der Fenstergröße von {outerWidth} Pixeln überein." @@ -453,7 +453,7 @@ "message": "Inhalt hat die richtige Größe für den Darstellungsbereich" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "In den unten aufgeführten Ketten kritischer Anfragen können Sie sehen, welche Ressourcen mit einer hohen Priorität geladen werden. Versuchen Sie, die Ketten zu verkürzen, die Downloadgröße von Ressourcen zu reduzieren oder das Herunterladen unnötiger Ressourcen aufzuschieben, um den Seitenaufbau zu beschleunigen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "In den unten aufgeführten Ketten kritischer Anfragen können Sie sehen, welche Ressourcen mit einer hohen Priorität geladen werden. Versuchen Sie, die Ketten zu verkürzen, die Downloadgröße von Ressourcen zu reduzieren oder das Herunterladen unnötiger Ressourcen aufzuschieben, um den Seitenaufbau zu beschleunigen. [Weitere Informationen.](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 Kette gefunden}other{# Ketten gefunden}}" @@ -675,7 +675,7 @@ "message": "Es wurden keine Browserfehler in der Konsole protokolliert" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Verwenden Sie die CSS-Funktion font-display, damit der Text für Nutzer sichtbar ist, während Webfonts geladen werden. [Weitere Informationen.](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "Verwenden Sie die CSS-Funktion font-display, damit der Text für Nutzer sichtbar ist, während Webfonts geladen werden. [Weitere Informationen.](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Darauf achten, dass der Text während der Webfont-Ladevorgänge sichtbar bleibt" @@ -702,10 +702,10 @@ "message": "Zeigt Bilder mit einem korrekten Seitenverhältnis an" }, "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": { - "message": "Ungültige Informationen zur Bildgröße {url}" + "message": "Ungültige Informationen zur Bildgröße: {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Browser können Nutzer direkt dazu auffordern, Ihre Web-App zum Startbildschirm hinzuzufügen. Das kann zu mehr Interaktionen führen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Browser können Nutzer direkt dazu auffordern, Ihre Web-App zum Startbildschirm hinzuzufügen. Das kann zu mehr Engagement führen. [Weitere Informationen.](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Das Manifest der Web-App erfüllt die Anforderungen an die Installierbarkeit nicht" @@ -729,7 +729,7 @@ "message": "Verwendet HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Ein schneller Seitenaufbau über ein Mobilfunknetz sorgt dafür, dass die Seite für Nutzer auf Mobilgeräten angenehm zu bedienen ist. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "Ein schneller Seitenaufbau über ein Mobilfunknetz sorgt dafür, dass die Seite für Nutzer auf Mobilgeräten angenehm zu bedienen ist. [Weitere Informationen.](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktiv nach {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategorie" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Versuchen Sie, die Zeit für das Parsen, Kompilieren und Ausführen von JS zu reduzieren. Die Bereitstellung kleinerer JS-Nutzlasten kann dabei helfen." + "message": "Versuchen Sie, die Zeit für das Parsen, Kompilieren und Ausführen von JavaScript zu reduzieren. Die Bereitstellung kleinerer JS-Nutzlasten kann dabei helfen. [Weitere Informationen](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Aufwand für Hauptthread minimieren" @@ -759,49 +759,49 @@ "message": "Minimiert den Aufwand für den Hauptthread" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Damit Sie möglichst viele Nutzer erreichen können, sollte Ihre Website mit allen gängigen Browsern kompatibel sein. [Weitere Informationen.](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Damit Sie möglichst viele Nutzer erreichen können, sollte Ihre Website mit allen gängigen Browsern kompatibel sein. [Weitere Informationen.](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Website funktioniert auf verschiedenen Browsern" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Für die einzelnen Seiten sollten Deeplinks erstellt werden können. Achten Sie darauf, dass die entsprechenden URLs eindeutig sind, sodass sich die Seiten in sozialen Netzwerken leichter teilen lassen. [Weitere Informationen.](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Für die einzelnen Seiten sollten Deeplinks erstellt werden können. Achten Sie darauf, dass die entsprechenden URLs eindeutig sind, sodass sich die Seiten in sozialen Netzwerken leichter teilen lassen. [Weitere Informationen.](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Jede Seite hat eine URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Übergänge sollten sich auch bei einer langsamen Netzwerkverbindung schnell anfühlen – dies trägt erheblich zur wahrgenommenen Leistung Ihrer Web-App bei. [Weitere Informationen.](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Übergänge sollten sich auch bei einer langsamen Netzwerkverbindung schnell anfühlen. Dies trägt beim Nutzer erheblich zur wahrgenommenen Leistung bei. [Weitere Informationen.](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Seitenübergänge vermitteln nicht das Gefühl von übermäßigen Ladezeiten" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Die geschätzte Eingabelatenz ist eine Schätzung dessen, wie viele Millisekunden Ihre App benötigt, um während des 5-s-Fensters mit der stärksten Auslastung beim Seitenaufbau auf Nutzereingaben zu reagieren. Wenn die Latenz bei Ihnen über 50 ms beträgt, empfinden Nutzer Ihre App möglicherweise als langsam. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "Die geschätzte Eingabelatenz ist eine Schätzung dessen, wie viele Millisekunden Ihre App benötigt, um während des 5-s-Fensters mit der stärksten Auslastung beim Seitenaufbau auf Nutzereingaben zu reagieren. Wenn die Latenz bei Ihnen über 50 ms beträgt, empfinden Nutzer Ihre App möglicherweise als langsam. [Weitere Informationen.](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Geschätzte Eingabelatenz" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "First Contentful Paint gibt an, wann der erste Text oder das erste Bild gezeichnet wird. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "First Contentful Paint gibt an, wann der erste Text oder das erste Bild gezeichnet wird. [Weitere Informationen.](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Erste Inhalte gezeichnet" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "\"Erster CPU-Leerlauf\" gibt an, wann die Aktivität des Hauptthreads der Seite das erste Mal gering genug ist, um Eingaben zu verarbeiten. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "Der Messwert \"Erster CPU-Leerlauf\" gibt an, wann die Aktivität des Hauptthreads der Seite das erste Mal gering genug ist, um Eingaben zu verarbeiten. [Weitere Informationen.](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Erster CPU-Leerlauf" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "\"Inhalte weitgehend gezeichnet\" gibt an, wann die Hauptinhalte einer Seite sichtbar sind. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "\"Inhalte weitgehend gezeichnet\" gibt an, wann die Hauptinhalte einer Seite sichtbar sind. [Weitere Informationen.](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Inhalte weitgehend gezeichnet" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Die Zeit bis Interaktivität entspricht der Zeit, die vergeht, bis die Seite vollständig interaktiv ist. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "Die Zeit bis Interaktivität entspricht der Zeit, die vergeht, bis die Seite vollständig interaktiv ist. [Weitere Informationen.](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Zeit bis Interaktivität" @@ -813,7 +813,7 @@ "message": "Maximaler potenzieller First Input Delay" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Der Geschwindigkeitsindex gibt an, wie schnell die Inhalte einer Seite sichtbar dargestellt werden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "Der Geschwindigkeitsindex gibt an, wie schnell die Inhalte einer Seite sichtbar dargestellt werden. [Weitere Informationen.](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Geschwindigkeitsindex" @@ -837,7 +837,7 @@ "message": "Server-Back-End-Latenzen" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Mithilfe eines Service Workers kann Ihre Web-App auch bei schlechten Netzwerkbedingungen zuverlässig funktionieren. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Mithilfe eines Service Workers kann Ihre Web-App auch bei schlechten Netzwerkbedingungen zuverlässig funktionieren. [Weitere Informationen.](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` reagiert im Offlinemodus nicht mit dem HTTP-Statuscode 200" @@ -861,7 +861,7 @@ "message": "Leistungsbudget" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Wenn Sie HTTPS bereits eingerichtet haben, sollten Sie den gesamten HTTP-Traffic auf HTTPS weiterleiten, damit für alle Ihre Nutzer sichere Webfunktionen aktiviert sind. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Wenn Sie HTTPS bereits eingerichtet haben, sollten Sie den gesamten HTTP-Traffic auf HTTPS weiterleiten, damit für alle Ihre Nutzer sichere Webfunktionen aktiviert sind. [Weitere Informationen.](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "HTTP-Traffic wird nicht auf HTTPS weitergeleitet" @@ -870,7 +870,7 @@ "message": "HTTP-Traffic wird auf HTTPS weitergeleitet" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Weiterleitungen führen zu zusätzlichen Verzögerungen, bevor die Seite geladen werden kann. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "Weiterleitungen führen zu zusätzlichen Verzögerungen, bevor die Seite geladen werden kann. [Weitere Informationen.](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "Mehrere Weiterleitungen auf die Seite vermeiden" @@ -1035,7 +1035,7 @@ "message": "Größe von Tippzielen ist richtig eingestellt" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Der Service Worker ermöglicht es Ihrer App, viele der Funktionen von progressiven Web-Apps zu nutzen, beispielsweise den Offlinemodus, das Hinzufügen zum Startbildschirm und Push-Benachrichtigungen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Der Service Worker ermöglicht es Ihrer App, viele der Funktionen von progressiven Web-Apps zu nutzen, beispielsweise den Offlinemodus, das Hinzufügen zum Startbildschirm und Push-Benachrichtigungen. [Weitere Informationen.](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Diese Seite wird von einem Service Worker kontrolliert. Es wurde jedoch keine `start_url` gefunden, weil das Manifest nicht als gültige JSON-Datei geparst werden konnte." @@ -1056,7 +1056,7 @@ "message": "Es wurde ein Service Worker erkannt, der die Seite und `start_url` kontrolliert." }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Wenn Sie Ihren Startbildschirm gemäß dem Design Ihrer App gestalten, vermitteln Sie den Nutzern schon beim Ladevorgang einen hochwertigen Eindruck. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Wenn Sie Ihren Startbildschirm gemäß dem Design Ihrer App gestalten, vermitteln Sie den Nutzern schon beim Ladevorgang einen hochwertigen Eindruck. [Weitere Informationen.](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nicht für einen benutzerdefinierten Startbildschirm konfiguriert" @@ -1065,13 +1065,13 @@ "message": "Konfiguriert für einen benutzerdefinierten Startbildschirm" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Die Adressleiste des Browsers kann an das Design Ihrer Website angepasst werden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "Die Adressleiste des Browsers kann an das Design Ihrer Website angepasst werden. [Weitere Informationen.](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Legt keine Designfarbe für die Adressleiste fest." }, "lighthouse-core/audits/themed-omnibox.js | title": { - "message": "Legt die Designfarbe der Adressleiste fest." + "message": "Legt eine Designfarbe für die Adressleiste fest." }, "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": { "message": "Dauer der Blockierung des Hauptthreads" @@ -1092,7 +1092,7 @@ "message": "Nutzung von Drittanbieter-Code" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "TTFB (Time To First Byte) erkennt den Zeitpunkt, zu dem Ihr Server eine Antwort sendet. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "TTFB (Time To First Byte) erkennt den Zeitpunkt, zu dem Ihr Server eine Antwort sendet. [Weitere Informationen.](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Stammdokument brauchte {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Typ" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Sie können die User Timing API in Ihre App integrieren. Damit lässt sich die Leistung Ihrer App während wichtiger Nutzerinteraktionen in der Praxis messen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "Sie können die User Timing API in Ihre App integrieren. Damit lässt sich die Leistung Ihrer App während wichtiger Nutzerinteraktionen in der Praxis messen. [Weitere Informationen.](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 Nutzertiming}other{# Nutzertimings}}" @@ -1125,7 +1125,7 @@ "message": "Für {securityOrigin} wurde ein <link> zur Vorverbindung gefunden, der jedoch vom Browser nicht verwendet wurde. Überprüfen Sie, ob das `crossorigin`-Attribut richtig verwendet wird." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Wenn Sie Hinweise auf Ressourcen als `preconnect` oder `dns-prefetch` hinzufügen, können Sie möglichst frühzeitig eine Verbindung zu wichtigen Drittanbieterursprüngen herstellen. [Weitere Informationen.](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Wenn Sie Hinweise auf Ressourcen als `preconnect` oder `dns-prefetch` hinzufügen, können Sie möglichst frühzeitig eine Verbindung zu wichtigen Drittanbieterursprüngen herstellen. [Weitere Informationen.](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Vorverbindung zu erforderlichen Ursprüngen aufbauen" @@ -1134,13 +1134,13 @@ "message": "Ein <link>-Element zum Vorabladen wurde für {preloadURL} gefunden, aber nicht vom Browser verwendet. Überprüfen Sie, ob das `crossorigin`-Attribut richtig verwendet wird." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Mit `<link rel=preload>` können Sie das Abrufen von Ressourcen priorisieren, die derzeit beim Seitenaufbau erst später angefordert werden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "Mit `<link rel=preload>` können Sie das Abrufen von Ressourcen priorisieren, die derzeit beim Seitenaufbau erst später angefordert werden. [Weitere Informationen.](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Wichtige Anforderungen vorab laden" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Fügen Sie ein `<meta name=\"viewport\">`-Tag hinzu, um Ihre App für Bildschirme von Mobilgeräten zu optimieren. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Fügen Sie ein `<meta name=\"viewport\">`-Tag hinzu, um Ihre App für Bildschirme von Mobilgeräten zu optimieren. [Weitere Informationen.](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Kein `<meta name=\"viewport\">`-Tag gefunden" @@ -1152,7 +1152,7 @@ "message": "Hat ein `<meta name=\"viewport\">`-Tag mit `width` oder `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Wenn JavaScript deaktiviert ist, sollte Ihre App dennoch einige Inhalte darstellen – auch wenn es sich dabei nur um eine Warnung handelt, dass die App JavaScript benötigt. [Weitere Informationen](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Wenn JavaScript deaktiviert ist, sollte Ihre App dennoch einige Inhalte darstellen – auch wenn es sich dabei nur um eine Warnung handelt, dass die App JavaScript benötigt. [Weitere Informationen](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Die Body der Seite sollte einige Inhalte rendern, wenn ihre Skripts nicht verfügbar sind." @@ -1164,7 +1164,7 @@ "message": "Enthält einige Inhalte, wenn JavaScript nicht verfügbar ist" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Wenn Sie eine progressive Web-App entwickeln, sollten Sie einen Service Worker verwenden, damit Ihre App auch offline funktioniert. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Wenn Sie eine progressive Web-App entwickeln, sollten Sie einen Service Worker verwenden, damit Ihre App auch offline funktioniert. [Weitere Informationen.](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Aktuelle Seite reagiert im Offlinemodus nicht mit dem HTTP-Statuscode 200"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/el.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/el.json index 9f53922..cd392d2 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/el.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/el.json
@@ -30,10 +30,10 @@ "message": "Ορισμένοι γονικοί ρόλοι ARIA πρέπει να περιέχουν συγκεκριμένους θυγατρικούς ρόλους, για να μπορούν να εκτελέσουν τις προβλεπόμενες λειτουργίες προσβασιμότητας. [Μάθετε περισσότερα](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Λείπουν τα στοιχεία με `[role]` που απαιτούν συγκεκριμένα θυγατρικά `[role]`." + "message": "Λείπουν από τα στοιχεία με ARIA `[role]`, τα οποία απαιτούν από τα θυγατρικά στοιχεία να περιέχουν ένα συγκεκριμένο `[role]`, ορισμένα ή όλα τα απαιτούμενα θυγατρικά στοιχεία." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Υπάρχουν τα στοιχεία με `[role]` που απαιτούν συγκεκριμένα θυγατρικά `[role]`." + "message": "Τα στοιχεία με ARIA `[role]`, τα οποία απαιτούν από τα θυγατρικά στοιχεία να περιέχουν ένα συγκεκριμένο `[role]`, έχουν όλα τα απαιτούμενα θυγατρικά στοιχεία." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Ορισμένοι θυγατρικοί ρόλοι ARIA πρέπει να περιέχονται σε συγκεκριμένους γονικούς ρόλους, για να μπορούν να εκτελέσουν σωστά τις προβλεπόμενες λειτουργίες προσβασιμότητας. [Μάθετε περισσότερα](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Οι αναγνώστες οθόνης έχουν λειτουργίες που διευκολύνουν την πλοήγηση στους πίνακες. Διασφαλίζοντας ότι τα κελιά `<td>` που χρησιμοποιούν το χαρακτηριστικό `[headers]` παραπέμπουν μόνο σε άλλα κελιά στον ίδιο πίνακα, μπορείτε να βελτιώσετε την εμπειρία των χρηστών των αναγνωστών οθόνης. [Μάθετε περισσότερα](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Τα κελιά σε ένα στοιχείο `<table>` που χρησιμοποιούν το χαρακτηριστικό `[headers]` παραπέμπουν σε άλλα κελιά του ίδιου πίνακα." + "message": "Τα κελιά σε ένα στοιχείο `<table>` που χρησιμοποιούν το χαρακτηριστικό `[headers]` παραπέμπουν σε ένα στοιχείο `id` που δεν βρίσκεται στον ίδιο πίνακα." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Τα κελιά σε ένα στοιχείο `<table>` που χρησιμοποιούν το χαρακτηριστικό `[headers]` παραπέμπουν μόνο σε άλλα κελιά του ίδιου πίνακα." + "message": "Τα κελιά σε ένα στοιχείο `<table>` που χρησιμοποιούν το χαρακτηριστικό `[headers]` παραπέμπουν σε κελιά εντός του ίδιου πίνακα." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Οι αναγνώστες οθόνης έχουν λειτουργίες που διευκολύνουν την πλοήγηση στους πίνακες. Διασφαλίζοντας ότι οι κεφαλίδες πίνακα παραπέμπουν πάντα σε ένα σύνολο κελιών του πίνακα, μπορείτε να βελτιώσετε την εμπειρία των χρηστών των αναγνωστών οθόνης. [Μάθετε περισσότερα](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Τα στοιχεία `<video>` περιέχουν ένα στοιχείο `<track>` με `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Για ιδανική εμφάνιση στο iOS όταν οι χρήστες προσθέτουν μια προηγμένη εφαρμογή ιστού στην αρχική οθόνη, ορίστε ένα `apple-touch-icon`. Το εικονίδιο πρέπει να παραπέμπει σε μια μη διαφανή, τετράγωνη εικόνα PNG 192px (ή 180px). [Μάθετε περισσότερα](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Για ιδανική εμφάνιση στο iOS όταν οι χρήστες προσθέτουν μια προηγμένη εφαρμογή ιστού στην αρχική οθόνη, ορίστε ένα `apple-touch-icon`. Το εικονίδιο πρέπει να παραπέμπει σε μια μη διαφανή, τετράγωνη εικόνα PNG 192px (ή 180px). [Μάθετε περισσότερα](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Δεν παρέχει ένα έγκυρο `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Συνολικός χρόνος CPU" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Εξετάστε το ενδεχόμενο να ελαττώσετε τον χρόνο ανάλυσης, σύνθεσης και εκτέλεσης JS. Μπορεί να διαπιστώσετε ότι η προβολή μικρότερων φορτίων δεδομένων JS συμβάλλει προς αυτή την κατεύθυνση. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Εξετάστε το ενδεχόμενο να ελαττώσετε τον χρόνο ανάλυσης, σύνθεσης και εκτέλεσης JS. Μπορεί να διαπιστώσετε ότι η προβολή μικρότερων φορτίων δεδομένων JS συμβάλλει προς αυτή την κατεύθυνση. [Μάθετε περισσότερα](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Μείωση χρόνου εκτέλεσης JavaScript" @@ -351,25 +351,25 @@ "message": "Χρόνος εκτέλεσης JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Οι μεγάλες εικόνες GIF δεν είναι αποδοτικές για την προβολή περιεχομένου κινούμενων εικόνων. Εξετάστε το ενδεχόμενο, αντί για τη χρήση εικόνων GIF, να χρησιμοποιείτε βίντεο MPEG4/WebM για τις κινούμενες εικόνες και εικόνες PNG/WebP για τις στατικές εικόνες, ώστε να εξοικονομήσετε byte δικτύου. [Μαθετε περισσότερα](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)." + "message": "Οι μεγάλες εικόνες GIF δεν είναι αποδοτικές για την προβολή περιεχομένου κινούμενων εικόνων. Εξετάστε το ενδεχόμενο, αντί για τη χρήση εικόνων GIF, να χρησιμοποιείτε βίντεο MPEG4/WebM για τις κινούμενες εικόνες και εικόνες PNG/WebP για τις στατικές εικόνες, ώστε να εξοικονομήσετε byte δικτύου. [Μαθετε περισσότερα](https://web.dev/efficient-animated-content)." }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Χρήση μορφών βίντεο για περιεχόμενο κινούμενων εικόνων" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Εξετάστε το ενδεχόμενο αργής φόρτωσης των εικόνων εκτός οθόνης και των κρυφών εικόνων μετά τη φόρτωση όλων των κρίσιμων πόρων. Με αυτό τον τρόπο, μπορεί να ελλατώθεί ο χρόνος μετάβασης σε κατάσταση αλληλεπίδρασης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Εξετάστε το ενδεχόμενο αργής φόρτωσης των εικόνων εκτός οθόνης και των κρυφών εικόνων μετά τη φόρτωση όλων των κρίσιμων πόρων. Με αυτό τον τρόπο, μπορεί να ελλατώθεί ο χρόνος μετάβασης σε κατάσταση αλληλεπίδρασης. [Μάθετε περισσότερα](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Καθυστέρηση φόρτωσης εικόνων εκτός οθόνης" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Υπάρχουν πόροι οι οποίοι αποκλείουν την πρώτη μορφή της σελίδας σας. Εξετάστε το ενδεχόμενο τα κρίσιμα JS/CSS να προβάλλονται ενσωματωμένα και τα μη κρίσιμα JS/στιλ να φορτώνονται αργότερα. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Υπάρχουν πόροι οι οποίοι αποκλείουν την πρώτη μορφή της σελίδας σας. Εξετάστε το ενδεχόμενο τα κρίσιμα JS/CSS να προβάλλονται ενσωματωμένα και τα μη κρίσιμα JS/στιλ να φορτώνονται αργότερα. [Μάθετε περισσότερα](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Εξάλειψη πόρων που αποκλείουν την απόδοση" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Τα μεγάλα φορτία δικτύου συνεπάγονται οικονομικό κόστος για τους χρήστες και σχετίζονται σε μεγάλο βαθμό με εκτενείς χρόνους φόρτωσης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Τα μεγάλα φορτία δικτύου συνεπάγονται οικονομικό κόστος για τους χρήστες και σχετίζονται σε μεγάλο βαθμό με εκτενείς χρόνους φόρτωσης. [Μάθετε περισσότερα](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Το συνολικό μέγεθος ήταν {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Αποφεύγει τα πολύ μεγάλα φορτία δεδομένων δικτύου" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "H ελαχιστοποίηση των αρχείων CSS μπορεί να μειώσει τα μεγέθη φορτίων δικτύου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "H ελαχιστοποίηση των αρχείων CSS μπορεί να μειώσει τα μεγέθη φορτίων δικτύου. [Μάθετε περισσότερα](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Ελαχιστοποίηση CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Η ελαχιστοποίηση των αρχείων JavaScript μπορεί να ελαττώσει το φορτίο, τα μεγέθη και τον χρόνο ανάλυσης σεναρίων. [Μάθετε περισσότερα](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Η ελαχιστοποίηση των αρχείων JavaScript μπορεί να ελαττώσει το φορτίο, τα μεγέθη και τον χρόνο ανάλυσης σεναρίων. [Μάθετε περισσότερα](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Ελαχιστοποίηση JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Καταργήστε τους ανενεργούς κανόνες από τα φύλλα στιλ και αναβάλετε τη φόρτωση των CSS που δεν χρησιμοποιούνται για το περιεχόμενο στο πάνω μέρος της σελίδας, για να ελαττώσετε τα περιττά byte που καταναλώνονται από τη δραστηριότητα δικτύου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Καταργήστε τους ανενεργούς κανόνες από τα φύλλα στιλ και αναβάλετε τη φόρτωση των CSS που δεν χρησιμοποιούνται για το περιεχόμενο στο πάνω μέρος της σελίδας, για να ελαττώσετε τα περιττά byte που καταναλώνονται από τη δραστηριότητα δικτύου. [Μάθετε περισσότερα](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Κατάργηση CSS που δεν χρησιμοποιείται" @@ -405,7 +405,7 @@ "message": "Κατάργηση JavaScript που δεν χρησιμοποιείται" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Η μεγάλη διάρκεια ζωής της κρυφής μνήμης μπορεί να επιταχύνει τις επαναλαμβανόμενες επισκέψεις στη σελίδα σας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Η μεγάλη διάρκεια ζωής της κρυφής μνήμης μπορεί να επιταχύνει τις επαναλαμβανόμενες επισκέψεις στη σελίδα σας. [Μάθετε περισσότερα](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Βρέθηκε 1 πόρος}other{Βρέθηκαν # πόροι}}" @@ -417,31 +417,31 @@ "message": "Χρησιμοποιεί αποδοτική πολιτική κρυφής μνήμης σε στατικά στοιχεία" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Οι βελτιστοποιημένες εικόνες φορτώνονται πιο γρήγορα και καταναλώνουν λιγότερα δεδομένα κινητής τηλεφωνίας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Οι βελτιστοποιημένες εικόνες φορτώνονται πιο γρήγορα και καταναλώνουν λιγότερα δεδομένα κινητής τηλεφωνίας. [Μάθετε περισσότερα](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Αποδοτική κωδικοποίηση εικόνων" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Συνιστάται η προβολή εικόνων κατάλληλου μεγέθους για την εξοικονόμηση δεδομένων κινητής τηλεφωνίας και τη βελτίωση του χρόνου φόρτωσης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Συνιστάται η προβολή εικόνων κατάλληλου μεγέθους για την εξοικονόμηση δεδομένων κινητής τηλεφωνίας και τη βελτίωση του χρόνου φόρτωσης. [Μάθετε περισσότερα](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Κατάλληλη προσαρμογή μεγέθους εικόνων" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Η προβολή των βασιζόμενων σε κείμενο πόρων πρέπει να γίνεται με συμπίεση (gzip, deflate ή brotli), ώστε να ελαχιστοποιείται ο συνολικός όγκος byte δικτύου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Η προβολή των βασιζόμενων σε κείμενο πόρων πρέπει να γίνεται με συμπίεση (gzip, deflate ή brotli), ώστε να ελαχιστοποιείται ο συνολικός όγκος byte δικτύου. [Μάθετε περισσότερα](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Ενεργοποίηση συμπίεσης κειμένου" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Οι μορφές εικόνας JPEG 2000, JPEG XR και WebP συχνά παρέχουν καλύτερη συμπίεση από ό,τι οι μορφές PNG και JPEG. Αυτό σημαίνει γρηγορότερες λήψεις και μικρότερη κατανάλωση δεδομένων. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Οι μορφές εικόνας JPEG 2000, JPEG XR και WebP συχνά παρέχουν καλύτερη συμπίεση από ό,τι οι μορφές PNG και JPEG. Αυτό σημαίνει γρηγορότερες λήψεις και μικρότερη κατανάλωση δεδομένων. [Μάθετε περισσότερα](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Προβολή εικόνων σε μορφές επόμενης γενιάς" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Εάν το πλάτος του περιεχομένου της εφαρμογής σας δεν αντιστοιχεί στο πλάτος της θύρας προβολής, η εφαρμογή σας ενδέχεται να μην είναι βελτιστοποιημένη για οθόνες κινητών συσκευών. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Εάν το πλάτος του περιεχομένου της εφαρμογής σας δεν αντιστοιχεί στο πλάτος της θύρας προβολής, η εφαρμογή σας ενδέχεται να μην είναι βελτιστοποιημένη για οθόνες κινητών συσκευών. [Μάθετε περισσότερα](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Το μέγεθος {innerWidth}px της θύρας προβολής δεν αντιστοιχεί στο μέγεθος {outerWidth}px του παραθύρου." @@ -453,7 +453,7 @@ "message": "Το μέγεθος του περιεχομένου έχει προσαρμοστεί σωστά για τη θύρα προβολής" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Στις ακόλουθες αλυσίδες κρίσιμων αιτημάτων φαίνεται ποιοι πόροι φορτώνονται με υψηλή προτεραιότητα. Για τη βελτίωση της φόρτωσης των σελίδων, εξετάστε το ενδεχόμενο μείωσης του μεγέθους των αλυσίδων, μείωσης του μεγέθους λήψης πόρων ή καθυστέρησης λήψης των μη απαραίτητων πόρων. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Στις ακόλουθες αλυσίδες κρίσιμων αιτημάτων φαίνεται ποιοι πόροι φορτώνονται με υψηλή προτεραιότητα. Για τη βελτίωση της φόρτωσης των σελίδων, εξετάστε το ενδεχόμενο μείωσης του μεγέθους των αλυσίδων, μείωσης του μεγέθους λήψης πόρων ή καθυστέρησης λήψης των μη απαραίτητων πόρων. [Μάθετε περισσότερα](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Βρέθηκε 1 αλυσίδα}other{Βρέθηκαν # αλυσίδες}}" @@ -675,7 +675,7 @@ "message": "Δεν έχουν καταγραφεί σφάλματα προγράμματος περιήγησης στην κονσόλα" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Αξιοποιήστε τη λειτουργία CSS προβολής γραμματοσειρών (font-display), για να διασφαλίσετε ότι το κείμενο είναι ορατό στους χρήστες κατά τη φόρτωση των γραμματοσειρών ιστοτόπου. [Μάθετε περισσότερα](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Αξιοποιήστε τη λειτουργία CSS προβολής γραμματοσειρών (font-display), για να διασφαλίσετε ότι το κείμενο είναι ορατό στους χρήστες κατά τη φόρτωση των γραμματοσειρών ιστοτόπου. [Μάθετε περισσότερα](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Βεβαιωθείτε ότι το κείμενο παραμένει ορατό κατά τη διάρκεια της φόρτωσης γραμματοσειράς ιστοτόπου" @@ -705,7 +705,7 @@ "message": "Μη έγκυρες πληροφορίες διαστάσεων εικόνας {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Τα προγράμματα περιήγησης μπορούν προληπτικά να ζητήσουν από τους χρήστες να προσθέσουν την εφαρμογή σας στην αρχική οθόνη τους, το οποίο μπορεί να οδηγήσει σε μεγαλύτερη αφοσίωση. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Τα προγράμματα περιήγησης μπορούν προληπτικά να ζητήσουν από τους χρήστες να προσθέσουν την εφαρμογή σας στην αρχική οθόνη τους, το οποίο μπορεί να οδηγήσει σε μεγαλύτερη αφοσίωση. [Μάθετε περισσότερα](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Το μανιφέστο της εφαρμογής ιστού δεν ικανοποιεί τις απαιτήσεις εγκαταστασιμότητας" @@ -729,7 +729,7 @@ "message": "Χρησιμοποιεί HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Η γρήγορη φόρτωση των σελίδων μέσω ενός δικτύου κινητής τηλεφωνίας διασφαλίζει μια καλή εμπειρία για τους χρήστες κινητών. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Η γρήγορη φόρτωση των σελίδων μέσω ενός δικτύου κινητής τηλεφωνίας διασφαλίζει μια καλή εμπειρία για τους χρήστες κινητών. [Μάθετε περισσότερα](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Διαδραστική σε {timeInMs, number, seconds} δ." @@ -750,7 +750,7 @@ "message": "Κατηγορία" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Εξετάστε το ενδεχόμενο ελάττωσης του χρόνου ανάλυσης, σύνθεσης και εκτέλεσης JS. Μπορεί να διαπιστώσετε ότι η προβολή μικρότερων φορτίων δεδομένων JS συμβάλλει προς αυτήν την κατεύθυνση." + "message": "Εξετάστε το ενδεχόμενο να μειώσετε τον χρόνο ανάλυσης, σύνθεσης και εκτέλεσης JS. Μπορεί να διαπιστώσετε ότι η προβολή μικρότερων φορτίων δεδομένων JS συμβάλλει προς αυτή την κατεύθυνση. [Μάθετε περισσότερα](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Ελαχιστοποίηση εργασίας κύριου νήματος" @@ -759,49 +759,49 @@ "message": "Ελαχιστοποιεί την εργασία κύριου νήματος" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Για να προσελκύσουν τον μεγαλύτερο δυνατό αριθμό χρηστών, οι ιστότοποι θα πρέπει να λειτουργούν σε κάθε κύριο πρόγραμμα περιήγησης. [Μάθετε περισσότερα](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Για να προσελκύσουν τον μεγαλύτερο δυνατό αριθμό χρηστών, οι ιστότοποι θα πρέπει να λειτουργούν σε κάθε κύριο πρόγραμμα περιήγησης. [Μάθετε περισσότερα](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Ο ιστότοπος λειτουργεί σε διαφορετικά προγράμματα περιήγησης" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Βεβαιωθείτε ότι οι μεμονωμένες σελίδες υποστηρίζουν συνδέσμους σε βάθος μέσω URL και ότι τα URL είναι μοναδικά με σκοπό την κοινή χρήση σε μέσα κοινωνικής δικτύωσης. [Μάθετε περισσότερα](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Βεβαιωθείτε ότι οι μεμονωμένες σελίδες υποστηρίζουν συνδέσμους σε βάθος μέσω URL και ότι τα URL είναι μοναδικά με σκοπό την κοινή χρήση σε μέσα κοινωνικής δικτύωσης. [Μάθετε περισσότερα](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Κάθε σελίδα έχει URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Οι μεταβάσεις θα πρέπει να έχουν γρήγορη αίσθηση καθώς πατάτε σε διάφορα σημεία, ακόμη και σε ένα αργό δίκτυο. Αυτό είναι κλειδί για την αντιλαμβανόμενη απόδοση. [Μάθετε περισσότερα](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Οι μεταβάσεις θα πρέπει να έχουν γρήγορη αίσθηση καθώς πατάτε σε διάφορα σημεία, ακόμη και σε ένα αργό δίκτυο. Αυτή η εμπειρία αποτελεί το κλειδί για την απόδοση που αντιλαμβάνεται ένας χρήστης. [Μάθετε περισσότερα](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Οι μεταβάσεις σελίδας δεν δίνουν την αίσθηση ότι καθυστερούν στο δίκτυο" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Ο εκτιμώμενος λανθάνων χρόνος στοιχείων εισόδου αποτελεί εκτίμηση του χρόνου που απαιτείται, σε χιλιοστά του δευτερολέπτου, προκειμένου η εφαρμογή σας να ανταποκριθεί στα στοιχεία εισόδου χρήστη στο διάστημα των 5 δευτερολέπτων με τον μεγαλύτερο φόρτο κατά τη φόρτωση της σελίδας. Εάν ο λανθάνων χρόνος είναι μεγαλύτερος από 50 χιλιοστά δευτερολέπτου, οι χρήστες μπορεί να θεωρήσουν ότι η εφαρμογή σας είναι αργή. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Ο εκτιμώμενος λανθάνων χρόνος στοιχείων εισόδου αποτελεί εκτίμηση του χρόνου που απαιτείται, σε χιλιοστά του δευτερολέπτου, προκειμένου η εφαρμογή σας να ανταποκριθεί στα στοιχεία εισόδου χρήστη στο διάστημα των 5 δευτερολέπτων με τον μεγαλύτερο φόρτο κατά τη φόρτωση της σελίδας. Εάν ο λανθάνων χρόνος είναι μεγαλύτερος από 50 χιλιοστά δευτερολέπτου, οι χρήστες μπορεί να θεωρήσουν ότι η εφαρμογή σας είναι αργή. [Μάθετε περισσότερα](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Εκτιμώμενος λανθάνων χρόνος στοιχείων εισόδου" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Η πρώτη μορφή με περιεχόμενο υποδεικνύει πότε σχεδιάζεται το πρώτο κείμενο ή η πρώτη εικόνα. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Η πρώτη μορφή με περιεχόμενο υποδεικνύει πότε σχεδιάζεται το πρώτο κείμενο ή η πρώτη εικόνα. [Μάθετε περισσότερα](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Πρώτη μορφή με περιεχόμενο" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Η πρώτη αδράνεια CPU υποδεικνύει πότε είναι η πρώτη φορά που η δραστηριότητα του κύριου νήματος είναι τόσο χαμηλή ώστε να διαχειριστεί στοιχεία εισόδου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Η πρώτη αδράνεια CPU υποδεικνύει πότε είναι η πρώτη φορά που η δραστηριότητα του κύριου νήματος της σελίδας είναι τόσο χαμηλή ώστε να διαχειριστεί στοιχεία εισόδου. [Μάθετε περισσότερα](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Πρώτη αδράνεια CPU" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Η πρώτη χρήσιμη μορφή υπολογίζει πότε καθίσταται ορατό το κύριο περιεχόμενο μιας σελίδας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Η πρώτη χρήσιμη μορφή υπολογίζει πότε καθίσταται ορατό το κύριο περιεχόμενο μιας σελίδας. [Μάθετε περισσότερα](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Πρώτη χρήσιμη μορφή" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Ο χρόνος για αλληλεπίδραση είναι το χρονικό διάστημα που απαιτείται προκειμένου η σελίδα να γίνει πλήρως διαδραστική. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Ο χρόνος για αλληλεπίδραση είναι το χρονικό διάστημα που απαιτείται προκειμένου η σελίδα να γίνει πλήρως διαδραστική. [Μάθετε περισσότερα](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Χρόνος για Αλληλεπίδραση" @@ -813,7 +813,7 @@ "message": "Μέγ. δυνατή καθυστέρηση πρώτης εισόδου" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Το ευρετήριο ταχύτητας δηλώνει πόσο γρήγορα γίνεται ορατό το περιεχόμενο μιας σελίδας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Το ευρετήριο ταχύτητας δηλώνει πόσο γρήγορα γίνεται ορατό το περιεχόμενο μιας σελίδας. [Μάθετε περισσότερα](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Ευρετήριο ταχύτητας" @@ -837,7 +837,7 @@ "message": "Λανθάνοντες χρόνοι συστημάτων υποστήριξης διακομιστή" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Ένα service worker επιτρέπει στην εφαρμογή ιστού σας να είναι πιο αξιόπιστη όταν εκτελείται σε απρόβλεπτες συνθήκες δικτύου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Ένα service worker επιτρέπει στην εφαρμογή ιστού σας να είναι πιο αξιόπιστη όταν εκτελείται σε απρόβλεπτες συνθήκες δικτύου. [Μάθετε περισσότερα](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "Το `start_url` δεν αποκρίνεται με κωδικό 200 όταν είναι εκτός σύνδεσης" @@ -861,7 +861,7 @@ "message": "Προϋπολογισμός απόδοσης" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Αν έχετε ήδη ρυθμίσει το HTTPS, βεβαιωθείτε ότι ανακατευθύνετε όλη την επισκεψιμότητα HTTP σε HTTPS, προκειμένου να ενεργοποιήσετε ασφαλείς λειτουργίες ιστού για όλους τους χρήστες σας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Αν έχετε ήδη ρυθμίσει το HTTPS, βεβαιωθείτε ότι ανακατευθύνετε όλη την επισκεψιμότητα HTTP σε HTTPS, προκειμένου να ενεργοποιήσετε ασφαλείς λειτουργίες ιστού για όλους τους χρήστες σας. [Μάθετε περισσότερα](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Δεν ανακατευθύνσει την επισκεψιμότητα HTTP σε HTTPS" @@ -870,7 +870,7 @@ "message": "Ανακατευθύνει την επισκεψιμότητα HTTP σε HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Οι ανακατευθύνσεις προκαλούν πρόσθετες καθυστερήσεις στη φόρτωση της σελίδας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Οι ανακατευθύνσεις προκαλούν πρόσθετες καθυστερήσεις στη φόρτωση της σελίδας. [Μάθετε περισσότερα](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Αποφυγή ανακατευθύνσεων πολλών σελίδων" @@ -1035,7 +1035,7 @@ "message": "Τα στοιχεία που επιλέγονται με πάτημα έχουν το κατάλληλο μέγεθος" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Το service worker είναι η τεχνολογία που επιτρέπει στην εφαρμογή σας να χρησιμοποιεί πολλές λειτουργίες προηγμένων εφαρμογών ιστού, όπως η λειτουργία εκτός σύνδεσης, η προσθήκη στην αρχική οθόνη και οι ειδοποιήσεις push. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Το service worker είναι η τεχνολογία που επιτρέπει στην εφαρμογή σας να χρησιμοποιεί πολλές λειτουργίες προηγμένων εφαρμογών ιστού, όπως η λειτουργία εκτός σύνδεσης, η προσθήκη στην αρχική οθόνη και οι ειδοποιήσεις push. [Μάθετε περισσότερα](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Αυτή η σελίδα ελέγχεται από ένα service worker, αλλά δεν βρέθηκε κανένα `start_url` επειδή το μανιφέστο απέτυχε να αναλυθεί ως έγκυρο JSON" @@ -1056,7 +1056,7 @@ "message": "Καταγράφει ένα service worker που ελέγχει μια σελίδα και το `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Μια θεματική οθόνη εκκίνησης διασφαλίζει μια εμπειρία υψηλής ποιότητας όταν οι χρήστες εκκινούν την εφαρμογή σας από την αρχική οθόνη τους. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Μια θεματική οθόνη εκκίνησης διασφαλίζει μια εμπειρία υψηλής ποιότητας όταν οι χρήστες εκκινούν την εφαρμογή σας από την αρχική οθόνη τους. [Μάθετε περισσότερα](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Δεν έχει διαμορφωθεί για προσαρμοσμένη οθόνη εκκίνησης" @@ -1065,7 +1065,7 @@ "message": "Διαμορφώνεται από προσαρμοσμένη οθόνη εκκίνησης" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Μπορείτε να προσθέσετε ένα θέμα στη γραμμή διευθύνσεων του προγράμματος περιήγησης ώστε να ταιριάζει με τον ιστότοπό σας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Μπορείτε να προσθέσετε ένα θέμα στη γραμμή διευθύνσεων του προγράμματος περιήγησης ώστε να ταιριάζει με τον ιστότοπό σας. [Μάθετε περισσότερα](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Δεν ορίζει ένα χρώμα θέματος για τη γραμμή διευθύνσεων." @@ -1092,7 +1092,7 @@ "message": "Χρήση κώδικα τρίτου μέρους" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Ο χρόνος μέχρι το πρώτο byte προσδιορίζει τον χρόνο που χρειάζεται για την αποστολή μιας απόκρισης από τον διακομιστή σας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Ο χρόνος μέχρι το πρώτο byte προσδιορίζει τον χρόνο που χρειάζεται για την αποστολή μιας απόκρισης από τον διακομιστή σας. [Μάθετε περισσότερα](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Το ριζικό έγγραφο χρειάστηκε {timeInMs, number, milliseconds} χλστ.δ." @@ -1113,7 +1113,7 @@ "message": "Τύπος" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Εξετάστε το ενδεχόμενο να προσθέσετε στην εφαρμογή σας το API χρόνων χρήστη (User Timing API) για να μετράτε την πραγματική απόδοση της εφαρμογής σας κατά τη διάρκεια σημαντικών εμπειριών χρήστη. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Εξετάστε το ενδεχόμενο να προσθέσετε στην εφαρμογή σας το API χρόνων χρήστη (User Timing API) για να μετράτε την πραγματική απόδοση της εφαρμογής σας κατά τη διάρκεια σημαντικών εμπειριών χρήστη. [Μάθετε περισσότερα](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 χρόνος χρήστη}other{# χρόνοι χρήστη}}" @@ -1125,7 +1125,7 @@ "message": "Βρέθηκε ένα <link> προσύνδεσης για το {securityOrigin}, αλλά δεν χρησιμοποιήθηκε από το πρόγραμμα περιήγησης. Ελέγξτε ότι χρησιμοποιείτε σωστά το χαρακτηριστικό `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Εξετάστε το ενδεχόμενο προσθήκης υποδείξεων πόρων `preconnect` ή `dns-prefetch`, για να δημιουργήσετε πρώιμες συνδέσεις σε σημαντικές προελεύσεις τρίτους μέρους. [Μάθετε περισσότερα](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Εξετάστε το ενδεχόμενο προσθήκης υποδείξεων πόρων `preconnect` ή `dns-prefetch`, για να δημιουργήσετε πρώιμες συνδέσεις σε σημαντικές προελεύσεις τρίτους μέρους. [Μάθετε περισσότερα](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Προσύνδεση σε απαιτούμενες προελεύσεις" @@ -1134,13 +1134,13 @@ "message": "Βρέθηκε ένα <link> προφόρτωσης για το {preloadURL}, αλλά δεν χρησιμοποιήθηκε από το πρόγραμμα περιήγησης. Ελέγξτε ότι χρησιμοποιείτε σωστά το χαρακτηριστικό `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Εξετάστε το ενδεχόμενο χρήσης του `<link rel=preload>` για την προτεραιοποίηση της ανάκτησης των πόρων που τώρα ζητούνται αργότερα κατά τη φόρτωση της σελίδας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Εξετάστε το ενδεχόμενο χρήσης του `<link rel=preload>` για την προτεραιοποίηση της ανάκτησης των πόρων που τώρα ζητούνται αργότερα κατά τη φόρτωση της σελίδας. [Μάθετε περισσότερα](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Σημαντικά αιτήματα προφόρτωσης" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Προσθέστε μια ετικέτα `<meta name=\"viewport\">` για να βελτιστοποιήσετε την εφαρμογή σας για οθόνες κινητών συσκευών. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Προσθέστε μια ετικέτα `<meta name=\"viewport\">` για να βελτιστοποιήσετε την εφαρμογή σας για οθόνες κινητών συσκευών. [Μάθετε περισσότερα](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Δεν βρέθηκε ετικέτα `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Έχει ετικέτα `<meta name=\"viewport\">` με `width` ή `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Η εφαρμογή σας θα πρέπει να εμφανίζει κάποιο περιεχόμενο όταν η JavaScript είναι απενεργοποιημένη, ακόμη και αν είναι απλώς μια προειδοποίηση που ενημερώνει τον χρήστη ότι η JavaScript είναι απαραίτητη για τη χρήση της εφαρμογής. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Η εφαρμογή σας θα πρέπει να εμφανίζει κάποιο περιεχόμενο όταν η JavaScript είναι απενεργοποιημένη, ακόμη και αν είναι απλώς μια προειδοποίηση που ενημερώνει τον χρήστη ότι η JavaScript είναι απαραίτητη για τη χρήση της εφαρμογής. [Μάθετε περισσότερα](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Το σώμα της σελίδας θα πρέπει να αποδίδει κάποιο περιεχόμενο αν τα σενάριά του δεν είναι διαθέσιμα." @@ -1164,7 +1164,7 @@ "message": "Περιλαμβάνει κάποιο περιεχόμενο όταν η JavaScript δεν είναι διαθέσιμη" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Εάν δημιουργείτε μια προηγμένη εφαρμογή ιστού, εξετάστε το ενδεχόμενο χρήσης ενός service worker ώστε η εφαρμογή σας να μπορεί να λειτουργεί εκτός σύνδεσης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Εάν δημιουργείτε μια προηγμένη εφαρμογή ιστού, εξετάστε το ενδεχόμενο χρήσης ενός service worker ώστε η εφαρμογή σας να μπορεί να λειτουργεί εκτός σύνδεσης. [Μάθετε περισσότερα](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Η τρέχουσα σελίδα δεν αποκρίνεται με κωδικό 200 όταν είναι εκτός σύνδεσης"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-GB.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-GB.json index 80dda71..3e0ec2b 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-GB.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-GB.json
@@ -30,10 +30,10 @@ "message": "Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Elements with `[role]` that require specific children `[role]`s, are missing." + "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Elements with `[role]` that require specific children `[role]`s, are present" + "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Cells in a `<table>` element that use the `[headers]` attribute refers to other cells of that same table." + "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to an element `id` not found within the same table." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Cells in a `<table>` element that use the `[headers]` attribute only refer to other cells of that same table." + "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Screen readers have features to make navigating tables easier. Ensuring that table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "`<video>` elements contain a `<track>` element with `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "For ideal appearance on iOS when users add a progressive web app to the home screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) square PNG. [Learn More](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "For ideal appearance on iOS when users add a progressive web app to the home screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) square PNG. [Learn More](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Does not provide a valid `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Total CPU Time" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reduce JavaScript execution time" @@ -351,25 +351,25 @@ "message": "JavaScript execution time" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Use video formats for animated content" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Consider lazy loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Consider lazy loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Defer off-screen images" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Eliminate render-blocking resources" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Total size was {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Avoids enormous network payloads" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Minifying CSS files can reduce network payload sizes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Minifying CSS files can reduce network payload sizes. [Learn more](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minify CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minify JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Remove dead rules from style sheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Remove dead rules from style sheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. [Learn more](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Remove unused CSS" @@ -405,7 +405,7 @@ "message": "Remove unused JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 resource found}other{# resources found}}" @@ -417,31 +417,31 @@ "message": "Uses efficient cache policy on static assets" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimised images load faster and consume less mobile data. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimised images load faster and consume less mobile data. [Learn more](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Efficiently encode images" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Serve images that are appropriately-sized to save mobile data and improve load time. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Serve images that are appropriately-sized to save mobile data and improve load time. [Learn more](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Properly size images" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimise total network bytes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimise total network bytes. [Learn more](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Enable text compression" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Image formats like JPEG 2000, JPEG XR and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Image formats like JPEG 2000, JPEG XR and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Serve images in next-gen formats" }, "lighthouse-core/audits/content-width.js | description": { - "message": "If the width of your app's content doesn't match the width of the viewport, your app might not be optimised for mobile screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "If the width of your app's content doesn't match the width of the viewport, your app might not be optimised for mobile screens. [Learn more](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "The viewport size of {innerWidth}px does not match the window size of {outerWidth}px." @@ -453,7 +453,7 @@ "message": "Content is sized correctly for the viewport" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "The critical request chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources or deferring the download of unnecessary resources to improve page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "The critical request chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources or deferring the download of unnecessary resources to improve page load. [Learn more](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 chain found}other{# chains found}}" @@ -675,7 +675,7 @@ "message": "No browser errors logged to the console" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Ensure text remains visible during webfont load" @@ -705,7 +705,7 @@ "message": "Invalid image sizing information {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Browsers can proactively prompt users to add your app to their home screen, which can lead to higher engagement. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Browsers can proactively prompt users to add your app to their home screen, which can lead to higher engagement. [Learn more](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Web app manifest does not meet the installability requirements" @@ -729,7 +729,7 @@ "message": "Uses HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "A fast page load over a mobile network ensures a good mobile user experience. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "A fast page load over a mobile network ensures a good mobile user experience. [Learn more](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interactive at {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Category" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this." + "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimise main-thread work" @@ -759,49 +759,49 @@ "message": "Minimises main-thread work" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "To reach the most users, sites should work across every major browser. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "To reach the most users, sites should work across every major browser. [Learn more](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Site works cross-browser" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Ensure individual pages are deep linkable via URL and that URLs are unique for the purpose of shareability on social media. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Ensure individual pages are deep linkable via URL and that URLs are unique for the purpose of shareability on social media. [Learn more](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Each page has a URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Transitions should feel crisp as you tap around, even on a slow network; a key to perceived performance. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Transitions should feel snappy as you tap around, even on a slow network. This experience is key to a user's perception of performance. [Learn more](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Page transitions don't feel like they block on the network" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Estimated input latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Estimated input latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Estimated Input Latency" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "First contentful paint marks the time at which the first text or image is painted. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "First contentful paint marks the time at which the first text or image is painted. [Learn more](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "First Contentful Paint" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "First CPU Idle" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "First meaningful paint measures when the primary content of a page is visible. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "First meaningful paint measures when the primary content of a page is visible. [Learn more](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "First Meaningful Paint" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Time to interactive is the amount of time it takes for the page to become fully interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Time to interactive is the amount of time it takes for the page to become fully interactive. [Learn more](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Time to Interactive" @@ -813,7 +813,7 @@ "message": "Max potential first input delay" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Speed Index" @@ -837,7 +837,7 @@ "message": "Server Back-end Latencies" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "A service worker enables your web app to be reliable in unpredictable network conditions. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "A service worker enables your web app to be reliable in unpredictable network conditions. [Learn more](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` does not respond with a 200 when offline" @@ -861,7 +861,7 @@ "message": "Performance budget" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "If you've already set up HTTPS, make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "If you've already set up HTTPS, make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Does not redirect HTTP traffic to HTTPS" @@ -870,7 +870,7 @@ "message": "Redirects HTTP traffic to HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Avoid multiple page redirects" @@ -1035,7 +1035,7 @@ "message": "Tap targets are sized appropriately" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "The service worker is the technology that enables your app to use many progressive web app features, such as offline, add to home screen and push notifications. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "The service worker is the technology that enables your app to use many progressive web app features, such as offline, add to home screen and push notifications. [Learn more](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "This page is controlled by a service worker, however no `start_url` was found because manifest failed to parse as valid JSON" @@ -1056,7 +1056,7 @@ "message": "Registers a service worker that controls page and `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "A themed splash screen ensures a high-quality experience when users launch your app from their home screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "A themed splash screen ensures a high-quality experience when users launch your app from their home screens. [Learn more](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Is not configured for a custom splash screen" @@ -1065,7 +1065,7 @@ "message": "Configured for a custom splash screen" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "The browser address bar can be themed to match your site. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "The browser address bar can be themed to match your site. [Learn more](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Does not set a theme colour for the address bar." @@ -1092,7 +1092,7 @@ "message": "Third-party usage" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Time to first byte identifies the time at which your server sends a response. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Time to first byte identifies the time at which your server sends a response. [Learn more](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Root document took {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Type" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 user timing}other{# user timings}}" @@ -1125,7 +1125,7 @@ "message": "A preconnect <link> was found for '{securityOrigin}' but was not used by the browser. Check that you are using the `crossorigin` attribute properly." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn more](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn more](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Pre-connect to required origins" @@ -1134,13 +1134,13 @@ "message": "A preload <link> was found for '{preloadURL}' but was not used by the browser. Check that you are using the `crossorigin` attribute properly." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Consider using `<link rel=preload>` to prioritise fetching resources that are currently requested later in page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Consider using `<link rel=preload>` to prioritise fetching resources that are currently requested later in page load. [Learn more](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Pre-load key requests" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Add a `<meta name=\"viewport\">` tag to optimise your app for mobile screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Add a `<meta name=\"viewport\">` tag to optimise your app for mobile screens. [Learn more](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "No `<meta name=\"viewport\">` tag found" @@ -1152,7 +1152,7 @@ "message": "Has a `<meta name=\"viewport\">` tag with `width` or `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Your app should display some content when JavaScript is disabled, even if it's just a warning to the user that JavaScript is required to use the app. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Your app should display some content when JavaScript is disabled, even if it's just a warning to the user that JavaScript is required to use the app. [Learn more](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "The page body should render some content if its scripts are not available." @@ -1164,7 +1164,7 @@ "message": "Contains some content when JavaScript is not available" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "If you're building a progressive web app, consider using a service worker so that your app can work offline. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "If you're building a progressive web app, consider using a service worker so that your app can work offline. [Learn more](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Current page does not respond with a 200 when offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-US.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-US.json index eabd53c0..41c76964 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-US.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-US.json
@@ -318,7 +318,7 @@ "message": "`<video>` elements contain a `<track>` element with `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "For ideal appearance on iOS when users add a progressive web app to the home screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) square PNG. [Learn More](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "For ideal appearance on iOS when users add a progressive web app to the home screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) square PNG. [Learn More](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Does not provide a valid `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Total CPU Time" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reduce JavaScript execution time" @@ -351,25 +351,25 @@ "message": "JavaScript execution time" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Use video formats for animated content" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Defer offscreen images" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Eliminate render-blocking resources" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Total size was {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Avoids enormous network payloads" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Minifying CSS files can reduce network payload sizes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Minifying CSS files can reduce network payload sizes. [Learn more](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minify CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minify JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Remove dead rules from stylesheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Remove dead rules from stylesheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. [Learn more](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Remove unused CSS" @@ -405,7 +405,7 @@ "message": "Remove unused JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 resource found}\n other {# resources found}\n }" @@ -417,25 +417,25 @@ "message": "Uses efficient cache policy on static assets" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimized images load faster and consume less cellular data. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimized images load faster and consume less cellular data. [Learn more](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Efficiently encode images" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Serve images that are appropriately-sized to save cellular data and improve load time. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Serve images that are appropriately-sized to save cellular data and improve load time. [Learn more](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Properly size images" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Enable text compression" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Serve images in next-gen formats" @@ -453,13 +453,13 @@ "message": "Content is sized correctly for the viewport" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn more](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 chain found}\n other {# chains found}\n }" }, "lighthouse-core/audits/critical-request-chains.js | title": { - "message": "Minimize Critical Requests Depth" + "message": "Avoid chaining critical requests" }, "lighthouse-core/audits/deprecations.js | columnDeprecate": { "message": "Deprecation / Warning" @@ -522,7 +522,7 @@ "message": "Value" }, "lighthouse-core/audits/dobetterweb/dom-size.js | description": { - "message": "Browser engineers recommend pages contain fewer than ~1,500 DOM elements. The sweet spot is a tree depth < 32 elements and fewer than 60 children/parent element. A large DOM can increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn more](https://web.dev/dom-size)." + "message": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn more](https://web.dev/dom-size)." }, "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 element}\n other {# elements}\n }" @@ -675,7 +675,7 @@ "message": "No browser errors logged to the console" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Ensure text remains visible during webfont load" @@ -750,7 +750,7 @@ "message": "Category" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this." + "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimize main-thread work" @@ -777,31 +777,31 @@ "message": "Page transitions don't feel like they block on the network" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Estimated Input Latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Estimated Input Latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Estimated Input Latency" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "First Contentful Paint" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "First CPU Idle" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "First Meaningful Paint" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Time to interactive is the amount of time it takes for the page to become fully interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Time to interactive is the amount of time it takes for the page to become fully interactive. [Learn more](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Time to Interactive" @@ -813,7 +813,7 @@ "message": "Max Potential First Input Delay" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Speed Index" @@ -870,7 +870,7 @@ "message": "Redirects HTTP traffic to HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Avoid multiple page redirects" @@ -1089,10 +1089,10 @@ "message": "Reduce the impact of third-party code" }, "lighthouse-core/audits/third-party-summary.js | title": { - "message": "Third-Party usage" + "message": "Minimize third-party usage" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Time To First Byte identifies the time at which your server sends a response. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Time To First Byte identifies the time at which your server sends a response. [Learn more](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Root document took {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Type" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 user timing}\n other {# user timings}\n }" @@ -1125,7 +1125,7 @@ "message": "A preconnect <link> was found for \"{securityOrigin}\" but was not used by the browser. Check that you are using the `crossorigin` attribute properly." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn more](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn more](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Preconnect to required origins" @@ -1134,7 +1134,7 @@ "message": "A preload <link> was found for \"{preloadURL}\" but was not used by the browser. Check that you are using the `crossorigin` attribute properly." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. [Learn more](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Preload key requests" @@ -1496,6 +1496,99 @@ "lighthouse-core/report/html/renderer/util.js | warningHeader": { "message": "Warnings: " }, + "stack-packs/packs/amp.js | efficient_animated_content": { + "message": "For animated content, use [amp-anim](https://amp.dev/documentation/components/amp-anim/) to minimize CPU usage while the content remains offscreen." + }, + "stack-packs/packs/amp.js | offscreen_images": { + "message": "Ensure that you are you using valid `amp-img` tags for your images which automatically lazy-load outside the first viewport. [Learn more](https://amp.dev/documentation/guides-and-tutorials/develop/media_iframes_3p/?format=websites#images)." + }, + "stack-packs/packs/amp.js | render_blocking_resources": { + "message": "Use tools such as [AMP Optimizer](https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer) to [server-side render AMP layouts](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/server-side-rendering/)." + }, + "stack-packs/packs/amp.js | unminified_css": { + "message": "Refer to the [AMP documentation](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/style_pages/) to ensure all your styles are supported." + }, + "stack-packs/packs/amp.js | uses_responsive_images": { + "message": "The `amp-img` element supports the `srcset` attribute to specify which image assets to use based on the screen size. [Learn more](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/art_direction/)." + }, + "stack-packs/packs/amp.js | uses_webp_images": { + "message": "Consider displaying all your `amp-img` components in WebP formats while specifying an appropriate fallback for other browsers. [Learn more](https://amp.dev/documentation/components/amp-img/#example:-specifying-a-fallback-image)." + }, + "stack-packs/packs/angular.js | dom_size": { + "message": "Consider virtual scrolling with the Component Dev Kit (CDK) if very large lists are being rendered. [Learn more](https://web.dev/virtualize-lists-with-angular-cdk/)." + }, + "stack-packs/packs/angular.js | total_byte_weight": { + "message": "Apply [route-level code-splitting](https://web.dev/route-level-code-splitting-in-angular/) to minimize the size of your JavaScript bundles. Also, consider precaching assets with the [Angular service worker](https://web.dev/precaching-with-the-angular-service-worker/)." + }, + "stack-packs/packs/angular.js | unminified_warning": { + "message": "If you are using Angular CLI, ensure that builds are generated in production mode. [Learn more](https://angular.io/guide/deployment#enable-runtime-production-mode)." + }, + "stack-packs/packs/angular.js | unused_javascript": { + "message": "If you are using Angular CLI, include source maps into your production build to inspect your bundles. [Learn more](https://angular.io/guide/deployment#inspect-the-bundles)." + }, + "stack-packs/packs/angular.js | uses_rel_preload": { + "message": "Preload routes ahead of time to speed up navigation. [Learn more](https://web.dev/route-preloading-in-angular/)." + }, + "stack-packs/packs/angular.js | uses_responsive_images": { + "message": "Consider using the `BreakpointObserver` utility in the Component Dev Kit (CDK) to manage image breakpoints. [Learn more](https://material.angular.io/cdk/layout/overview)." + }, + "stack-packs/packs/magento.js | critical_request_chains": { + "message": "If you are not bundling your JavaScript assets, consider using [baler](https://github.com/magento/baler)." + }, + "stack-packs/packs/magento.js | disable_bundling": { + "message": "Disable Magento's built-in [JavaScript bundling and minification](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html), and consider using [baler](https://github.com/magento/baler/) instead." + }, + "stack-packs/packs/magento.js | font_display": { + "message": "Specify `@font-display` when [defining custom fonts](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/using-fonts.html)." + }, + "stack-packs/packs/magento.js | offscreen_images": { + "message": "Consider modifying your product and catalog templates to make use of the web platform's [lazy loading](https://web.dev/native-lazy-loading) feature." + }, + "stack-packs/packs/magento.js | time_to_first_byte": { + "message": "Use Magento's [Varnish integration](https://devdocs.magento.com/guides/v2.3/config-guide/varnish/config-varnish.html)." + }, + "stack-packs/packs/magento.js | unminified_css": { + "message": "Enable the \"Minify CSS Files\" option in your store's Developer settings. [Learn more](https://devdocs.magento.com/guides/v2.3/performance-best-practices/configuration.html?itm_source=devdocs&itm_medium=search_page&itm_campaign=federated_search&itm_term=minify%20css%20files)." + }, + "stack-packs/packs/magento.js | unminified_javascript": { + "message": "Use [Terser](https://www.npmjs.com/package/terser) to minify all JavaScript assets outfrom from static content deployment, and disable the built-in minification feature." + }, + "stack-packs/packs/magento.js | unused_javascript": { + "message": "Disable Magento's built-in [JavaScript bundling](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html)." + }, + "stack-packs/packs/magento.js | uses_optimized_images": { + "message": "Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=optimize%20image) for a variety of third party extensions to optimize images." + }, + "stack-packs/packs/magento.js | uses_rel_preconnect": { + "message": "Preconnect or dns-prefetch resource hints can be added by [modifying a themes's layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html)." + }, + "stack-packs/packs/magento.js | uses_rel_preload": { + "message": "`<link rel=preload>` tags can be added by [modifying a themes's layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html)." + }, + "stack-packs/packs/magento.js | uses_webp_images": { + "message": "Consider searching the [Magento Marketplace](https://marketplace.magento.com/catalogsearch/result/?q=webp) for a variety of third-party extensions to leverage newer image formats." + }, + "stack-packs/packs/react.js | dom_size": { + "message": "Consider using a “windowing” library like `react-window` to minimize the number of DOM nodes created if you are rendering many repeated elements on the page. [Learn more](https://web.dev/virtualize-long-lists-react-window/). Also, minimize unecessary re-renders using [shouldComponentUpdate](https://reactjs.org/docs/optimizing-performance.html#shouldcomponentupdate-in-action), [PureComponent](https://reactjs.org/docs/react-api.html#reactpurecomponent), or [React.memo](https://reactjs.org/docs/react-api.html#reactmemo) and [skip effects](https://reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects) only until certain dependencies have changed if you are using the Effect hook to improve runtime performance." + }, + "stack-packs/packs/react.js | redirects": { + "message": "If you are using React Router, minimize usage of the `<Redirect>` component for [route navigations](https://reacttraining.com/react-router/web/api/Redirect)." + }, + "stack-packs/packs/react.js | time_to_first_byte": { + "message": "If you are server-side rendering any React components, consider using `renderToNodeStream()` or `renderToStaticNodeStream()` to allow the client to receive and hydrate different parts of the markup instead of all at once. [Learn more](https://reactjs.org/docs/react-dom-server.html#rendertonodestream)." + }, + "stack-packs/packs/react.js | unminified_css": { + "message": "If your build system minifies your CSS files automatically, ensure that you are deploying the production build of your application. You can check this with the React Developer Tools extension. [Learn more](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build)." + }, + "stack-packs/packs/react.js | unminified_javascript": { + "message": "If your build system minifies your JS files automatically, ensure that you are deploying the production build of your application. You can check this with the React Developer Tools extension. [Learn more](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build)." + }, + "stack-packs/packs/react.js | unused_javascript": { + "message": "If you are not server-side rendering, [split your JavaScript bundles](https://web.dev/code-splitting-suspense/) with `React.lazy()`. Otherwise, code-split using a third-party library such as [loadable-components](https://www.smooth-code.com/open-source/loadable-components/docs/getting-started/)." + }, + "stack-packs/packs/react.js | user_timings": { + "message": "Use the React DevTools Profiler, which makes use of the Profiler API, to measure the rendering performance of your components. [Learn more.](https://reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html)" + }, "stack-packs/packs/wordpress.js | efficient_animated_content": { "message": "Consider uploading your GIF to a service which will make it available to embed as an HTML5 video." },
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XA.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XA.json index 8fc6f60..1d48a06 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XA.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XA.json
@@ -30,10 +30,10 @@ "message": "[Šömé ÅŔÎÅ þåŕéñţ ŕöļéš mûšţ çöñţåîñ šþéçîƒîç çĥîļð ŕöļéš ţö þéŕƒöŕm ţĥéîŕ îñţéñðéð åççéššîбîļîţý ƒûñçţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-required-children/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "[Éļéméñţš ŵîţĥ ᐅ`[role]`ᐊ ţĥåţ ŕéqûîŕé šþéçîƒîç çĥîļðŕéñ ᐅ`[role]`ᐊš, åŕé mîššîñĝ. one two three four five six seven eight nine ten eleven twelve thirteen]" + "message": "[Éļéméñţš ŵîţĥ åñ ÅŔÎÅ ᐅ`[role]`ᐊ ţĥåţ ŕéqûîŕé çĥîļðŕéñ ţö çöñţåîñ å šþéçîƒîç ᐅ`[role]`ᐊ åŕé mîššîñĝ šömé öŕ åļļ öƒ ţĥöšé ŕéqûîŕéð çĥîļðŕéñ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "[Éļéméñţš ŵîţĥ ᐅ`[role]`ᐊ ţĥåţ ŕéqûîŕé šþéçîƒîç çĥîļðŕéñ ᐅ`[role]`ᐊš, åŕé þŕéšéñţ one two three four five six seven eight nine ten eleven twelve thirteen]" + "message": "[Éļéméñţš ŵîţĥ åñ ÅŔÎÅ ᐅ`[role]`ᐊ ţĥåţ ŕéqûîŕé çĥîļðŕéñ ţö çöñţåîñ å šþéçîƒîç ᐅ`[role]`ᐊ ĥåvé åļļ ŕéqûîŕéð çĥîļðŕéñ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "[Šömé ÅŔÎÅ çĥîļð ŕöļéš mûšţ бé çöñţåîñéð бý šþéçîƒîç þåŕéñţ ŕöļéš ţö þŕöþéŕļý þéŕƒöŕm ţĥéîŕ îñţéñðéð åççéššîбîļîţý ƒûñçţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-required-parent/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]" @@ -276,10 +276,10 @@ "message": "[Šçŕééñ ŕéåðéŕš ĥåvé ƒéåţûŕéš ţö måķé ñåvîĝåţîñĝ ţåбļéš éåšîéŕ. Éñšûŕîñĝ ᐅ`<td>`ᐊ çéļļš ûšîñĝ ţĥé ᐅ`[headers]`ᐊ åţţŕîбûţé öñļý ŕéƒéŕ ţö öţĥéŕ çéļļš îñ ţĥé šåmé ţåбļé måý îmþŕövé ţĥé éxþéŕîéñçé ƒöŕ šçŕééñ ŕéåðéŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/td-headers-attr/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight]" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "[Çéļļš îñ å ᐅ`<table>`ᐊ éļéméñţ ţĥåţ ûšé ţĥé ᐅ`[headers]`ᐊ åţţŕîбûţé ŕéƒéŕš ţö öţĥéŕ çéļļš öƒ ţĥåţ šåmé ţåбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" + "message": "[Çéļļš îñ å ᐅ`<table>`ᐊ éļéméñţ ţĥåţ ûšé ţĥé ᐅ`[headers]`ᐊ åţţŕîбûţé ŕéƒéŕ ţö åñ éļéméñţ ᐅ`id`ᐊ ñöţ ƒöûñð ŵîţĥîñ ţĥé šåmé ţåбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "[Çéļļš îñ å ᐅ`<table>`ᐊ éļéméñţ ţĥåţ ûšé ţĥé ᐅ`[headers]`ᐊ åţţŕîбûţé öñļý ŕéƒéŕ ţö öţĥéŕ çéļļš öƒ ţĥåţ šåmé ţåбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" + "message": "[Çéļļš îñ å ᐅ`<table>`ᐊ éļéméñţ ţĥåţ ûšé ţĥé ᐅ`[headers]`ᐊ åţţŕîбûţé ŕéƒéŕ ţö ţåбļé çéļļš ŵîţĥîñ ţĥé šåmé ţåбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "[Šçŕééñ ŕéåðéŕš ĥåvé ƒéåţûŕéš ţö måķé ñåvîĝåţîñĝ ţåбļéš éåšîéŕ. Éñšûŕîñĝ ţåбļé ĥéåðéŕš åļŵåýš ŕéƒéŕ ţö šömé šéţ öƒ çéļļš måý îmþŕövé ţĥé éxþéŕîéñçé ƒöŕ šçŕééñ ŕéåðéŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/th-has-data-cells/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]" @@ -318,7 +318,7 @@ "message": "[ᐅ`<video>`ᐊ éļéméñţš çöñţåîñ å ᐅ`<track>`ᐊ éļéméñţ ŵîţĥ ᐅ`[kind=\"description\"]`ᐊ one two three four five six seven eight nine]" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "[Föŕ îðéåļ åþþéåŕåñçé öñ îÖŠ ŵĥéñ ûšéŕš åðð å þŕöĝŕéššîvé ŵéб åþþ ţö ţĥé ĥömé šçŕééñ, ðéƒîñé åñ ᐅ`apple-touch-icon`ᐊ. Îţ mûšţ þöîñţ ţö å ñöñ-ţŕåñšþåŕéñţ 192þx (öŕ 180þx) šqûåŕé ÞÑĜ. ᐅ[ᐊĻéåŕñ Möŕéᐅ](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]" + "message": "[Föŕ îðéåļ åþþéåŕåñçé öñ îÖŠ ŵĥéñ ûšéŕš åðð å þŕöĝŕéššîvé ŵéб åþþ ţö ţĥé ĥömé šçŕééñ, ðéƒîñé åñ ᐅ`apple-touch-icon`ᐊ. Îţ mûšţ þöîñţ ţö å ñöñ-ţŕåñšþåŕéñţ 192þx (öŕ 180þx) šqûåŕé ÞÑĜ. ᐅ[ᐊĻéåŕñ Möŕéᐅ](https://web.dev/apple-touch-icon/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "[Ðöéš ñöţ þŕövîðé å våļîð ᐅ`apple-touch-icon`ᐊ one two three four five six]" @@ -342,7 +342,7 @@ "message": "[Ţöţåļ ÇÞÛ Ţîmé one two]" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "[Çöñšîðéŕ ŕéðûçîñĝ ţĥé ţîmé šþéñţ þåŕšîñĝ, çömþîļîñĝ, åñð éxéçûţîñĝ ĴŠ. Ýöû måý ƒîñð ðéļîvéŕîñĝ šmåļļéŕ ĴŠ þåýļöåðš ĥéļþš ŵîţĥ ţĥîš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/bootup)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" + "message": "[Çöñšîðéŕ ŕéðûçîñĝ ţĥé ţîmé šþéñţ þåŕšîñĝ, çömþîļîñĝ, åñð éxéçûţîñĝ ĴŠ. Ýöû måý ƒîñð ðéļîvéŕîñĝ šmåļļéŕ ĴŠ þåýļöåðš ĥéļþš ŵîţĥ ţĥîš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/bootup-time)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "[Ŕéðûçé ĴåvåŠçŕîþţ éxéçûţîöñ ţîmé one two three four five six seven]" @@ -351,25 +351,25 @@ "message": "[ĴåvåŠçŕîþţ éxéçûţîöñ ţîmé one two three]" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "[Ļåŕĝé ĜÎFš åŕé îñ郃îçîéñţ ƒöŕ ðéļîvéŕîñĝ åñîmåţéð çöñţéñţ. Çöñšîðéŕ ûšîñĝ MÞÉĜ4/ŴéбM vîðéöš ƒöŕ åñîmåţîöñš åñð ÞÑĜ/ŴéбÞ ƒöŕ šţåţîç îmåĝéš îñšţéåð öƒ ĜÎF ţö šåvé ñéţŵöŕķ бýţéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)ᐊ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]" + "message": "[Ļåŕĝé ĜÎFš åŕé îñ郃îçîéñţ ƒöŕ ðéļîvéŕîñĝ åñîmåţéð çöñţéñţ. Çöñšîðéŕ ûšîñĝ MÞÉĜ4/ŴéбM vîðéöš ƒöŕ åñîmåţîöñš åñð ÞÑĜ/ŴéбÞ ƒöŕ šţåţîç îmåĝéš îñšţéåð öƒ ĜÎF ţö šåvé ñéţŵöŕķ бýţéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/efficient-animated-content)ᐊ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "[Ûšé vîðéö ƒöŕmåţš ƒöŕ åñîmåţéð çöñţéñţ one two three four five six seven eight]" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "[Çöñšîðéŕ ļåžý-ļöåðîñĝ öƒƒšçŕééñ åñð ĥîððéñ îmåĝéš åƒţéŕ åļļ çŕîţîçåļ ŕéšöûŕçéš ĥåvé ƒîñîšĥéð ļöåðîñĝ ţö ļöŵéŕ ţîmé ţö îñţéŕåçţîvé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" + "message": "[Çöñšîðéŕ ļåžý-ļöåðîñĝ öƒƒšçŕééñ åñð ĥîððéñ îmåĝéš åƒţéŕ åļļ çŕîţîçåļ ŕéšöûŕçéš ĥåvé ƒîñîšĥéð ļöåðîñĝ ţö ļöŵéŕ ţîmé ţö îñţéŕåçţîvé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/offscreen-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "[Ðéƒéŕ öƒƒšçŕééñ îmåĝéš one two three]" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "[Ŕéšöûŕçéš åŕé бļöçķîñĝ ţĥé ƒîŕšţ þåîñţ öƒ ýöûŕ þåĝé. Çöñšîðéŕ ðéļîvéŕîñĝ çŕîţîçåļ ĴŠ/ÇŠŠ îñļîñé åñð ðéƒéŕŕîñĝ åļļ ñöñ-çŕîţîçåļ ĴŠ/šţýļéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]" + "message": "[Ŕéšöûŕçéš åŕé бļöçķîñĝ ţĥé ƒîŕšţ þåîñţ öƒ ýöûŕ þåĝé. Çöñšîðéŕ ðéļîvéŕîñĝ çŕîţîçåļ ĴŠ/ÇŠŠ îñļîñé åñð ðéƒéŕŕîñĝ åļļ ñöñ-çŕîţîçåļ ĴŠ/šţýļéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/render-blocking-resources)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "[Éļîmîñåţé ŕéñðéŕ-бļöçķîñĝ ŕéšöûŕçéš one two three four]" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "[Ļåŕĝé ñéţŵöŕķ þåýļöåðš çöšţ ûšéŕš ŕéåļ möñéý åñð åŕé ĥîĝĥļý çöŕŕéļåţéð ŵîţĥ ļöñĝ ļöåð ţîméš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]" + "message": "[Ļåŕĝé ñéţŵöŕķ þåýļöåðš çöšţ ûšéŕš ŕéåļ möñéý åñð åŕé ĥîĝĥļý çöŕŕéļåţéð ŵîţĥ ļöñĝ ļöåð ţîméš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/total-byte-weight)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "[Ţöţåļ šîžé ŵåš ᐅ{totalBytes, number, bytes}ᐊ ĶБ one two three four five]" @@ -381,19 +381,19 @@ "message": "[Åvöîðš éñöŕmöûš ñéţŵöŕķ þåýļöåðš one two three four five six seven]" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "[Mîñîƒýîñĝ ÇŠŠ ƒîļéš çåñ ŕéðûçé ñéţŵöŕķ þåýļöåð šîžéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/minify-css)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen]" + "message": "[Mîñîƒýîñĝ ÇŠŠ ƒîļéš çåñ ŕéðûçé ñéţŵöŕķ þåýļöåð šîžéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/unminified-css)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen]" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "[Mîñîƒý ÇŠŠ one two]" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "[Mîñîƒýîñĝ ĴåvåŠçŕîþţ ƒîļéš çåñ ŕéðûçé þåýļöåð šîžéš åñð šçŕîþţ þåŕšé ţîmé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/speed/docs/insights/MinifyResources)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" + "message": "[Mîñîƒýîñĝ ĴåvåŠçŕîþţ ƒîļéš çåñ ŕéðûçé þåýļöåð šîžéš åñð šçŕîþţ þåŕšé ţîmé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/unminified-javascript)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "[Mîñîƒý ĴåvåŠçŕîþţ one two three]" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "[Ŕémövé ðéåð ŕûļéš ƒŕöm šţýļéšĥééţš åñð ðéƒéŕ ţĥé ļöåðîñĝ öƒ ÇŠŠ ñöţ ûšéð ƒöŕ åбövé-ţĥé-ƒöļð çöñţéñţ ţö ŕéðûçé ûññéçéššåŕý бýţéš çöñšûméð бý ñéţŵöŕķ åçţîvîţý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/unused-css)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]" + "message": "[Ŕémövé ðéåð ŕûļéš ƒŕöm šţýļéšĥééţš åñð ðéƒéŕ ţĥé ļöåðîñĝ öƒ ÇŠŠ ñöţ ûšéð ƒöŕ åбövé-ţĥé-ƒöļð çöñţéñţ ţö ŕéðûçé ûññéçéššåŕý бýţéš çöñšûméð бý ñéţŵöŕķ åçţîvîţý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/unused-css-rules)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "[Ŕémövé ûñûšéð ÇŠŠ one two three]" @@ -405,7 +405,7 @@ "message": "[Ŕémövé ûñûšéð ĴåvåŠçŕîþţ one two three]" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "[Å ļöñĝ çåçĥé ļîƒéţîmé çåñ šþééð ûþ ŕéþéåţ vîšîţš ţö ýöûŕ þåĝé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]" + "message": "[Å ļöñĝ çåçĥé ļîƒéţîmé çåñ šþééð ûþ ŕéþéåţ vîšîţš ţö ýöûŕ þåĝé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-long-cache-ttl)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{[1 ŕéšöûŕçé ƒöûñð one two]}other{[# ŕéšöûŕçéš ƒöûñð one two three]}}" @@ -417,31 +417,31 @@ "message": "[Ûšéš éƒƒîçîéñţ çåçĥé þöļîçý öñ šţåţîç åššéţš one two three four five six seven eight nine]" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "[Öþţîmîžéð îmåĝéš ļöåð ƒåšţéŕ åñð çöñšûmé ļéšš çéļļûļåŕ ðåţå. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]" + "message": "[Öþţîmîžéð îmåĝéš ļöåð ƒåšţéŕ åñð çöñšûmé ļéšš çéļļûļåŕ ðåţå. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-optimized-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "[Ƀƒîçîéñţļý éñçöðé îmåĝéš one two three]" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "[Šéŕvé îmåĝéš ţĥåţ åŕé åþþŕöþŕîåţéļý-šîžéð ţö šåvé çéļļûļåŕ ðåţå åñð îmþŕövé ļöåð ţîmé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" + "message": "[Šéŕvé îmåĝéš ţĥåţ åŕé åþþŕöþŕîåţéļý-šîžéð ţö šåvé çéļļûļåŕ ðåţå åñð îmþŕövé ļöåð ţîmé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-responsive-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "[Þŕöþéŕļý šîžé îmåĝéš one two three]" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "[Ţéxţ-бåšéð ŕéšöûŕçéš šĥöûļð бé šéŕvéð ŵîţĥ çömþŕéššîöñ (ĝžîþ, ðéƒļåţé öŕ бŕöţļî) ţö mîñîmîžé ţöţåļ ñéţŵöŕķ бýţéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/text-compression)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]" + "message": "[Ţéxţ-бåšéð ŕéšöûŕçéš šĥöûļð бé šéŕvéð ŵîţĥ çömþŕéššîöñ (ĝžîþ, ðéƒļåţé öŕ бŕöţļî) ţö mîñîmîžé ţöţåļ ñéţŵöŕķ бýţéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-text-compression)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "[Éñåбļé ţéxţ çömþŕéššîöñ one two three]" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "[Îmåĝé ƒöŕmåţš ļîķé ĴÞÉĜ 2000, ĴÞÉĜ XŔ, åñð ŴéбÞ öƒţéñ þŕövîðé бéţţéŕ çömþŕéššîöñ ţĥåñ ÞÑĜ öŕ ĴÞÉĜ, ŵĥîçĥ méåñš ƒåšţéŕ ðöŵñļöåðš åñð ļéšš ðåţå çöñšûmþţîöñ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/webp)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]" + "message": "[Îmåĝé ƒöŕmåţš ļîķé ĴÞÉĜ 2000, ĴÞÉĜ XŔ, åñð ŴéбÞ öƒţéñ þŕövîðé бéţţéŕ çömþŕéššîöñ ţĥåñ ÞÑĜ öŕ ĴÞÉĜ, ŵĥîçĥ méåñš ƒåšţéŕ ðöŵñļöåðš åñð ļéšš ðåţå çöñšûmþţîöñ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-webp-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "[Šéŕvé îmåĝéš îñ ñéxţ-ĝéñ ƒöŕmåţš one two three four five six seven]" }, "lighthouse-core/audits/content-width.js | description": { - "message": "[΃ ţĥé ŵîðţĥ öƒ ýöûŕ åþþ'š çöñţéñţ ðöéšñ'ţ måţçĥ ţĥé ŵîðţĥ öƒ ţĥé vîéŵþöŕţ, ýöûŕ åþþ mîĝĥţ ñöţ бé öþţîmîžéð ƒöŕ möбîļé šçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" + "message": "[΃ ţĥé ŵîðţĥ öƒ ýöûŕ åþþ'š çöñţéñţ ðöéšñ'ţ måţçĥ ţĥé ŵîðţĥ öƒ ţĥé vîéŵþöŕţ, ýöûŕ åþþ mîĝĥţ ñöţ бé öþţîmîžéð ƒöŕ möбîļé šçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/content-width)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "[Ţĥé vîéŵþöŕţ šîžé öƒ ᐅ{innerWidth}ᐊþx ðöéš ñöţ måţçĥ ţĥé ŵîñðöŵ šîžé öƒ ᐅ{outerWidth}ᐊþx. one two three four five six seven eight nine ten eleven twelve thirteen]" @@ -453,7 +453,7 @@ "message": "[Çöñţéñţ îš šîžéð çöŕŕéçţļý ƒöŕ ţĥé vîéŵþöŕţ one two three four five six seven eight nine]" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "[Ţĥé Çŕîţîçåļ Ŕéqûéšţ Çĥåîñš бéļöŵ šĥöŵ ýöû ŵĥåţ ŕéšöûŕçéš åŕé ļöåðéð ŵîţĥ å ĥîĝĥ þŕîöŕîţý. Çöñšîðéŕ ŕéðûçîñĝ ţĥé ļéñĝţĥ öƒ çĥåîñš, ŕéðûçîñĝ ţĥé ðöŵñļöåð šîžé öƒ ŕéšöûŕçéš, öŕ ðéƒéŕŕîñĝ ţĥé ðöŵñļöåð öƒ ûññéçéššåŕý ŕéšöûŕçéš ţö îmþŕövé þåĝé ļöåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree]" + "message": "[Ţĥé Çŕîţîçåļ Ŕéqûéšţ Çĥåîñš бéļöŵ šĥöŵ ýöû ŵĥåţ ŕéšöûŕçéš åŕé ļöåðéð ŵîţĥ å ĥîĝĥ þŕîöŕîţý. Çöñšîðéŕ ŕéðûçîñĝ ţĥé ļéñĝţĥ öƒ çĥåîñš, ŕéðûçîñĝ ţĥé ðöŵñļöåð šîžé öƒ ŕéšöûŕçéš, öŕ ðéƒéŕŕîñĝ ţĥé ðöŵñļöåð öƒ ûññéçéššåŕý ŕéšöûŕçéš ţö îmþŕövé þåĝé ļöåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/critical-request-chains)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree]" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{[1 çĥåîñ ƒöûñð one two]}other{[# çĥåîñš ƒöûñð one two]}}" @@ -675,7 +675,7 @@ "message": "[Ñö бŕöŵšéŕ éŕŕöŕš ļöĝĝéð ţö ţĥé çöñšöļé one two three four five six seven eight]" }, "lighthouse-core/audits/font-display.js | description": { - "message": "[Ļévéŕåĝé ţĥé ƒöñţ-ðîšþļåý ÇŠŠ ƒéåţûŕé ţö éñšûŕé ţéxţ îš ûšéŕ-vîšîбļé ŵĥîļé ŵéбƒöñţš åŕé ļöåðîñĝ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/updates/2016/02/font-display)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]" + "message": "[Ļévéŕåĝé ţĥé ƒöñţ-ðîšþļåý ÇŠŠ ƒéåţûŕé ţö éñšûŕé ţéxţ îš ûšéŕ-vîšîбļé ŵĥîļé ŵéбƒöñţš åŕé ļöåðîñĝ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/font-display)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "[Éñšûŕé ţéxţ ŕémåîñš vîšîбļé ðûŕîñĝ ŵéбƒöñţ ļöåð one two three four five six seven eight nine ten]" @@ -705,7 +705,7 @@ "message": "[Îñvåļîð îmåĝé šîžîñĝ îñƒöŕmåţîöñ ᐅ{url}ᐊ one two three four five six seven eight]" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "[Бŕöŵšéŕš çåñ þŕöåçţîvéļý þŕömþţ ûšéŕš ţö åðð ýöûŕ åþþ ţö ţĥéîŕ ĥöméšçŕééñ, ŵĥîçĥ çåñ ļéåð ţö ĥîĝĥéŕ éñĝåĝéméñţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]" + "message": "[Бŕöŵšéŕš çåñ þŕöåçţîvéļý þŕömþţ ûšéŕš ţö åðð ýöûŕ åþþ ţö ţĥéîŕ ĥöméšçŕééñ, ŵĥîçĥ çåñ ļéåð ţö ĥîĝĥéŕ éñĝåĝéméñţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/installable-manifest)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "[Ŵéб åþþ måñîƒéšţ ðöéš ñöţ mééţ ţĥé îñšţåļļåбîļîţý ŕéqûîŕéméñţš one two three four five six seven eight nine ten eleven twelve]" @@ -729,7 +729,7 @@ "message": "[Ûšéš ĤŢŢÞŠ one two]" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "[Å ƒåšţ þåĝé ļöåð övéŕ å çéļļûļåŕ ñéţŵöŕķ éñšûŕéš å ĝööð möбîļé ûšéŕ éxþéŕîéñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" + "message": "[Å ƒåšţ þåĝé ļöåð övéŕ å çéļļûļåŕ ñéţŵöŕķ éñšûŕéš å ĝööð möбîļé ûšéŕ éxþéŕîéñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/load-fast-enough-for-pwa)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "[Îñţéŕåçţîvé åţ ᐅ{timeInMs, number, seconds}ᐊ š one two three four five]" @@ -750,7 +750,7 @@ "message": "[Çåţéĝöŕý one]" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "[Çöñšîðéŕ ŕéðûçîñĝ ţĥé ţîmé šþéñţ þåŕšîñĝ, çömþîļîñĝ åñð éxéçûţîñĝ ĴŠ. Ýöû måý ƒîñð ðéļîvéŕîñĝ šmåļļéŕ ĴŠ þåýļöåðš ĥéļþš ŵîţĥ ţĥîš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]" + "message": "[Çöñšîðéŕ ŕéðûçîñĝ ţĥé ţîmé šþéñţ þåŕšîñĝ, çömþîļîñĝ åñð éxéçûţîñĝ ĴŠ. Ýöû måý ƒîñð ðéļîvéŕîñĝ šmåļļéŕ ĴŠ þåýļöåðš ĥéļþš ŵîţĥ ţĥîš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/mainthread-work-breakdown)ᐊ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "[Mîñîmîžé måîñ-ţĥŕéåð ŵöŕķ one two three]" @@ -759,49 +759,49 @@ "message": "[Mîñîmîžéš måîñ-ţĥŕéåð ŵöŕķ one two three]" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "[Ţö ŕéåçĥ ţĥé möšţ ñûmбéŕ öƒ ûšéŕš, šîţéš šĥöûļð ŵöŕķ åçŕöšš évéŕý måĵöŕ бŕöŵšéŕ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" + "message": "[Ţö ŕéåçĥ ţĥé möšţ ñûmбéŕ öƒ ûšéŕš, šîţéš šĥöûļð ŵöŕķ åçŕöšš évéŕý måĵöŕ бŕöŵšéŕ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/pwa-cross-browser)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "[Šîţé ŵöŕķš çŕöšš-бŕöŵšéŕ one two three]" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "[Éñšûŕé îñðîvîðûåļ þåĝéš åŕé ðééþ ļîñķåбļé vîå ÛŔĻ åñð ţĥåţ ÛŔĻš åŕé ûñîqûé ƒöŕ ţĥé þûŕþöšé öƒ šĥåŕéåбîļîţý öñ šöçîåļ méðîå. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]" + "message": "[Éñšûŕé îñðîvîðûåļ þåĝéš åŕé ðééþ ļîñķåбļé vîå ÛŔĻ åñð ţĥåţ ÛŔĻš åŕé ûñîqûé ƒöŕ ţĥé þûŕþöšé öƒ šĥåŕéåбîļîţý öñ šöçîåļ méðîå. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/pwa-each-page-has-url)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "[Éåçĥ þåĝé ĥåš å ÛŔĻ one two three four]" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "[Ţŕåñšîţîöñš šĥöûļð ƒééļ šñåþþý åš ýöû ţåþ åŕöûñð, évéñ öñ å šļöŵ ñéţŵöŕķ, å ķéý ţö þéŕçéîvéð þéŕƒöŕmåñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" + "message": "[Ţŕåñšîţîöñš šĥöûļð ƒééļ šñåþþý åš ýöû ţåþ åŕöûñð, évéñ öñ å šļöŵ ñéţŵöŕķ. Ţĥîš éxþéŕîéñçé îš ķéý ţö å ûšéŕ'š þéŕçéþţîöñ öƒ þéŕƒöŕmåñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/pwa-page-transitions)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "[Þåĝé ţŕåñšîţîöñš ðöñ'ţ ƒééļ ļîķé ţĥéý бļöçķ öñ ţĥé ñéţŵöŕķ one two three four five six seven eight nine ten eleven twelve]" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "[Éšţîmåţéð Îñþûţ Ļåţéñçý îš åñ éšţîmåţé öƒ ĥöŵ ļöñĝ ýöûŕ åþþ ţåķéš ţö ŕéšþöñð ţö ûšéŕ îñþûţ, îñ mîļļîšéçöñðš, ðûŕîñĝ ţĥé бûšîéšţ 5š ŵîñðöŵ öƒ þåĝé ļöåð. ΃ ýöûŕ ļåţéñçý îš ĥîĝĥéŕ ţĥåñ 50 mš, ûšéŕš måý þéŕçéîvé ýöûŕ åþþ åš ļåĝĝý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone]" + "message": "[Éšţîmåţéð Îñþûţ Ļåţéñçý îš åñ éšţîmåţé öƒ ĥöŵ ļöñĝ ýöûŕ åþþ ţåķéš ţö ŕéšþöñð ţö ûšéŕ îñþûţ, îñ mîļļîšéçöñðš, ðûŕîñĝ ţĥé бûšîéšţ 5š ŵîñðöŵ öƒ þåĝé ļöåð. ΃ ýöûŕ ļåţéñçý îš ĥîĝĥéŕ ţĥåñ 50 mš, ûšéŕš måý þéŕçéîvé ýöûŕ åþþ åš ļåĝĝý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/estimated-input-latency)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone]" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "[Éšţîmåţéð Îñþûţ Ļåţéñçý one two three]" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "[Fîŕšţ Çöñţéñţƒûļ Þåîñţ måŕķš ţĥé ţîmé åţ ŵĥîçĥ ţĥé ƒîŕšţ ţéxţ öŕ îmåĝé îš þåîñţéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" + "message": "[Fîŕšţ Çöñţéñţƒûļ Þåîñţ måŕķš ţĥé ţîmé åţ ŵĥîçĥ ţĥé ƒîŕšţ ţéxţ öŕ îmåĝé îš þåîñţéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/first-contentful-paint)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "[Fîŕšţ Çöñţéñţƒûļ Þåîñţ one two three]" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "[Fîŕšţ ÇÞÛ Îðļé måŕķš ţĥé ƒîŕšţ ţîmé åţ ŵĥîçĥ ţĥé þåĝé'š måîñ ţĥŕéåð îš qûîéţ éñöûĝĥ ţö ĥåñðļé îñþûţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" + "message": "[Fîŕšţ ÇÞÛ Îðļé måŕķš ţĥé ƒîŕšţ ţîmé åţ ŵĥîçĥ ţĥé þåĝé'š måîñ ţĥŕéåð îš qûîéţ éñöûĝĥ ţö ĥåñðļé îñþûţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/first-cpu-idle)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "[Fîŕšţ ÇÞÛ Îðļé one two]" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "[Fîŕšţ Méåñîñĝƒûļ Þåîñţ méåšûŕéš ŵĥéñ ţĥé þŕîmåŕý çöñţéñţ öƒ å þåĝé îš vîšîбļé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" + "message": "[Fîŕšţ Méåñîñĝƒûļ Þåîñţ méåšûŕéš ŵĥéñ ţĥé þŕîmåŕý çöñţéñţ öƒ å þåĝé îš vîšîбļé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/first-meaningful-paint)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "[Fîŕšţ Méåñîñĝƒûļ Þåîñţ one two three]" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "[Ţîmé ţö îñţéŕåçţîvé îš ţĥé åmöûñţ öƒ ţîmé îţ ţåķéš ƒöŕ ţĥé þåĝé ţö бéçömé ƒûļļý îñţéŕåçţîvé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]" + "message": "[Ţîmé ţö îñţéŕåçţîvé îš ţĥé åmöûñţ öƒ ţîmé îţ ţåķéš ƒöŕ ţĥé þåĝé ţö бéçömé ƒûļļý îñţéŕåçţîvé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/interactive)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "[Ţîmé ţö Îñţéŕåçţîvé one two three]" @@ -813,7 +813,7 @@ "message": "[Måx Þöţéñţîåļ Fîŕšţ Îñþûţ Ðéļåý one two three four five six seven]" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "[Šþééð Îñðéx šĥöŵš ĥöŵ qûîçķļý ţĥé çöñţéñţš öƒ å þåĝé åŕé vîšîбļý þöþûļåţéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/speed-index)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" + "message": "[Šþééð Îñðéx šĥöŵš ĥöŵ qûîçķļý ţĥé çöñţéñţš öƒ å þåĝé åŕé vîšîбļý þöþûļåţéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/speed-index)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "[Šþééð Îñðéx one two]" @@ -837,7 +837,7 @@ "message": "[Šéŕvéŕ Бåçķéñð Ļåţéñçîéš one two three]" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "[Å šéŕvîçé ŵöŕķéŕ éñåбļéš ýöûŕ ŵéб åþþ ţö бé ŕéļîåбļé îñ ûñþŕéðîçţåбļé ñéţŵöŕķ çöñðîţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" + "message": "[Å šéŕvîçé ŵöŕķéŕ éñåбļéš ýöûŕ ŵéб åþþ ţö бé ŕéļîåбļé îñ ûñþŕéðîçţåбļé ñéţŵöŕķ çöñðîţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/offline-start-url)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "[ᐅ`start_url`ᐊ ðöéš ñöţ ŕéšþöñð ŵîţĥ å 200 ŵĥéñ öƒƒļîñé one two three four five six seven eight nine]" @@ -861,7 +861,7 @@ "message": "[Þéŕƒöŕmåñçé бûðĝéţ one two three]" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "[΃ ýöû'vé åļŕéåðý šéţ ûþ ĤŢŢÞŠ, måķé šûŕé ţĥåţ ýöû ŕéðîŕéçţ åļļ ĤŢŢÞ ţŕ僃îç ţö ĤŢŢÞŠ îñ öŕðéŕ ţö éñåбļé šéçûŕé ŵéб ƒéåţûŕéš ƒöŕ åļļ ýöûŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]" + "message": "[΃ ýöû'vé åļŕéåðý šéţ ûþ ĤŢŢÞŠ, måķé šûŕé ţĥåţ ýöû ŕéðîŕéçţ åļļ ĤŢŢÞ ţŕ僃îç ţö ĤŢŢÞŠ îñ öŕðéŕ ţö éñåбļé šéçûŕé ŵéб ƒéåţûŕéš ƒöŕ åļļ ýöûŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/redirects-http)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "[Ðöéš ñöţ ŕéðîŕéçţ ĤŢŢÞ ţŕ僃îç ţö ĤŢŢÞŠ one two three four five six seven eight]" @@ -870,7 +870,7 @@ "message": "[Ŕéðîŕéçţš ĤŢŢÞ ţŕ僃îç ţö ĤŢŢÞŠ one two three four five six seven]" }, "lighthouse-core/audits/redirects.js | description": { - "message": "[Ŕéðîŕéçţš îñţŕöðûçé åððîţîöñåļ ðéļåýš бéƒöŕé ţĥé þåĝé çåñ бé ļöåðéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/redirects)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]" + "message": "[Ŕéðîŕéçţš îñţŕöðûçé åððîţîöñåļ ðéļåýš бéƒöŕé ţĥé þåĝé çåñ бé ļöåðéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/redirects)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]" }, "lighthouse-core/audits/redirects.js | title": { "message": "[Åvöîð mûļţîþļé þåĝé ŕéðîŕéçţš one two three four five six seven]" @@ -1035,7 +1035,7 @@ "message": "[Ţåþ ţåŕĝéţš åŕé šîžéð åþþŕöþŕîåţéļý one two three four five six seven eight]" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "[Ţĥé šéŕvîçé ŵöŕķéŕ îš ţĥé ţéçĥñöļöĝý ţĥåţ éñåбļéš ýöûŕ åþþ ţö ûšé måñý Þŕöĝŕéššîvé Ŵéб Åþþ ƒéåţûŕéš, šûçĥ åš öƒƒļîñé, åðð ţö ĥöméšçŕééñ, åñð þûšĥ ñöţîƒîçåţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]" + "message": "[Ţĥé šéŕvîçé ŵöŕķéŕ îš ţĥé ţéçĥñöļöĝý ţĥåţ éñåбļéš ýöûŕ åþþ ţö ûšé måñý Þŕöĝŕéššîvé Ŵéб Åþþ ƒéåţûŕéš, šûçĥ åš öƒƒļîñé, åðð ţö ĥöméšçŕééñ, åñð þûšĥ ñöţîƒîçåţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/service-worker)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "[Ţĥîš þåĝé îš çöñţŕöļļéð бý å šéŕvîçé ŵöŕķéŕ, ĥöŵévéŕ ñö ᐅ`start_url`ᐊ ŵåš ƒöûñð бéçåûšé måñîƒéšţ ƒåîļéð ţö þåŕšé åš våļîð ĴŠÖÑ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]" @@ -1056,7 +1056,7 @@ "message": "[Ŕéĝîšţéŕš å šéŕvîçé ŵöŕķéŕ ţĥåţ çöñţŕöļš þåĝé åñð ᐅ`start_url`ᐊ one two three four five six seven eight nine ten eleven]" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "[Å ţĥéméð šþļåšĥ šçŕééñ éñšûŕéš å ĥîĝĥ-qûåļîţý éxþéŕîéñçé ŵĥéñ ûšéŕš ļåûñçĥ ýöûŕ åþþ ƒŕöm ţĥéîŕ ĥöméšçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" + "message": "[Å ţĥéméð šþļåšĥ šçŕééñ éñšûŕéš å ĥîĝĥ-qûåļîţý éxþéŕîéñçé ŵĥéñ ûšéŕš ļåûñçĥ ýöûŕ åþþ ƒŕöm ţĥéîŕ ĥöméšçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/splash-screen)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "[Κ ñöţ çöñƒîĝûŕéð ƒöŕ å çûšţöm šþļåšĥ šçŕééñ one two three four five six seven eight nine]" @@ -1065,7 +1065,7 @@ "message": "[Çöñƒîĝûŕéð ƒöŕ å çûšţöm šþļåšĥ šçŕééñ one two three four five six seven eight]" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "[Ţĥé бŕöŵšéŕ åððŕéšš бåŕ çåñ бé ţĥéméð ţö måţçĥ ýöûŕ šîţé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/address-bar)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]" + "message": "[Ţĥé бŕöŵšéŕ åððŕéšš бåŕ çåñ бé ţĥéméð ţö måţçĥ ýöûŕ šîţé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/themed-omnibox)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "[Ðöéš ñöţ šéţ å ţĥémé çöļöŕ ƒöŕ ţĥé åððŕéšš бåŕ. one two three four five six seven eight nine ten]" @@ -1092,7 +1092,7 @@ "message": "[Ţĥîŕð-Þåŕţý ûšåĝé one two three]" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "[Ţîmé Ţö Fîŕšţ Бýţé îðéñţîƒîéš ţĥé ţîmé åţ ŵĥîçĥ ýöûŕ šéŕvéŕ šéñðš å ŕéšþöñšé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/ttfb)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" + "message": "[Ţîmé Ţö Fîŕšţ Бýţé îðéñţîƒîéš ţĥé ţîmé åţ ŵĥîçĥ ýöûŕ šéŕvéŕ šéñðš å ŕéšþöñšé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/time-to-first-byte)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "[Ŕööţ ðöçûméñţ ţööķ ᐅ{timeInMs, number, milliseconds}ᐊ mš one two three four five six]" @@ -1113,7 +1113,7 @@ "message": "[Ţýþé one]" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "[Çöñšîðéŕ îñšţŕûméñţîñĝ ýöûŕ åþþ ŵîţĥ ţĥé Ûšéŕ Ţîmîñĝ ÅÞÎ ţö méåšûŕé ýöûŕ åþþ'š ŕéåļ-ŵöŕļð þéŕƒöŕmåñçé ðûŕîñĝ ķéý ûšéŕ éxþéŕîéñçéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/user-timing)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" + "message": "[Çöñšîðéŕ îñšţŕûméñţîñĝ ýöûŕ åþþ ŵîţĥ ţĥé Ûšéŕ Ţîmîñĝ ÅÞÎ ţö méåšûŕé ýöûŕ åþþ'š ŕéåļ-ŵöŕļð þéŕƒöŕmåñçé ðûŕîñĝ ķéý ûšéŕ éxþéŕîéñçéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/user-timings)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{[1 ûšéŕ ţîmîñĝ one two]}other{[# ûšéŕ ţîmîñĝš one two]}}" @@ -1125,7 +1125,7 @@ "message": "[Å þŕéçöññéçţ <link> ŵåš ƒöûñð ƒöŕ \"ᐅ{securityOrigin}ᐊ\" бûţ ŵåš ñöţ ûšéð бý ţĥé бŕöŵšéŕ. Çĥéçķ ţĥåţ ýöû åŕé ûšîñĝ ţĥé ᐅ`crossorigin`ᐊ åţţŕîбûţé þŕöþéŕļý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "[Çöñšîðéŕ åððîñĝ ᐅ`preconnect`ᐊ öŕ ᐅ`dns-prefetch`ᐊ ŕéšöûŕçé ĥîñţš ţö éšţåбļîšĥ éåŕļý çöññéçţîöñš ţö îmþöŕţåñţ ţĥîŕð-þåŕţý öŕîĝîñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" + "message": "[Çöñšîðéŕ åððîñĝ ᐅ`preconnect`ᐊ öŕ ᐅ`dns-prefetch`ᐊ ŕéšöûŕçé ĥîñţš ţö éšţåбļîšĥ éåŕļý çöññéçţîöñš ţö îmþöŕţåñţ ţĥîŕð-þåŕţý öŕîĝîñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-rel-preconnect)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "[Þŕéçöññéçţ ţö ŕéqûîŕéð öŕîĝîñš one two three four five six seven]" @@ -1134,13 +1134,13 @@ "message": "[Å þŕéļöåð <link> ŵåš ƒöûñð ƒöŕ \"ᐅ{preloadURL}ᐊ\" бûţ ŵåš ñöţ ûšéð бý ţĥé бŕöŵšéŕ. Çĥéçķ ţĥåţ ýöû åŕé ûšîñĝ ţĥé ᐅ`crossorigin`ᐊ åţţŕîбûţé þŕöþéŕļý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]" }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "[Çöñšîðéŕ ûšîñĝ ᐅ`<link rel=preload>`ᐊ ţö þŕîöŕîţîžé ƒéţçĥîñĝ ŕéšöûŕçéš ţĥåţ åŕé çûŕŕéñţļý ŕéqûéšţéð ļåţéŕ îñ þåĝé ļöåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/preload)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" + "message": "[Çöñšîðéŕ ûšîñĝ ᐅ`<link rel=preload>`ᐊ ţö þŕîöŕîţîžé ƒéţçĥîñĝ ŕéšöûŕçéš ţĥåţ åŕé çûŕŕéñţļý ŕéqûéšţéð ļåţéŕ îñ þåĝé ļöåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-rel-preload)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "[Þŕéļöåð ķéý ŕéqûéšţš one two three]" }, "lighthouse-core/audits/viewport.js | description": { - "message": "[Åðð å ᐅ`<meta name=\"viewport\">`ᐊ ţåĝ ţö öþţîmîžé ýöûŕ åþþ ƒöŕ möбîļé šçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen]" + "message": "[Åðð å ᐅ`<meta name=\"viewport\">`ᐊ ţåĝ ţö öþţîmîžé ýöûŕ åþþ ƒöŕ möбîļé šçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/viewport)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen]" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "[Ñö ᐅ`<meta name=\"viewport\">`ᐊ ţåĝ ƒöûñð one two three four]" @@ -1152,7 +1152,7 @@ "message": "[Ĥåš å ᐅ`<meta name=\"viewport\">`ᐊ ţåĝ ŵîţĥ ᐅ`width`ᐊ öŕ ᐅ`initial-scale`ᐊ one two three four five six seven]" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "[Ýöûŕ åþþ šĥöûļð ðîšþļåý šömé çöñţéñţ ŵĥéñ ĴåvåŠçŕîþţ îš ðîšåбļéð, évéñ îƒ îţ'š ĵûšţ å ŵåŕñîñĝ ţö ţĥé ûšéŕ ţĥåţ ĴåvåŠçŕîþţ îš ŕéqûîŕéð ţö ûšé ţĥé åþþ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/no-js)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]" + "message": "[Ýöûŕ åþþ šĥöûļð ðîšþļåý šömé çöñţéñţ ŵĥéñ ĴåvåŠçŕîþţ îš ðîšåбļéð, évéñ îƒ îţ'š ĵûšţ å ŵåŕñîñĝ ţö ţĥé ûšéŕ ţĥåţ ĴåvåŠçŕîþţ îš ŕéqûîŕéð ţö ûšé ţĥé åþþ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/without-javascript)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "[Ţĥé þåĝé бöðý šĥöûļð ŕéñðéŕ šömé çöñţéñţ îƒ îţš šçŕîþţš åŕé ñöţ åvåîļåбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]" @@ -1164,7 +1164,7 @@ "message": "[Çöñţåîñš šömé çöñţéñţ ŵĥéñ ĴåvåŠçŕîþţ îš ñöţ åvåîļåбļé one two three four five six seven eight nine ten eleven]" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "[΃ ýöû'ŕé бûîļðîñĝ å Þŕöĝŕéššîvé Ŵéб Åþþ, çöñšîðéŕ ûšîñĝ å šéŕvîçé ŵöŕķéŕ šö ţĥåţ ýöûŕ åþþ çåñ ŵöŕķ öƒƒļîñé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]" + "message": "[΃ ýöû'ŕé бûîļðîñĝ å Þŕöĝŕéššîvé Ŵéб Åþþ, çöñšîðéŕ ûšîñĝ å šéŕvîçé ŵöŕķéŕ šö ţĥåţ ýöûŕ åþþ çåñ ŵöŕķ öƒƒļîñé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/works-offline)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "[Çûŕŕéñţ þåĝé ðöéš ñöţ ŕéšþöñð ŵîţĥ å 200 ŵĥéñ öƒƒļîñé one two three four five six seven eight nine ten eleven]"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XL.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XL.json index 88ec3d3..cec5605 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XL.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XL.json
@@ -318,7 +318,7 @@ "message": "`<video>` êĺêḿêńt̂ś ĉón̂t́âín̂ á `<track>` êĺêḿêńt̂ ẃît́ĥ `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "F̂ór̂ íd̂éâĺ âṕp̂éâŕâńĉé ôń îÓŜ ẃĥén̂ úŝér̂ś âd́d̂ á p̂ŕôǵr̂éŝśîv́ê ẃêb́ âṕp̂ t́ô t́ĥé ĥóm̂é ŝćr̂éêń, d̂éf̂ín̂é âń `apple-touch-icon`. Ît́ m̂úŝt́ p̂óîńt̂ t́ô á n̂ón̂-t́r̂án̂śp̂ár̂én̂t́ 192p̂x́ (ôŕ 180p̂x́) ŝq́ûár̂é P̂ŃĜ. [Ĺêár̂ń M̂ór̂é](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "F̂ór̂ íd̂éâĺ âṕp̂éâŕâńĉé ôń îÓŜ ẃĥén̂ úŝér̂ś âd́d̂ á p̂ŕôǵr̂éŝśîv́ê ẃêb́ âṕp̂ t́ô t́ĥé ĥóm̂é ŝćr̂éêń, d̂éf̂ín̂é âń `apple-touch-icon`. Ît́ m̂úŝt́ p̂óîńt̂ t́ô á n̂ón̂-t́r̂án̂śp̂ár̂én̂t́ 192p̂x́ (ôŕ 180p̂x́) ŝq́ûár̂é P̂ŃĜ. [Ĺêár̂ń M̂ór̂é](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "D̂óêś n̂ót̂ ṕr̂óv̂íd̂é â v́âĺîd́ `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "T̂ót̂ál̂ ĆP̂Ú T̂ím̂é" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Ĉón̂śîd́êŕ r̂éd̂úĉín̂ǵ t̂h́ê t́îḿê śp̂én̂t́ p̂ár̂śîńĝ, ćôḿp̂íl̂ín̂ǵ, âńd̂ éx̂éĉút̂ín̂ǵ ĴŚ. Ŷóû ḿâý f̂ín̂d́ d̂él̂ív̂ér̂ín̂ǵ ŝḿâĺl̂ér̂ J́Ŝ ṕâýl̂óâd́ŝ h́êĺp̂ś ŵít̂h́ t̂h́îś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Ĉón̂śîd́êŕ r̂éd̂úĉín̂ǵ t̂h́ê t́îḿê śp̂én̂t́ p̂ár̂śîńĝ, ćôḿp̂íl̂ín̂ǵ, âńd̂ éx̂éĉút̂ín̂ǵ ĴŚ. Ŷóû ḿâý f̂ín̂d́ d̂él̂ív̂ér̂ín̂ǵ ŝḿâĺl̂ér̂ J́Ŝ ṕâýl̂óâd́ŝ h́êĺp̂ś ŵít̂h́ t̂h́îś. [L̂éâŕn̂ ḿôŕê](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "R̂éd̂úĉé Ĵáv̂áŜćr̂íp̂t́ êx́êćût́îón̂ t́îḿê" @@ -351,25 +351,25 @@ "message": "Ĵáv̂áŜćr̂íp̂t́ êx́êćût́îón̂ t́îḿê" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "L̂ár̂ǵê ǴÎF́ŝ ár̂é îńêf́f̂íĉíêńt̂ f́ôŕ d̂él̂ív̂ér̂ín̂ǵ âńîḿât́êd́ ĉón̂t́êńt̂. Ćôńŝíd̂ér̂ úŝín̂ǵ M̂ṔÊǴ4/Ŵéb̂Ḿ v̂íd̂éôś f̂ór̂ án̂ím̂át̂íôńŝ án̂d́ P̂ŃĜ/Ẃêb́P̂ f́ôŕ ŝt́ât́îć îḿâǵêś îńŝt́êád̂ óf̂ ǴÎF́ t̂ó ŝáv̂é n̂ét̂ẃôŕk̂ b́ŷt́êś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "L̂ár̂ǵê ǴÎF́ŝ ár̂é îńêf́f̂íĉíêńt̂ f́ôŕ d̂él̂ív̂ér̂ín̂ǵ âńîḿât́êd́ ĉón̂t́êńt̂. Ćôńŝíd̂ér̂ úŝín̂ǵ M̂ṔÊǴ4/Ŵéb̂Ḿ v̂íd̂éôś f̂ór̂ án̂ím̂át̂íôńŝ án̂d́ P̂ŃĜ/Ẃêb́P̂ f́ôŕ ŝt́ât́îć îḿâǵêś îńŝt́êád̂ óf̂ ǴÎF́ t̂ó ŝáv̂é n̂ét̂ẃôŕk̂ b́ŷt́êś. [L̂éâŕn̂ ḿôŕê](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Ûśê v́îd́êó f̂ór̂ḿât́ŝ f́ôŕ âńîḿât́êd́ ĉón̂t́êńt̂" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Ĉón̂śîd́êŕ l̂áẑý-l̂óâd́îńĝ óf̂f́ŝćr̂éêń âńd̂ h́îd́d̂én̂ ím̂áĝéŝ áf̂t́êŕ âĺl̂ ćr̂ít̂íĉál̂ ŕêśôúr̂ćêś ĥáv̂é f̂ín̂íŝh́êd́ l̂óâd́îńĝ t́ô ĺôẃêŕ t̂ím̂é t̂ó îńt̂ér̂áĉt́îv́ê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Ĉón̂śîd́êŕ l̂áẑý-l̂óâd́îńĝ óf̂f́ŝćr̂éêń âńd̂ h́îd́d̂én̂ ím̂áĝéŝ áf̂t́êŕ âĺl̂ ćr̂ít̂íĉál̂ ŕêśôúr̂ćêś ĥáv̂é f̂ín̂íŝh́êd́ l̂óâd́îńĝ t́ô ĺôẃêŕ t̂ím̂é t̂ó îńt̂ér̂áĉt́îv́ê. [Ĺêár̂ń m̂ór̂é](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "D̂éf̂ér̂ óf̂f́ŝćr̂éêń îḿâǵêś" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "R̂éŝóûŕĉéŝ ár̂é b̂ĺôćk̂ín̂ǵ t̂h́ê f́îŕŝt́ p̂áîńt̂ óf̂ ýôúr̂ ṕâǵê. Ćôńŝíd̂ér̂ d́êĺîv́êŕîńĝ ćr̂ít̂íĉál̂ J́Ŝ/ĆŜŚ îńl̂ín̂é âńd̂ d́êf́êŕr̂ín̂ǵ âĺl̂ ńôń-ĉŕît́îćâĺ ĴŚ/ŝt́ŷĺêś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "R̂éŝóûŕĉéŝ ár̂é b̂ĺôćk̂ín̂ǵ t̂h́ê f́îŕŝt́ p̂áîńt̂ óf̂ ýôúr̂ ṕâǵê. Ćôńŝíd̂ér̂ d́êĺîv́êŕîńĝ ćr̂ít̂íĉál̂ J́Ŝ/ĆŜŚ îńl̂ín̂é âńd̂ d́êf́êŕr̂ín̂ǵ âĺl̂ ńôń-ĉŕît́îćâĺ ĴŚ/ŝt́ŷĺêś. [L̂éâŕn̂ ḿôŕê](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Êĺîḿîńât́ê ŕêńd̂ér̂-b́l̂óĉḱîńĝ ŕêśôúr̂ćêś" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "L̂ár̂ǵê ńêt́ŵór̂ḱ p̂áŷĺôád̂ś ĉóŝt́ ûśêŕŝ ŕêál̂ ḿôńêý âńd̂ ár̂é ĥíĝh́l̂ý ĉór̂ŕêĺât́êd́ ŵít̂h́ l̂ón̂ǵ l̂óâd́ t̂ím̂éŝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "L̂ár̂ǵê ńêt́ŵór̂ḱ p̂áŷĺôád̂ś ĉóŝt́ ûśêŕŝ ŕêál̂ ḿôńêý âńd̂ ár̂é ĥíĝh́l̂ý ĉór̂ŕêĺât́êd́ ŵít̂h́ l̂ón̂ǵ l̂óâd́ t̂ím̂éŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "T̂ót̂ál̂ śîźê ẃâś {totalBytes, number, bytes} K̂B́" @@ -381,19 +381,19 @@ "message": "Âv́ôíd̂ś êńôŕm̂óûś n̂ét̂ẃôŕk̂ ṕâýl̂óâd́ŝ" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "M̂ín̂íf̂ýîńĝ ĆŜŚ f̂íl̂éŝ ćâń r̂éd̂úĉé n̂ét̂ẃôŕk̂ ṕâýl̂óâd́ ŝíẑéŝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "M̂ín̂íf̂ýîńĝ ĆŜŚ f̂íl̂éŝ ćâń r̂éd̂úĉé n̂ét̂ẃôŕk̂ ṕâýl̂óâd́ ŝíẑéŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "M̂ín̂íf̂ý ĈŚŜ" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "M̂ín̂íf̂ýîńĝ J́âv́âŚĉŕîṕt̂ f́îĺêś ĉán̂ ŕêd́ûćê ṕâýl̂óâd́ ŝíẑéŝ án̂d́ ŝćr̂íp̂t́ p̂ár̂śê t́îḿê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "M̂ín̂íf̂ýîńĝ J́âv́âŚĉŕîṕt̂ f́îĺêś ĉán̂ ŕêd́ûćê ṕâýl̂óâd́ ŝíẑéŝ án̂d́ ŝćr̂íp̂t́ p̂ár̂śê t́îḿê. [Ĺêár̂ń m̂ór̂é](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "M̂ín̂íf̂ý Ĵáv̂áŜćr̂íp̂t́" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "R̂ém̂óv̂é d̂éâd́ r̂úl̂éŝ f́r̂óm̂ śt̂ýl̂éŝh́êét̂ś âńd̂ d́êf́êŕ t̂h́ê ĺôád̂ín̂ǵ ôf́ ĈŚŜ ńôt́ ûśêd́ f̂ór̂ áb̂óv̂é-t̂h́ê-f́ôĺd̂ ćôńt̂én̂t́ t̂ó r̂éd̂úĉé ûńn̂éĉéŝśâŕŷ b́ŷt́êś ĉón̂śûḿêd́ b̂ý n̂ét̂ẃôŕk̂ áĉt́îv́ît́ŷ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "R̂ém̂óv̂é d̂éâd́ r̂úl̂éŝ f́r̂óm̂ śt̂ýl̂éŝh́êét̂ś âńd̂ d́êf́êŕ t̂h́ê ĺôád̂ín̂ǵ ôf́ ĈŚŜ ńôt́ ûśêd́ f̂ór̂ áb̂óv̂é-t̂h́ê-f́ôĺd̂ ćôńt̂én̂t́ t̂ó r̂éd̂úĉé ûńn̂éĉéŝśâŕŷ b́ŷt́êś ĉón̂śûḿêd́ b̂ý n̂ét̂ẃôŕk̂ áĉt́îv́ît́ŷ. [Ĺêár̂ń m̂ór̂é](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "R̂ém̂óv̂é ûńûśêd́ ĈŚŜ" @@ -405,7 +405,7 @@ "message": "R̂ém̂óv̂é ûńûśêd́ Ĵáv̂áŜćr̂íp̂t́" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": " ĺôńĝ ćâćĥé l̂íf̂ét̂ím̂é ĉán̂ śp̂éêd́ ûṕ r̂ép̂éât́ v̂íŝít̂ś t̂ó ŷóûŕ p̂áĝé. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": " ĺôńĝ ćâćĥé l̂íf̂ét̂ím̂é ĉán̂ śp̂éêd́ ûṕ r̂ép̂éât́ v̂íŝít̂ś t̂ó ŷóûŕ p̂áĝé. [L̂éâŕn̂ ḿôŕê](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 r̂éŝóûŕĉé f̂óûńd̂}\n other {# ŕêśôúr̂ćêś f̂óûńd̂}\n }" @@ -417,25 +417,25 @@ "message": "Ûśêś êf́f̂íĉíêńt̂ ćâćĥé p̂ól̂íĉý ôń ŝt́ât́îć âśŝét̂ś" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Ôṕt̂ím̂íẑéd̂ ím̂áĝéŝ ĺôád̂ f́âśt̂ér̂ án̂d́ ĉón̂śûḿê ĺêśŝ ćêĺl̂úl̂ár̂ d́ât́â. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Ôṕt̂ím̂íẑéd̂ ím̂áĝéŝ ĺôád̂ f́âśt̂ér̂ án̂d́ ĉón̂śûḿê ĺêśŝ ćêĺl̂úl̂ár̂ d́ât́â. [Ĺêár̂ń m̂ór̂é](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Êf́f̂íĉíêńt̂ĺŷ én̂ćôd́ê ím̂áĝéŝ" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Ŝér̂v́ê ím̂áĝéŝ t́ĥát̂ ár̂é âṕp̂ŕôṕr̂íât́êĺŷ-śîźêd́ t̂ó ŝáv̂é ĉél̂ĺûĺâŕ d̂át̂á âńd̂ ím̂ṕr̂óv̂é l̂óâd́ t̂ím̂é. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Ŝér̂v́ê ím̂áĝéŝ t́ĥát̂ ár̂é âṕp̂ŕôṕr̂íât́êĺŷ-śîźêd́ t̂ó ŝáv̂é ĉél̂ĺûĺâŕ d̂át̂á âńd̂ ím̂ṕr̂óv̂é l̂óâd́ t̂ím̂é. [L̂éâŕn̂ ḿôŕê](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "P̂ŕôṕêŕl̂ý ŝíẑé îḿâǵêś" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "T̂éx̂t́-b̂áŝéd̂ ŕêśôúr̂ćêś ŝh́ôúl̂d́ b̂é ŝér̂v́êd́ ŵít̂h́ ĉóm̂ṕr̂éŝśîón̂ (ǵẑíp̂, d́êf́l̂át̂é ôŕ b̂ŕôt́l̂í) t̂ó m̂ín̂ím̂íẑé t̂ót̂ál̂ ńêt́ŵór̂ḱ b̂ýt̂éŝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "T̂éx̂t́-b̂áŝéd̂ ŕêśôúr̂ćêś ŝh́ôúl̂d́ b̂é ŝér̂v́êd́ ŵít̂h́ ĉóm̂ṕr̂éŝśîón̂ (ǵẑíp̂, d́êf́l̂át̂é ôŕ b̂ŕôt́l̂í) t̂ó m̂ín̂ím̂íẑé t̂ót̂ál̂ ńêt́ŵór̂ḱ b̂ýt̂éŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Êńâb́l̂é t̂éx̂t́ ĉóm̂ṕr̂éŝśîón̂" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Îḿâǵê f́ôŕm̂át̂ś l̂ík̂é ĴṔÊǴ 2000, ĴṔÊǴ X̂Ŕ, âńd̂ Ẃêb́P̂ óf̂t́êń p̂ŕôv́îd́ê b́êt́t̂ér̂ ćôḿp̂ŕêśŝíôń t̂h́âń P̂ŃĜ ór̂ J́P̂ÉĜ, ẃĥíĉh́ m̂éâńŝ f́âśt̂ér̂ d́ôẃn̂ĺôád̂ś âńd̂ ĺêśŝ d́ât́â ćôńŝúm̂ṕt̂íôń. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Îḿâǵê f́ôŕm̂át̂ś l̂ík̂é ĴṔÊǴ 2000, ĴṔÊǴ X̂Ŕ, âńd̂ Ẃêb́P̂ óf̂t́êń p̂ŕôv́îd́ê b́êt́t̂ér̂ ćôḿp̂ŕêśŝíôń t̂h́âń P̂ŃĜ ór̂ J́P̂ÉĜ, ẃĥíĉh́ m̂éâńŝ f́âśt̂ér̂ d́ôẃn̂ĺôád̂ś âńd̂ ĺêśŝ d́ât́â ćôńŝúm̂ṕt̂íôń. [L̂éâŕn̂ ḿôŕê](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Ŝér̂v́ê ím̂áĝéŝ ín̂ ńêx́t̂-ǵêń f̂ór̂ḿât́ŝ" @@ -453,13 +453,13 @@ "message": "Ĉón̂t́êńt̂ íŝ śîźêd́ ĉór̂ŕêćt̂ĺŷ f́ôŕ t̂h́ê v́îéŵṕôŕt̂" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "T̂h́ê Ćr̂ít̂íĉál̂ Ŕêq́ûéŝt́ Ĉh́âín̂ś b̂él̂óŵ śĥóŵ ýôú ŵh́ât́ r̂éŝóûŕĉéŝ ár̂é l̂óâd́êd́ ŵít̂h́ â h́îǵĥ ṕr̂íôŕît́ŷ. Ćôńŝíd̂ér̂ ŕêd́ûćîńĝ t́ĥé l̂én̂ǵt̂h́ ôf́ ĉh́âín̂ś, r̂éd̂úĉín̂ǵ t̂h́ê d́ôẃn̂ĺôád̂ śîźê óf̂ ŕêśôúr̂ćêś, ôŕ d̂éf̂ér̂ŕîńĝ t́ĥé d̂óŵńl̂óâd́ ôf́ ûńn̂éĉéŝśâŕŷ ŕêśôúr̂ćêś t̂ó îḿp̂ŕôv́ê ṕâǵê ĺôád̂. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "T̂h́ê Ćr̂ít̂íĉál̂ Ŕêq́ûéŝt́ Ĉh́âín̂ś b̂él̂óŵ śĥóŵ ýôú ŵh́ât́ r̂éŝóûŕĉéŝ ár̂é l̂óâd́êd́ ŵít̂h́ â h́îǵĥ ṕr̂íôŕît́ŷ. Ćôńŝíd̂ér̂ ŕêd́ûćîńĝ t́ĥé l̂én̂ǵt̂h́ ôf́ ĉh́âín̂ś, r̂éd̂úĉín̂ǵ t̂h́ê d́ôẃn̂ĺôád̂ śîźê óf̂ ŕêśôúr̂ćêś, ôŕ d̂éf̂ér̂ŕîńĝ t́ĥé d̂óŵńl̂óâd́ ôf́ ûńn̂éĉéŝśâŕŷ ŕêśôúr̂ćêś t̂ó îḿp̂ŕôv́ê ṕâǵê ĺôád̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 ĉh́âín̂ f́ôún̂d́}\n other {# ĉh́âín̂ś f̂óûńd̂}\n }" }, "lighthouse-core/audits/critical-request-chains.js | title": { - "message": "M̂ín̂ím̂íẑé Ĉŕît́îćâĺ R̂éq̂úêśt̂ś D̂ép̂t́ĥ" + "message": "Âv́ôíd̂ ćĥáîńîńĝ ćr̂ít̂íĉál̂ ŕêq́ûéŝt́ŝ" }, "lighthouse-core/audits/deprecations.js | columnDeprecate": { "message": "D̂ép̂ŕêćât́îón̂ / Ẃâŕn̂ín̂ǵ" @@ -522,7 +522,7 @@ "message": "V̂ál̂úê" }, "lighthouse-core/audits/dobetterweb/dom-size.js | description": { - "message": "B̂ŕôẃŝér̂ én̂ǵîńêér̂ś r̂éĉóm̂ḿêńd̂ ṕâǵêś ĉón̂t́âín̂ f́êẃêŕ t̂h́âń ~1,500 D̂ÓM̂ él̂ém̂én̂t́ŝ. T́ĥé ŝẃêét̂ śp̂ót̂ íŝ á t̂ŕêé d̂ép̂t́ĥ < 32 él̂ém̂én̂t́ŝ án̂d́ f̂éŵér̂ t́ĥán̂ 60 ćĥíl̂d́r̂én̂/ṕâŕêńt̂ él̂ém̂én̂t́.  ĺâŕĝé D̂ÓM̂ ćâń îńĉŕêáŝé m̂ém̂ór̂ý ûśâǵê, ćâúŝé l̂ón̂ǵêŕ [ŝt́ŷĺê ćâĺĉúl̂át̂íôńŝ](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), án̂d́ p̂ŕôd́ûćê ćôśt̂ĺŷ [ĺâýôút̂ ŕêf́l̂óŵś](https://developers.google.com/speed/articles/reflow). [L̂éâŕn̂ ḿôŕê](https://web.dev/dom-size)." + "message": " ĺâŕĝé D̂ÓM̂ ẃîĺl̂ ín̂ćr̂éâśê ḿêḿôŕŷ úŝáĝé, ĉáûśê ĺôńĝér̂ [śt̂ýl̂é ĉál̂ćûĺât́îón̂ś](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), âńd̂ ṕr̂ód̂úĉé ĉóŝt́l̂ý [l̂áŷóût́ r̂éf̂ĺôẃŝ](https://developers.google.com/speed/articles/reflow). [Ĺêár̂ń m̂ór̂é](https://web.dev/dom-size)." }, "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 êĺêḿêńt̂}\n other {# él̂ém̂én̂t́ŝ}\n }" @@ -675,7 +675,7 @@ "message": "N̂ó b̂ŕôẃŝér̂ ér̂ŕôŕŝ ĺôǵĝéd̂ t́ô t́ĥé ĉón̂śôĺê" }, "lighthouse-core/audits/font-display.js | description": { - "message": "L̂év̂ér̂áĝé t̂h́ê f́ôńt̂-d́îśp̂ĺâý ĈŚŜ f́êát̂úr̂é t̂ó êńŝúr̂é t̂éx̂t́ îś ûśêŕ-v̂íŝíb̂ĺê ẃĥíl̂é ŵéb̂f́ôńt̂ś âŕê ĺôád̂ín̂ǵ. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "L̂év̂ér̂áĝé t̂h́ê f́ôńt̂-d́îśp̂ĺâý ĈŚŜ f́êát̂úr̂é t̂ó êńŝúr̂é t̂éx̂t́ îś ûśêŕ-v̂íŝíb̂ĺê ẃĥíl̂é ŵéb̂f́ôńt̂ś âŕê ĺôád̂ín̂ǵ. [L̂éâŕn̂ ḿôŕê](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Êńŝúr̂é t̂éx̂t́ r̂ém̂áîńŝ v́îśîb́l̂é d̂úr̂ín̂ǵ ŵéb̂f́ôńt̂ ĺôád̂" @@ -750,7 +750,7 @@ "message": "Ĉát̂éĝór̂ý" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Ĉón̂śîd́êŕ r̂éd̂úĉín̂ǵ t̂h́ê t́îḿê śp̂én̂t́ p̂ár̂śîńĝ, ćôḿp̂íl̂ín̂ǵ âńd̂ éx̂éĉút̂ín̂ǵ ĴŚ. Ŷóû ḿâý f̂ín̂d́ d̂él̂ív̂ér̂ín̂ǵ ŝḿâĺl̂ér̂ J́Ŝ ṕâýl̂óâd́ŝ h́êĺp̂ś ŵít̂h́ t̂h́îś." + "message": "Ĉón̂śîd́êŕ r̂éd̂úĉín̂ǵ t̂h́ê t́îḿê śp̂én̂t́ p̂ár̂śîńĝ, ćôḿp̂íl̂ín̂ǵ âńd̂ éx̂éĉút̂ín̂ǵ ĴŚ. Ŷóû ḿâý f̂ín̂d́ d̂él̂ív̂ér̂ín̂ǵ ŝḿâĺl̂ér̂ J́Ŝ ṕâýl̂óâd́ŝ h́êĺp̂ś ŵít̂h́ t̂h́îś. [L̂éâŕn̂ ḿôŕê](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "M̂ín̂ím̂íẑé m̂áîń-t̂h́r̂éâd́ ŵór̂ḱ" @@ -777,31 +777,31 @@ "message": "P̂áĝé t̂ŕâńŝít̂íôńŝ d́ôń't̂ f́êél̂ ĺîḱê t́ĥéŷ b́l̂óĉḱ ôń t̂h́ê ńêt́ŵór̂ḱ" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Êśt̂ím̂át̂éd̂ Ín̂ṕût́ L̂át̂én̂ćŷ íŝ án̂ éŝt́îḿât́ê óf̂ h́ôẃ l̂ón̂ǵ ŷóûŕ âṕp̂ t́âḱêś t̂ó r̂éŝṕôńd̂ t́ô úŝér̂ ín̂ṕût́, îń m̂íl̂ĺîśêćôńd̂ś, d̂úr̂ín̂ǵ t̂h́ê b́ûśîéŝt́ 5ŝ ẃîńd̂óŵ óf̂ ṕâǵê ĺôád̂. Íf̂ ýôúr̂ ĺât́êńĉý îś ĥíĝh́êŕ t̂h́âń 50 m̂ś, ûśêŕŝ ḿâý p̂ér̂ćêív̂é ŷóûŕ âṕp̂ áŝ ĺâǵĝý. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Êśt̂ím̂át̂éd̂ Ín̂ṕût́ L̂át̂én̂ćŷ íŝ án̂ éŝt́îḿât́ê óf̂ h́ôẃ l̂ón̂ǵ ŷóûŕ âṕp̂ t́âḱêś t̂ó r̂éŝṕôńd̂ t́ô úŝér̂ ín̂ṕût́, îń m̂íl̂ĺîśêćôńd̂ś, d̂úr̂ín̂ǵ t̂h́ê b́ûśîéŝt́ 5ŝ ẃîńd̂óŵ óf̂ ṕâǵê ĺôád̂. Íf̂ ýôúr̂ ĺât́êńĉý îś ĥíĝh́êŕ t̂h́âń 50 m̂ś, ûśêŕŝ ḿâý p̂ér̂ćêív̂é ŷóûŕ âṕp̂ áŝ ĺâǵĝý. [L̂éâŕn̂ ḿôŕê](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Êśt̂ím̂át̂éd̂ Ín̂ṕût́ L̂át̂én̂ćŷ" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "F̂ír̂śt̂ Ćôńt̂én̂t́f̂úl̂ Ṕâín̂t́ m̂ár̂ḱŝ t́ĥé t̂ím̂é ât́ ŵh́îćĥ t́ĥé f̂ír̂śt̂ t́êx́t̂ ór̂ ím̂áĝé îś p̂áîńt̂éd̂. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "F̂ír̂śt̂ Ćôńt̂én̂t́f̂úl̂ Ṕâín̂t́ m̂ár̂ḱŝ t́ĥé t̂ím̂é ât́ ŵh́îćĥ t́ĥé f̂ír̂śt̂ t́êx́t̂ ór̂ ím̂áĝé îś p̂áîńt̂éd̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "F̂ír̂śt̂ Ćôńt̂én̂t́f̂úl̂ Ṕâín̂t́" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "F̂ír̂śt̂ ĆP̂Ú Îd́l̂é m̂ár̂ḱŝ t́ĥé f̂ír̂śt̂ t́îḿê át̂ ẃĥíĉh́ t̂h́ê ṕâǵê'ś m̂áîń t̂h́r̂éâd́ îś q̂úîét̂ én̂óûǵĥ t́ô h́âńd̂ĺê ín̂ṕût́. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "F̂ír̂śt̂ ĆP̂Ú Îd́l̂é m̂ár̂ḱŝ t́ĥé f̂ír̂śt̂ t́îḿê át̂ ẃĥíĉh́ t̂h́ê ṕâǵê'ś m̂áîń t̂h́r̂éâd́ îś q̂úîét̂ én̂óûǵĥ t́ô h́âńd̂ĺê ín̂ṕût́. [L̂éâŕn̂ ḿôŕê](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "F̂ír̂śt̂ ĆP̂Ú Îd́l̂é" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "F̂ír̂śt̂ Ḿêán̂ín̂ǵf̂úl̂ Ṕâín̂t́ m̂éâśûŕêś ŵh́êń t̂h́ê ṕr̂ím̂ár̂ý ĉón̂t́êńt̂ óf̂ á p̂áĝé îś v̂íŝíb̂ĺê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "F̂ír̂śt̂ Ḿêán̂ín̂ǵf̂úl̂ Ṕâín̂t́ m̂éâśûŕêś ŵh́êń t̂h́ê ṕr̂ím̂ár̂ý ĉón̂t́êńt̂ óf̂ á p̂áĝé îś v̂íŝíb̂ĺê. [Ĺêár̂ń m̂ór̂é](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "F̂ír̂śt̂ Ḿêán̂ín̂ǵf̂úl̂ Ṕâín̂t́" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "T̂ím̂é t̂ó îńt̂ér̂áĉt́îv́ê íŝ t́ĥé âḿôún̂t́ ôf́ t̂ím̂é ît́ t̂ák̂éŝ f́ôŕ t̂h́ê ṕâǵê t́ô b́êćôḿê f́ûĺl̂ý îńt̂ér̂áĉt́îv́ê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "T̂ím̂é t̂ó îńt̂ér̂áĉt́îv́ê íŝ t́ĥé âḿôún̂t́ ôf́ t̂ím̂é ît́ t̂ák̂éŝ f́ôŕ t̂h́ê ṕâǵê t́ô b́êćôḿê f́ûĺl̂ý îńt̂ér̂áĉt́îv́ê. [Ĺêár̂ń m̂ór̂é](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "T̂ím̂é t̂ó Îńt̂ér̂áĉt́îv́ê" @@ -813,7 +813,7 @@ "message": "M̂áx̂ Ṕôt́êńt̂íâĺ F̂ír̂śt̂ Ín̂ṕût́ D̂él̂áŷ" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Ŝṕêéd̂ Ín̂d́êx́ ŝh́ôẃŝ h́ôẃ q̂úîćk̂ĺŷ t́ĥé ĉón̂t́êńt̂ś ôf́ â ṕâǵê ár̂é v̂íŝíb̂ĺŷ ṕôṕûĺât́êd́. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Ŝṕêéd̂ Ín̂d́êx́ ŝh́ôẃŝ h́ôẃ q̂úîćk̂ĺŷ t́ĥé ĉón̂t́êńt̂ś ôf́ â ṕâǵê ár̂é v̂íŝíb̂ĺŷ ṕôṕûĺât́êd́. [L̂éâŕn̂ ḿôŕê](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Ŝṕêéd̂ Ín̂d́êx́" @@ -870,7 +870,7 @@ "message": "R̂éd̂ír̂éĉt́ŝ H́T̂T́P̂ t́r̂áf̂f́îć t̂ó ĤT́T̂ṔŜ" }, "lighthouse-core/audits/redirects.js | description": { - "message": "R̂éd̂ír̂éĉt́ŝ ín̂t́r̂ód̂úĉé âd́d̂ít̂íôńâĺ d̂él̂áŷś b̂éf̂ór̂é t̂h́ê ṕâǵê ćâń b̂é l̂óâd́êd́. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "R̂éd̂ír̂éĉt́ŝ ín̂t́r̂ód̂úĉé âd́d̂ít̂íôńâĺ d̂él̂áŷś b̂éf̂ór̂é t̂h́ê ṕâǵê ćâń b̂é l̂óâd́êd́. [L̂éâŕn̂ ḿôŕê](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Âv́ôíd̂ ḿûĺt̂íp̂ĺê ṕâǵê ŕêd́îŕêćt̂ś" @@ -1089,10 +1089,10 @@ "message": "R̂éd̂úĉé t̂h́ê ím̂ṕâćt̂ óf̂ t́ĥír̂d́-p̂ár̂t́ŷ ćôd́ê" }, "lighthouse-core/audits/third-party-summary.js | title": { - "message": "T̂h́îŕd̂-Ṕâŕt̂ý ûśâǵê" + "message": "M̂ín̂ím̂íẑé t̂h́îŕd̂-ṕâŕt̂ý ûśâǵê" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "T̂ím̂é T̂ó F̂ír̂śt̂ B́ŷt́ê íd̂én̂t́îf́îéŝ t́ĥé t̂ím̂é ât́ ŵh́îćĥ ýôúr̂ śêŕv̂ér̂ śêńd̂ś â ŕêśp̂ón̂śê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "T̂ím̂é T̂ó F̂ír̂śt̂ B́ŷt́ê íd̂én̂t́îf́îéŝ t́ĥé t̂ím̂é ât́ ŵh́îćĥ ýôúr̂ śêŕv̂ér̂ śêńd̂ś â ŕêśp̂ón̂śê. [Ĺêár̂ń m̂ór̂é](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "R̂óôt́ d̂óĉúm̂én̂t́ t̂óôḱ {timeInMs, number, milliseconds} m̂ś" @@ -1113,7 +1113,7 @@ "message": "T̂ýp̂é" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Ĉón̂śîd́êŕ îńŝt́r̂úm̂én̂t́îńĝ ýôúr̂ áp̂ṕ ŵít̂h́ t̂h́ê Úŝér̂ T́îḿîńĝ ÁP̂Í t̂ó m̂éâśûŕê ýôúr̂ áp̂ṕ'ŝ ŕêál̂-ẃôŕl̂d́ p̂ér̂f́ôŕm̂án̂ćê d́ûŕîńĝ ḱêý ûśêŕ êx́p̂ér̂íêńĉéŝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Ĉón̂śîd́êŕ îńŝt́r̂úm̂én̂t́îńĝ ýôúr̂ áp̂ṕ ŵít̂h́ t̂h́ê Úŝér̂ T́îḿîńĝ ÁP̂Í t̂ó m̂éâśûŕê ýôúr̂ áp̂ṕ'ŝ ŕêál̂-ẃôŕl̂d́ p̂ér̂f́ôŕm̂án̂ćê d́ûŕîńĝ ḱêý ûśêŕ êx́p̂ér̂íêńĉéŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 ûśêŕ t̂ím̂ín̂ǵ}\n other {# ûśêŕ t̂ím̂ín̂ǵŝ}\n }" @@ -1125,7 +1125,7 @@ "message": " ṕr̂éĉón̂ńêćt̂ <ĺîńk̂> ẃâś f̂óûńd̂ f́ôŕ \"{securityOrigin}\" b̂út̂ ẃâś n̂ót̂ úŝéd̂ b́ŷ t́ĥé b̂ŕôẃŝér̂. Ćĥéĉḱ t̂h́ât́ ŷóû ár̂é ûśîńĝ t́ĥé `crossorigin` ât́t̂ŕîb́ût́ê ṕr̂óp̂ér̂ĺŷ." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ `preconnect` ôŕ `dns-prefetch` r̂éŝóûŕĉé ĥín̂t́ŝ t́ô éŝt́âb́l̂íŝh́ êár̂ĺŷ ćôńn̂éĉt́îón̂ś t̂ó îḿp̂ór̂t́âńt̂ t́ĥír̂d́-p̂ár̂t́ŷ ór̂íĝín̂ś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ `preconnect` ôŕ `dns-prefetch` r̂éŝóûŕĉé ĥín̂t́ŝ t́ô éŝt́âb́l̂íŝh́ êár̂ĺŷ ćôńn̂éĉt́îón̂ś t̂ó îḿp̂ór̂t́âńt̂ t́ĥír̂d́-p̂ár̂t́ŷ ór̂íĝín̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "P̂ŕêćôńn̂éĉt́ t̂ó r̂éq̂úîŕêd́ ôŕîǵîńŝ" @@ -1134,7 +1134,7 @@ "message": " ṕr̂él̂óâd́ <l̂ín̂ḱ> ŵáŝ f́ôún̂d́ f̂ór̂ \"{preloadURL}\" b́ût́ ŵáŝ ńôt́ ûśêd́ b̂ý t̂h́ê b́r̂óŵśêŕ. Ĉh́êćk̂ t́ĥát̂ ýôú âŕê úŝín̂ǵ t̂h́ê `crossorigin` át̂t́r̂íb̂út̂é p̂ŕôṕêŕl̂ý." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Ĉón̂śîd́êŕ ûśîńĝ `<link rel=preload>` t́ô ṕr̂íôŕît́îźê f́êt́ĉh́îńĝ ŕêśôúr̂ćêś t̂h́ât́ âŕê ćûŕr̂én̂t́l̂ý r̂éq̂úêśt̂éd̂ ĺât́êŕ îń p̂áĝé l̂óâd́. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Ĉón̂śîd́êŕ ûśîńĝ `<link rel=preload>` t́ô ṕr̂íôŕît́îźê f́êt́ĉh́îńĝ ŕêśôúr̂ćêś t̂h́ât́ âŕê ćûŕr̂én̂t́l̂ý r̂éq̂úêśt̂éd̂ ĺât́êŕ îń p̂áĝé l̂óâd́. [L̂éâŕn̂ ḿôŕê](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "P̂ŕêĺôád̂ ḱêý r̂éq̂úêśt̂ś" @@ -1496,6 +1496,99 @@ "lighthouse-core/report/html/renderer/util.js | warningHeader": { "message": "Ŵár̂ńîńĝś: " }, + "stack-packs/packs/amp.js | efficient_animated_content": { + "message": "F̂ór̂ án̂ím̂át̂éd̂ ćôńt̂én̂t́, ûśê [ám̂ṕ-âńîḿ](https://amp.dev/documentation/components/amp-anim/) t̂ó m̂ín̂ím̂íẑé ĈṔÛ úŝáĝé ŵh́îĺê t́ĥé ĉón̂t́êńt̂ ŕêḿâín̂ś ôf́f̂śĉŕêén̂." + }, + "stack-packs/packs/amp.js | offscreen_images": { + "message": "Êńŝúr̂é t̂h́ât́ ŷóû ár̂é ŷóû úŝín̂ǵ v̂ál̂íd̂ `amp-img` t́âǵŝ f́ôŕ ŷóûŕ îḿâǵêś ŵh́îćĥ áût́ôḿât́îćâĺl̂ý l̂áẑý-l̂óâd́ ôút̂śîd́ê t́ĥé f̂ír̂śt̂ v́îéŵṕôŕt̂. [Ĺêár̂ń m̂ór̂é](https://amp.dev/documentation/guides-and-tutorials/develop/media_iframes_3p/?format=websites#images)." + }, + "stack-packs/packs/amp.js | render_blocking_resources": { + "message": "Ûśê t́ôól̂ś ŝúĉh́ âś [ÂḾP̂ Óp̂t́îḿîźêŕ](https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer) t̂ó [ŝér̂v́êŕ-ŝíd̂é r̂én̂d́êŕ ÂḾP̂ ĺâýôút̂ś](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/server-side-rendering/)." + }, + "stack-packs/packs/amp.js | unminified_css": { + "message": "R̂éf̂ér̂ t́ô t́ĥé [ÂḾP̂ d́ôćûḿêńt̂át̂íôń](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/style_pages/) t̂ó êńŝúr̂é âĺl̂ ýôúr̂ śt̂ýl̂éŝ ár̂é ŝúp̂ṕôŕt̂éd̂." + }, + "stack-packs/packs/amp.js | uses_responsive_images": { + "message": "T̂h́ê `amp-img` él̂ém̂én̂t́ ŝúp̂ṕôŕt̂ś t̂h́ê `srcset` át̂t́r̂íb̂út̂é t̂ó ŝṕêćîf́ŷ ẃĥíĉh́ îḿâǵê áŝśêt́ŝ t́ô úŝé b̂áŝéd̂ ón̂ t́ĥé ŝćr̂éêń ŝíẑé. [L̂éâŕn̂ ḿôŕê](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/art_direction/)." + }, + "stack-packs/packs/amp.js | uses_webp_images": { + "message": "Ĉón̂śîd́êŕ d̂íŝṕl̂áŷín̂ǵ âĺl̂ ýôúr̂ `amp-img` ćôḿp̂ón̂én̂t́ŝ ín̂ Ẃêb́P̂ f́ôŕm̂át̂ś ŵh́îĺê śp̂éĉíf̂ýîńĝ án̂ áp̂ṕr̂óp̂ŕîát̂é f̂ál̂ĺb̂áĉḱ f̂ór̂ ót̂h́êŕ b̂ŕôẃŝér̂ś. [L̂éâŕn̂ ḿôŕê](https://amp.dev/documentation/components/amp-img/#example:-specifying-a-fallback-image)." + }, + "stack-packs/packs/angular.js | dom_size": { + "message": "Ĉón̂śîd́êŕ v̂ír̂t́ûál̂ śĉŕôĺl̂ín̂ǵ ŵít̂h́ t̂h́ê Ćôḿp̂ón̂én̂t́ D̂év̂ Ḱît́ (ĈD́K̂) íf̂ v́êŕŷ ĺâŕĝé l̂íŝt́ŝ ár̂é b̂éîńĝ ŕêńd̂ér̂éd̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/virtualize-lists-with-angular-cdk/)." + }, + "stack-packs/packs/angular.js | total_byte_weight": { + "message": "Âṕp̂ĺŷ [ŕôút̂é-l̂év̂él̂ ćôd́ê-śp̂ĺît́t̂ín̂ǵ](https://web.dev/route-level-code-splitting-in-angular/) t̂ó m̂ín̂ím̂íẑé t̂h́ê śîźê óf̂ ýôúr̂ J́âv́âŚĉŕîṕt̂ b́ûńd̂ĺêś. Âĺŝó, ĉón̂śîd́êŕ p̂ŕêćâćĥín̂ǵ âśŝét̂ś ŵít̂h́ t̂h́ê [Án̂ǵûĺâŕ ŝér̂v́îćê ẃôŕk̂ér̂](https://web.dev/precaching-with-the-angular-service-worker/)." + }, + "stack-packs/packs/angular.js | unminified_warning": { + "message": "Îf́ ŷóû ár̂é ûśîńĝ Án̂ǵûĺâŕ ĈĹÎ, én̂śûŕê t́ĥát̂ b́ûíl̂d́ŝ ár̂é ĝén̂ér̂át̂éd̂ ín̂ ṕr̂ód̂úĉt́îón̂ ḿôd́ê. [Ĺêár̂ń m̂ór̂é](https://angular.io/guide/deployment#enable-runtime-production-mode)." + }, + "stack-packs/packs/angular.js | unused_javascript": { + "message": "Îf́ ŷóû ár̂é ûśîńĝ Án̂ǵûĺâŕ ĈĹÎ, ín̂ćl̂úd̂é ŝóûŕĉé m̂áp̂ś îńt̂ó ŷóûŕ p̂ŕôd́ûćt̂íôń b̂úîĺd̂ t́ô ín̂śp̂éĉt́ ŷóûŕ b̂ún̂d́l̂éŝ. [Ĺêár̂ń m̂ór̂é](https://angular.io/guide/deployment#inspect-the-bundles)." + }, + "stack-packs/packs/angular.js | uses_rel_preload": { + "message": "P̂ŕêĺôád̂ ŕôút̂éŝ áĥéâd́ ôf́ t̂ím̂é t̂ó ŝṕêéd̂ úp̂ ńâv́îǵât́îón̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/route-preloading-in-angular/)." + }, + "stack-packs/packs/angular.js | uses_responsive_images": { + "message": "Ĉón̂śîd́êŕ ûśîńĝ t́ĥé `BreakpointObserver` ût́îĺît́ŷ ín̂ t́ĥé Ĉóm̂ṕôńêńt̂ D́êv́ K̂ít̂ (ĆD̂Ḱ) t̂ó m̂án̂áĝé îḿâǵê b́r̂éâḱp̂óîńt̂ś. [L̂éâŕn̂ ḿôŕê](https://material.angular.io/cdk/layout/overview)." + }, + "stack-packs/packs/magento.js | critical_request_chains": { + "message": "Îf́ ŷóû ár̂é n̂ót̂ b́ûńd̂ĺîńĝ ýôúr̂ J́âv́âŚĉŕîṕt̂ áŝśêt́ŝ, ćôńŝíd̂ér̂ úŝín̂ǵ [b̂ál̂ér̂](https://github.com/magento/baler)." + }, + "stack-packs/packs/magento.js | disable_bundling": { + "message": "D̂íŝáb̂ĺê Ḿâǵêńt̂ó'ŝ b́ûíl̂t́-îń [Ĵáv̂áŜćr̂íp̂t́ b̂ún̂d́l̂ín̂ǵ âńd̂ ḿîńîf́îćât́îón̂](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html), án̂d́ ĉón̂śîd́êŕ ûśîńĝ [b́âĺêŕ](https://github.com/magento/baler/) îńŝt́êád̂." + }, + "stack-packs/packs/magento.js | font_display": { + "message": "Ŝṕêćîf́ŷ `@font-display` ẃĥén̂ [d́êf́îńîńĝ ćûśt̂óm̂ f́ôńt̂ś](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/using-fonts.html)." + }, + "stack-packs/packs/magento.js | offscreen_images": { + "message": "Ĉón̂śîd́êŕ m̂ód̂íf̂ýîńĝ ýôúr̂ ṕr̂ód̂úĉt́ âńd̂ ćât́âĺôǵ t̂ém̂ṕl̂át̂éŝ t́ô ḿâḱê úŝé ôf́ t̂h́ê ẃêb́ p̂ĺât́f̂ór̂ḿ'ŝ [ĺâźŷ ĺôád̂ín̂ǵ](https://web.dev/native-lazy-loading) f̂éât́ûŕê." + }, + "stack-packs/packs/magento.js | time_to_first_byte": { + "message": "Ûśê Ḿâǵêńt̂ó'ŝ [V́âŕn̂íŝh́ îńt̂éĝŕât́îón̂](https://devdocs.magento.com/guides/v2.3/config-guide/varnish/config-varnish.html)." + }, + "stack-packs/packs/magento.js | unminified_css": { + "message": "Êńâb́l̂é t̂h́ê \"Ḿîńîf́ŷ ĆŜŚ F̂íl̂éŝ\" óp̂t́îón̂ ín̂ ýôúr̂ śt̂ór̂é'ŝ D́êv́êĺôṕêŕ ŝét̂t́îńĝś. [L̂éâŕn̂ ḿôŕê](https://devdocs.magento.com/guides/v2.3/performance-best-practices/configuration.html?itm_source=devdocs&itm_medium=search_page&itm_campaign=federated_search&itm_term=minify%20css%20files)." + }, + "stack-packs/packs/magento.js | unminified_javascript": { + "message": "Ûśê [T́êŕŝér̂](https://www.npmjs.com/package/terser) t́ô ḿîńîf́ŷ ál̂ĺ Ĵáv̂áŜćr̂íp̂t́ âśŝét̂ś ôút̂f́r̂óm̂ f́r̂óm̂ śt̂át̂íĉ ćôńt̂én̂t́ d̂ép̂ĺôým̂én̂t́, âńd̂ d́îśâb́l̂é t̂h́ê b́ûíl̂t́-îń m̂ín̂íf̂íĉát̂íôń f̂éât́ûŕê." + }, + "stack-packs/packs/magento.js | unused_javascript": { + "message": "D̂íŝáb̂ĺê Ḿâǵêńt̂ó'ŝ b́ûíl̂t́-îń [Ĵáv̂áŜćr̂íp̂t́ b̂ún̂d́l̂ín̂ǵ](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html)." + }, + "stack-packs/packs/magento.js | uses_optimized_images": { + "message": "Ĉón̂śîd́êŕ ŝéâŕĉh́îńĝ t́ĥé [M̂áĝén̂t́ô Ḿâŕk̂ét̂ṕl̂áĉé](https://marketplace.magento.com/catalogsearch/result/?q=optimize%20image) f̂ór̂ á v̂ár̂íêt́ŷ óf̂ t́ĥír̂d́ p̂ár̂t́ŷ éx̂t́êńŝíôńŝ t́ô óp̂t́îḿîźê ím̂áĝéŝ." + }, + "stack-packs/packs/magento.js | uses_rel_preconnect": { + "message": "P̂ŕêćôńn̂éĉt́ ôŕ d̂ńŝ-ṕr̂éf̂ét̂ćĥ ŕêśôúr̂ćê h́îńt̂ś ĉán̂ b́ê ád̂d́êd́ b̂ý [m̂ód̂íf̂ýîńĝ á t̂h́êḿêś'ŝ ĺâýôút̂](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html)." + }, + "stack-packs/packs/magento.js | uses_rel_preload": { + "message": "`<link rel=preload>` t̂áĝś ĉán̂ b́ê ád̂d́êd́ b̂ý [m̂ód̂íf̂ýîńĝ á t̂h́êḿêś'ŝ ĺâýôút̂](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html)." + }, + "stack-packs/packs/magento.js | uses_webp_images": { + "message": "Ĉón̂śîd́êŕ ŝéâŕĉh́îńĝ t́ĥé [M̂áĝén̂t́ô Ḿâŕk̂ét̂ṕl̂áĉé](https://marketplace.magento.com/catalogsearch/result/?q=webp) f̂ór̂ á v̂ár̂íêt́ŷ óf̂ t́ĥír̂d́-p̂ár̂t́ŷ éx̂t́êńŝíôńŝ t́ô ĺêv́êŕâǵê ńêẃêŕ îḿâǵê f́ôŕm̂át̂ś." + }, + "stack-packs/packs/react.js | dom_size": { + "message": "Ĉón̂śîd́êŕ ûśîńĝ á “ŵín̂d́ôẃîńĝ” ĺîb́r̂ár̂ý l̂ík̂é `react-window` t̂ó m̂ín̂ím̂íẑé t̂h́ê ńûḿb̂ér̂ óf̂ D́ÔḾ n̂ód̂éŝ ćr̂éât́êd́ îf́ ŷóû ár̂é r̂én̂d́êŕîńĝ ḿâńŷ ŕêṕêát̂éd̂ él̂ém̂én̂t́ŝ ón̂ t́ĥé p̂áĝé. [L̂éâŕn̂ ḿôŕê](https://web.dev/virtualize-long-lists-react-window/). Ál̂śô, ḿîńîḿîźê ún̂éĉéŝśâŕŷ ŕê-ŕêńd̂ér̂ś ûśîńĝ [śĥóûĺd̂Ćôḿp̂ón̂én̂t́Ûṕd̂át̂é](https://reactjs.org/docs/optimizing-performance.html#shouldcomponentupdate-in-action), [P̂úr̂éĈóm̂ṕôńêńt̂](https://reactjs.org/docs/react-api.html#reactpurecomponent), ór̂ [Ŕêáĉt́.m̂ém̂ó](https://reactjs.org/docs/react-api.html#reactmemo) âńd̂ [śk̂íp̂ éf̂f́êćt̂ś](https://reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects) ôńl̂ý ûńt̂íl̂ ćêŕt̂áîń d̂ép̂én̂d́êńĉíêś ĥáv̂é ĉh́âńĝéd̂ íf̂ ýôú âŕê úŝín̂ǵ t̂h́ê Éf̂f́êćt̂ h́ôók̂ t́ô ím̂ṕr̂óv̂é r̂ún̂t́îḿê ṕêŕf̂ór̂ḿâńĉé." + }, + "stack-packs/packs/react.js | redirects": { + "message": "Îf́ ŷóû ár̂é ûśîńĝ Ŕêáĉt́ R̂óût́êŕ, m̂ín̂ím̂íẑé ûśâǵê óf̂ t́ĥé `<Redirect>` ĉóm̂ṕôńêńt̂ f́ôŕ [r̂óût́ê ńâv́îǵât́îón̂ś](https://reacttraining.com/react-router/web/api/Redirect)." + }, + "stack-packs/packs/react.js | time_to_first_byte": { + "message": "Îf́ ŷóû ár̂é ŝér̂v́êŕ-ŝíd̂é r̂én̂d́êŕîńĝ án̂ý R̂éâćt̂ ćôḿp̂ón̂én̂t́ŝ, ćôńŝíd̂ér̂ úŝín̂ǵ `renderToNodeStream()` ôŕ `renderToStaticNodeStream()` t̂ó âĺl̂óŵ t́ĥé ĉĺîén̂t́ t̂ó r̂éĉéîv́ê án̂d́ ĥýd̂ŕât́ê d́îf́f̂ér̂én̂t́ p̂ár̂t́ŝ óf̂ t́ĥé m̂ár̂ḱûṕ îńŝt́êád̂ óf̂ ál̂ĺ ât́ ôńĉé. [L̂éâŕn̂ ḿôŕê](https://reactjs.org/docs/react-dom-server.html#rendertonodestream)." + }, + "stack-packs/packs/react.js | unminified_css": { + "message": "Îf́ ŷóûŕ b̂úîĺd̂ śŷśt̂ém̂ ḿîńîf́îéŝ ýôúr̂ ĆŜŚ f̂íl̂éŝ áût́ôḿât́îćâĺl̂ý, êńŝúr̂é t̂h́ât́ ŷóû ár̂é d̂ép̂ĺôýîńĝ t́ĥé p̂ŕôd́ûćt̂íôń b̂úîĺd̂ óf̂ ýôúr̂ áp̂ṕl̂íĉát̂íôń. Ŷóû ćâń ĉh́êćk̂ t́ĥíŝ ẃît́ĥ t́ĥé R̂éâćt̂ D́êv́êĺôṕêŕ T̂óôĺŝ éx̂t́êńŝíôń. [L̂éâŕn̂ ḿôŕê](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build)." + }, + "stack-packs/packs/react.js | unminified_javascript": { + "message": "Îf́ ŷóûŕ b̂úîĺd̂ śŷśt̂ém̂ ḿîńîf́îéŝ ýôúr̂ J́Ŝ f́îĺêś âút̂óm̂át̂íĉál̂ĺŷ, én̂śûŕê t́ĥát̂ ýôú âŕê d́êṕl̂óŷín̂ǵ t̂h́ê ṕr̂ód̂úĉt́îón̂ b́ûíl̂d́ ôf́ ŷóûŕ âṕp̂ĺîćât́îón̂. Ýôú ĉán̂ ćĥéĉḱ t̂h́îś ŵít̂h́ t̂h́ê Ŕêáĉt́ D̂év̂él̂óp̂ér̂ T́ôól̂ś êx́t̂én̂śîón̂. [Ĺêár̂ń m̂ór̂é](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build)." + }, + "stack-packs/packs/react.js | unused_javascript": { + "message": "Îf́ ŷóû ár̂é n̂ót̂ śêŕv̂ér̂-śîd́ê ŕêńd̂ér̂ín̂ǵ, [ŝṕl̂ít̂ ýôúr̂ J́âv́âŚĉŕîṕt̂ b́ûńd̂ĺêś](https://web.dev/code-splitting-suspense/) ŵít̂h́ `React.lazy()`. Ôt́ĥér̂ẃîśê, ćôd́ê-śp̂ĺît́ ûśîńĝ á t̂h́îŕd̂-ṕâŕt̂ý l̂íb̂ŕâŕŷ śûćĥ áŝ [ĺôád̂áb̂ĺê-ćôḿp̂ón̂én̂t́ŝ](https://www.smooth-code.com/open-source/loadable-components/docs/getting-started/)." + }, + "stack-packs/packs/react.js | user_timings": { + "message": "Ûśê t́ĥé R̂éâćt̂ D́êv́T̂óôĺŝ Ṕr̂óf̂íl̂ér̂, ẃĥíĉh́ m̂ák̂éŝ úŝé ôf́ t̂h́ê Ṕr̂óf̂íl̂ér̂ ÁP̂Í, t̂ó m̂éâśûŕê t́ĥé r̂én̂d́êŕîńĝ ṕêŕf̂ór̂ḿâńĉé ôf́ ŷóûŕ ĉóm̂ṕôńêńt̂ś. [L̂éâŕn̂ ḿôŕê.](https://reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html)" + }, "stack-packs/packs/wordpress.js | efficient_animated_content": { "message": "Ĉón̂śîd́êŕ ûṕl̂óâd́îńĝ ýôúr̂ ǴÎF́ t̂ó â śêŕv̂íĉé ŵh́îćĥ ẃîĺl̂ ḿâḱê ít̂ áv̂áîĺâb́l̂é t̂ó êḿb̂éd̂ áŝ án̂ H́T̂ḾL̂5 v́îd́êó." },
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es-419.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es-419.json index 74d08154..199c474 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es-419.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es-419.json
@@ -30,10 +30,10 @@ "message": "Algunos roles principales de ARIA deben contener roles secundarios específicos para llevar a cabo las funciones de accesibilidad correspondientes. [Obtén más información](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Faltan elementos con `[role]` que requieren elementos `[role]` secundarios específicos." + "message": "Los elementos con una función `[role]` ARIA deben incluir elementos secundarios con una `[role]` específica. Faltan algunos o todos los elementos secundarios necesarios." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Se incluyen elementos con roles `[role]` que requieren roles `[role]` secundarios específicos" + "message": "Los elementos con una función `[role]` ARIA deben incluir elementos secundarios con una `[role]` específica. Se detectaron todos los elementos secundarios necesarios." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Algunos roles secundarios de ARIA deben incluirse dentro de roles principales específicos para llevar a cabo de manera adecuada las funciones de accesibilidad correspondientes. [Obtén más información](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Los lectores de pantalla incluyen funciones para facilitar la navegación por las tablas. Asegurarse de que las celdas `<td>` que usan el atributo `[headers]` solo hagan referencia a otras celdas de la misma tabla puede mejorar la experiencia de los usuarios de lectores de pantalla. [Obtén más información](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Las celdas de un elemento `<table>` que usan el atributo `[headers]` hacen referencia a otras celdas de esa misma tabla." + "message": "Las celdas de un elemento `<table>` que usan el atributo `[headers]` hacen referencia a un elemento `id` que no se encuentra en la misma tabla." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Las celdas de un elemento `<table>` que usan el atributo `[headers]` solo hacen referencia a otras celdas de esa misma tabla." + "message": "Las celdas de un elemento `<table>` que usa el atributo `[headers]` hacen referencia a las celdas de esa misma tabla." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Los lectores de pantalla incluyen funciones para facilitar la navegación por las tablas. Asegurarse de que los encabezados de las tablas siempre hagan referencia a un conjunto específico de celdas puede mejorar la experiencia de los usuarios de lectores de pantalla. [Obtén más información](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Los elementos `<video>` contienen un elemento `<track>` con `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Para que el aspecto en iOS sea perfecto cuando los usuarios agreguen una app web progresiva a la pantalla principal, define un atributo `apple-touch-icon`. El atributo debe apuntar a un archivo PNG cuadrado de 192 px (o 180 px) no transparente. [Obtén más información](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Para que el aspecto en iOS sea perfecto cuando los usuarios agreguen una app web progresiva a la pantalla principal, define un atributo `apple-touch-icon`. El atributo debe apuntar a un archivo PNG cuadrado de 192 px (o 180 px) que no sea transparente. [Obtén más información](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "No proporciona un ícono `apple-touch-icon` válido" @@ -342,7 +342,7 @@ "message": "Tiempo de CPU total" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de secuencias JS. Para ello, puedes entregar cargas útiles de JS más pequeñas. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de secuencias JS. Para ello, puedes entregar cargas útiles de JS más pequeñas. [Obtén más información](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reduce el tiempo de ejecución de JavaScript" @@ -351,25 +351,25 @@ "message": "Tiempo de ejecución de JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Los GIF de gran tamaño no son eficientes para mostrar contenido animado. En su lugar, puedes utilizar formatos de video MPEG4/WebM para animaciones y formatos PNG/WebP para imágenes estáticas a fin de ahorrar bytes de la red. [Más información](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Los GIF de gran tamaño no son eficientes para mostrar contenido animado. En su lugar, puedes utilizar formatos de video MPEG4/WebM para animaciones y formatos PNG/WebP para imágenes estáticas a fin de ahorrar bytes de la red. [Más información](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Usa formatos de video para incluir contenido animado" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Te recomendamos que uses la carga diferida para las imágenes ocultas y fuera de pantalla una vez que hayan terminado de cargarse todos los recursos críticos a fin de reducir el tiempo de carga. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Te recomendamos que uses la carga diferida para las imágenes ocultas y fuera de pantalla una vez que hayan terminado de cargarse todos los recursos críticos a fin de reducir el tiempo de carga. [Obtén más información](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Posterga la carga de imágenes que no aparecen en pantalla" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Hay recursos que bloquean el primer procesamiento de imagen de la página. Te recomendamos entregar los elementos JS/CSS críticos insertados y postergar todos los JS/estilos que no sean críticos. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Hay recursos que bloquean el primer procesamiento de imagen de la página. Te recomendamos entregar los elementos JS/CSS críticos insertados y postergar todos los JS/estilos que no sean críticos. [Obtén más información](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Elimina los recursos que bloqueen el renderizado" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Trabajar con cargas útiles de red de gran tamaño resulta oneroso para el usuario, además de aumentar considerablemente el tiempo de carga de las páginas. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Trabajar con cargas útiles de red de gran tamaño resulta oneroso para el usuario, además de aumentar considerablemente el tiempo de carga de las páginas. [Obtén más información](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "El tamaño total era {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Evita cargas útiles de red de gran tamaño" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Si reduces los archivos CSS, puedes achicar el tamaño de la carga útil de la red. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Si reduces los archivos CSS, puedes achicar el tamaño de la carga útil de la red. [Obtén más información](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Reduce el uso de CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Si reduces los archivos JavaScript, puedes achicar el tamaño de la carga útil y el tiempo de análisis de secuencias de comandos. [Obtén más información](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Si reduces los archivos JavaScript, puedes achicar el tamaño de la carga útil y el tiempo de análisis de secuencias de comandos. [Obtén más información](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Reducir el uso de JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Quita las reglas inactivas de las hojas de estilo y retrasa la carga de secuencias CSS que no se utilicen para el contenido de la mitad superior de la página. Así, se reducirán los bytes que consume innecesariamente la actividad de red. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Quita las reglas inactivas de las hojas de estilo y retrasa la carga de secuencias CSS que no se utilicen para el contenido de la mitad superior de la página. Así, se reducirán los bytes que consume innecesariamente la actividad de red. [Obtén más información](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Quita los recursos CSS que no se usen" @@ -405,7 +405,7 @@ "message": "Quita el código JavaScript sin usar" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "La duración en caché por un período prolongado puede acelerar la carga de la página cuando el usuario la visita de manera repetida. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "La duración en caché por un período prolongado puede acelerar la carga de la página cuando el usuario la visita de manera repetida. [Obtén más información](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Se encontró 1 recurso}other{Se encontraron # recursos}}" @@ -417,43 +417,43 @@ "message": "Usa una política de caché eficaz en recursos estáticos" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Las imágenes optimizadas se cargan más rápido y consumen menos datos móviles. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Las imágenes optimizadas se cargan más rápido y consumen menos datos móviles. [Obtén más información](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Codifica las imágenes de forma eficaz" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Muestra imágenes con un tamaño adecuado para ahorrar datos móviles y reducir el tiempo de carga. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Muestra imágenes con un tamaño adecuado para ahorrar datos móviles y reducir el tiempo de carga. [Obtén más información](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Usa un tamaño adecuado para las imágenes" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Los recursos basados en texto se deberían publicar comprimidos (gzip, deflate o brotli) para minimizar el total de bytes de la red. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Los recursos basados en texto se deberían publicar comprimidos (gzip, deflate o brotli) para minimizar el total de bytes de la red. [Obtén más información](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Habilita la compresión de texto" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Los formatos como JPEG 2000, JPEG XR y WebP suelen comprimir mejor las imágenes que los formatos PNG o JPEG, lo que hace que se descarguen más rápido y consuman menos datos. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Los formatos como JPEG 2000, JPEG XR y WebP suelen comprimir mejor las imágenes que los formatos PNG o JPEG, lo que hace que se descarguen más rápido y consuman menos datos. [Obtén más información](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Publica imágenes con formatos de próxima generación" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Si el ancho del contenido de tu app no coincide con el de la vista del puerto, es posible que la app no esté optimizada para pantallas de dispositivos móviles. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Si el ancho del contenido de tu app no coincide con el del viewport, es posible que la app no esté optimizada para pantallas de dispositivos móviles. [Obtén más información](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { - "message": "El tamaño de la vista del puerto de {innerWidth} px no coincide con el tamaño de la ventana de {outerWidth} px." + "message": "El tamaño de viewport de {innerWidth} px no coincide con el tamaño de ventana de {outerWidth} px." }, "lighthouse-core/audits/content-width.js | failureTitle": { - "message": "El contenido no tiene el tamaño correcto para la vista del puerto" + "message": "El contenido no tiene el tamaño correcto para el viewport" }, "lighthouse-core/audits/content-width.js | title": { - "message": "El contenido tiene el tamaño correcto para la vista del puerto" + "message": "El contenido tiene el tamaño correcto para el viewport" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Las cadenas de solicitudes críticas que se muestran a continuación indican qué recursos son de alta prioridad en la carga. Te recomendamos que reduzcas la longitud de las cadenas, disminuyas el tamaño de los recursos para la descarga o postergues la descarga de recursos innecesarios para mejorar la carga de la página. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Las cadenas de solicitudes críticas que se muestran a continuación indican qué recursos son de alta prioridad en la carga. Te recomendamos que reduzcas la longitud de las cadenas, disminuyas el tamaño de los recursos para la descarga o postergues la descarga de recursos innecesarios para mejorar la carga de la página. [Obtén más información](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Se encontró 1 cadena}other{Se encontraron # cadenas}}" @@ -666,7 +666,7 @@ "message": "Descripción" }, "lighthouse-core/audits/errors-in-console.js | description": { - "message": "Los errores registrados en la consola indican la existencia de problemas no resueltos. Es posible que se deban a fallos en solicitudes de red y otros problemas del navegador. [Obtén más información](https://web.dev/errors-in-console)." + "message": "Los errores registrados en la consola indican la existencia de problemas no resueltos. Es posible que se deban a problemas con solicitudes de red y otros relativos al navegador. [Obtén más información](https://web.dev/errors-in-console)." }, "lighthouse-core/audits/errors-in-console.js | failureTitle": { "message": "Se registraron errores del navegador en la consola" @@ -675,7 +675,7 @@ "message": "No se registraron errores del navegador en la consola" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Utiliza la función font-display de CSS a fin de que los usuarios vean el texto mientras se carga la fuente para sitios web. [Obtén más información](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Utiliza la función font-display de CSS a fin de que los usuarios vean el texto mientras se carga la fuente para sitios web. [Obtén más información](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Asegúrate de que el texto permanezca visible mientras se carga la fuente web" @@ -705,13 +705,13 @@ "message": "La información sobre el tamaño de la imagen no es válida {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Los navegadores pueden solicitarles a los usuarios de forma proactiva que agreguen tu app a la pantalla principal, lo que puede conllevar un mayor compromiso. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Los navegadores pueden solicitar a los usuarios proactivamente que agreguen tu app a la pantalla principal, lo que es posible que genere un mayor compromiso. [Obtén más información](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { - "message": "El manifiesto de la aplicación web no cumple los requisitos de instalación" + "message": "El manifiesto de la aplicación web no cumple los requisitos de aptitud para la instalación" }, "lighthouse-core/audits/installable-manifest.js | title": { - "message": "El manifiesto de la aplicación web cumple los requisitos de instalación" + "message": "El manifiesto de la aplicación web cumple los requisitos de aptitud para la instalación" }, "lighthouse-core/audits/is-on-https.js | columnInsecureURL": { "message": "URL no segura" @@ -729,7 +729,7 @@ "message": "Usa HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Si las páginas se cargan rápidamente en las redes móviles, el usuario disfrutará de una buena experiencia. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Si las páginas se cargan rápidamente en las redes móviles, el usuario disfrutará de una buena experiencia. [Obtén más información](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interactiva a los {timeInMs, number, seconds} s" @@ -738,7 +738,7 @@ "message": "Interactiva en una red móvil simulada a los {timeInMs, number, seconds} s" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": { - "message": "Tu página es demasiado lenta y no es interactiva en menos de 10 segundos. Para obtener información sobre cómo mejorarla, accede a la sección \"Rendimiento\" para ver las oportunidades y el diagnóstico." + "message": "Tu página tarda mucho en cargarse y no es interactiva en menos de 10 segundos. Para obtener información sobre cómo mejorarla, accede a la sección Rendimiento, donde podrás consultar las oportunidades disponibles y el diagnóstico correspondiente." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": { "message": "La página no se carga suficientemente rápido en las redes móviles" @@ -750,7 +750,7 @@ "message": "Categoría" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JS. Para ello, puedes utilizar cargas útiles de JS más pequeñas." + "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JS. Para ello, puedes utilizar cargas útiles de JS más pequeñas. [Obtén más información](https://web.dev/mainthread-work-breakdown)." }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimiza el trabajo del hilo principal" @@ -759,49 +759,49 @@ "message": "Minimiza el trabajo del hilo principal" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Para alcanzar la mayor cantidad de usuarios, los sitios deben poder funcionar en todos los navegadores principales. [Obtén más información](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Para alcanzar la mayor cantidad de usuarios, los sitios tienen que funcionar en todos los navegadores principales. [Obtén más información](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "El sitio funciona en diferentes navegadores" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Garantiza que las páginas individuales puedan vincularse directamente a través de la URL y que las URL sean únicas para que se puedan compartir en redes sociales. [Obtén más información](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Garantiza que las páginas individuales puedan vincularse directamente a través de la URL y que las URL sean únicas para que se puedan compartir en redes sociales. [Obtén más información](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Cada página tiene una URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Una clave del rendimiento percibido es la agilidad de las transiciones cuando presionas diferentes teclas, incluso con conexiones de red lentas. [Obtén más información](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Las transiciones deben ser ágiles cuando presionas en diferentes lugares, incluso con conexiones de red lentas. Esta experiencia es la clave del rendimiento percibido del usuario. [Obtén más información](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "No parece que se bloqueen las transiciones de la página en la red" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "La latencia de entrada estimada es el tiempo aproximado, en milisegundos, que tarda tu app en responder a las acciones de los usuarios durante el periodo de 5 s más activo de carga de la página. Si la latencia es superior a 50 ms, es posible que los usuarios piensen que tu app es lenta. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "La latencia de entrada estimada es el tiempo aproximado, en milisegundos, que tarda tu app en responder a las acciones de los usuarios durante el periodo de 5 s más activo de carga de la página. Si la latencia es superior a 50 ms, es posible que los usuarios piensen que tu app es lenta. [Obtén más información](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Latencia de entrada estimada" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "El primer procesamiento de imagen con contenido indica el momento en el que se visualiza en la pantalla el primer texto o imagen. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "El primer procesamiento de imagen con contenido indica el momento en el que se visualiza en la pantalla el primer texto o imagen. [Obtén más información](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Primer procesamiento de imagen con contenido" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "La métrica primer estado inactivo de la CPU indica la primera vez que el subproceso principal de la página está lo suficientemente inactivo para recibir entradas del usuario. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "El primer tiempo inactivo de la CPU indica la primera vez que el hilo principal de la página está lo suficientemente inactivo para recibir acciones del usuario. [Obtén más información](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Primer tiempo inactivo de la CPU" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "La primera pintura significativa mide el momento en que se muestra el contenido principal de la página. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "La primera pintura significativa mide el momento en que se muestra el contenido principal de la página. [Obtén más información](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Primera pintura significativa" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "El tiempo de carga indica cuánto tarda una página en ser totalmente interactiva. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "El tiempo de carga indica cuánto tarda una página en ser totalmente interactiva. [Obtén más información](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tiempo de carga" @@ -813,7 +813,7 @@ "message": "Máximo retraso de primera entrada posible" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "El índice de velocidad indica la rapidez con la que se puede ver el contenido de una página. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "El índice de velocidad indica la rapidez con la que se puede ver el contenido de una página. [Obtén más información](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Índice de velocidad" @@ -837,7 +837,7 @@ "message": "Latencias de backend del servidor" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Un service worker permite que tu aplicación web sea confiable en condiciones de red impredecibles. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Usar un service worker permite que tu aplicación web sea confiable en condiciones de red impredecibles. [Obtén más información](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` no responde con un código de estado HTTP 200 cuando no hay conexión" @@ -846,7 +846,7 @@ "message": "`start_url` responde con un código de estado HTTP 200 cuando no hay conexión" }, "lighthouse-core/audits/offline-start-url.js | warningCantStart": { - "message": "Lighthouse no pudo leer el atributo `start_url` del manifiesto. Como resultado, se consideró que el atributo `start_url` fuera la URL del documento. Mensaje de error: \"{manifestWarning}\"." + "message": "Lighthouse no pudo leer el atributo `start_url` del manifiesto. Por lo tanto, se tomó como `start_url` la URL del documento. Mensaje de error: \"{manifestWarning}\"." }, "lighthouse-core/audits/performance-budget.js | columnOverBudget": { "message": "Superior a la estimación" @@ -861,7 +861,7 @@ "message": "Estimación de rendimiento" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Si ya configuraste el protocolo HTTPS, asegúrate de redireccionar todo el tráfico de HTTP a HTTPS para que todos los usuarios aprovechen las características de protección de la Web. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Si ya configuraste el protocolo HTTPS, asegúrate de redireccionar el tráfico de HTTP a HTTPS a fin de habilitar las características de protección de la Web para todos los usuarios. [Obtén más información](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "No redirecciona el tráfico HTTP a HTTPS" @@ -870,7 +870,7 @@ "message": "Redirecciona el tráfico HTTP a HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Las redirecciones provocan retrasos adicionales antes de que la página se cargue. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Las redirecciones provocan retrasos adicionales antes de que la página se cargue. [Obtén más información](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Evita que haya varias redirecciones de página" @@ -1035,28 +1035,28 @@ "message": "El tamaño de los elementos táctiles es el adecuado" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "El service worker es la tecnología que te permite usar las funciones de las apps web progresivas, como el modo sin conexión, agregarlas a la pantalla principal y las notificaciones push. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "El service worker es la tecnología que permite que tu app use varias funciones de las apps web progresivas, como el modo sin conexión, el agregado a la pantalla principal y las notificaciones push. [Obtén más información](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { - "message": "Un service worker controla esta página, pero no se encontró ningún atributo `start_url` porque el archivo de manifiesto no es un JSON válido" + "message": "Un service worker controla esta página, pero no se encontró ningún atributo `start_url` porque no se pudo analizar el archivo de manifiesto como un JSON válido" }, "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": { - "message": "Un service worker controla esta página, pero el atributo `start_url` ({startUrl}) está fuera del rango del service worker ({scopeUrl})" + "message": "Un service worker controla esta página, pero el atributo `start_url` ({startUrl}) está fuera del alcance del service worker ({scopeUrl})" }, "lighthouse-core/audits/service-worker.js | explanationNoManifest": { - "message": "Un service worker controla esta página, pero no se encontró el atributo `start_url` porque no se recuperó ningún manifiesto." + "message": "Un service worker controla esta página, pero no se encontró el atributo `start_url` porque no se obtuvo ningún manifiesto." }, "lighthouse-core/audits/service-worker.js | explanationOutOfScope": { - "message": "Este origen tiene al menos un service worker, pero la página ({pageUrl}) no está dentro del rango." + "message": "Este origen tiene al menos un service worker, pero la página ({pageUrl}) no está dentro del alcance." }, "lighthouse-core/audits/service-worker.js | failureTitle": { "message": "No registra un service worker que controle la página y `start_url`" }, "lighthouse-core/audits/service-worker.js | title": { - "message": "Registra a un service worker que controle la página y `start_url`" + "message": "Registra un service worker que controle la página y `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Una pantalla de presentación personalizada asegura que la experiencia de los usuarios sea de calidad cuando ejecuten tu app desde sus pantallas principales. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "El uso de una pantalla de presentación con un tema asegura que los usuarios tengan una experiencia de calidad al ejecutar tu app desde sus pantallas principales. [Obtén más información](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "No se configuró para una pantalla de presentación personalizada" @@ -1065,13 +1065,13 @@ "message": "Se configuró para una pantalla de presentación personalizada" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "El color de la barra de direcciones del navegador puede adaptarse a tu sitio web. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Se puede aplicar un tema a la barra de direcciones del navegador para que combine con tu sitio web. [Obtén más información](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { - "message": "No establece el color de un tema para la barra de direcciones." + "message": "No establece un color de tema para la barra de direcciones." }, "lighthouse-core/audits/themed-omnibox.js | title": { - "message": "Establece el color de un tema para la barra de direcciones." + "message": "Establece un color de tema para la barra de direcciones." }, "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": { "message": "Tiempo de bloqueo del subproceso principal" @@ -1092,7 +1092,7 @@ "message": "Uso por parte de terceros" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "El tiempo hasta el primer byte indica el momento en el que el servidor envía una respuesta. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "El tiempo hasta el primer byte indica el momento en el que el servidor envía una respuesta. [Obtén más información](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "El documento raíz tardó {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tipo" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Te recomendamos que incorpores la API de Tiempos de usuario en tu app para calcular su rendimiento real durante las principales experiencias de usuario. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Te recomendamos que incorpores la API de Tiempos de usuario en tu app para calcular su rendimiento real durante las principales experiencias de usuario. [Obtén más información](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 tiempo de usuario}other{# tiempos de usuario}}" @@ -1125,7 +1125,7 @@ "message": "Se encontró un elemento <link> previo a la conexión para \"{securityOrigin}\", pero el navegador no lo usó. Comprueba que el atributo `crossorigin` se esté usando correctamente." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Te recomendamos agregar sugerencias de recursos `preconnect` o `dns-prefetch` para establecer conexiones tempranas con orígenes externos importantes. [Obtén más información](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Te recomendamos agregar sugerencias de recursos `preconnect` o `dns-prefetch` para establecer conexiones tempranas con orígenes externos importantes. [Obtén más información](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Establece conexión previamente con los orígenes necesarios" @@ -1134,13 +1134,13 @@ "message": "Se encontró un elemento <link> de precarga para \"{preloadURL}\", pero el navegador no lo usó. Comprueba que el atributo `crossorigin` se esté usando correctamente." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Te recomendamos usar `<link rel=preload>` para dar prioridad a la obtención de los recursos que, en este momento, se solicitan en una instancia posterior de la carga de la página. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Te recomendamos usar `<link rel=preload>` para dar prioridad a la obtención de los recursos que, en este momento, se solicitan en una instancia posterior de la carga de la página. [Obtén más información](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Carga previamente las solicitudes clave" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Agrega una etiqueta `<meta name=\"viewport\">` para optimizar la app para pantallas de dispositivos móviles. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Agrega una etiqueta `<meta name=\"viewport\">` para optimizar la app para pantallas de dispositivos móviles. [Obtén más información](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "No se encontró ninguna etiqueta `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Tiene una etiqueta `<meta name=\"viewport\">` con `width` o `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Tu app debe mostrar algún contenido cuando JavaScript esté inhabilitado, aunque solo sea un aviso para informar al usuario de que es necesario activar JavaScript para usar la app. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Tu app debe mostrar algún contenido cuando JavaScript está inhabilitado, aunque solo sea un aviso para informar al usuario que se necesita JavaScript para usar la app. [Obtén más información](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "El cuerpo de la página debe renderizar parte del contenido aunque sus secuencias de comandos no estén disponibles." @@ -1164,7 +1164,7 @@ "message": "Se incluye parte del contenido cuando no está disponible JavaScript" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Si estás creando una app web progresiva, puedes usar un service worker para que la app funcione sin conexión. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Si estás creando una app web progresiva, puedes usar un service worker para que la app funcione sin conexión. [Obtén más información](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "La página actual no responde con un código de estado HTTP 200 cuando no hay conexión" @@ -1275,7 +1275,7 @@ "message": "Estas comprobaciones se centran en diferentes aspectos de las apps web progresivas. [Obtén más información](https://developers.google.com/web/progressive-web-apps/checklist)." }, "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": { - "message": "Estas comprobaciones son necesarias según el modelo de referencia [Lista de tareas para AWP](https://developers.google.com/web/progressive-web-apps/checklist), pero Lighthouse no las verifica automáticamente. Es importante que las verifiques a mano (aunque no afectan a la puntuación)." + "message": "Estas comprobaciones son necesarias según el modelo de referencia [Lista de tareas para AWP](https://developers.google.com/web/progressive-web-apps/checklist), pero Lighthouse no las realiza automáticamente. Es importante que las verifiques a mano (aunque no afectan a la puntuación)." }, "lighthouse-core/config/default-config.js | pwaCategoryTitle": { "message": "App web progresiva"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es.json index aa0d90d..95c5f2c6 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es.json
@@ -30,10 +30,10 @@ "message": "Algunas funciones principales de ARIA deben contener funciones secundarias específicas para llevar a cabo las funciones de accesibilidad correspondientes. [Más información](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Faltan elementos con atributos `[role]` que requieren otros atributos `[role]` secundarios específicos." + "message": "A los elementos con un `[role]` ARIA que requieren que los elementos secundarios contengan un `[role]` específico les faltan algunos o todos los elementos secundarios necesarios." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Se han incluido los elementos con atributos `[role]` que requieren otros atributos `[role]` secundarios específicos" + "message": "Los elementos con un `[role]` ARIA que requieren que los elementos secundarios contengan un `[role]` específico tienen todos los elementos secundarios necesarios." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Algunas funciones secundarias de ARIA se deben incluir dentro de funciones principales concretas para poder llevar a cabo las funciones de accesibilidad correspondientes. [Más información](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "Los lectores de pantalla incluyen funciones para facilitar la navegación por las tablas. Asegurarse de que las celdas `<td>` que usan el atributo `[headers]` solo hacen referencia a otras celdas de la misma tabla mejora la experiencia de los usuarios de lectores de pantalla. [Más información](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Las celdas de los elementos `<table>` que usen el atributo `[headers]` hacen referencia a otras celdas de esa misma tabla." + "message": "Las celdas de los elementos `<table>` que usen el atributo `[headers]` hacen referencia a un elemento `id` que no se ha encontrado en la misma tabla." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Las celdas de un elemento `<table>` que usa el atributo `[headers]` hacen referencia únicamente a otras celdas de la misma tabla." + "message": "Las celdas de un elemento `<table>` que use el atributo `[headers]` hacen referencia a otras celdas de la misma tabla." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Los lectores de pantalla incluyen funciones para facilitar la navegación por las tablas. Si te aseguras de que los encabezados de las tablas siempre hagan referencia a un conjunto de celdas, puedes mejorar la experiencia de los usuarios de lectores de pantalla. [Más información](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "Los elementos `<video>` contienen un elemento `<track>` con el atributo `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Para que el aspecto en iOS sea perfecto cuando los usuarios añadan una aplicación web progresiva a la pantalla de inicio, define un `apple-touch-icon`. Debe apuntar a una imagen PNG cuadrada de 192 px (o 180 px) que sea opaca. [Más información](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Para que el aspecto en iOS sea perfecto cuando los usuarios añadan una aplicación web progresiva a la pantalla de inicio, define un `apple-touch-icon`. Debe apuntar a una imagen PNG cuadrada de 192 px (o 180 px) que sea opaca. [Más información](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "No proporciona un `apple-touch-icon` válido" @@ -342,7 +342,7 @@ "message": "Tiempo de CPU total" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JavaScript. Para ello, puedes utilizar cargas útiles de JavaScript más pequeñas. [Más información](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JavaScript. Para ello, puedes utilizar cargas útiles de JavaScript más pequeñas. [Más información](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reduce el tiempo de ejecución de JavaScript" @@ -351,25 +351,25 @@ "message": "Tiempo de ejecución de JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Los GIF de gran tamaño no son eficientes para mostrar contenido animado. Para usar menos bytes de la red, te recomendamos que utilices los formatos de vídeo MPEG4 o WebM para incluir animaciones y los formatos PNG o WebP para añadir imágenes estáticas en lugar del formato GIF. [Más información](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Los GIF de gran tamaño no son eficientes para mostrar contenido animado. Para usar menos bytes de la red, te recomendamos que utilices los formatos de vídeo MPEG4 o WebM para incluir animaciones y los formatos PNG o WebP para añadir imágenes estáticas en lugar del formato GIF. [Más información](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Usa formatos de vídeo para incluir contenido animado" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Te recomendamos que uses la carga diferida con imágenes ocultas y que no aparecen en pantalla una vez que todos los recursos críticos hayan terminado de cargarse para reducir el tiempo que pasa hasta que la página es interactiva. [Más información](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "Te recomendamos que uses la carga diferida con imágenes ocultas y que no aparecen en pantalla una vez que todos los recursos críticos hayan terminado de cargarse para reducir el tiempo que pasa hasta que la página es interactiva. [Más información](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Pospón la carga de imágenes que no aparecen en pantalla" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Hay recursos que bloquean el primer renderizado de la página. Te recomendamos que muestres los elementos de JavaScript y CSS críticos insertados y pospongas todos los que no sean esenciales. [Más información](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "Hay recursos que bloquean el primer renderizado de la página. Te recomendamos que muestres los elementos de JavaScript y CSS críticos insertados y pospongas todos los que no sean esenciales. [Más información](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Elimina los recursos que bloqueen el renderizado" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Si la carga útil de la red es muy grande, los usuarios consumen más datos móviles y las páginas tardan más en cargarse. [Más información](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "Si la carga útil de la red es muy grande, los usuarios consumen más datos móviles y las páginas tardan más en cargarse. [Más información](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Tamaño total: {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Evita cargas útiles de red de gran tamaño" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Si minificas los archivos CSS, se puede reducir el tamaño de la carga útil de la red. [Más información](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "Si minificas los archivos CSS, se puede reducir el tamaño de la carga útil de la red. [Más información](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minifica los archivos CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Si minificas los archivos de JavaScript, se puede reducir el tamaño de la carga útil y el tiempo de análisis de la secuencia de comandos. [Más información](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "Si minificas los archivos de JavaScript, se puede reducir el tamaño de la carga útil y el tiempo de análisis de la secuencia de comandos. [Más información](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minifica los recursos JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Elimina las reglas inactivas de las hojas de estilo y retrasa la carga de los archivos CSS que no se utilicen para el contenido de la mitad superior de la página. Así, se reducirán los bytes consumidos innecesariamente por la actividad de red. [Más información](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "Elimina las reglas inactivas de las hojas de estilo y retrasa la carga de los archivos CSS que no se utilicen para el contenido de la mitad superior de la página. Así, se reducirán los bytes consumidos innecesariamente por la actividad de red. [Más información](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Elimina archivos CSS sin usar" @@ -405,7 +405,7 @@ "message": "Quita los recursos JavaScript que no se usen" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Una duración en caché más larga puede aumentar el número de visitas repetidas a tu página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "Una duración en caché más larga puede aumentar el número de visitas repetidas a tu página. [Más información](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Se ha encontrado 1 recurso}other{Se han encontrado # recursos}}" @@ -417,31 +417,31 @@ "message": "Usa una política de caché eficaz en recursos estáticos" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Las imágenes optimizadas se cargan más rápido y consumen menos datos móviles. [Más información](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "Las imágenes optimizadas se cargan más rápido y consumen menos datos móviles. [Más información](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Codifica las imágenes de forma eficaz" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Muestra imágenes con un tamaño adecuado para ahorrar datos móviles y mejorar el tiempo de carga. [Más información](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "Muestra imágenes con un tamaño adecuado para ahorrar datos móviles y mejorar el tiempo de carga. [Más información](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Usa un tamaño adecuado para las imágenes" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Los recursos de texto se deberían publicar comprimidos (gzip, deflate o brotli) para minimizar el total de bytes de la red. [Más información](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "Los recursos de texto se deberían publicar comprimidos (gzip, deflate o brotli) para minimizar el total de bytes de la red. [Más información](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Habilita la compresión de texto" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Los formatos JPEG 2000, JPEG XR y WebP comprimen mejor las imágenes que los formatos PNG o JPEG, lo que hace que se descarguen más rápido y consuman menos datos. [Más información](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "Los formatos JPEG 2000, JPEG XR y WebP comprimen mejor las imágenes que los formatos PNG o JPEG, lo que hace que se descarguen más rápido y consuman menos datos. [Más información](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Publica imágenes con formatos de próxima generación" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Si el ancho del contenido de tu aplicación no coincide con el ancho del viewport, es posible que tu aplicación no esté optimizada para pantallas de dispositivos móviles. [Más información](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Si el ancho del contenido de tu aplicación no coincide con el ancho del viewport, es posible que tu aplicación no esté optimizada para pantallas de dispositivos móviles. [Más información](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "El tamaño del viewport es de {innerWidth} px y no coincide con el de la ventana, que es de {outerWidth} px." @@ -453,7 +453,7 @@ "message": "El contenido tiene el tamaño adecuado para el viewport" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Las cadenas de solicitud crítica que se muestran a continuación indican qué recursos son de alta prioridad. Te recomendamos que reduzcas la longitud de las cadenas, disminuyas el tamaño de los recursos o pospongas la descarga de recursos innecesarios para mejorar la carga de la página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "Las cadenas de solicitud crítica que se muestran a continuación indican qué recursos son de alta prioridad. Te recomendamos que reduzcas la longitud de las cadenas, disminuyas el tamaño de los recursos o pospongas la descarga de recursos innecesarios para mejorar la carga de la página. [Más información](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Se ha encontrado 1 cadena}other{Se han encontrado # cadenas}}" @@ -675,7 +675,7 @@ "message": "No se ha registrado en la consola ningún error del navegador" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Utiliza la característica de CSS \"font-display\" para que los usuarios vean el texto mientras se carga la fuente web. [Más información](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "Utiliza la característica de CSS \"font-display\" para que los usuarios vean el texto mientras se carga la fuente web. [Más información](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Asegúrate de que el texto permanece visible mientras se carga la fuente web" @@ -705,7 +705,7 @@ "message": "La información del tamaño de la imagen no es válida ({url})" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Los navegadores pueden preguntar a los usuarios si quieren añadir tu aplicación a la pantalla de inicio, lo que genera más interacción. [Más información](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Los navegadores pueden preguntar a los usuarios si quieren añadir tu aplicación a la pantalla de inicio, lo que genera más interacción. [Más información](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "El archivo de manifiesto de la aplicación web no cumple los requisitos de instalación" @@ -729,7 +729,7 @@ "message": "Usa HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Si las páginas se cargan rápidamente en las redes móviles, se asegurará una buena experiencia de usuario. [Más información](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "Si las páginas se cargan rápidamente en las redes móviles, se asegurará una buena experiencia de usuario. [Más información](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Página interactiva en {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Categoría" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JavaScript. Para ello, puedes utilizar cargas útiles de JS más pequeñas." + "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JavaScript. Para ello, puedes utilizar cargas útiles de JavaScript más pequeñas. [Más información](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimiza el trabajo del hilo principal" @@ -759,49 +759,49 @@ "message": "Minimiza el trabajo del hilo principal" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Para llegar al mayor número de usuarios, los sitios web deben funcionar en los navegadores principales. [Más información](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Para llegar al mayor número de usuarios, los sitios web deben funcionar en los navegadores principales. [Más información](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "El sitio web funciona en diferentes navegadores" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Asegúrate de que la URL de cada página sea un enlace profundo y único para poder compartir las páginas fácilmente en las redes sociales. [Más información](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Asegúrate de que la URL de cada página sea un enlace profundo y único para poder compartir las páginas fácilmente en las redes sociales. [Más información](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Cada página tiene una URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Las transiciones deberían ser rápidas al tocar en diferentes partes de la aplicación, incluso si la red es lenta. Es esencial para que se perciba que el rendimiento es alto. [Más información](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Las transiciones deberían ser rápidas al tocar en diferentes partes de la aplicación, incluso si la red es lenta. Esta experiencia es fundamental para la percepción del usuario sobre el funcionamiento de la aplicación. [Más información](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "No parece que se bloqueen las transiciones de la página en la red" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "La latencia de entrada estimada es el tiempo, en milisegundos, que tarda tu aplicación en responder a las acciones de los usuarios durante el periodo de 5 s más activo de carga de la página. Si tu latencia es superior a 50 ms, es posible que los usuarios perciban cierto retardo en tu aplicación. [Más información](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "La latencia de entrada estimada es el tiempo, en milisegundos, que tarda tu aplicación en responder a las acciones de los usuarios durante el periodo de 5 s más activo de carga de la página. Si tu latencia es superior a 50 ms, es posible que los usuarios perciban cierto retardo en tu aplicación. [Más información](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Latencia de entrada estimada" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "El primer renderizado con contenido indica el momento en el que se renderiza el primer texto o la primera imagen. [Más información](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "El primer renderizado con contenido indica el momento en el que se renderiza el primer texto o la primera imagen. [Más información](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Primer renderizado con contenido" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "El primer tiempo inactivo de la CPU indica la primera vez que el hilo principal de la página está lo suficientemente inactivo para recibir acciones del usuario. [Más información](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "El primer tiempo inactivo de la CPU indica la primera vez que el hilo principal de la página está lo suficientemente inactivo para recibir acciones del usuario. [Más información](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Primer tiempo inactivo de la CPU" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "El primer renderizado significativo mide el momento en que se muestra el contenido principal de la página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "El primer renderizado significativo mide el momento en que se muestra el contenido principal de la página. [Más información](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Primer renderizado significativo" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "El tiempo hasta que está interactiva es el tiempo que tarda una página en ser totalmente interactiva. [Más información](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "El tiempo hasta que está interactiva es el tiempo que tarda una página en ser totalmente interactiva. [Más información](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tiempo hasta que está interactiva" @@ -813,7 +813,7 @@ "message": "Latencia potencial máxima de la primera interacción" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "El índice de velocidad indica la rapidez con la que se puede ver el contenido de una página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "El índice de velocidad indica la rapidez con la que se puede ver el contenido de una página. [Más información](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Índice de velocidad" @@ -837,7 +837,7 @@ "message": "Latencias de backend del servidor" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Un service worker hace que tu aplicación web sea más fiable si la conexión de red es inestable. [Más información](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Un service worker hace que tu aplicación web sea más fiable si la conexión de red es inestable. [Más información](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` no responde con un código de estado HTTP 200 cuando no hay conexión" @@ -861,7 +861,7 @@ "message": "Límites de rendimiento" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Si ya has configurado HTTPS, asegúrate de redireccionar todo el tráfico HTTP a HTTPS para habilitar funciones de seguridad web para todos los usuarios. [Más información](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Si ya has configurado HTTPS, asegúrate de redirigir todo el tráfico HTTP a HTTPS para habilitar funciones de seguridad web para todos los usuarios. [Más información](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "No redirige el tráfico HTTP a HTTPS" @@ -870,7 +870,7 @@ "message": "Redirige el tráfico HTTP a HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Las redirecciones provocan retrasos adicionales antes de que la página se pueda cargar. [Más información](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "Las redirecciones provocan retrasos adicionales antes de que la página se pueda cargar. [Más información](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "Evita que haya varias redirecciones de página" @@ -1035,7 +1035,7 @@ "message": "El tamaño de los elementos táctiles es el adecuado" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "El service worker es la tecnología que te permite usar las funciones de las aplicaciones web progresivas, como el modo sin conexión, poder añadirlas a la pantalla de inicio y las notificaciones push. [Más información](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "El service worker es la tecnología que te permite usar las funciones de las aplicaciones web progresivas, como el modo sin conexión, poder añadirlas a la pantalla de inicio y las notificaciones push. [Más información](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Un service worker controla esta página, pero no se ha encontrado ninguna propiedad `start_url` porque el archivo de manifiesto no es un JSON válido" @@ -1056,7 +1056,7 @@ "message": "Hay un service worker que controla la página y la propiedad `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Una pantalla de inicio personalizada asegura que la experiencia de los usuarios sea de calidad cuando ejecuten tu aplicación desde sus pantallas de inicio. [Más información](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Una pantalla de inicio personalizada asegura que la experiencia de los usuarios sea de calidad cuando ejecuten tu aplicación desde sus pantallas de inicio. [Más información](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "No se ha configurado para una pantalla de inicio personalizada" @@ -1065,7 +1065,7 @@ "message": "Se ha configurado para una pantalla de inicio personalizada" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "El color de la barra de direcciones del navegador puede adaptarse a tu sitio web. [Más información](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "El color de la barra de direcciones del navegador puede adaptarse a tu sitio web. [Más información](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "No establece un color de tema personalizado en la barra de direcciones." @@ -1092,7 +1092,7 @@ "message": "Uso de código de terceros" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "El tiempo hasta el primer byte indica el momento en el que el servidor envía una respuesta. [Más información](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "El tiempo hasta el primer byte indica el momento en el que el servidor envía una respuesta. [Más información](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "El documento raíz ha tardado {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tipo" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Te recomendamos que uses la API Tiempos de usuario en tu aplicación para calcular su rendimiento real durante las principales experiencias de usuario. [Más información](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "Te recomendamos que uses la API Tiempos de usuario en tu aplicación para calcular su rendimiento real durante las principales experiencias de usuario. [Más información](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 tiempo de usuario}other{# tiempos de usuario}}" @@ -1125,7 +1125,7 @@ "message": "Se ha encontrado un elemento <link> previo a la conexión para \"{securityOrigin}\", pero el navegador no lo ha usado. Comprueba que el atributo `crossorigin` se esté usando correctamente." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Puedes añadir sugerencias de recursos `preconnect` o `dns-prefetch` para establecer conexiones previas con orígenes importantes de terceros. [Más información](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Puedes añadir sugerencias de recursos `preconnect` o `dns-prefetch` para establecer conexiones previas con orígenes importantes de terceros. [Más información](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Establece conexión previamente con los orígenes necesarios" @@ -1134,13 +1134,13 @@ "message": "Se ha encontrado un elemento <link> de precarga para \"{preloadURL}\", pero el navegador no lo ha utilizado. Comprueba que el atributo `crossorigin` se esté usando correctamente." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Te recomendamos usar `<link rel=preload>` para dar prioridad a los recursos que se solicitan más tarde al cargar la página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "Te recomendamos usar `<link rel=preload>` para dar prioridad a los recursos que se solicitan más tarde al cargar la página. [Más información](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Carga previamente las solicitudes clave" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Añade una etiqueta `<meta name=\"viewport\">` para que tu aplicación se vea mejor en las pantallas de los dispositivos móviles. [Más información](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Añade una etiqueta `<meta name=\"viewport\">` para que tu aplicación se vea mejor en las pantallas de los dispositivos móviles. [Más información](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "No se ha encontrado ninguna etiqueta `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Contiene una etiqueta `<meta name=\"viewport\">` con `width` o `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Tu aplicación debería mostrar algún contenido cuando JavaScript esté inhabilitado, aunque solo sea un aviso para informar al usuario de que es necesario activar JavaScript para usar la aplicación. [Más información](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "Tu aplicación debería mostrar algún contenido cuando JavaScript esté inhabilitado, aunque solo sea un aviso para informar al usuario de que es necesario activar JavaScript para usar la aplicación. [Más información](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "El cuerpo de la página debería renderizar algo de contenido aunque sus secuencias de comandos no estén disponibles." @@ -1164,7 +1164,7 @@ "message": "Muestra algo de contenido cuando JavaScript está inhabilitado" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Si estás creando una aplicación web progresiva, puedes usar un service worker para que tu aplicación funcione sin conexión. [Más información](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Si estás creando una aplicación web progresiva, puedes usar un service worker para que tu aplicación funcione sin conexión. [Más información](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "La página web no responde con un código de estado HTTP 200 cuando no hay conexión"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fi.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fi.json index 69cdc76..581cda1 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fi.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fi.json
@@ -30,10 +30,10 @@ "message": "Voidakseen suorittaa esteettömyyteen liittyvät toiminnot joidenkin alatason ARIA-roolien on kuuluttava tiettyihin ylätason rooleihin. [Lue lisää](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Sellaisia `[role]`:n sisältäviä elementtejä puuttuu, jotka edellyttävät tiettyjä alatason `[role]`-elementtejä" + "message": "ARIAn `[role]` sisältämät elementit edellyttävät alatasoilta tiettyä elementtiä (`[role]`), mutta se puuttuu osalta tai kaikilta alatasoilta." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Käytössä on `[role]`:n sisältäviä elementtejä, jotka edellyttävät tiettyjä alatason `[role]`-elementtejä" + "message": "ARIAn `[role]` sisältämät elementit edellyttävät alatasoilta tiettyä elementtiä (`[role]`), joka on kaikilla alatasoilla." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Voidakseen suorittaa esteettömyyteen liittyvät toiminnot joidenkin alatason ARIA-roolien on kuuluttava tiettyihin ylätason rooleihin. [Lue lisää](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Näytönlukuohjelmissa on ominaisuuksia, jotka tekevät taulukoissa siirtymisestä helpompaa. Voit parantaa näytönlukuohjelman käyttäjien kokemusta varmistamalla, että `[headers]`-määritettä käyttävät `<td>`-solut viittaavat vain toisiin soluihin samassa taulukossa. [Lue lisää](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`<table>`-elementissä on soluja, joiden `[headers]`-määritteet viittaavat saman taulukon toisiin soluihin" + "message": "`[headers]`-määritettä käyttävät `<table>`-elementin solut viittaavat elementtiin (`id`), joka ei ole samassa taulukossa." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "`<table>`-määritettä käyttävät `[headers]`-elementin solut viittaavat vain toisiin soluihin samassa taulukossa" + "message": "`[headers]`-määritettä käyttävät `<table>`-elementin solut viittaavat soluihin samassa taulukossa" }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Näytönlukuohjelmissa on ominaisuuksia, jotka tekevät taulukoissa siirtymisestä helpompaa. Voit parantaa näytönlukuohjelmaa käyttävien kokemusta varmistamalla, että taulukoiden otsikot viittaavat aina johonkin solujoukkoon. [Lue lisää](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "`<video>`-elementit sisältävät `<track>`-elementin, jossa on `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Määritä `apple-touch-icon`, jotta iOS-näkyvyys on paras mahdollinen, kun käyttäjä lisää progressiivisen web-sovelluksen aloitusnäytölle. Sen on viitattava läpinäkymättömään neliön muotoiseen (192 px tai 180 px) PNG-tiedostoon. [Lue lisää](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Määritä `apple-touch-icon`, jotta iOS-näkyvyys on paras mahdollinen, kun käyttäjä lisää progressiivisen web-sovelluksen aloitusnäytölle. Sen on viitattava läpinäkymättömään neliön muotoiseen (192 px tai 180 px) PNG-tiedostoon. [Lue lisää](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Ei sisällä kelvollista `apple-touch-icon`-arvoa" @@ -342,7 +342,7 @@ "message": "Prosessoriaika yhteensä" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Suosittelemme lyhentämään JS:n jäsentämiseen, kääntämiseen ja suorittamiseen kuluvaa aikaa. Pienempien JS-resurssien jakaminen voi helpottaa tätä. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Suosittelemme lyhentämään JS:n jäsentämiseen, kääntämiseen ja suorittamiseen kuluvaa aikaa. Pienempien JS-resurssien jakaminen voi helpottaa tätä. [Lue lisää](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Vähennä JavaScriptin suorittamiseen kuluvaa aikaa" @@ -351,25 +351,25 @@ "message": "JavaScriptin suorittamiseen kuluva aika" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Suuret GIFit eivät ole tehokas tapa jaella animoitua sisältöä. Voit pienentää ladattavien tavujen määrää jakelemalla animaatioita MPEG4- tai WebM-muodossa ja staattisia kuvia PNG- tai WebP-muodossa. [Lue lisää](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Suuret GIFit eivät ole tehokas tapa jaella animoitua sisältöä. Voit pienentää ladattavien tavujen määrää jakelemalla animaatioita MPEG4- tai WebM-muodossa ja staattisia kuvia PNG- tai WebP-muodossa. [Lue lisää](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Jakele animaatiosisältöä videomuodossa" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Suosittelemme lykkäämään poissa näkyvistä olevien ja piilotettujen kuvien lataamista, kunnes kaikki kriittiset resurssit on ladattu. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Suosittelemme lykkäämään poissa näkyvistä olevien ja piilotettujen kuvien lataamista, kunnes kaikki kriittiset resurssit on ladattu. [Lue lisää](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Lykkää kuvien lataamista, jos ne eivät ole näkyvissä" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resurssit estävät sivun ensimmäisen renderöinnin. Suosittelemme jakelemaan kriittiset JS- ja CSS-osat sivuun upotettuina ja lykkäämään kaikkien ei-kriittisten JS- tai tyyliosien lataamista. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resurssit estävät sivun ensimmäisen renderöinnin. Suosittelemme jakelemaan kriittiset JS- ja CSS-osat sivuun upotettuina ja lykkäämään kaikkien ei-kriittisten JS- tai tyyliosien lataamista. [Lue lisää](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Poista renderöinnin estävät resurssit" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Suuret verkkoresurssit aiheuttavat kuluja käyttäjille ja liittyvät vahvasti pitkiin latausaikoihin. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Suuret verkkoresurssit aiheuttavat kuluja käyttäjille ja liittyvät vahvasti pitkiin latausaikoihin. [Lue lisää](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Yhteenlaskettu koko oli {totalBytes, number, bytes} kt" @@ -381,19 +381,19 @@ "message": "Välttää valtavia verkkoresursseja" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "CSS-tiedostojen pienentäminen voi auttaa pienentämään verkkoresurssien kokoa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "CSS-tiedostojen pienentäminen voi auttaa pienentämään verkkoresurssien kokoa. [Lue lisää](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Pienennä CSS-tiedostoja" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "JavaScript-tiedostojen pienentäminen voi auttaa pienentämään resurssien kokoa ja lyhentämään skriptin jäsentämiseen kuluvaa aikaa. [Lue lisää](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "JavaScript-tiedostojen pienentäminen voi auttaa pienentämään resurssien kokoa ja lyhentämään skriptin jäsentämiseen kuluvaa aikaa. [Lue lisää](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Pienennä JavaScript-tiedostoja" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Poista käyttämättömät säännöt tyylisivuilta ja lykkää sellaisen CSS:n lataamista, jota ei käytetä sivun yläosan sisältöön, niin vähennät verkkotoiminnan turhaa tavujen kulutusta. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Poista käyttämättömät säännöt tyylisivuilta ja lykkää sellaisen CSS:n lataamista, jota ei käytetä sivun yläosan sisältöön, niin vähennät verkkotoiminnan turhaa tavujen kulutusta. [Lue lisää](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Poista käyttämätön CSS" @@ -405,7 +405,7 @@ "message": "Poista käyttämätön JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Pitkä välimuistin käyttöikä voi nopeuttaa sivun lataamista, kun käyttäjä avaa sen uudelleen. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Pitkä välimuistin käyttöikä voi nopeuttaa sivun lataamista, kun käyttäjä avaa sen uudelleen. [Lue lisää](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 resurssi löydetty}other{# resurssia löydetty}}" @@ -417,31 +417,31 @@ "message": "Käyttää tehokasta välimuistikäytäntöä staattisten resurssien käsittelyyn" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimoidut kuvat latautuvat nopeammin ja kuluttavat vähemmän mobiilidataa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimoidut kuvat latautuvat nopeammin ja kuluttavat vähemmän mobiilidataa. [Lue lisää](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Koodaa kuvat tehokkaasti" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Näytä sopivan kokoisia kuvia, jotta voit vähentää mobiilidatan kulutusta ja lyhentää latausaikoja. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Näytä sopivan kokoisia kuvia, jotta voit vähentää mobiilidatan kulutusta ja lyhentää latausaikoja. [Lue lisää](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Määritä kuvien koko oikein" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Tekstipohjaiset resurssit on hyvä pakata ennen jakelua (gzip, deflate tai brotli), jotta ladattavien tavujen määrä voidaan minimoida. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Tekstipohjaiset resurssit on hyvä pakata ennen jakelua (gzip, deflate tai brotli), jotta ladattavien tavujen määrä voidaan minimoida. [Lue lisää](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Ota tekstin pakkaus käyttöön" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Tietyt kuvamuodot, kuten JPEG 2000, JPEG XR ja WebP, pakkaavat sisältöä usein paremmin kuin PNG tai JPEG, minkä vuoksi ne auttavat nopeuttamaan latauksia ja vähentämään datan kulutusta. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Tietyt kuvamuodot, kuten JPEG 2000, JPEG XR ja WebP, pakkaavat sisältöä usein paremmin kuin PNG tai JPEG, minkä vuoksi ne auttavat nopeuttamaan latauksia ja vähentämään datan kulutusta. [Lue lisää](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Jakele kuvat seuraavan sukupolven muodoissa" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Jos sovelluksesi leveys ei vastaa näkymän leveyttä, sovelluksesi ei välttämättä ole mobiilinäytöille optimoitu. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Jos sovelluksesi leveys ei vastaa näkymän leveyttä, sovelluksesi ei välttämättä ole mobiilinäytöille optimoitu. [Lue lisää](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Näkymän koko, {innerWidth} px, ei vastaa ikkunan kokoa, {outerWidth} px." @@ -453,7 +453,7 @@ "message": "Sisällön koko on näkymän mukainen" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Alla olevat kriittiset pyyntöketjut kertovat, minkä resurssien lataaminen priorisoidaan. Suosittelemme parantamaan sivun latausaikaa lyhentämällä ketjuja, pienentämällä resurssien latauskokoa ja lykkäämällä tarpeettomien resurssien lataamista. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Alla olevat kriittiset pyyntöketjut kertovat, minkä resurssien lataaminen priorisoidaan. Suosittelemme parantamaan sivun latausaikaa lyhentämällä ketjuja, pienentämällä resurssien latauskokoa ja lykkäämällä tarpeettomien resurssien lataamista. [Lue lisää](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 ketju löydetty}other{# ketjua löydetty}}" @@ -675,7 +675,7 @@ "message": "Konsoliin ei kirjattu selainvirheitä" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Käytä CSS:n kirjasimennäyttöominaisuutta, jotta voit varmistaa, että käyttäjä näkee tekstin myös verkkofonttien lataamisen aikana. [Lue lisää](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Käytä CSS:n kirjasimennäyttöominaisuutta, jotta voit varmistaa, että käyttäjä näkee tekstin myös verkkofonttien lataamisen aikana. [Lue lisää](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Varmista, että teksti pysyy näkyvissä verkkofontin lataamisen aikana" @@ -705,7 +705,7 @@ "message": "Virheelliset kuvan kokotiedot: {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Selain voi aktiivisesti suositella käyttäjille sovelluksesi lisäämistä aloitusnäytölle, mikä voi edistää aktivoitumista. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Selain voi aktiivisesti suositella käyttäjille sovelluksesi lisäämistä aloitusnäytölle, mikä voi edistää aktivoitumista. [Lue lisää](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Verkkosovelluksen luettelo ei vastaa asennettavuusvaatimuksia" @@ -729,7 +729,7 @@ "message": "Käyttää HTTPS:ää" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Nopea sivun lataus mobiiliverkon kautta varmistaa hyvän mobiilikäyttökokemuksen. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Nopea sivun lataus mobiiliverkon kautta varmistaa hyvän mobiilikäyttökokemuksen. [Lue lisää](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktiivinen: {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Luokka" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Suosittelemme vähentämään JS:n jäsentämiseen, kääntämiseen ja suorittamiseen kuluvaa aikaa. Pienempien JS-resurssien jakaminen voi helpottaa tätä." + "message": "Suosittelemme lyhentämään JS:n jäsentämiseen, kääntämiseen ja suorittamiseen kuluvaa aikaa. Pienempien JS-resurssien jakeleminen voi auttaa. [Lue lisää](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimoi pääsäikeen työkuorma" @@ -759,49 +759,49 @@ "message": "Minimoi pääsäikeen työkuorman" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Tavoittaakseen maksimimäärän käyttäjiä sivustojen tulee toimia kaikilla tärkeillä selaimilla. [Lue lisää](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Tavoittaakseen maksimimäärän käyttäjiä sivustojen tulee toimia kaikilla tärkeillä selaimilla. [Lue lisää](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Sivusto toimii eri selaimilla" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Varmista, että yksittäisiin sivuihin voi täsmälinkittää URL-osoitteella ja että URL-osoitteet ovat ainutlaatuisia, jotta jaettavuus somessa paranee. [Lue lisää](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Varmista, että yksittäisiin sivuihin voi täsmälinkittää URL-osoitteella ja että URL-osoitteet ovat ainutlaatuisia, jotta jaettavuus somessa paranee. [Lue lisää](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Joka sivulla on URL-osoite" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Napautuksilla navigoitaessa siirtymien tulee olla saumattomia, vaikka verkko olisi hidas, jotta syntyy vaikutelma toimivuudesta. [Lue lisää](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Napautuksilla navigoitaessa siirtymien tulee olla saumattomia, vaikka verkko olisi hidas. Näin syntyy vaikutelma toimivuudesta. [Lue lisää](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Verkko ei estä sivujen välisiä siirtymiä" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Arvioitu syöttöviive on millisekunteina annettu arvio siitä, kuinka kauan sovelluksellasi kestää vastata käyttäjän syötteeseen sivun lataamisen kiireisimmän, viiden sekunnin mittaisen jakson aikana. Jos viive on yli 50 ms, sovelluksesi voi toimia käyttäjien mielestä hitaasti. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Arvioitu syöttöviive on millisekunteina annettu arvio siitä, kuinka kauan sovelluksellasi kestää vastata käyttäjän syötteeseen sivun lataamisen kiireisimmän, viiden sekunnin mittaisen jakson aikana. Jos viive on yli 50 ms, sovelluksesi voi toimia käyttäjien mielestä hitaasti. [Lue lisää](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Arvioitu syöttöviive" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Ensimmäinen sisällön renderöinti kertoo, milloin ensimmäinen tekstikohde tai kuva renderöidään. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Ensimmäinen sisällön renderöinti kertoo, milloin ensimmäinen tekstikohde tai kuva renderöidään. [Lue lisää](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Ensimmäinen sisällön renderöinti" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "CPU:n ensimmäinen toimettomuusjakso kertoo, milloin sivun pääsäikeen tilanne sallii syötteiden käsittelyn. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "CPU:n ensimmäinen toimettomuusjakso kertoo, milloin sivun pääsäikeen tilanne sallii syötteiden käsittelyn. [Lue lisää](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "CPU:n ensimmäinen toimettomuusjakso" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Ensimmäinen merkityksellinen renderöinti kertoo, milloin sivun ensisijainen sisältö tulee näkyviin. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Ensimmäinen merkityksellinen renderöinti kertoo, milloin sivun ensisijainen sisältö tulee näkyviin. [Lue lisää](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Ensimmäinen merkityksellinen renderöinti" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Interaktiivisuutta edeltävä aika tarkoittaa aikaa, joka sivulla kestää siihen, että se on täysin interaktiivinen. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Interaktiivisuutta edeltävä aika tarkoittaa aikaa, joka sivulla kestää siihen, että se on täysin interaktiivinen. [Lue lisää](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Interaktiivisuutta edeltävä aika" @@ -813,7 +813,7 @@ "message": "Suurin mahdollinen ensimmäisen toiminnon viive" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Nopeusindeksi kertoo, kuinka nopeasti sivun sisältö tulee näkyviin. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Nopeusindeksi kertoo, kuinka nopeasti sivun sisältö tulee näkyviin. [Lue lisää](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Nopeusindeksi" @@ -837,7 +837,7 @@ "message": "Palvelimen taustaviiveet" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Service worker auttaa tekemään verkkosovelluksesta luotettavan, jos verkko-olosuhteet ovat vaikeita ennustaa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Service worker auttaa tekemään verkkosovelluksesta luotettavan, jos verkko-olosuhteet ovat vaikeita ennustaa. [Lue lisää](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` ei vastaa 200-viestillä offline-tilassa" @@ -861,7 +861,7 @@ "message": "Tehokkuusbudjetti" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Jos määritit jo HTTPS:n, varmista että ohjaat kaiken HTTP-liikenteen HTTPS:ään, jotta kaikki käyttäjät saavat turvalliset verkko-ominaisuudet. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Jos määritit jo HTTPS:n, varmista että ohjaat kaiken HTTP-liikenteen HTTPS:ään, jotta kaikki käyttäjät saavat turvalliset verkko-ominaisuudet. [Lue lisää](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Ei uudelleenohjaa HTTP-liikennettä HTTPS:ään" @@ -870,7 +870,7 @@ "message": "Uudelleenohjaa HTTP-liikennettä HTTPS:ään" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Uudelleenohjaukset viivästyttävät sivun lataamista. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Uudelleenohjaukset viivästyttävät sivun lataamista. [Lue lisää](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Vältä useita uudelleenohjauksia" @@ -1035,7 +1035,7 @@ "message": "Napautuskohteet ovat sopivan kokoisia" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service worker ‑teknologia tuo sovelluksen käyttöön monia progressiivisen web-sovelluksen ominaisuuksia, kuten offline-käytön, aloitusnäytölle lisäämisen ja ilmoitukset. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Service worker ‑teknologia tuo sovelluksen käyttöön monia progressiivisen web-sovelluksen ominaisuuksia, kuten offline-käytön, aloitusnäytölle lisäämisen ja ilmoitukset. [Lue lisää](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Service worker hallitsee sivua, mutta osoitetta (`start_url`) ei löytynyt, koska luetteloa ei voitu jäsentää kelvollisena JSONina." @@ -1056,7 +1056,7 @@ "message": "Rekisteröi service workerin, jonka hallinnassa sivu ja `start_url` ovat" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Teeman sisältävä aloitussivu varmistaa laadukkaan kokemuksen, kun käyttäjä avaa sovelluksen aloitusnäytöltään. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Teeman sisältävä aloitussivu varmistaa laadukkaan kokemuksen, kun käyttäjä avaa sovelluksen aloitusnäytöltään. [Lue lisää](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Yksilöityä aloitusnäyttöä ei ole määritetty" @@ -1065,7 +1065,7 @@ "message": "Yksilöity aloitusnäyttö määritetty" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Voit muokata selaimen osoitepalkkia sivustosi teeman mukaiseksi. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Voit muokata selaimen osoitepalkkia sivustosi teeman mukaiseksi. [Lue lisää](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Ei aseta osoitepalkin teemaväriä" @@ -1092,7 +1092,7 @@ "message": "Kolmannen osapuolen käyttö" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Ensimmäistä tavua edeltävä aika kertoo, kuinka kauan kestää, ennen kuin palvelimesi lähettää vastauksen. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Ensimmäistä tavua edeltävä aika kertoo, kuinka kauan kestää, ennen kuin palvelimesi lähettää vastauksen. [Lue lisää](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Päädokumentti käytti {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tyyppi" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Suosittelemme käyttämään sovelluksen kehittämisessä User Timing ‑sovellusliittymää mittaamaan todellista toimivuutta tärkeiden käyttökokemusten aikana. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Suosittelemme käyttämään sovelluksen kehittämisessä User Timing ‑sovellusliittymää mittaamaan todellista toimivuutta tärkeiden käyttökokemusten aikana. [Lue lisää](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 käyttäjän ajankäyttömerkintä}other{# käyttäjän ajankäyttömerkintää}}" @@ -1125,7 +1125,7 @@ "message": "Yhteyttä edeltävä linkki (<link>) löytyi osoitteelle {securityOrigin}, mutta selain ei käyttänyt sitä. Varmista, että käytät eri lähteiden `crossorigin`-määritettä oikein." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Suosittelemme lisäämään sivulle `preconnect`- tai `dns-prefetch` ‑resurssivihjeitä, joiden avulla yhteydet tärkeisiin kolmannen osapuolen lähteisiin voidaan muodostaa ajoissa. [Lue lisää](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Suosittelemme lisäämään sivulle `preconnect`- tai `dns-prefetch` ‑resurssivihjeitä, joiden avulla yhteydet tärkeisiin kolmannen osapuolen lähteisiin voidaan muodostaa ajoissa. [Lue lisää](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Muodosta yhteydet pakollisiin kohteisiin etukäteen" @@ -1134,13 +1134,13 @@ "message": "Esilatauslinkki <link> löytyi osoitteelle {preloadURL}, mutta selain ei käyttänyt sitä. Varmista, että käytät eri lähteiden `crossorigin`-määritettä oikein." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Suosittelemme käyttämään `<link rel=preload>`-tagia, jotta voit priorisoida resursseja, joiden noutamista pyydetään sivun lataamisen myöhemmässä vaiheessa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Suosittelemme käyttämään `<link rel=preload>`-tagia, jotta voit priorisoida resursseja, joiden noutamista pyydetään sivun lataamisen myöhemmässä vaiheessa. [Lue lisää](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Lataa tärkeät pyynnöt etukäteen" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Lisää `<meta name=\"viewport\">`-tagi optimoidaksesi sovelluksen mobiilinäytöille. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Lisää `<meta name=\"viewport\">`-tagi optimoidaksesi sovelluksen mobiilinäytöille. [Lue lisää](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "`<meta name=\"viewport\">`-tagia ei löytynyt" @@ -1152,7 +1152,7 @@ "message": "`<meta name=\"viewport\">` ‑tagi, jossa `width` tai `initial-scale`, löytyy" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Sovelluksen tulee näyttää jotakin sisältöä, vaikka JavaScript ei ole toiminnassa. Näytä käyttäjälle vähintään varoitus, että JavaScript on pakollinen sovelluksen käyttöä varten. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Sovelluksen tulee näyttää jotakin sisältöä, vaikka JavaScript ei ole toiminnassa. Näytä käyttäjälle vähintään varoitus, että JavaScript on pakollinen sovelluksen käyttöä varten. [Lue lisää](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Sivun runko-osan pitäisi renderöidä sisältöä, vaikka sen skriptit eivät ole saatavilla." @@ -1164,7 +1164,7 @@ "message": "Palauttaa sisältöä, vaikka JavaScript ei ole käytettävissä" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Jos kehität progressiivista web-sovellusta, harkitse service workerin käyttöä tukemaan sovelluksen toimintaa offline-tilassa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Jos kehität progressiivista web-sovellusta, harkitse service workerin käyttöä tukemaan sovelluksen toimintaa offline-tilassa. [Lue lisää](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Nykyinen sivu ei vastaa 200-viestillä offline-tilassa"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fil.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fil.json index cd2f16a..bccb545 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fil.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fil.json
@@ -30,10 +30,10 @@ "message": "Dapat maglaman ang ilang parent role ng ARIA ng mga partikular na child role para maisagawa nito ang mga nilalayong function sa pagiging accessible. [Matuto pa](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Nawawala ang mga element na may `[role]` na nangangailangan ng mga partikular na child `[role]`." + "message": "Ang mga element na may ARIA na `[role]` na nag-aatas sa mga child na maglaman ng partikular na `[role]` ay kulang ng ilan sa o lahat ng mga kinakailangang child na iyon." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "May mga element na may `[role]` na nangangailangan ng mga partikular na child `[role]`" + "message": "Ang mga element na may ARIA na `[role]` na nag-aatas sa mga child na maglaman ng partikular na `[role]` ay mayroon ng lahat ng kinakailangang child." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Ang ilang child role ng ARIA ay laman dapat ng mga partikular na parent role para maayos na maisagawa ang mga nilalayong function sa pagiging accessible. [Matuto pa](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "May mga feature ang mga screen reader na mas nagpapadali ng pag-navigate sa mga talahanayan. Kapag tiniyak na ang mga cell na `<td>` na gumagamit sa attribute na `[headers]` ay tumutukoy lang sa iba pang cell sa talahanayang ding iyon, puwedeng mapaganda ang karanasan para sa mga user ng screen reader. [Matuto pa](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Tumutukoy sa iba pang cell sa kaparehong talahanayan ang mga cell sa isang element na `<table>` na gumagamit sa attribute na `[headers]`" + "message": "Tumutukoy sa isang element na `id` na hindi makikita sa parehong talahanayan ang mga cell sa element na `<table>` na gumagamit ng attribute na `[headers]`." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Ang mga cell sa isang element na `<table>` na gumagamit sa attribute na `[headers]` ay tumutukoy lang sa iba pang cell sa talahanayang ding iyon." + "message": "Tumutukoy sa iba pang cell sa kaparehong talahanayan ang mga cell sa isang element na `<table>` na gumagamit ng attribute na `[headers]`." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "May mga feature ang mga screen reader na mas nagpapadali ng pag-navigate sa mga talahanayan. Kapag tiniyak na ang mga header ng talahanayan ay tumutukoy sa ilang hanay ng mga cell, puwedeng mapahusay ang karanasan para sa mga user ng screen reader. [Matuto pa](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Naglalaman ng element na `<track>` na may `[kind=\"description\"]` ang mga element na `<video>`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Para sa magandang hitsura sa iOS kapag nagdagdag ang mga user ng progressive web app sa home screen, tumukoy ng isang `apple-touch-icon`. Dapat itong nakadirekta sa isang hindi transparent na kuwadradong 192px (o 180px) PNG. [Matuto Pa](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Para sa magandang hitsura sa iOS kapag nagdagdag ang mga user ng progressive web app sa home screen, tumukoy ng `apple-touch-icon`. Dapat itong nakadirekta sa isang hindi transparent na kuwadradong 192px (o 180px) PNG. [Matuto Pa](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Hindi nagbibigay ng valid na `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Kabuuang Oras ng CPU" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Pag-isipang bawasan ang oras na ginugugol sa pag-parse, pag-compile, at pagpapagana ng JS. Puwedeng mapansin mong nakakatulong dito ang paghahatid ng mas maliliit na payload ng JS. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Pag-isipang bawasan ang oras na ginugugol sa pag-parse, pag-compile, at pagpapagana ng JS. Puwedeng mapansin mong nakakatulong dito ang paghahatid ng mas maliliit na payload ng JS. [Matuto pa](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Pabilisin ang pagpapagana ng JavaScript" @@ -351,25 +351,25 @@ "message": "Bilis ng pagpapagana ng JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Hindi mahusay ang malalaking GIF sa paghahatid ng animated na content. Pag-isipang gumamit ng mga MPEG4/WebM na video para sa mga animation at PNG/WebP para sa mga static na larawan sa halip na GIF para makatipid ng mga byte ng network. [Matuto pa](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Hindi mahusay ang malalaking GIF sa paghahatid ng animated na content. Pag-isipang gumamit ng mga MPEG4/WebM na video para sa mga animation at PNG/WebP para sa mga static na larawan sa halip na GIF para makatipid ng mga byte ng network. [Matuto pa](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Gumamit ng mga format ng video para sa animated na content" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Pag-isipang i-lazy load ang mga larawang wala sa screen at nakatago kapag tapos nang mag-load ang lahat ng mahalagang resource para mapabilis ang oras bago maging interactive. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Pag-isipang i-lazy load ang mga larawang wala sa screen at nakatago kapag tapos nang mag-load ang lahat ng mahalagang resource para mapabilis ang oras bago maging interactive. [Matuto pa](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Ipagpaliban ang mga larawang wala sa screen" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Bina-block ng mga resource ang first paint ng iyong page. Pag-isipang ihatid ang mahalagang JS/CSS inline at ipagpaliban ang lahat ng hindi mahalagang JS/istilo. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Bina-block ng mga resource ang first paint ng iyong page. Pag-isipang ihatid ang mahalagang JS/CSS inline at ipagpaliban ang lahat ng hindi mahalagang JS/istilo. [Matuto pa](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Alisin ang mga resource na nagba-block ng pag-render" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Napapagastos ang mga user sa malalaking payload ng network, at malaki ang kaugnayan ng mga ito sa matagal na pag-load. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Napapagastos ang mga user sa malalaking payload ng network, at malaki ang kaugnayan ng mga ito sa matagal na pag-load. [Matuto pa](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Ang kabuuang laki ay {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Umiiwas sa malalaking payload ng network" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Puwedeng bawasan ng pagpapaliit ng mga file ng CSS ang laki ng payload ng network. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Puwedeng bawasan ng pagpapaliit ng mga file ng CSS ang laki ng payload ng network. [Matuto pa](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Paliitin ang CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Puwedeng bawasan ng pagpapaliit ng mga file ng JavaScript ang laki ng payload at oras ng pag-parse ng script. [Matuto pa](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Puwedeng bawasan ng pagpapaliit ng mga file ng JavaScript ang laki ng payload at oras ng pag-parse ng script. [Matuto pa](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Paliitin ang JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Alisin ang mga hindi na gumaganang panuntunan sa mga stylesheet at ipagpaliban ang pag-load ng CSS na hindi ginagamit para sa content sa itaas ng fold para mabawasan ang mga hindi kinakailangang byte na nakokonsumo ng aktibidad sa network. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Alisin ang mga hindi na gumaganang panuntunan sa mga stylesheet at ipagpaliban ang pag-load ng CSS na hindi ginagamit para sa content sa itaas ng fold para mabawasan ang mga hindi kinakailangang byte na nakokonsumo ng aktibidad sa network. [Matuto pa](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Alisin ang hindi ginagamit na CSS" @@ -405,7 +405,7 @@ "message": "Alisin ang hindi nagamit na JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Puwedeng mapabilis ng mahabang lifetime ng cache ang mga umuulit na pagbisita sa iyong page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Puwedeng mapabilis ng mahabang lifetime ng cache ang mga umuulit na pagbisita sa iyong page. [Matuto pa](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Nakakita ng 1 resource}one{Nakakita ng # resource}other{Nakakita ng # na resource}}" @@ -417,31 +417,31 @@ "message": "Gumagamit ng mahusay na patakaran sa cache sa mga static na asset" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Mas mabilis mag-load ang mga na-optimize na larawan at mas kaunti ang nakokonsumong cellular data ng mga ito. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Mas mabilis mag-load ang mga na-optimize na larawan at mas kaunti ang nakokonsumong cellular data ng mga ito. [Matuto pa](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Mahusay na mag-encode ng mga larawan" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Maghatid ng mga larawang naaangkop ang laki para makatipid sa cellular data at mapabilis ang pag-load. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Maghatid ng mga larawang naaangkop ang laki para makatipid sa cellular data at mapabilis ang pag-load. [Matuto pa](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Iangkop ang laki ng mga larawan" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Dapat maghatid ang mga text-based na resource nang may compression (gzip, deflate, o brotli) para mabawasan ang kabuuang mga byte ng network. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Dapat maghatid ang mga text-based na resource nang may compression (gzip, deflate, o brotli) para mabawasan ang kabuuang mga byte ng network. [Matuto pa](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "I-enable ang compression ng text" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Kadalasan, mas mahusay ang pag-compress ng mga format ng larawan gaya ng JPEG 2000, JPEG XR, at WebP kaysa sa pag-compress ng PNG o JPEG, kaya mas mabilis ang pag-download at mas kaunti ang nakokonsumong data. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Kadalasan, mas mahusay ang pag-compress ng mga format ng larawan gaya ng JPEG 2000, JPEG XR, at WebP kaysa sa pag-compress ng PNG o JPEG, kaya mas mabilis ang pag-download at mas kaunti ang nakokonsumong data. [Matuto pa](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Maghatid ng mga larawan sa mga makabagong format" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Kung hindi tumutugma ang lapad ng content ng iyong app sa lapad ng viewport, puwedeng hindi ma-optimize ang app mo para sa mga screen ng mobile. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Kung hindi tumutugma ang lapad ng content ng iyong app sa lapad ng viewport, puwedeng hindi ma-optimize ang app mo para sa mga screen ng mobile. [Matuto pa](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Hindi tumutugma ang laki ng viewport na {innerWidth}px sa laki ng window na {outerWidth}px." @@ -453,7 +453,7 @@ "message": "Tama ang laki ng content para sa viewport" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Ipinapakita sa iyo ng Mga Chain ng Mahahalagang Kahilingan kung anong mga resource ang nilo-load nang may mataas na priyoridad. Pag-isipang paikliin ang mga chain, paliitin ang mga dina-download na resource, o ipagpaliban ang pag-download ng mga hindi kinakailangang resource para mapabilis ang pag-load ng page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Ipinapakita sa iyo ng Mga Chain ng Mahahalagang Kahilingan kung anong mga resource ang nilo-load nang may mataas na priyoridad. Pag-isipang paikliin ang mga chain, paliitin ang mga dina-download na resource, o ipagpaliban ang pag-download ng mga hindi kinakailangang resource para mapabilis ang pag-load ng page. [Matuto pa](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Nakakita ng 1 chain}one{Nakakita ng # chain}other{Nakakita ng # na chain}}" @@ -675,7 +675,7 @@ "message": "Walang naka-log na mga error sa browser sa console" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Gamitin ang feature na font-display ng CSS para matiyak na nakikita ng user ang text habang nilo-load ang mga webfont. [Matuto pa](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Gamitin ang feature na font-display ng CSS para matiyak na nakikita ng user ang text habang nilo-load ang mga webfont. [Matuto pa](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Tiyaking patuloy na nakikita ang text sa pag-load ng webfont" @@ -705,7 +705,7 @@ "message": "Invalid ang laki ng larawan ng impormasyon {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Puwedeng proactive na i-prompt ng mga browser ang mga user para idagdag ang iyong app sa kanilang homescreen, na maaaring magresulta sa mas mataas na pakikipag-ugnayan. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Puwedeng proactive na i-prompt ng mga browser ang mga user na idagdag ang iyong app sa kanilang homescreen, na puwedeng magresulta sa mas maraming pakikipag-ugnayan. [Matuto pa](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Hindi natutugunan ng manifest ng web app ang mga kinakailangan sa pag-install" @@ -729,7 +729,7 @@ "message": "Gumagamit ng HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Kapag mabilis ang pag-load ng page sa cellular network, nagkakaroon ng magandang karanasan ng user sa mobile. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Kapag mabilis ang pag-load ng page sa cellular network, nagkakaroon ng magandang karanasan ng user sa mobile. [Matuto pa](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interactive sa {timeInMs, number, seconds} s" @@ -738,7 +738,7 @@ "message": "Interactive sa naka-simulate na mobile network sa loob ng {timeInMs, number, seconds} s" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": { - "message": "Masyadong mabagal mag-load ang iyong page at hindi interactive sa loob ng 10 segundo. Tingnan ang mga pagkakataon at diagnostic sa seksyong \"Performance\" para matutunan kung paano magpahusay." + "message": "Masyadong mabagal mag-load ang iyong page at hindi ito interactive sa loob ng 10 segundo. Tingnan ang mga pagkakataon at diagnostic sa seksyong \"Performance\" para malaman kung paano magpahusay." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": { "message": "Hindi sapat ang bilis ng pag-load ng page sa mga mobile network" @@ -750,7 +750,7 @@ "message": "Kategorya" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Pag-isipang bawasan ang oras na ginugugol sa pag-parse, pag-compile, at pagpapagana ng JS. Maaaring mapansin mong nakakatulong dito ang paghahatid ng mas maliliit na payload ng JS." + "message": "Pag-isipang bawasan ang oras na ginugugol sa pag-parse, pag-compile, at pagpapagana ng JS. Posibleng mapansin mong nakakatulong dito ang paghahatid ng mas maliliit na payload ng JS. [Matuto pa](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Bawasan ang gawain sa pangunahing thread" @@ -759,49 +759,49 @@ "message": "Binabawasan ang gawain sa pangunahing thread" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Para maabot ang pinakamaraming bilang nguser, dapat gumana ang mga site sa bawat pangunahing browser. [Matuto pa](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Para maabot ang pinakamaraming user, dapat gumana ang mga site sa bawat pangunahing browser. [Matuto pa](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { - "message": "Gumagana ang site sa cross-browser" + "message": "Gumagana ang site sa iba't ibang browser" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Tiyaking nali-link nang malalim ang mga indibidwal na page sa pamamagitan ng URL at natatangi ang mga URL para sa pagbabahagi sa social media. [Matuto pa](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Tiyaking puwedeng i-deep link ang mga indibidwal na page sa pamamagitan ng URL at natatangi ang mga URL para sa pagbabahagi sa social media. [Matuto pa](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "May URL ang bawat page" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Mabilis dapat ang dating ng mga transition habang nagta-tap ka sa paligid, kahit nasa mabagal na network, isang susi sa kapansin-pansing performance. [Matuto pa](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Mabilis dapat ang mga transition habang nagta-tap ka, kahit sa mabagal na network. Ang karanasang ito ay susi sa pagtingin ng user sa performance. [Matuto pa](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Mukhang hindi nagba-block sa network ang mga transition ng page" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Ang Tinantyang Latency ng Input ay isang pagtatantya ng bilis ng pagtugon ng iyong app sa input ng user, na nasa millisecond, sa pinakaabalang 5 segundong palugit ng pag-load ng page. Kung mas mataas kaysa sa 50 ms ang iyong latency, puwedeng ituring ng mga user na mabagal ang app mo. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Ang Tinantyang Latency ng Input ay isang pagtatantya ng bilis ng pagtugon ng iyong app sa input ng user, na nasa millisecond, sa pinakaabalang 5 segundong palugit ng pag-load ng page. Kung mas mataas kaysa sa 50 ms ang iyong latency, puwedeng ituring ng mga user na mabagal ang app mo. [Matuto pa](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Tinatayang Latency ng Input" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Minamarkahan ng First Contentful Paint ang tagal bago ma-paint ang unang text o larawan. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Minamarkahan ng First Contentful Paint ang tagal bago ma-paint ang unang text o larawan. [Matuto pa](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "First Contentful Paint" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Minamarkahan ng First CPU Idle ang unang beses kung kailan hindi abala ang pangunahing thread ng page at puwede itong mangasiwa ng input. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Minamarkahan ng First CPU Idle ang unang beses kung kailan hindi abala ang pangunahing thread ng page at puwede itong mangasiwa ng input. [Matuto pa](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "First CPU Idle" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Sinusukat ng First Meaningful Paint ang bilis ng pagpapakita ng pangunahing content ng isang page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Sinusukat ng First Meaningful Paint ang bilis ng pagpapakita ng pangunahing content ng isang page. [Matuto pa](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "First Meaningful Paint" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Ang oras bago maging interactive ay ang haba ng oras na inaabot bago maging ganap na interactive ang page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Ang oras bago maging interactive ay ang haba ng oras na inaabot bago maging ganap na interactive ang page. [Matuto pa](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Time to Interactive" @@ -813,7 +813,7 @@ "message": "Max na Potensyal na First Input Delay" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Ipinapakita ng Speed Index ang bilis ng nakikitang pag-populate ng mga content ng isang page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Ipinapakita ng Speed Index ang bilis ng nakikitang pag-populate ng mga content ng isang page. [Matuto pa](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Speed Index" @@ -837,7 +837,7 @@ "message": "Mga Latency sa Backend ng Server" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Ine-enable ng isang service worker ang iyong web app para maging maaasahan sa mga pabagu-bagong kundisyon ng network. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Ine-enable ng isang service worker ang iyong web app para maging maaasahan sa mga pabagu-bagong kundisyon ng network. [Matuto pa](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "Hindi tumutugon ang `start_url` gamit ang 200 kapag offline" @@ -846,7 +846,7 @@ "message": "Tumutugon ang `start_url` gamit ang 200 kapag offline" }, "lighthouse-core/audits/offline-start-url.js | warningCantStart": { - "message": "Hindi mabasa ng Lighthouse ang `start_url` na galing sa manifest. Dahil dito, ipinagpapalagay ang `start_url` bilang URL ng dokumento. Mensahe ng error: '{manifestWarning}'." + "message": "Hindi mabasa ng Lighthouse ang `start_url` na galing sa manifest. Dahil dito, ipinagpapalagay na `start_url` ang URL ng dokumento. Mensahe ng error: '{manifestWarning}.'" }, "lighthouse-core/audits/performance-budget.js | columnOverBudget": { "message": "Lampas sa Badyet" @@ -861,7 +861,7 @@ "message": "Badyet sa performance" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Kung na-set up mo na ang HTTPS, tiyaking iyong na-redirect sa HTTPS ang lahat ng trapiko sa HTTP para ma-enable ang mga ligtas na feature sa web para sa lahat ng user mo. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Kung na-set up mo na ang HTTPS, tiyaking ire-redirect mo sa HTTPS ang lahat ng trapiko sa HTTP para ma-enable ang mga ligtas na feature sa web para sa lahat ng iyong user. [Matuto pa](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Hindi nire-redirect sa HTTPS ang trapiko sa HTTP" @@ -870,7 +870,7 @@ "message": "Nire-redirect sa HTTPS ang trapiko sa HTTP" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Nagpapasimula ang mga pag-redirect ng mga karagdagang pagkaantala bago ma-load ang page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Nagpapasimula ang mga pag-redirect ng mga karagdagang pagkaantala bago ma-load ang page. [Matuto pa](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Iwasan ang mga pag-redirect sa maraming page" @@ -1035,19 +1035,19 @@ "message": "Angkop ang laki ng mga target ng pag-tap" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Ang service worker ay ang teknolohiyang nag-e-enable sa iyong app na gumamit ng maraming feature ng Progressive Web App, gaya ng offline, pagdaragdag sa homescreen, at mga push notification. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Ang service worker ay ang teknolohiyang nagbibigay-daan sa iyong app na gumamit ng maraming feature ng Progressive Web App, gaya ng offline, pagdaragdag sa homescreen, at mga push notification. [Matuto pa](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { - "message": "Kinokontrol ng isang service worker ang page na ito, gayunpaman, walang nakitang `start_url` dahil hindi na-parse ang manifest bilang valid na JSON" + "message": "Kinokontrol ng service worker ang page na ito, gayunpaman, walang nakitang `start_url` dahil hindi na-parse ang manifest bilang valid na JSON" }, "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": { - "message": "Kinokontrol ng isang service worker ang page na ito, gayunpaman, wala ang `start_url` ({startUrl}) sa saklaw ng service worker ({scopeUrl})" + "message": "Kinokontrol ng service worker ang page na ito, gayunpaman, wala ang `start_url` ({startUrl}) sa saklaw ng service worker ({scopeUrl})" }, "lighthouse-core/audits/service-worker.js | explanationNoManifest": { - "message": "Kinokontrol ng isang service worker ang page na ito, gayunpaman, walang nakitang `start_url` dahil walang nakuhang manifest." + "message": "Kinokontrol ng service worker ang page na ito, gayunpaman, walang nakitang `start_url` dahil walang nakuhang manifest." }, "lighthouse-core/audits/service-worker.js | explanationOutOfScope": { - "message": "May isa o higit pang service worker ang origin na ito, gayunpaman, wala sa saklaw ang page ({pageUrl})." + "message": "May isa o higit pang service worker ang pinagmulang ito, gayunpaman, wala sa saklaw ang page ({pageUrl})." }, "lighthouse-core/audits/service-worker.js | failureTitle": { "message": "Hindi nagrerehistro ng service worker na kumokontrol sa page at `start_url`" @@ -1056,7 +1056,7 @@ "message": "Nagrerehistro ng service worker na kumokontrol sa page at `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Tinititiyak ng isang splash screen na may tema ang mataas na kalidad na karanasan kapag inilunsad ng mga user ang iyong app sa kanilang mga homescreen. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Tinitiyak ng splash screen na may tema na magkakaroon ng karanasang may mataas na kalidad kapag inilunsad ng mga user ang iyong app sa kanilang mga homescreen. [Matuto pa](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Hindi naka-configure para sa custom na splash screen" @@ -1065,7 +1065,7 @@ "message": "Naka-configure para sa custom na splash screen" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Puwedeng lagyan ng tema ang address bar ng browser para tumugma sa iyong site. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Puwedeng lagyan ng tema ang address bar ng browser para tumugma sa iyong site. [Matuto pa](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Hindi nagtatakda ng kulay ng tema para sa address bar." @@ -1083,16 +1083,16 @@ "message": "Puwedeng lubos na makaapekto ang code ng third party sa performance ng pag-load. Limitahan ang bilang ng paulit-ulit na mga third-party na provider at subukang i-load ang code ng third party pagkatapos ng pangunahing pag-load ng iyong page. [Matuto pa](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)." }, "lighthouse-core/audits/third-party-summary.js | displayValue": { - "message": "Na-block ng third-party na code ang pangunahing thread sa loob ng {timeInMs, number, milliseconds} ms" + "message": "Na-block ng code ng third party ang pangunahing thread sa loob ng {timeInMs, number, milliseconds} ms" }, "lighthouse-core/audits/third-party-summary.js | failureTitle": { - "message": "Bawasan ang epekto ng third-party na code" + "message": "Bawasan ang epekto ng code ng third party" }, "lighthouse-core/audits/third-party-summary.js | title": { "message": "Paggamit ng Third Party" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Tinutukoy ng Time To First Byte ang tagal bago makapagpadala ng tugon ang iyong server. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Tinutukoy ng Time To First Byte ang tagal bago makapagpadala ng tugon ang iyong server. [Matuto pa](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Inabot nang {timeInMs, number, milliseconds} ms ang root na dokumento" @@ -1113,7 +1113,7 @@ "message": "Uri" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Pag-isipang gumamit ng User Timing API sa iyong app para sukatin ang makatotohanang performance ng app mo sa mahahalagang karanasan ng user. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Pag-isipang gumamit ng User Timing API sa iyong app para sukatin ang makatotohanang performance ng app mo sa mahahalagang karanasan ng user. [Matuto pa](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 timing ng user}one{# timing ng user}other{# na timing ng user}}" @@ -1125,7 +1125,7 @@ "message": "May nakitang preconnect na <link> para sa \"{securityOrigin}\" pero hindi ito ginamit ng browser. Tingnan kung ginagamit mo nang maayos ang attribute na `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Pag-isipang magdagdag ng mga hint ng resource na `preconnect` o `dns-prefetch` para magtakda ng mga paunang koneksyon sa mahahalagang third-party na pinagmulan. [Matuto pa](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Pag-isipang magdagdag ng mga hint ng resource na `preconnect` o `dns-prefetch` para magtakda ng mga paunang koneksyon sa mahahalagang third-party na pinagmulan. [Matuto pa](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Mag-preconnect sa mga kinakailangang origin" @@ -1134,13 +1134,13 @@ "message": "May nakitang preload na <link> para sa \"{preloadURL}\" pero hindi ito ginamit ng browser. Tingnan kung ginagamit mo nang maayos ang attribute na `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Pag-isipang gumamit ng `<link rel=preload>` para mabigyang-priyoridad ang pagkuha ng mga resource na kasalukuyang hinihiling sa huling bahagi ng pag-load ng page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Pag-isipang gumamit ng `<link rel=preload>` para mabigyang-priyoridad ang pagkuha ng mga resource na kasalukuyang hinihiling sa huling bahagi ng pag-load ng page. [Matuto pa](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "I-preload ang mahahalagang kahilingan" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Magdagdag ng tag na `<meta name=\"viewport\">` para i-optimize ang iyong app para sa mga screen ng mobile. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Magdagdag ng tag na `<meta name=\"viewport\">` para i-optimize ang iyong app para sa mga screen ng mobile. [Matuto pa](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Walang nahanap na tag na `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "May tag na `<meta name=\"viewport\">` na may `width` o `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Dapat magpakita ng ilang content ang iyong app kapag naka-disable ang JavaScript, kahit isang babala lang ito sa user na kinakailangan ang Javascript para magamit ang app. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Dapat magpakita ng ilang content ang iyong app kapag naka-disable ang JavaScript, kahit isang babala lang sa user na kinakailangan ang Javascript para magamit ang app. [Matuto pa](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Dapat mag-render ng ilang content ang nilalaman ng page kung hindi available ang mga script nito." @@ -1164,7 +1164,7 @@ "message": "Naglalaman ng ilang content kapag hindi available ang JavaScript" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Kung bumubuo ka ng Progressive Web App, pag-isipang gumamit ng isang service worker para puwedeng gumana ang iyong app offline. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Kung bumubuo ka ng Progressive Web App, pag-isipang gumamit ng service worker para gumana ang iyong app offline. [Matuto pa](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Hindi tumutugon ang kasalukuyang page gamit ang 200 kapag offline" @@ -1275,7 +1275,7 @@ "message": "Vina-validate ng mga pagsusuring ito ang mga aspeto ng isang Progressive Web App. [Matuto pa](https://developers.google.com/web/progressive-web-apps/checklist)." }, "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": { - "message": "Kinakailangan ang mga pagsusuring ito ng baseline na [Checklist ng PWA ](https://developers.google.com/web/progressive-web-apps/checklist) pero hindi awtomatikong sinusuri ng Lighthouse. Hindi nakakaapekto ang mga ito sa iyong score pero mahalagang ma-verify mo ang mga ito nang manual." + "message": "Kinakailangan ang mga pagsusuring ito ng baseline na [Checklist ng PWA ](https://developers.google.com/web/progressive-web-apps/checklist) pero hindi ito awtomatikong sinusuri ng Lighthouse. Hindi nakakaapekto ang mga ito sa iyong score pero mahalagang ma-verify mo ang mga ito nang manual." }, "lighthouse-core/config/default-config.js | pwaCategoryTitle": { "message": "Progressive Web App"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fr.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fr.json index 5d29e5d2..29c339356 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fr.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fr.json
@@ -30,10 +30,10 @@ "message": "Certains rôles ARIA parents doivent contenir des rôles enfants spécifiques afin de remplir correctement leurs fonctions d'accessibilité. [En savoir plus](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Les éléments associés à `[role]` et nécessitant des éléments `[role]` enfants spécifiques sont manquants." + "message": "Les éléments ayant un `[role]` ARIA, qui exigent que les enfants incluent un `[role]` spécifique, ne possèdent pas certains ou l'ensemble des enfants requis." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Les éléments associés à `[role]` et nécessitant des éléments `[role]` enfants spécifiques sont présents" + "message": "Les éléments ayant un `[role]` ARIA, qui exigent que les enfants incluent un `[role]` spécifique, possèdent tous les enfants requis." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Certains rôles ARIA enfants doivent être inclus dans un rôle parent spécifique afin de remplir correctement leurs fonctions d'accessibilité. [En savoir plus](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "Les lecteurs d'écran proposent des fonctionnalités qui permettent de naviguer plus simplement dans les tableaux. En vous assurant que les cellules `<td>` qui comportent l'attribut `[headers]` fassent référence à d'autres cellules dans le même tableau uniquement, vous pourrez améliorer l'expérience des utilisateurs de lecteurs d'écran. [En savoir plus](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Les cellules d'un élément `<table>` qui utilisent l'attribut `[headers]` font référence à d'autres cellules du même tableau." + "message": "Les cellules d'un élément `<table>` qui utilisent l'attribut `[headers]` font référence à un élément `id` ne figurant pas dans le même tableau." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Les cellules d'un élément `<table>` qui utilisent l'attribut `[headers]` font uniquement référence à d'autres cellules dans le même tableau." + "message": "Les cellules d'un élément `<table>` qui utilisent l'attribut `[headers]` font référence à des cellules figurant dans le même tableau." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Les lecteurs d'écran proposent des fonctionnalités qui permettent de naviguer plus simplement dans les tableaux. En vous assurant que les en-têtes de tableaux fassent toujours référence à un ensemble de cellules spécifique, vous pourrez améliorer l'expérience des utilisateurs de lecteurs d'écran. [En savoir plus](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "Les éléments `<video>` contiennent un élément `<track>` possédant l'attribut `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Définissez un attribut `apple-touch-icon` afin d'optimiser l'affichage de votre progressive web app sur l'écran d'accueil des appareils iOS. Il doit mener vers une image PNG carrée opaque de 180 ou 192 pixels. [Découvrez-en davantage](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Définissez un attribut `apple-touch-icon` afin d'optimiser l'affichage de votre progressive web app sur l'écran d'accueil des appareils iOS. Il doit mener vers une image PNG carrée opaque de 180 ou 192 pixels. [Découvrez-en davantage](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "La valeur de l'attribut `apple-touch-icon` n'est pas valide" @@ -342,7 +342,7 @@ "message": "Temps CPU total" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Envisagez de réduire le temps consacré à l'analyse, la compilation et l'exécution de JavaScript. La livraison de charges utiles JavaScript plus petites peut vous aider. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "Envisagez de réduire le temps consacré à l'analyse, la compilation et l'exécution de JavaScript. La livraison de charges utiles JavaScript plus petites peut vous aider. [En savoir plus](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Réduisez le temps d'exécution de JavaScript" @@ -351,25 +351,25 @@ "message": "Délai d'exécution de JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Les grandes images GIF sont inefficaces pour diffuser du contenu animé. Envisagez d'utiliser des vidéos MPEG4/WebM pour les animations et PNG/WebP pour les images statiques au lieu d'images GIF afin d'économiser des octets réseau. [En savoir plus](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Les grandes images GIF sont inefficaces pour diffuser du contenu animé. Envisagez d'utiliser des vidéos MPEG4/WebM pour les animations et PNG/WebP pour les images statiques au lieu d'images GIF afin d'économiser des octets réseau. [En savoir plus](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Utilisez des formats vidéo pour le contenu animé" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Envisagez de charger des images masquées ou hors écran après le chargement de toutes les ressources essentielles afin de réduire le délai avant interactivité. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "Envisagez de charger des images masquées ou hors écran après le chargement de toutes les ressources essentielles afin de réduire le délai avant interactivité. [En savoir plus](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Différez le chargement des images hors écran" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Des ressources bloquent la première visualisation (first paint) de votre page. Envisagez de diffuser des feuilles JS/CSS essentielles en ligne et de différer la diffusion de toutes les feuilles JS/de style non essentielles. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "Des ressources bloquent la première visualisation (first paint) de votre page. Envisagez de diffuser des feuilles JS/CSS essentielles en ligne et de différer la diffusion de toutes les feuilles JS/de style non essentielles. [En savoir plus](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Éliminez les ressources qui bloquent le rendu" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Les charges utiles des grands réseaux coûtent de l'argent réel aux utilisateurs et sont fortement corrélées aux délais de chargement interminables. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "Les charges utiles des grands réseaux coûtent de l'argent réel aux utilisateurs et sont fortement corrélées aux délais de chargement interminables. [En savoir plus](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Taille totale : {totalBytes, number, bytes} Ko" @@ -381,19 +381,19 @@ "message": "Éviter d'énormes charges utiles de réseau" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "La réduction des fichiers CSS peut réduire la taille des charges utiles de réseau. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "La réduction des fichiers CSS peut réduire la taille des charges utiles de réseau. [En savoir plus](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Réduisez la taille des ressources CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "La minimisation des fichiers JavaScript peut réduire la taille des charges utiles et la durée d'analyse des scripts. [En savoir plus](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "La minimisation des fichiers JavaScript peut réduire la taille des charges utiles et la durée d'analyse des scripts. [En savoir plus](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Réduisez la taille des ressources JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Supprimez les règles inutilisées des feuilles de style et différez le chargement des ressources CSS inutilisées pour le contenu au-dessus de la ligne de flottaison afin de réduire la quantité d'octets inutiles consommés par l'activité réseau. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "Supprimez les règles inutilisées des feuilles de style et différez le chargement des ressources CSS inutilisées pour le contenu au-dessus de la ligne de flottaison afin de réduire la quantité d'octets inutiles consommés par l'activité réseau. [En savoir plus](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Supprimer les ressources CSS inutilisées" @@ -405,7 +405,7 @@ "message": "Supprimez les ressources JavaScript inutilisées" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Une longue durée de vie du cache peut accélérer les visites répétées sur votre page. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "Une longue durée de vie du cache peut accélérer les visites répétées sur votre page. [En savoir plus](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 ressource trouvée}one{# ressource trouvée}other{# ressources trouvées}}" @@ -417,31 +417,31 @@ "message": "Utiliser des règles de cache efficaces sur les éléments statiques" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Les images optimisées se chargent plus rapidement et consomment moins de données mobiles. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "Les images optimisées se chargent plus rapidement et consomment moins de données mobiles. [En savoir plus](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Encodez les images de manière efficace" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Diffusez des images de taille appropriée afin d'économiser des données mobiles et de réduire le temps de chargement. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "Diffusez des images de taille appropriée afin d'économiser des données mobiles et de réduire le temps de chargement. [En savoir plus](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Dimensionnez correctement les images" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Les ressources textuelles doivent être diffusées compressées (Gzip, Deflate ou Brotli) pour réduire le nombre total d'octets du réseau. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "Les ressources textuelles doivent être diffusées compressées (Gzip, Deflate ou Brotli) pour réduire le nombre total d'octets du réseau. [En savoir plus](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Activez la compression de texte" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Les formats d'image comme JPEG 2000, JPEG XR et WebP proposent souvent une meilleure compression que les formats PNG ou JPEG. Par conséquent, les téléchargements sont plus rapides et la consommation de données est réduite. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "Les formats d'image comme JPEG 2000, JPEG XR et WebP proposent souvent une meilleure compression que les formats PNG ou JPEG. Par conséquent, les téléchargements sont plus rapides et la consommation de données est réduite. [En savoir plus](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Diffusez des images aux formats nouvelle génération" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Si la largeur du contenu de votre application ne correspond pas à la largeur de la fenêtre d'affichage, il se peut que votre application ne soit pas optimisée pour les écrans mobiles. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Si la largeur du contenu de votre application ne correspond pas à la largeur de la fenêtre d'affichage, il se peut que votre application ne soit pas optimisée pour les écrans mobiles. [Découvrez-en davantage](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "La dimension de la fenêtre d'affichage ({innerWidth} pixels) ne correspond pas à la taille de la fenêtre ({outerWidth} pixels)." @@ -453,7 +453,7 @@ "message": "Le contenu est correctement dimensionné pour la fenêtre d'affichage" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Les chaînes de demandes critiques ci-dessous vous montrent quelles ressources sont chargées avec une priorité élevée. Envisagez de réduire la longueur des chaînes et la taille de téléchargement des ressources ou de reporter le téléchargement de ressources inutiles afin d'améliorer le chargement des pages. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "Les chaînes de demandes critiques ci-dessous vous montrent quelles ressources sont chargées avec une priorité élevée. Envisagez de réduire la longueur des chaînes et la taille de téléchargement des ressources ou de reporter le téléchargement de ressources inutiles afin d'améliorer le chargement des pages. [En savoir plus](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 chaîne trouvée}one{# chaîne trouvée}other{# chaînes trouvées}}" @@ -675,7 +675,7 @@ "message": "Aucune erreur de navigateur enregistrée dans la console" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Utilisez la fonction d'affichage de la police CSS afin que le texte soit visible par l'utilisateur pendant le chargement des polices Web. [En savoir plus](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "Utilisez la fonction d'affichage de la police CSS afin que le texte soit visible par l'utilisateur pendant le chargement des polices Web. [En savoir plus](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Assurez-vous que le texte reste visible pendant le chargement des polices Web" @@ -705,7 +705,7 @@ "message": "Informations sur la taille d'image non valides {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Les utilisateurs peuvent être invités à ajouter votre application à leur écran d'accueil par le biais de leur navigateur. Cette fonctionnalité peut contribuer à une hausse de l'engagement. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Les utilisateurs peuvent être invités à ajouter votre application à leur écran d'accueil par le biais de leur navigateur. Cette fonctionnalité peut contribuer à une hausse de l'engagement. [Découvrez-en davantage](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Le fichier manifeste de l'application Web ne respecte pas les conditions d'installation requises" @@ -729,7 +729,7 @@ "message": "Requêtes HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Le chargement rapide des pages sur un réseau mobile garantit une expérience utilisateur de qualité. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "Le chargement rapide des pages sur un réseau mobile garantit une expérience utilisateur de qualité. [En savoir plus](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Page interactive en {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Catégorie" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Envisagez de réduire le temps consacré à l'analyse, la compilation et l'exécution de JavaScript. La livraison de charges utiles JavaScript plus petites peut vous aider." + "message": "Envisagez de réduire le temps consacré à l'analyse, la compilation et l'exécution de JavaScript. La livraison de charges utiles JavaScript plus petites peut vous aider. [En savoir plus](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Réduisez le travail du thread principal" @@ -759,49 +759,49 @@ "message": "Réduire le travail du thread principal" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Afin de toucher le plus grand nombre d'utilisateurs possible, les sites doivent fonctionner sur tous les principaux navigateurs. [Découvrez-en davantage](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Afin de toucher le plus grand nombre d'utilisateurs possible, les sites doivent fonctionner sur tous les principaux navigateurs. [Découvrez-en davantage](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Le site fonctionne sur différents navigateurs" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Veillez à ce que les URL de vos pages puissent être utilisées dans des liens profonds. En outre, chaque URL doit être unique afin de pouvoir être correctement partagée sur les médias sociaux. [Découvrez-en davantage](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Veillez à ce que les URL de vos pages puissent être utilisées dans des liens profonds. En outre, chaque URL doit être unique afin de pouvoir être correctement partagée sur les médias sociaux. [Découvrez-en davantage](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Chaque page a sa propre URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "La navigation sur les pages doit être rapide et fluide, même pour les utilisateurs avec une connexion lente. C'est un critère de performance fondamental. [Découvrez-en davantage](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "La navigation sur les pages doit être rapide et fluide, même pour les utilisateurs avec une connexion lente. C'est un critère de performance fondamental pour les utilisateurs. [Découvrez-en davantage.](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "La navigation entre les différentes pages du site doit être rapide et fluide" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "La valeur \"Estimated Input Latency\" est une estimation du temps en millisecondes que prend votre application pour réagir à l'intervention de l'utilisateur, pendant la fenêtre de pointe de 5 s de chargement de la page. Si le temps de latence est supérieur à 50 ms, les utilisateurs peuvent percevoir votre application comme étant lente. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "La valeur \"Estimated Input Latency\" est une estimation du temps en millisecondes que prend votre application pour réagir à l'intervention de l'utilisateur, pendant la fenêtre de pointe de 5 s de chargement de la page. Si le temps de latence est supérieur à 50 ms, les utilisateurs peuvent percevoir votre application comme étant lente. [En savoir plus](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Estimation du temps de latence avant intervention" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "La statistique \"First Contentful Paint\" indique le moment où le premier texte ou la première image sont affichés. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "La statistique \"First Contentful Paint\" indique le moment où le premier texte ou la première image sont affichés. [En savoir plus](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "First Contentful Paint" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "La statistique \"First CPU Idle\" marque la première fois que le thread principal de la page est suffisamment silencieux pour gérer l'entrée. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "La statistique \"First CPU Idle\" marque la première fois que le thread principal de la page est suffisamment silencieux pour gérer l'entrée. [Découvrez-en davantage.](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Premier processeur inactif" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "La statistique \"First Meaningful Paint\" mesure quand le contenu principal d'une page est visible. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "La statistique \"First Meaningful Paint\" mesure quand le contenu principal d'une page est visible. [En savoir plus](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "First Meaningful Paint" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "La valeur \"Time to Interactive\" correspond au temps nécessaire pour que la page devienne entièrement interactive. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "La valeur \"Time to Interactive\" correspond au temps nécessaire pour que la page devienne entièrement interactive. [En savoir plus](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Délai avant interactivité" @@ -813,7 +813,7 @@ "message": "Max Potential First Input Delay" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "La valeur \"Speed Index\" indique la rapidité avec laquelle le contenu d'une page est disponible. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "La valeur \"Speed Index\" indique la rapidité avec laquelle le contenu d'une page est disponible. [En savoir plus](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Indice de vitesse" @@ -837,7 +837,7 @@ "message": "Latences du backend serveur" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Les service workers garantissent le bon fonctionnement de votre application Web, indépendamment des aléas du réseau. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Les service workers garantissent le bon fonctionnement de votre application Web, indépendamment des aléas du réseau. [Découvrez-en davantage](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` ne retourne pas de code 200 en mode hors connexion" @@ -861,7 +861,7 @@ "message": "Budget de performances" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Si vous avez déjà configuré le protocole HTTPS, veillez à rediriger tout le trafic HTTP vers HTTPS afin de proposer des fonctionnalités Web sûres à tous vos utilisateurs. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Si vous avez déjà configuré le protocole HTTPS, veillez à rediriger tout le trafic HTTP vers HTTPS afin de proposer des fonctionnalités Web sûres à tous vos utilisateurs. [Découvrez-en davantage](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Ne redirige pas le trafic HTTP vers HTTPS" @@ -870,7 +870,7 @@ "message": "Trafic HTTP redirigé vers HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Les redirections entraînent des retards supplémentaires avant que la page ne puisse être chargée. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "Les redirections entraînent des retards supplémentaires avant que la page ne puisse être chargée. [En savoir plus](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "Évitez les redirections de page multiples" @@ -1035,7 +1035,7 @@ "message": "Les éléments tactiles sont dimensionnés correctement" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Un service worker est une technologie qui permet à votre application d'exploiter de nombreuses fonctionnalités propres aux progressive web apps, comme le fonctionnement hors connexion, l'ajout à un écran d'accueil et les notifications push. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Un service worker est une technologie qui permet à votre application d'exploiter de nombreuses fonctionnalités propres aux progressive web apps, comme le fonctionnement hors connexion, l'ajout à un écran d'accueil et les notifications push. [Découvrez-en davantage](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Un service worker contrôle cette page. Toutefois, aucun attribut `start_url` n'a été trouvé en raison d'un échec lors de l'analyse du fichier manifeste (JSON non valide)" @@ -1056,7 +1056,7 @@ "message": "Un service worker de contrôle de la page et de `start_url` est enregistré" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Avec un écran d'accueil à thème, vous garantissez une expérience de qualité aux utilisateurs qui lancent votre application depuis leur écran d'accueil. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Avec un écran d'accueil à thème, vous garantissez une expérience de qualité aux utilisateurs qui lancent votre application depuis leur écran d'accueil. [Découvrez-en davantage](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Écran d'accueil personnalisé non disponible" @@ -1065,7 +1065,7 @@ "message": "Écran d'accueil personnalisé disponible" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Vous pouvez définir un thème assorti à votre site pour la barre d'adresse du navigateur. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Vous pouvez définir un thème assorti à votre site pour la barre d'adresse du navigateur. [Découvrez-en davantage](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Aucune couleur de thème n'est configurée pour la barre d'adresse." @@ -1092,7 +1092,7 @@ "message": "Code tiers" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "La valeur \"Time To First Byte\" identifie l'heure à laquelle votre serveur envoie une réponse. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "La valeur \"Time To First Byte\" identifie l'heure à laquelle votre serveur envoie une réponse. [En savoir plus](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Le document racine a pris {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Type" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Envisagez de doter votre application de l'API User Timing pour mesurer ses performances réelles lors d'expériences utilisateur clés. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "Envisagez de doter votre application de l'API User Timing pour mesurer ses performances réelles lors d'expériences utilisateur clés. [En savoir plus](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{[=1]1 temps utilisateur}one{# temps utilisateur}other{# temps utilisateur}}" @@ -1125,7 +1125,7 @@ "message": "Un élément <link> de pré-connexion a été trouvé pour \"{securityOrigin}\", mais il n'a pas été utilisé par le navigateur. Vérifiez que vous utilisez correctement l'attribut \"`crossorigin`\"." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Envisagez d'ajouter les indices de ressources `preconnect` ou `dns-prefetch` pour établir les premières connexions avec des origines tierces importantes. [Découvrez-en davantage](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Envisagez d'ajouter les indices de ressources `preconnect` ou `dns-prefetch` pour établir les premières connexions avec des origines tierces importantes. [Découvrez-en davantage](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Connectez-vous à l'avance aux origines souhaitées" @@ -1134,13 +1134,13 @@ "message": "Une balise <link> de préchargement a été détectée pour \"{preloadURL}\", mais n'a pas été utilisée par le navigateur. Vérifiez que vous utilisez correctement l'attribut \"`crossorigin`\"." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Envisagez d'utiliser `<link rel=preload>` pour hiérarchiser la récupération des ressources actuellement requises pour le chargement ultérieur de la page. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "Envisagez d'utiliser `<link rel=preload>` pour hiérarchiser la récupération des ressources actuellement requises pour le chargement ultérieur de la page. [En savoir plus](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Préchargez les demandes clés" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Ajoutez une balise `<meta name=\"viewport\">` afin d'optimiser votre application pour les écrans mobiles. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Ajoutez une balise `<meta name=\"viewport\">` afin d'optimiser votre application pour les écrans mobiles. [Découvrez-en davantage](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Aucune balise `<meta name=\"viewport\">` trouvée" @@ -1152,7 +1152,7 @@ "message": "Une balise `<meta name=\"viewport\">` ayant l'attribut `width` ou `initial-scale` est configurée" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Nous vous recommandons d'afficher du contenu même lorsque JavaScript est indisponible. Il peut s'agir d'un simple avertissement informant l'utilisateur que JavaScript est requis pour utiliser votre application. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Nous vous recommandons d'afficher du contenu même lorsque JavaScript est indisponible. Il peut s'agir d'un simple avertissement informant l'utilisateur que JavaScript est requis pour utiliser votre application. [Découvrez-en davantage](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Il est recommandé d'afficher du contenu dans le corps de la page lorsque les scripts sont indisponibles." @@ -1164,7 +1164,7 @@ "message": "Du contenu s'affiche lorsque JavaScript est indisponible" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Si vous développez une progressive web app, envisagez d'utiliser un service worker afin que votre application soit accessible hors connexion. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Si vous développez une progressive web app, envisagez d'utiliser un service worker afin que votre application soit accessible hors connexion. [Découvrez-en davantage](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "La page actuelle ne retourne pas de code 200 en mode hors connexion"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/he.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/he.json index cbf8d00..87ba0f7 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/he.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/he.json
@@ -30,10 +30,10 @@ "message": "תפקידי הורה מסוימים של ARIA צריכים לכלול תפקידי צאצא ספציפיים כדי לבצע את פונקציות הנגישות שלהם. [מידע נוסף](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "חסרים רכיבים עם `[role]` שדורשים רכיבי צאצא ספציפיים של `[role]`." + "message": "ברכיבים עם `[role]` של ARIA שדורשים מצאצאים לכלול `[role]` ספציפי, חסרים חלק מהצאצאים הנדרשים האלה, או שכולם חסרים בהם." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "קיימים רכיבים עם `[role]` שדורשים רכיבי צאצא ספציפיים של `[role]`" + "message": "ברכיבים עם `[role]` של ARIA שדורשים מצאצאים לכלול `[role]` ספציפי, קיימים כל הצאצאים הנדרשים." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "חלק מתפקידי הצאצא מסוג ARIA חייבים להיכלל בין תפקידי הורה ספציפיים כדי למלא באופן תקין את פונקציות הנגישות שלהם. [מידע נוסף](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "קוראי מסך כוללים תכונות שמקלות את הניווט בטבלאות. כשתאי `<td>` שמשתמשים במאפיין `[headers]` מתייחסים רק לתאים אחרים באותה טבלה, משתמשים הנעזרים בקוראי מסך יכולים ליהנות מחוויה טובה יותר. [מידע נוסף](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "תאים ברכיב `<table>` שמשתמשים במאפיין `[headers]` מתייחסים לתאים אחרים באותה הטבלה." + "message": "תאים ברכיב `<table>` שמשתמשים במאפיין `[headers]`, מתייחסים לרכיב `id` שלא נמצא באותה טבלה." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "כל התאים שמוצבים בתוך רכיב `<table>` ומשתמשים במאפיין `[headers]` מתייחסים רק לתאים אחרים באותה טבלה." + "message": "תאים ברכיב `<table>` שמשתמשים במאפיין `[headers]`, מתייחסים לתאים אחרים באותה הטבלה." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "קוראי מסך כוללים תכונות שמקלות את הניווט בטבלאות. כשכותרות של טבלאות מתייחסות תמיד לקבוצה כלשהי של תאים, משתמשים הנעזרים בקורא מסך יכולים ליהנות מחוויה טובה יותר. [מידע נוסף](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "רכיבי `<video>` מכילים רכיב `<track>` עם `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "כדי שהדף יוצג למשתמשים באופן אידיאלי ב-iOS לאחר הוספת Progressive Web App למסך הבית, מומלץ להגדיר `apple-touch-icon`. המאפיין חייב להפנות לתמונת PNG לא שקופה בפורמט ריבוע בגודל 192 פיקסלים (או 180 פיקסלים). [מידע נוסף](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "כדי שהדף יוצג למשתמשים באופן אידיאלי ב-iOS לאחר הוספת Progressive Web App למסך הבית, מומלץ להגדיר `apple-touch-icon`. המאפיין חייב להפנות לתמונת PNG לא שקופה בפורמט ריבוע בגודל 192 פיקסלים (או 180 פיקסלים). [מידע נוסף](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "הדף לא מכיל `apple-touch-icon` חוקי" @@ -342,7 +342,7 @@ "message": "זמן כולל של CPU (יחידת עיבוד מרכזית)" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "כדאי לשקול את האפשרות לקצר את הזמן הדרוש לניתוח, הידור וביצוע של JS. לשם כך כדאי להשתמש במטענים ייעודיים (payloads) קטנים יותר של JS. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "כדאי לשקול את האפשרות לקצר את הזמן הדרוש לניתוח, הידור וביצוע של JS. לשם כך כדאי להשתמש במטענים ייעודיים (payloads) קטנים יותר של JS. [מידע נוסף](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "יש לקצר את זמן הביצוע של JavaScript" @@ -351,25 +351,25 @@ "message": "זמן ביצוע של JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "קובצי GIF גדולים לא מעבירים אנימציות בצורה יעילה. כדי לצמצם את מספר הבייטים שמועברים ברשת, במקום קובצי GIF כדאי לשקול את האפשרות להשתמש בסרטוני MPEG4/WebM בשביל אנימציות ובקובצי PNG/WebP בשביל תמונות סטטיות. [מידע נוסף](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "קובצי GIF גדולים לא מעבירים אנימציות בצורה יעילה. כדי לצמצם את מספר הבייטים שמועברים ברשת, במקום קובצי GIF כדאי לשקול את האפשרות להשתמש בסרטוני MPEG4/WebM בשביל אנימציות ובקובצי PNG/WebP בשביל תמונות סטטיות. [מידע נוסף](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "יש להשתמש בפורמטים של וידאו כדי להציג תוכן אנימציה" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "כדי לקצר את הזמן עד לפעילות מלאה, כדאי לשקול לבצע טעינה הדרגתית של תמונות מוסתרות ותמונות שלא מופיעות מיד במסך, כך שייטענו רק אחרי סיום הטעינה של כל המשאבים הקריטיים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "כדי לקצר את הזמן עד לפעילות מלאה, כדאי לשקול לבצע טעינה הדרגתית של תמונות מוסתרות ותמונות שלא מופיעות מיד במסך, כך שייטענו רק אחרי סיום הטעינה של כל המשאבים הקריטיים. [מידע נוסף](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "יש לעכב טעינה של תמונות שאינן מופיעות במסך" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "משאבים חוסמים את הצגת התמונה הראשונית של הדף במסך כדאי לשקול את האפשרות לספק תוכן JS/CSS קריטי באופן מוטבע ולדחות את הטעינה של כל תוכן ה-JS/הסגנונות שאינם קריטיים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "משאבים חוסמים את הצגת התמונה הראשונית של הדף במסך כדאי לשקול את האפשרות לספק תוכן JS/CSS קריטי באופן מוטבע ולדחות את הטעינה של כל תוכן ה-JS/הסגנונות שאינם קריטיים. [מידע נוסף](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "יש להימנע ממשאבים שחוסמים עיבוד" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "מטענים ייעודיים (payload) בנפח גדול המועברים ברשת עולים למשתמשים כסף ולעתים קרובות מאריכים את זמני הטעינה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "מטענים ייעודיים (payload) בנפח גדול המועברים ברשת עולים למשתמשים כסף ולעתים קרובות מאריכים את זמני הטעינה. [מידע נוסף](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "הגודל הכולל היה {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "נמנע מהעברה של מטענים ייעודיים ענקיים (payload) ברשת" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "הקטנה של קובצי CSS יכולה לצמצם את הגודל של מטענים ייעודיים (payloads) שמועברים ברשת. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "הקטנה של קובצי CSS יכולה לצמצם את הגודל של מטענים ייעודיים (payloads) שמועברים ברשת. [מידע נוסף](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "יש להקטין קובצי CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "הקטנה של קובצי JavaScript יכולה לצמצם את המטען הייעודי (payload) ולקצר את משך הזמן הנדרש לניתוח סקריפט. [מידע נוסף](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "הקטנה של קובצי JavaScript יכולה לצמצם את המטען הייעודי (payload) ולקצר את משך הזמן הנדרש לניתוח סקריפט. [מידע נוסף](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "יש לקצר את קוד JavaScript למינימום ההכרחי" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "יש להסיר מגיליונות הסגנונות כללים שאינם בשימוש ולדחות את הטעינה של רכיבי CSS שאינם חלק מהתוכן בחלק העליון והקבוע. הפעולה הזו תצמצם צריכה בלתי נחוצה של בייטים כתוצאה מפעילות הרשת. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "יש להסיר מגיליונות הסגנונות כללים שאינם בשימוש ולדחות את הטעינה של רכיבי CSS שאינם חלק מהתוכן בחלק העליון והקבוע. הפעולה הזו תצמצם צריכה בלתי נחוצה של בייטים כתוצאה מפעילות הרשת. [מידע נוסף](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "יש להסיר CSS שאינו בשימוש" @@ -405,7 +405,7 @@ "message": "יש להסיר JavaScript שאינו בשימוש" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "משך חיים ארוך של מטמון יכול לזרז את הביקורים החוזרים בדף. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "משך חיים ארוך של מטמון יכול לזרז את הביקורים החוזרים בדף. [מידע נוסף](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{נמצא משאב אחד}two{נמצאו # משאבים}many{נמצאו # משאבים}other{נמצאו # משאבים}}" @@ -417,31 +417,31 @@ "message": "יש להשתמש במדיניות מטמון יעילה בנכסים סטטיים" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "תמונות שעברו אופטימיזציה נטענות מהר יותר וצורכות פחות נתונים בחבילת הגלישה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "תמונות שעברו אופטימיזציה נטענות מהר יותר וצורכות פחות נתונים בחבילת הגלישה. [מידע נוסף](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "יש לקודד תמונות בצורה יעילה" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "הצגת תמונות שהגודל שלהן הוגדר בצורה נכונה עוזרת לחסוך בניצול חבילת הגלישה ולקצר את זמן הטעינה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "הצגת תמונות שהגודל שלהן הוגדר בצורה נכונה עוזרת לחסוך בניצול חבילת הגלישה ולקצר את זמן הטעינה. [מידע נוסף](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "יש להגדיר את גודל התמונות בצורה נכונה" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "הצגת משאבים המבוססים על טקסט צריכה להתבצע עם דחיסה (gzip, deflate או brotli) כדי לצמצם את כמות הבייטים שמועברים ברשת. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "הצגת משאבים המבוססים על טקסט צריכה להתבצע עם דחיסה (gzip, deflate או brotli) כדי לצמצם את כמות הבייטים שמועברים ברשת. [מידע נוסף](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "יש להפעיל דחיסת טקסט" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "לעתים קרובות, פורמטים של תמונות כמו JPEG 2000, JPEG XR ו-WebP מספקים דחיסה טובה יותר מאשר PNG או JPEG. הדחיסה המשופרת מקצרת את זמן ההורדות ומצמצמת את צריכת הנתונים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "לעתים קרובות, פורמטים של תמונות כמו JPEG 2000, JPEG XR ו-WebP מספקים דחיסה טובה יותר מאשר PNG או JPEG. הדחיסה המשופרת מקצרת את זמן ההורדות ומצמצמת את צריכת הנתונים. [מידע נוסף](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "יש להציג תמונות בפורמטים עדכניים" }, "lighthouse-core/audits/content-width.js | description": { - "message": "אם הרוחב של תוכן האפליקציה לא תואם לרוחב של אזור התצוגה, ייתכן שלא בוצעה אופטימיזציה לאפליקציה שלך עבור מסכים של ניידים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "אם הרוחב של תוכן האפליקציה לא תואם לרוחב של אזור התצוגה, ייתכן שלא בוצעה אופטימיזציה לאפליקציה שלך עבור מסכים של ניידים. [מידע נוסף](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "גודל אזור התצוגה של {innerWidth} פיקסלים לא תואם לגודל החלון של {outerWidth} פיקסלים." @@ -453,7 +453,7 @@ "message": "הגודל של התוכן הוגדר בצורה תקינה עבור אזור התצוגה" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "בקטע 'שרשראות בקשה קריטיות' שבהמשך מוצגים המשאבים שנטענים עם עדיפות גבוהה. כדי לשפר את מהירות טעינת הדף, מומלץ לקצר את השרשראות, להקטין את גודל ההורדה של משאבים או לעכב את ההורדה של משאבים לא נחוצים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "בקטע 'שרשראות בקשה קריטיות' שבהמשך מוצגים המשאבים שנטענים עם עדיפות גבוהה. כדי לשפר את מהירות טעינת הדף, מומלץ לקצר את השרשראות, להקטין את גודל ההורדה של משאבים או לעכב את ההורדה של משאבים לא נחוצים. [מידע נוסף](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{נמצאה שרשרת אחת}two{נמצאו # שרשראות}many{נמצאו # שרשראות}other{נמצאו # שרשראות}}" @@ -675,7 +675,7 @@ "message": "לא נרשמו במסוף שגיאות דפדפן" }, "lighthouse-core/audits/font-display.js | description": { - "message": "שימוש בתכונת תצוגת הגופן של CSS מבטיח שהטקסט מוצג למשתמש בזמן טעינה של גופני webfont. [מידע נוסף](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "שימוש בתכונת תצוגת הגופן של CSS מבטיח שהטקסט מוצג למשתמש בזמן טעינה של גופני webfont. [מידע נוסף](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "יש לוודא שטקסט ממשיך להופיע במהלך טעינת webfont" @@ -705,7 +705,7 @@ "message": "נתוני הגודל של תמונה לא חוקיים: {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "הדפדפנים יכולים לבקש ממשתמשים באופן יזום להוסיף את האפליקציה שלך אל מסך הבית שלהם, פעולה שמגדילה את הסיכוי להשגת מעורבות גבוהה יותר. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "הדפדפנים יכולים לבקש ממשתמשים באופן יזום להוסיף את האפליקציה שלך אל מסך הבית שלהם, פעולה שמגדילה את הסיכוי להשגת מעורבות גבוהה יותר. [מידע נוסף](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "המניפסט של אפליקציית האינטרנט לא עומד בדרישות יכולת ההתקנה" @@ -729,7 +729,7 @@ "message": "שימוש ב-HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "כשהדף נטען במהירות ברשת סלולרית, חוויית המשתמש איכותית. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "כשהדף נטען במהירות ברשת סלולרית, חוויית המשתמש איכותית. [מידע נוסף](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "פעילות מלאה תוך {timeInMs, number, seconds} שנ'" @@ -750,7 +750,7 @@ "message": "קטגוריה" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "כדאי לשקול את האפשרות לקצר את הזמן הדרוש לניתוח, הידור וביצוע JS. לשם כך כדאי להשתמש במטענים ייעודיים (payload) קטנים יותר של JS." + "message": "כדאי לשקול את האפשרות לקצר את הזמן הדרוש לניתוח, הידור וביצוע של JS. לשם כך, כדאי להשתמש במטענים ייעודיים (payloads) קטנים יותר של JS. [מידע נוסף](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "צריך לצמצם את העבודה על התהליכון הראשי" @@ -759,49 +759,49 @@ "message": "מצמצם את העבודה על התהליכון הראשי" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "כדי להגדיל את היקף החשיפה לכמה שיותר משתמשים, האתרים צריכים לעבוד בכל הדפדפנים המובילים. [מידע נוסף](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "כדי להגדיל את היקף החשיפה לכמה שיותר משתמשים, האתרים צריכים לעבוד בכל הדפדפנים המובילים. [מידע נוסף](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "האתר עובד בדפדפנים שונים" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "יש לוודא שניתן לבצע קישור עמוק לדפים נפרדים דרך כתובת URL ושכתובות ה-URL ייחודיות, כדי שניתן יהיה לשתף אותן ברשתות חברתיות. [מידע נוסף](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "יש לוודא שניתן לבצע קישור עמוק לדפים נפרדים דרך כתובת URL ושכתובות ה-URL ייחודיות, כדי שניתן יהיה לשתף אותן ברשתות חברתיות. [מידע נוסף](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "לכל דף יש כתובת URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "כשמקישים באפליקציה, התחושה של המעברים צריכה להיות מהירה, גם ברשת איטית. זוהי נקודת מפתח לתפיסת הביצועים שלה. [מידע נוסף](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "כשמקישים באפליקציה, התחושה של המעברים צריכה להיות מהירה, גם ברשת איטית. החוויה הזו היא אחד הגורמים החשובים לתפיסת הביצועים בעיני משתמשים. [מידע נוסף](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "מעברי הדפים לא מרגישים חסומים ברשת" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "זמן אחזור מוערך של קלט הוא אומדן של משך הזמן הנדרש לאפליקציה כדי להגיב לקלט של משתמש. הערך מצוין באלפיות שנייה ומתייחס ל-5 השניות העמוסות ביותר בטעינת הדף. אם זמן האחזור ארוך מ-50 אלפיות שנייה, ייתכן שהמשתמשים יבחינו בעיכוב בפעילות האפליקציה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "זמן אחזור מוערך של קלט הוא אומדן של משך הזמן הנדרש לאפליקציה כדי להגיב לקלט של משתמש. הערך מצוין באלפיות שנייה ומתייחס ל-5 השניות העמוסות ביותר בטעינת הדף. אם זמן האחזור ארוך מ-50 אלפיות שנייה, ייתכן שהמשתמשים יבחינו בעיכוב בפעילות האפליקציה. [מידע נוסף](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "אומדן זמן האחזור של קלט" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "המדד 'הצגת תוכן ראשוני (FCP)' מציין את הזמן שבו הטקסט או התמונה הראשונים מוצגים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "המדד 'הצגת תוכן ראשוני (FCP)' מציין את הזמן שבו הטקסט או התמונה הראשונים מוצגים. [מידע נוסף](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "הצגת התוכן הראשוני" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "הערך 'מצב ראשון של חוסר פעילות ב-CPU' מציין את הפעם הראשונה שבה התהליכון הראשי של הדף פנוי מספיק בשביל להגיב לקלט. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "הערך 'מצב ראשון של חוסר פעילות ב-CPU' מציין את הפעם הראשונה שבה התהליכון הראשי של הדף פנוי מספיק בשביל להגיב לקלט. [מידע נוסף](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "מצב ראשון של חוסר פעילות ב-CPU" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "הערך 'הצגת התוכן העיקרי (FMP)' מציין מתי מוצג התוכן העיקרי של הדף. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "הערך 'הצגת התוכן העיקרי (FMP)' מציין מתי מוצג התוכן העיקרי של הדף. [מידע נוסף](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "הצגת התוכן העיקרי" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "הזמן עד לפעילות מלאה הוא משך הזמן שחולף עד שהדף מאפשר פעילות מלאה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "הזמן עד לפעילות מלאה הוא משך הזמן שחולף עד שהדף מאפשר פעילות מלאה. [מידע נוסף](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "זמן עד לאינטראקטיביות" @@ -813,7 +813,7 @@ "message": "השהיה פוטנציאלית מרבית לאחר קלט ראשוני" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "מדד המהירות (Speed Index) מראה באיזו מהירות מוצג התוכן בדף [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "מדד המהירות (Speed Index) מראה באיזו מהירות מוצג התוכן בדף [מידע נוסף](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "מדד מהירות (Speed Index)" @@ -837,7 +837,7 @@ "message": "זמני אחזור בקצה עורפי של שרת" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "קובץ שירות (service worker) מאפשר לאפליקציית האינטרנט שלך להיות אמינה יותר בתנאי רשת לא צפויים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "קובץ שירות (service worker) מאפשר לאפליקציית האינטרנט שלך להיות אמינה יותר בתנאי רשת לא צפויים. [מידע נוסף](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` לא מגיב בסטטוס 200 כשהוא במצב לא מקוון" @@ -861,7 +861,7 @@ "message": "תקציב ביצועים" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "אם כבר הגדרת HTTPS, יש לוודא שכל תנועת ה-HTTP מופנית אוטומטית ל-HTTPS כדי להפעיל תכונות רשת מאובטחות לכל המשתמשים שלך. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "אם כבר הגדרת HTTPS, יש לוודא שכל תנועת ה-HTTP מופנית אוטומטית ל-HTTPS כדי להפעיל תכונות רשת מאובטחות לכל המשתמשים שלך. [מידע נוסף](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "לא מפנה תנועת HTTP באופן אוטומטי אל HTTPS" @@ -870,7 +870,7 @@ "message": "מפנה תנועת HTTP באופן אוטומטי אל HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "הפניות אוטומטיות מעכבות את טעינת הדף. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "הפניות אוטומטיות מעכבות את טעינת הדף. [מידע נוסף](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "יש להימנע מהפניות אוטומטיות מרובות" @@ -879,7 +879,7 @@ "message": "כדי להגדיר תקציבים עבור הכמות והגודל של משאבי הדף, יש להוסיף קובץ budget.json. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/budgets)." }, "lighthouse-core/audits/resource-summary.js | displayValue": { - "message": "{requestCount,plural, =1{בקשה אחת •KB {byteCount, number, bytes}}two{# בקשות • KB {byteCount, number, bytes}}many{# בקשות • KB {byteCount, number, bytes}}other{# בקשות • KB {byteCount, number, bytes}}}" + "message": "{requestCount,plural, =1{בקשה אחת • {byteCount, number, bytes} KB}two{# בקשות • KB {byteCount, number, bytes}}many{# בקשות • KB {byteCount, number, bytes}}other{# בקשות • KB {byteCount, number, bytes}}}" }, "lighthouse-core/audits/resource-summary.js | title": { "message": "יש לצמצם ככל האפשר את מספר הבקשות ואת גודל ההעברות" @@ -1035,7 +1035,7 @@ "message": "הרכיבים להקשה הוגדרו בגודל המתאים" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "קובץ השירות (service worker) הוא הטכנולוגיה שמאפשרת לאפליקציה שלך להשתמש במספר תכונות Progressive Web App, כמו 'מצב לא מקוון', 'הוספה לדף הבית' ו'התראות'. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "קובץ השירות (service worker) הוא הטכנולוגיה שמאפשרת לאפליקציה שלך להשתמש במספר תכונות Progressive Web App, כמו 'מצב לא מקוון', 'הוספה לדף הבית' ו'התראות'. [מידע נוסף](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "דף זה נשלט על ידי קובץ שירות (service worker), אך לא נמצא `start_url` כי לא ניתן היה לנתח את המניפסט בתור JSON תקף" @@ -1056,7 +1056,7 @@ "message": "רושם קובץ שירות (service worker) ששולט בדף וב-`start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "מסך פתיחה מעוצב מבטיח חוויה באיכות גבוהה כשמשתמשים מפעילים את האפליקציה שלך ממסכי הבית שלהם. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "מסך פתיחה מעוצב מבטיח חוויה באיכות גבוהה כשמשתמשים מפעילים את האפליקציה שלך ממסכי הבית שלהם. [מידע נוסף](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "לא מוגדר עבור מסך פתיחה בהתאמה אישית" @@ -1065,7 +1065,7 @@ "message": "מוגדר עבור מסך פתיחה בהתאמה אישית" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "ניתן לעצב את סרגל הכתובות של הדפדפן כך שיתאים לאתר שלך. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "ניתן לעצב את סרגל הכתובות של הדפדפן כך שיתאים לאתר שלך. [מידע נוסף](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "לא מגדיר צבע עיצוב עבור סרגל הכתובות." @@ -1092,7 +1092,7 @@ "message": "שימוש של צד שלישי" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "'זמן עד בייט ראשון' (Time To First Byte) הוא פרק הזמן שחולף עד שהשרת שולח תגובה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "'זמן עד בייט ראשון' (Time To First Byte) הוא פרק הזמן שחולף עד שהשרת שולח תגובה. [מידע נוסף](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "טעינת מסמך השורש ארכה {timeInMs, number, milliseconds} אלפיות שנייה" @@ -1113,7 +1113,7 @@ "message": "סוג" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "כדי למדוד את ביצועי האפליקציה בפועל במהלך חוויות משתמש חשובות, כדאי לשקול את האפשרות להוסיף לאפליקציה את User Timing API. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "כדי למדוד את ביצועי האפליקציה בפועל במהלך חוויות משתמש חשובות, כדאי לשקול את האפשרות להוסיף לאפליקציה את User Timing API. [מידע נוסף](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{תזמון משתמש אחד}two{# תזמוני משתמש}many{# תזמוני משתמש}other{# תזמוני משתמש}}" @@ -1125,7 +1125,7 @@ "message": "נמצא רכיב <link> לקישור מראש בשביל \"{securityOrigin}\", אבל הדפדפן לא השתמש בו. יש לוודא שנעשה שימוש תקין במאפיין `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "כדאי לשקול להוסיף את ההינטים של המשאבים `preconnect` או `dns-prefetch` כדי ליצור מראש קישורים אל מקורות חשובים של צד שלישי. [מידע נוסף](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "כדאי לשקול להוסיף את ההינטים של המשאבים `preconnect` או `dns-prefetch` כדי ליצור מראש קישורים אל מקורות חשובים של צד שלישי. [מידע נוסף](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "יש להתחבר מראש למקורות נדרשים" @@ -1134,13 +1134,13 @@ "message": "נמצא ערך <link> של טעינה מראש בשביל \"{preloadURL}\", אבל הדפדפן לא השתמש בו. יש לוודא שנעשה שימוש תקין במאפיין `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "כדאי לשקול את האפשרות להשתמש ב-`<link rel=preload>` כדי לקבוע את סדר העדיפויות של אחזור משאבים שנדרשים בשלב מאוחר יותר של טעינת הדף. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "כדאי לשקול את האפשרות להשתמש ב-`<link rel=preload>` כדי לקבוע את סדר העדיפויות של אחזור משאבים שנדרשים בשלב מאוחר יותר של טעינת הדף. [מידע נוסף](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "יש לטעון מראש בקשות עיקריות" }, "lighthouse-core/audits/viewport.js | description": { - "message": "כדי לבצע אופטימיזציה של האפליקציה למסכים של ניידים, עליך להוסיף את התג `<meta name=\"viewport\">`. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "כדי לבצע אופטימיזציה של האפליקציה למסכים של ניידים, עליך להוסיף את התג `<meta name=\"viewport\">`. [מידע נוסף](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "לא נמצא תג `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "יש תג `<meta name=\"viewport\">` עם `width` או `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "האפליקציה שלך צריכה להציג תוכן כלשהו כשה-JavaScript מושבת, גם אם זו רק אזהרה למשתמש שנדרש JavaScript כדי להשתמש באפליקציה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "האפליקציה שלך צריכה להציג תוכן כלשהו כשה-JavaScript מושבת, גם אם זו רק אזהרה למשתמש שנדרש JavaScript כדי להשתמש באפליקציה. [מידע נוסף](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "אם הסקריפטים של גוף הדף לא זמינים, הוא צריך לעבד תוכן כלשהו." @@ -1164,7 +1164,7 @@ "message": "מכיל תוכן כלשהו כש-JavaScript לא זמין" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "אם בונים Progressive Web App, מומלץ לשקול להשתמש בקובץ שירות (service worker) כדי שהאפליקציה תוכל לעבוד במצב לא מקוון. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "אם בונים Progressive Web App, מומלץ לשקול להשתמש בקובץ שירות (service worker) כדי שהאפליקציה תוכל לעבוד במצב לא מקוון. [מידע נוסף](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "דף זה לא מגיב בסטטוס 200 כשהוא במצב לא מקוון"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hi.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hi.json index f17c566..cd063f5 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hi.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hi.json
@@ -30,10 +30,10 @@ "message": "कुछ ARIA पैरंट भूमिकाओं में खास चाइल्ड भूमिकाएं होनी चाहिए ताकि वे तय किए गए सुलभता फ़ंक्शन कर सकें. [ज़्यादा जानें](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "`[role]` वाले वे एलिमेंट नहीं मिले जिन्हें खास चिल्ड्रन `[role]` चाहिए होते हैं." + "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "`[role]` वाले वे एलिमेंट मौजूद हैं जिन्हें खास चिल्ड्रन `[role]` चाहिए होते हैं." + "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "कुछ ARIA चाइल्ड रोल अपने तय सुलभता फ़ंक्शन को ठीक से कर पाएं. इसके लिए, उन्हें खास पैरंट रोल में शामिल होना चाहिए. [ज़्यादा जानें](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "स्क्रीन रीडर में ऐसी सुविधाएं होती हैं जिनसे टेबल में जाना आसान हो जाता है. `[headers]` विशेषता का इस्तेमाल करके `<td>` सेल की मौजूदगी पक्की करने के लिए उसी टेबल में मौजूद दूसरे सेल का हवाला दिया जाता है. इससे स्क्रीन रीडर उपयोगकर्ताओं के अनुभव को बेहतर बनाया जा सकता है. [ज़्यादा जानें](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`<table>` विशेषता का इस्तेमाल करने वाले `[headers]` एलिमेंट में मौजूद सेल, उसी टेबल में दूसरे सेल का हवाला देते हैं." + "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to an element `id` not found within the same table." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "`<table>` एलिमेंट में शामिल सेल जो `[headers]` विशेषता का इस्तेमाल करते हैं, वे सिर्फ़ उसी टेबल में शामिल सेल का हवाला देते हैं." + "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "स्क्रीन रीडर में ऐसी सुविधाएं होती हैं जिनसे टेबल में जाना आसान हो जाता है. यह पक्का करें कि टेबल हेडर हमेशा कुछ सेल के सेट के बारे में बताते हों. इससे स्क्रीन रीडर के उपयोगकर्ताओं को बेहतर अनुभव मिल सकता है. [ज़्यादा जानें](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "`<video>` एलिमेंट में `[kind=\"description\"]` वाला एक `<track>` एलिमेंट है" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "उपयोगकर्ता जब होम स्क्रीन पर प्रगतिशील वेब ऐप जोड़ें, तो iOS पर वह अच्छे से नज़र आए, इसके लिए `apple-touch-icon` तय करें. यह ज़रूरी है कि यह आइकॉन किसी ऐसे 192px (या 180px) के चौकोर PNG की तरफ़ इशारा करे जिसके आर-पार न देखा जा सके. [ज़्यादा जानें](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "उपयोगकर्ता जब होम स्क्रीन पर प्रगतिशील वेब ऐप्लिकेशन जोड़ें, तो iOS पर वह अच्छे से नज़र आए, इसके लिए `apple-touch-icon` तय करें. यह ज़रूरी है कि यह आइकॉन किसी ऐसे 192px (या 180px) के वर्गाकार PNG की तरफ़ इशारा करे जिसके आर-पार न देखा जा सके. [ज़्यादा जानें](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "एक सही `apple-touch-icon` नहीं उपलब्ध कराता" @@ -342,7 +342,7 @@ "message": "कुल सीपीयू समय" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "JS को पार्स करने, कंपाइल करने, और एक्ज़ीक्यूट करने में लगने वाला समय कम करें. आप देखेंगे कि इसकी मदद से छोटे-छोटे JS पेलोड डिलीवर करने में मदद मिलती है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "JS को पार्स करने, कंपाइल करने, और एक्ज़ीक्यूट करने में लगने वाला समय कम करें. आप देखेंगे कि इसकी मदद से छोटे-छोटे JS पेलोड डिलीवर करने में मदद मिलती है. [ज़्यादा जानें](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "JavaScript क्रियान्वयन समय कम करें" @@ -351,25 +351,25 @@ "message": "JavaScript क्रियान्वयन समय" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "बड़ी GIFs ऐनिमेशन वाली सामग्री डिलीवर नहीं कर सकते. नेटवर्क बाइट बचाने के लिए GIF का इस्तेमाल करने के बजाय, ऐनिमेशन के लिए MPEG4/WebM वीडियो और स्टैटिक इमेज के लिए PNG/WebP का इस्तेमाल करें. [ज़्यादा जानें](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "बड़ी GIFs ऐनिमेशन वाली सामग्री डिलीवर नहीं कर सकते. नेटवर्क बाइट बचाने के लिए GIF का इस्तेमाल करने के बजाय, ऐनिमेशन के लिए MPEG4/WebM वीडियो और स्टैटिक इमेज के लिए PNG/WebP का इस्तेमाल करें. [ज़्यादा जानें](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "ऐनिमेट की गई सामग्री के लिए वीडियो फ़ॉर्मेट का इस्तेमाल करें" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "इंटरैक्टिव में लगने वाला समय कम करने के लिए, सभी अहम संसाधन लोड हो जाने के बाद ऑफ़स्क्रीन और छिपी हुई इमेज को धीरे-धीरे लोड करें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "इंटरैक्टिव में लगने वाला समय कम करने के लिए, सभी अहम संसाधन लोड हो जाने के बाद ऑफ़स्क्रीन और छिपी हुई इमेज को धीरे-धीरे लोड करें. [ज़्यादा जानें](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "ऑफ़स्क्रीन इमेज टालें" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "संसाधन आपके पेज का फ़र्स्ट पेंट ब्लॉक कर रहे हैं. ज़रूरी JS/सीएसएस इनलाइन डिलीवर करने और सभी गैर-ज़रूरी JS/शैलियों को टाल दें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "संसाधन आपके पेज का फ़र्स्ट पेंट ब्लॉक कर रहे हैं. ज़रूरी JS/सीएसएस इनलाइन डिलीवर करने और सभी गैर-ज़रूरी JS/शैलियों को टाल दें. [ज़्यादा जानें](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "रेंडर ब्लॉक करने वाले संसाधनों को खत्म करें" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "बड़े नेटवर्क वाले पेलोड के लिए उपयोगकर्ताओं को रकम खर्च करनी होती है. साथ ही, उन पर लोड होने में ज़्यादा समय भी लगता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "बड़े नेटवर्क वाले पेलोड के लिए उपयोगकर्ताओं को रकम खर्च करनी होती है. साथ ही, उन पर लोड होने में ज़्यादा समय भी लगता है. [ज़्यादा जानें](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "कुल आकार {totalBytes, number, bytes} केबी था" @@ -381,19 +381,19 @@ "message": "भारी नेटवर्क पेलोड से बचाता है" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "CSS फ़ाइलों को छोटा करने से नेटवर्क पेलोड आकार कम किए जा सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "CSS फ़ाइलों को छोटा करने से नेटवर्क पेलोड आकार कम किए जा सकते हैं. [ज़्यादा जानें](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "CSS कम करें" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "JavaScript फ़ाइलों को छोटा करने से पेलोड का आकार और स्क्रिप्ट पार्स करने में लगने वाला समय कम हो सकता है. [ज़्यादा जानें](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "JavaScript फ़ाइलों को छोटा करने से पेलोड का आकार और स्क्रिप्ट पार्स करने में लगने वाला समय कम हो सकता है. [ज़्यादा जानें](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "JavaScript का आकार कम करें" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "स्टाइलशीट से इस्तेमाल न किए गए नियमों को हटाएं और पेज के ऊपरी हिस्से की सामग्री के लिए इस्तेमाल न होने वाले CSS को लोड होने से टालें. ऐसा करके, नेटवर्क गतिविधि में खर्च होने वाले गैर-ज़रूरी बाइट कम किए जा सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "स्टाइलशीट से इस्तेमाल न किए गए नियमों को हटाएं और पेज के ऊपरी हिस्से की सामग्री के लिए इस्तेमाल न होने वाले CSS को लोड होने से टालें. ऐसा करके, नेटवर्क गतिविधि में खर्च होने वाले गैर-ज़रूरी बाइट कम किए जा सकते हैं. [ज़्यादा जानें](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "इस्तेमाल नहीं किए गए CSS को हटाएं" @@ -405,7 +405,7 @@ "message": "इस्तेमाल नहीं किया गया JavaScript हटाएं" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "अगर कैश मेमोरी ज़्यादा समय तक रहेगी, तो लोगों के आपकी साइट पर लौटने की प्रक्रिया में तेज़ी आएगी. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "अगर कैश मेमोरी ज़्यादा समय तक रहेगी, तो लोगों के आपकी साइट पर लौटने की प्रक्रिया में तेज़ी आएगी. [ज़्यादा जानें](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 संसाधन मिला}one{# संसाधन मिले}other{# संसाधन मिले}}" @@ -417,31 +417,31 @@ "message": "स्थिर एसेट पर कुशल कैश नीति का इस्तेमाल करता है" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "ऑप्टिमाइज़ की गई इमेज तेज़ी से लोड होती हैं. साथ ही, इसमें कम सेल्युलर डेटा खर्च होता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "ऑप्टिमाइज़ की गई इमेज तेज़ी से लोड होती हैं. साथ ही, इसमें कम सेल्युलर डेटा खर्च होता है. [ज़्यादा जानें](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "इमेज को कुशलता से एन्कोड करें" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "ऐसी इमेज ऑफ़र करें जिनका आकार सही हो, ताकि सेल्युलर डेटा बचाया जा सके और लोड होने में लगने वाले समय को कम किया जा सके. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "ऐसी इमेज ऑफ़र करें जिनका आकार सही हो, ताकि सेल्युलर डेटा बचाया जा सके और लोड होने में लगने वाले समय को कम किया जा सके. [ज़्यादा जानें](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "सही तरीके के आकार वाली इमेज" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "कुल नेटवर्क बाइट को कम से कम करने के लिए, टेक्स्ट आधारित संसाधन, कंप्रेशन (gzip, deflate या brotli) के साथ ऑफ़र किए जाने चाहिए. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "कुल नेटवर्क बाइट को कम से कम करने के लिए, टेक्स्ट आधारित संसाधन, कंप्रेशन (gzip, deflate या brotli) के साथ ऑफ़र किए जाने चाहिए. [ज़्यादा जानें](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "लेख कंप्रेशन चालू करें" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000, JPEG XR, और WebP जैसे इमेज फ़ॉर्मैट, ज़्यादातर PNG या JPEG से बेहतर कंप्रेस करते हैं जिससे उपयोगकर्ता कम डेटा खर्च करके तेज़ डाउनलोड कर सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "JPEG 2000, JPEG XR, और WebP जैसे इमेज फ़ॉर्मैट, ज़्यादातर PNG या JPEG से बेहतर कंप्रेस करते हैं जिससे उपयोगकर्ता कम डेटा खर्च करके तेज़ डाउनलोड कर सकते हैं. [ज़्यादा जानें](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "इमेज अगली जेनरेशन के फ़ॉर्मेट में ऑफ़र करें" }, "lighthouse-core/audits/content-width.js | description": { - "message": "आपके ऐप्लिकेशन की सामग्री की चौड़ाई व्यूपोर्ट की चौड़ाई से मेल नहीं खाती है, तो आपका ऐप्लिकेशन मोबाइल स्क्रीन पर ऑप्टिमाइज़ नहीं किया जा सकेगा. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "अगर आपके ऐप्लिकेशन की सामग्री की चौड़ाई व्यूपोर्ट की चौड़ाई से मेल नहीं खाती है, तो आपका ऐप्लिकेशन मोबाइल स्क्रीन पर ऑप्टिमाइज़ नहीं किया जा सकेगा. [ज़्यादा जानें](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "{innerWidth}px के व्यूपोर्ट का आकार {outerWidth}px की विंडो के आकार से मेल नहीं खाता है." @@ -453,7 +453,7 @@ "message": "सामग्री का आकार व्यूपोर्ट (किसी वेब पेज के स्क्रीन पर दिखने वाले हिस्से) के मुताबिक है" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "नीचे दी गई अहम अनुरोध शृंखलाएं बताती हैं कि किन संसाधनों को ज़्यादा प्राथमिकता से लोड किया गया है. शृंखलाओं की अवधि कम करें. इससे संसाधनों का डाउनलोड आकार कम हो जाएगा या पेज लोड को बेहतर बनाने के लिए गैर-ज़रूरी संसाधनों का डाउनलोड टल जाएगा. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "नीचे दी गई अहम अनुरोध शृंखलाएं बताती हैं कि किन संसाधनों को ज़्यादा प्राथमिकता से लोड किया गया है. शृंखलाओं की अवधि कम करें. इससे संसाधनों का डाउनलोड आकार कम हो जाएगा या पेज लोड को बेहतर बनाने के लिए गैर-ज़रूरी संसाधनों का डाउनलोड टल जाएगा. [ज़्यादा जानें](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 शृंखला मिली}one{# शृंखलाएं मिलीं}other{# शृंखलाएं मिलीं}}" @@ -675,7 +675,7 @@ "message": "ब्राउज़र की किसी गड़बड़ी को कंसोल में लॉग नहीं किया गया" }, "lighthouse-core/audits/font-display.js | description": { - "message": "यह पक्का करने के लिए कि वेबफ़ॉन्ट लोड होने के दौरान उपयोगकर्ता को टेक्स्ट दिखाई देता रहे, फ़ॉन्ट-डिसप्ले सीएसएस फ़ीचर का फ़ायदा लें. [ज़्यादा जानें](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "यह पक्का करने के लिए कि वेबफ़ॉन्ट लोड होने के दौरान उपयोगकर्ता को टेक्स्ट दिखाई देता रहे, फ़ॉन्ट-डिसप्ले सीएसएस फ़ीचर का फ़ायदा लें. [ज़्यादा जानें](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "पक्का करें कि वेबफ़ॉन्ट लोड होने के दौरान लेख दिखाई देता रहे" @@ -705,7 +705,7 @@ "message": "इमेज के आकार की जानकारी गलत है {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "ब्राउज़र अपनी ओर से, उपयोगकर्ताओं को आपके ऐप्लिकेशन को उनकी होमस्क्रीन पर जोड़ने के लिए कह सकते हैं. इससे उपयोगकर्ताओं के साथ बेहतरी से जुड़ने में मदद मिलती है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "ब्राउज़र अपनी ओर से उपयोगकर्ताओं को आपके ऐप्लिकेशन को उनकी होमस्क्रीन पर जोड़ने का सुझाव दे सकते हैं. इससे उपयोगकर्ताओं के साथ बेहतर तरीके से जुड़ने में मदद मिलती है. [ज़्यादा जानें](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "वेब ऐप्लिकेशन का मेनिफ़ेस्ट, इंस्टॉल करने की ज़रूरतों को पूरा नहीं करता है" @@ -729,7 +729,7 @@ "message": "HTTPS का इस्तेमाल करता है" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "सेल्युलर नेटवर्क पर तेज़ी से पेज लोड होने की सुविधा से मोबाइल इस्तेमाल करने वालों को अच्छा अनुभव मिलता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "सेल्युलर नेटवर्क पर तेज़ी से पेज लोड होने की सुविधा से मोबाइल इस्तेमाल करने वालों को अच्छा अनुभव मिलता है. [ज़्यादा जानें](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "इंटरैक्शन {timeInMs, number, seconds} से. में शुरू हुआ" @@ -738,7 +738,7 @@ "message": "{timeInMs, number, seconds} से. में सिम्युलेट किए गए मोबाइल नेटवर्क पर इंटरैक्शन शुरू हुआ" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": { - "message": "आपका पेज बहुत धीरे लोड होता है और 10 सेकंड में इंटरैक्टिव (पेज लोड होने के दौरान उपयोगकर्ता के इनपुट जैसे कि क्लिक, टैप, और बटन दबाने का जवाब देने में लगने वाला समय) नहीं होता है. सुधार करने के तरीके जानने के लिए \"प्रदर्शन\" सेक्शन में अवसरों पर नज़र डालें और गड़बड़ी की जानकारी लें." + "message": "आपका पेज बहुत धीरे लोड होता है और 10 सेकंड में इंटरैक्टिव नहीं होता है. सुधार करने के तरीके जानने के लिए \"परफ़ॉर्मेंस\" सेक्शन में अवसरों पर नज़र डालें और गड़बड़ी की जानकारी लें." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": { "message": "मोबाइल नेटवर्क पर पेज लोड होने की गति ज़रूरत के मुताबिक तेज़ नहीं है" @@ -750,7 +750,7 @@ "message": "श्रेणी" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "JS को पार्स करने, कंपाइल करने और एक्ज़ीक्यूट करने में लगने वाला समय कम करने पर विचार करें. आप देखेंगे कि इसके ज़रिए छोटे-छोटे JS पेलोड डिलीवर करने में मदद मिलती है." + "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "मुख्य थ्रेड के काम को कम करना" @@ -759,49 +759,49 @@ "message": "मुख्य थ्रेड के काम को कम करता है" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "ज़्यादा से ज़्यादा उपयोगकर्ताओं तक पहुंचने के लिए, साइटों का सभी प्रमुख ब्राउज़र पर काम करना ज़रूरी है. [ज़्यादा जानें](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "ज़्यादा से ज़्यादा उपयोगकर्ताओं तक पहुंचने के लिए, साइटों का सभी प्रमुख ब्राउज़र पर काम करना ज़रूरी है. [ज़्यादा जानें](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { - "message": "यह क्रॉस-ब्राउज़र वेबसाइट है जो अलग-अलग ब्राउज़र पर काम करती है" + "message": "यह वेबसाइट अलग-अलग ब्राउज़र पर काम करती है" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "पक्का करें कि अलग-अलग पेज, यूआरएल के ज़रिए डीप लिंक के लायक हैं. साथ ही, वे ऐसे खास यूआरएल हैं जो सोशल मीडिया पर शेयर करने के मकसद को पूरा करते हैं. [ज़्यादा जानें](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "पक्का करें कि हर पेज को यूआरएल के ज़रिए डीप लिंक किया जा सकता हो. साथ ही, वे ऐसे खास यूआरएल हों जिन्हें सोशल मीडिया पर शेयर किया जा सकता है. [ज़्यादा जानें](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "हर पेज का एक यूआरएल होता है" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "नेटवर्क धीमा होने के बाद भी वेब ऐप्लिकेशन पर टैप करने पर ट्रांज़िशन की रफ़्तार तेज़ महसूस होनी चाहिए. यह आपके पेज की अच्छी परफ़ॉर्मेंस के लिए अहम है. [ज़्यादा जानें](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Transitions should feel snappy as you tap around, even on a slow network. This experience is key to a user's perception of performance. [Learn more](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { - "message": "पेज ट्रांज़िशन को देखकर ऐसा नहीं लगना चाहिए जैसे वे नेटवर्क लोड होने का इंतज़ार कर रहे हैं" + "message": "पेज ट्रांज़िशन को देखकर ऐसा नहीं लगना चाहिए जैसे कि वे नेटवर्क लोड होने का इंतज़ार कर रहे हैं" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "इनपुट के इंतज़ार के समय का अंदाज़ा, इस बात से लगाया जाता है कि पेज लोड होने की सबसे व्यस्त पांच सेकंड की विंडो के दौरान आपके ऐप्लिकेशन को इस्तेमाल करने वाले के इनपुट का जवाब देने में कितना समय लगेगा. इस समय का हिसाब मिलीसेकंड में लगाया जाता है. अगर इंतज़ार का समय 50 मिलीसेकंड से ज़्यादा हो, तो इस्तेमाल करने वाले आपके ऐप्लिकेशन को धीमा मान सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "इनपुट के इंतज़ार के समय का अंदाज़ा, इस बात से लगाया जाता है कि पेज लोड होने की सबसे व्यस्त पांच सेकंड की विंडो के दौरान आपके ऐप्लिकेशन को इस्तेमाल करने वाले के इनपुट का जवाब देने में कितना समय लगेगा. इस समय का हिसाब मिलीसेकंड में लगाया जाता है. अगर इंतज़ार का समय 50 मिलीसेकंड से ज़्यादा हो, तो इस्तेमाल करने वाले आपके ऐप्लिकेशन को धीमा मान सकते हैं. [ज़्यादा जानें](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "अनुमानित इनपुट प्रतीक्षा समय" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "फ़र्स्ट कॉन्टेंटफ़ुल पेंट से उस समय का पता चलता है जब पहले टेक्स्ट या इमेज को पेंट किया गया था. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "फ़र्स्ट कॉन्टेंटफ़ुल पेंट से उस समय का पता चलता है जब पहले टेक्स्ट या इमेज को पेंट किया गया था. [ज़्यादा जानें](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "उपयोगी सामग्री वाला पहला पेंट" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "इस्तेमाल में न होने वाले पहले सीपीयू (CPU) का आंकड़ा, वह समय बताता है जब पेज का मुख्य थ्रेड पहली बार इनपुट को संभालने के लिए काफ़ी होता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "पहला सीपीयू (CPU) इस्तेमाल में नहीं" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "फ़र्स्ट मीनिंगफ़ुल पेंट, पेज की मुख्य सामग्री दिखाई देने का समय बताता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "फ़र्स्ट मीनिंगफ़ुल पेंट, पेज की मुख्य सामग्री दिखाई देने का समय बताता है. [ज़्यादा जानें](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "पहला सार्थक पेंट" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "इंटरैक्टिव में लगने वाला समय, वह समय है जितनी देर में पेज पूरी तरह से इंटरैक्टिव हो जाता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "इंटरैक्टिव में लगने वाला समय, वह समय है जितनी देर में पेज पूरी तरह से इंटरैक्टिव हो जाता है. [ज़्यादा जानें](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "इंटरएक्टिव में लगने वाला समय" @@ -813,7 +813,7 @@ "message": "सबसे ज़्यादा संभावित फ़र्स्ट इनपुट डिले" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "स्पीड इंडेक्स से पता चलता है कि किसी पेज की सामग्री, विज़ुअल रूप से कितनी तेज़ी से डाली गई है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "स्पीड इंडेक्स से पता चलता है कि किसी पेज की सामग्री, विज़ुअल रूप से कितनी तेज़ी से डाली गई है. [ज़्यादा जानें](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "गति इंडेक्स" @@ -837,7 +837,7 @@ "message": "सर्वर बैकएंड के इंतज़ार का समय" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "सर्विस वर्कर की वजह से आपका वेब ऐप्लिकेशन ऑनलाइन, ऑफ़लाइन, और रुक-रुककर चलने वाले नेटवर्क कनेक्शन जैसी स्थितियों में भी अच्छे ढंग से काम करता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "सर्विस वर्कर की वजह से आपका वेब ऐप्लिकेशन ऑनलाइन, ऑफ़लाइन, और रुक-रुककर चलने वाले नेटवर्क जैसी स्थितियों में भी अच्छे ढंग से काम करता है. [ज़्यादा जानें](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` ऑफ़लाइन होने पर, \"200\" कोड का जवाब नहीं देता है" @@ -861,7 +861,7 @@ "message": "परफ़ॉर्मेंस बजट" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "अगर आप एचटीटीपीएस पहले ही सेट अप कर चुके हैं, तो पक्का करें कि अपने सभी उपयोगकर्ताओं के लिए सुरक्षित वेब फ़ीचर चालू करने के मकसद से आप सभी एचटीटीपी ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट करें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "अगर आप एचटीटीपीएस पहले ही सेट अप कर चुके हैं, तो पक्का करें कि अपने सभी उपयोगकर्ताओं के लिए सुरक्षित वेब फ़ीचर चालू करने के मकसद से आप सभी एचटीटीपी ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट करें. [ज़्यादा जानें](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "वेब पेज, एचटीटीपी ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट नहीं करता है" @@ -870,7 +870,7 @@ "message": "वेब पेज, एचटीटीपी ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट करता है" }, "lighthouse-core/audits/redirects.js | description": { - "message": "रीडायरेक्ट की वजह से पेज के लोड होने से लगने वाला समय और बढ़ जाता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "रीडायरेक्ट की वजह से पेज के लोड होने से लगने वाला समय और बढ़ जाता है. [ज़्यादा जानें](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "एक से ज़्यादा पेज रीडायरेक्ट करने से बचें" @@ -1035,7 +1035,7 @@ "message": "टैप की जाने वाली जगहें सही आकार में हैं" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "सर्विस वर्कर एक ऐसी तकनीक है जो आपके ऐप्लिकेशन के लिए कई प्रगतिशील वेब ऐप फ़ीचर जैसे कि ऑफ़लाइन, होमस्क्रीन पर जोड़ें, और पुश नोटिफ़िकेशन को चालू करती है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "सर्विस वर्कर एक ऐसी तकनीक है जो आपके ऐप्लिकेशन के लिए कई प्रगतिशील वेब ऐप्लिकेशन फ़ीचर जैसे कि ऑफ़लाइन, होमस्क्रीन पर जोड़ें, और पुश नोटिफ़िकेशन को चालू करती है. [ज़्यादा जानें](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "इस पेज का नियंत्रण सर्विस वर्कर के पास है. हालांकि, कोई `start_url` नहीं मिला, क्योंकि मेनिफ़ेस्ट को मान्य JSON के रूप में पार्स नहीं किया जा सका" @@ -1044,10 +1044,10 @@ "message": "इस पेज का नियंत्रण सर्विस वर्कर के पास है. हालांकि, `start_url` ({startUrl}) सर्विस वर्कर के दायरे में नहीं है ({scopeUrl})" }, "lighthouse-core/audits/service-worker.js | explanationNoManifest": { - "message": "इस पेज का नियंत्रण सर्विस वर्कर के पास है. हालांकि, कोई `start_url` नहीं मिला, क्योंकि कोई पेज पर कोई मेनिफ़ेस्ट ही नहीं था." + "message": "इस पेज का नियंत्रण सर्विस वर्कर के पास है. हालांकि, कोई `start_url` नहीं मिला, क्योंकि किसी पेज पर कोई मेनिफ़ेस्ट ही नहीं था." }, "lighthouse-core/audits/service-worker.js | explanationOutOfScope": { - "message": "इस मूल में एक या ज़्यादा सर्विस वर्कर हैं. हालांकि, पेज ({pageUrl}) दायरे में नहीं है." + "message": "यहां पर एक या ज़्यादा सर्विस वर्कर हैं. हालांकि, पेज ({pageUrl}) दायरे में नहीं है." }, "lighthouse-core/audits/service-worker.js | failureTitle": { "message": "किसी ऐसे सर्विस वर्कर को रजिस्टर नहीं करता जो पेज और `start_url` को नियंत्रित करता है" @@ -1056,7 +1056,7 @@ "message": "किसी ऐसे सर्विस वर्कर को रजिस्टर करता है जो पेज और `start_url` को नियंत्रित करता है" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "उपयोगकर्ता जब अपनी होमस्क्रीन से आपका ऐप्लिकेशन लॉन्च करते हैं, तो थीम वाली स्प्लैश स्क्रीन की वजह से इसका इस्तेमाल करने वालों को अच्छा अनुभव मिलता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "उपयोगकर्ता जब अपनी होमस्क्रीन से आपका ऐप्लिकेशन लॉन्च करते हैं, तो थीम वाली स्प्लैश स्क्रीन की वजह से इस्तेमाल करने वालों को अच्छा अनुभव मिलता है. [ज़्यादा जानें](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "पसंद के मुताबिक स्प्लैश स्क्रीन के लिए कॉन्फ़िगर नहीं किया गया" @@ -1065,13 +1065,13 @@ "message": "पसंद के मुताबिक स्प्लैश स्क्रीन के लिए कॉन्फ़िगर किया गया" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "ब्राउज़र का पता बार आपकी वेबसाइट से मेल खाए, इसके लिए थीम इस्तेमाल कर सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "ब्राउज़र के 'पता बार' की थीम ऐसी हो सकती है जो आपकी वेबसाइट से मेल खाए. [ज़्यादा जानें](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { - "message": "पता बार के लिए थीम का रंग सेट नहीं करता है." + "message": "'पता बार' के लिए थीम का रंग सेट नहीं करता है." }, "lighthouse-core/audits/themed-omnibox.js | title": { - "message": "पता बार के लिए थीम का रंग सेट करता है." + "message": "'पता बार' के लिए थीम का रंग सेट करता है." }, "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": { "message": "मुख्य थ्रेड ब्लॉक होने का समय" @@ -1092,7 +1092,7 @@ "message": "इसका इस्तेमाल तीसरा पक्ष करता है" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "पहली बाइट का समय, उस समय की पहचान करता है जब आपका सर्वर कोई जवाब भेजता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "पहली बाइट का समय, उस समय की पहचान करता है जब आपका सर्वर कोई जवाब भेजता है. [ज़्यादा जानें](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "रुट दस्तावेज़ बनने में {timeInMs, number, milliseconds} मि.से. का समय लगा" @@ -1113,7 +1113,7 @@ "message": "प्रकार" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "मुख्य उपयोगकर्ता अनुभवों के दौरान, असली दुनिया के माप तैयार करने के लिए अपने ऐप्लिकेशन को 'उपयोगकर्ता समय एपीआई' की मदद से तैयार करें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "मुख्य उपयोगकर्ता अनुभवों के दौरान, असली दुनिया के माप तैयार करने के लिए अपने ऐप्लिकेशन को 'उपयोगकर्ता समय एपीआई' की मदद से तैयार करें. [ज़्यादा जानें](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 उपयोगकर्ता समय}one{# उपयोगकर्ता समय}other{# उपयोगकर्ता समय}}" @@ -1125,7 +1125,7 @@ "message": "\"{securityOrigin}\" के लिए पहले से कनेक्ट किया गया <link> मिला, लेकिन ब्राउज़र ने इसका इस्तेमाल नहीं किया था. यह पक्का कर लें कि आप `crossorigin` विशेषता का इस्तेमाल ठीक से कर रहे हैं." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "तीसरे पक्ष के मूल से जल्दी कनेक्शन बनाने के लिए `preconnect` या `dns-prefetch` संसाधन संकेत जोड़ें. [ज़्यादा जानें](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "तीसरे पक्ष से जल्दी कनेक्शन बनाने के लिए `preconnect` या `dns-prefetch` संसाधन संकेत जोड़ें. [ज़्यादा जानें](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "ज़रूरी मूल से प्री-कनेक्ट करें" @@ -1134,13 +1134,13 @@ "message": "\"{preloadURL}\" के लिए पहले से लोड किया गया <link> मिला, लेकिन ब्राउज़र ने इसका इस्तेमाल नहीं किया था. यह पक्का कर लें कि आप `crossorigin` विशेषता का इस्तेमाल ठीक से कर रहे हैं." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "`<link rel=preload>` का इस्तेमाल करके उन संसाधनों को पाने को प्राथमिकता दें जिन्हें फ़िलहाल पेज लोड में 'बाद में चाहिए होंगे' का दर्जा दिया गया है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "`<link rel=preload>` का इस्तेमाल करके उन संसाधनों को पाने को प्राथमिकता दें जिन्हें फ़िलहाल पेज लोड में 'बाद में चाहिए होंगे' का दर्जा दिया गया है. [ज़्यादा जानें](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "प्रमुख अनुरोधों को पहले से लोड करें" }, "lighthouse-core/audits/viewport.js | description": { - "message": "अपने ऐप्लिकेशन को किसी भी मोबाइल स्क्रीन पर ऑप्टिमाइज़ करने के लिए `<meta name=\"viewport\">` टैग जोड़ें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "अपने ऐप्लिकेशन को किसी भी मोबाइल स्क्रीन पर ऑप्टिमाइज़ करने के लिए `<meta name=\"viewport\">` टैग जोड़ें. [ज़्यादा जानें](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "कोई `<meta name=\"viewport\">` टैग नहीं मिला" @@ -1152,28 +1152,28 @@ "message": "वेब पेज पर `width` या `initial-scale` वाला `<meta name=\"viewport\">` टैग है" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "JavaScript बंद होने पर भी आपके ऐप्लिकेशन की कुछ सामग्री दिखाई देनी चाहिए. भले ही वह उपयोगकर्ता को दी जाने वाली एक चेतावनी हो कि ऐप्लिकेशन को इस्तेमाल करने के लिए JavaScript ज़रूरी है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "JavaScript बंद होने पर भी आपके ऐप्लिकेशन की कुछ सामग्री दिखाई देनी चाहिए. भले ही वह उपयोगकर्ता को दी जाने वाली एक चेतावनी हो कि ऐप्लिकेशन को इस्तेमाल करने के लिए JavaScript ज़रूरी है. [ज़्यादा जानें](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "अगर इसकी स्क्रिप्ट उपलब्ध नहीं हैं, तो पेज के मुख्य हिस्से को कुछ सामग्री रेंडर करनी चाहिए या उसकी इमेज बनानी चाहिए." }, "lighthouse-core/audits/without-javascript.js | failureTitle": { - "message": "यह वेब पेज, JavaScript उपलब्ध न होने पर फ़ॉलबैक सामग्री मुहैया नहीं करवाता है" + "message": "यह वेब पेज, JavaScript उपलब्ध न होने पर फ़ॉलबैक सामग्री मुहैया नहीं कराता है" }, "lighthouse-core/audits/without-javascript.js | title": { "message": "यह वेब पेज, JavaScript उपलब्ध नहीं होने पर कुछ सामग्री दिखाता है" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "अगर आप एक प्रगतिशील वेब ऐप्लिकेशन बना रहे हैं, तो सर्विस वर्कर का इस्तेमाल करें, ताकि आपका ऐप्लिकेशन ऑफ़लाइन भी काम कर सके. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "अगर आप एक प्रगतिशील वेब ऐप्लिकेशन बना रहे हैं, तो सर्विस वर्कर का इस्तेमाल करें, ताकि आपका ऐप्लिकेशन ऑफ़लाइन भी काम कर सके. [ज़्यादा जानें](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { - "message": "ऑफ़लाइन होने पर, मौजूदा पेज \"200\" कोड (एचटीटीपी स्टेटस कोड जिसका मतलब है कि एचटीटीपी स्तर पर ट्रांसमिशन ठीक है) का जवाब नहीं देता है" + "message": "ऑफ़लाइन होने पर, मौजूदा पेज \"200\" कोड का जवाब नहीं देता है" }, "lighthouse-core/audits/works-offline.js | title": { "message": "ऑफ़लाइन होने पर, मौजूदा पेज \"200\" कोड का जवाब देता है" }, "lighthouse-core/audits/works-offline.js | warningNoLoad": { - "message": "ऐसा हो सकता है कि ऑफ़लाइन होने पर पेज इसलिए लोड नहीं हो रहा है, क्योंकि आपका टेस्ट यूआरएल ({requested}) को \"{final}\" की ओर रीडायरेक्ट किया गया था. टेस्टिंग के लिए सीधे दूसरी यूआरएल आज़माएं." + "message": "ऐसा हो सकता है कि ऑफ़लाइन होने पर पेज इसलिए लोड नहीं हो रहा है, क्योंकि आपका टेस्ट यूआरएल ({requested}) को \"{final}\" की ओर रीडायरेक्ट किया गया था. टेस्टिंग के लिए सीधे दूसरा यूआरएल आज़माएं." }, "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": { "message": "ये आपके ऐप्लिकेशन में ARIA के इस्तेमाल को बेहतर बनाने के अवसर हैं, जिससे उपयोगकर्ताओं का स्क्रीन रीडर जैसी सहायक तकनीक का अनुभव बेहतर हो सकता है."
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hr.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hr.json index 824fde1..78e5b08e 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hr.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hr.json
@@ -30,10 +30,10 @@ "message": "Neke nadređene uloge ARIA moraju sadržavati posebne podređene uloge za izvršavanje svojih namijenjenih funkcija pristupačnosti. [Saznajte više](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Nedostaju elementi s ulogom `[role]` koji zahtijevaju određene podređene elemente `[role]`." + "message": "Elementi s ARIA-om `[role]` koji zahtijevaju da podređeni elementi sadrže određenu ulogu `[role]` ne sadrže neke ili sve te obavezne podređene elemente." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Prisutni su elementi s ulogom `[role]` koji zahtijevaju određene podređene elemente `[role]`." + "message": "Elementi s ARIA-om `[role]` koji zahtijevaju da podređeni elementi sadrže određenu ulogu `[role]` imaju sve obavezne podređene elemente." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Određene nadređene uloge moraju sadržavati neke podređene uloge ARIA kako bi mogle pravilno izvršavati namijenjene funkcije pristupačnosti. [Saznajte više](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Čitači zaslona sadrže značajke za olakšavanje kretanja po tablicama. Potrebno je pripaziti da se ćelije `<td>` koje upotrebljavaju atribut `[headers]` odnose samo na druge ćelije u istoj tablici kako bi se korisnicima čitača zaslona omogućio bolji doživljaj. [Saznajte više](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Ćelije u elementu `<table>` koje upotrebljavaju atribut `[headers]` odnose se na druge ćelije te iste tablice." + "message": "Ćelije u elementu `<table>` koje upotrebljavaju atribut `[headers]` odnose se na element `id` koji nije pronađen unutar iste tablice." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Ćelije u elementu `<table>`koje upotrebljavaju atribut `[headers]` odnose se samo na druge ćelije u toj istoj tablici." + "message": "Ćelije u elementu `<table>` koje upotrebljavaju atribut `[headers]` odnose se na ćelije tablice unutar iste tablice." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Čitači zaslona sadrže značajke za olakšavanje kretanja po tablicama. Osiguravanje da se zaglavlja tablice uvijek odnose na neki skup ćelija može poboljšati doživljaj za korisnike čitača zaslona. [Saznajte više](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Elementi `<video>` sadržavaju element `<track>` s `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Za idealan izgled na iOS-u kad korisnici na početni zaslon dodaju progresivnu web-aplikaciju definirajte `apple-touch-icon`. Mora ukazivati na neprozirni kvadratni PNG od 192 px (ili 180 px). [Saznajte više](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Za idealan izgled na iOS-u kad korisnici na početni zaslon dodaju progresivnu web-aplikaciju definirajte `apple-touch-icon`. Mora ukazivati na neprozirni kvadratni PNG od 192 px (ili 180 px). [Saznajte više](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Ne pruža valjani `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Ukupno vrijeme CPU-a" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Savjetujemo vam da skratite vrijeme potrebno za raščlambu, kompiliranje i izvršavanje JS-a. Isporuka manjih JS-ova mogla bi vam pomoći da to postignete. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Savjetujemo vam da skratite vrijeme potrebno za raščlambu, kompiliranje i izvršavanje JS-a. Isporuka manjih JS-ova mogla bi vam pomoći da to postignete. [Saznajte više](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Skratite vrijeme izvršavanja JavaScripta" @@ -351,25 +351,25 @@ "message": "Vrijeme izvršavanja JavaScripta" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Veliki GIF-ovi nisu učinkoviti za prikaz animiranog sadržaja. Savjetujemo vam da umjesto GIF-a upotrebljavate MPEG4/WebM videozapise za animacije i PNG/WebP za statične slike da biste smanjili količinu mrežnih bajtova. [Saznajte više](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Veliki GIF-ovi nisu učinkoviti za prikaz animiranog sadržaja. Savjetujemo vam da umjesto GIF-a upotrebljavate MPEG4/WebM videozapise za animacije i PNG/WebP za statične slike da biste smanjili količinu mrežnih bajtova. [Saznajte više](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Upotrebljavajte formate videozapisa za animirani sadržaj" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Za slike izvan zaslona i skrivene slike savjetujemo odgođeno učitavanje nakon što se učitaju svi kritični resursi da biste skratili vrijeme do interaktivnosti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Za slike izvan zaslona i skrivene slike savjetujemo odgođeno učitavanje nakon što se učitaju svi kritični resursi da biste skratili vrijeme do interaktivnosti. [Saznajte više](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Odgodite slike izvan zaslona" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resursi blokiraju prvo renderiranje vaše stranice. Savjetujemo vam da kljulan JS/CSS isporučite u tekstu te da da odgodite sve JS-ove/stilove koji nisu ključni. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resursi blokiraju prvo renderiranje vaše stranice. Savjetujemo vam da kljulan JS/CSS isporučite u tekstu te da da odgodite sve JS-ove/stilove koji nisu ključni. [Saznajte više](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Uklonite resurse koji blokiraju generiranje" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Veliki mrežni resursi korisnicima uzrokuju stvarne novčane troškove i usko koreliraju s dugim vremenom učitavanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Veliki mrežni resursi korisnicima uzrokuju stvarne novčane troškove i usko koreliraju s dugim vremenom učitavanja. [Saznajte više](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Ukupna veličina bila je {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Izbjegava ogromne mrežne resurse" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Umanjenjem CSS datoteka mogu se smanjiti veličine mrežnih resursa. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Umanjenjem CSS datoteka mogu se smanjiti veličine mrežnih resursa. [Saznajte više](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Umanjite CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Umanjenjem JavaScript datoteka mogu se smanjiti veličine resursa i skratiti vrijeme raščlambe skripte. [Saznajte više](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Umanjenjem JavaScript datoteka mogu se smanjiti veličine resursa i skratiti vrijeme raščlambe skripte. [Saznajte više](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Umanjite JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Uklonite nepotrebna pravila iz stilskih tablica i odgodite učitavanje CSS-a koji se ne koristi za sadržaj na vidljivom dijelu stranice kako biste smanjili nepotrebnu potrošnju bajtova u mrežnoj aktivnosti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Uklonite nepotrebna pravila iz stilskih tablica i odgodite učitavanje CSS-a koji se ne koristi za sadržaj na vidljivom dijelu stranice kako biste smanjili nepotrebnu potrošnju bajtova u mrežnoj aktivnosti. [Saznajte više](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Uklonite CSS koji se ne koristi" @@ -405,7 +405,7 @@ "message": "Uklonite nekorišteni JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Dugotrajno predmemoriranje može ubrzati ponovljene posjete vašoj stranici. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Dugotrajno predmemoriranje može ubrzati ponovljene posjete vašoj stranici. [Saznajte više](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Pronađen je jedan resurs}one{Pronađen je # resurs}few{Pronađena su # resursa}other{Pronađeno je # resursa}}" @@ -417,31 +417,31 @@ "message": "Upotrebljava pravila učinkovitog predmemoriranja za statične elemente" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimizirane slike učitavaju se brže i troše manje mobilnih podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimizirane slike učitavaju se brže i troše manje mobilnih podataka. [Saznajte više](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Kodirajte slike učinkovito" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Poslužite slike prikladnih veličina da biste uštedjeli mobilne podatke i poboljšali vrijeme učitavanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Poslužite slike prikladnih veličina da biste uštedjeli mobilne podatke i poboljšali vrijeme učitavanja. [Saznajte više](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Postavite slike u odgovarajućoj veličini" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Tekstualni resursi trebaju se posluživati s kompresijom (gzip, deflate ili brotli) radi minimiziranja ukupne količine mrežnih bajtova. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Tekstualni resursi trebaju se posluživati s kompresijom (gzip, deflate ili brotli) radi minimiziranja ukupne količine mrežnih bajtova. [Saznajte više](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Omogućite sažimanje teksta" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Formati slike kao što su JPEG 2000, JPEG XR i WebP često pružaju bolje sažimanje nego PNG ili JPEG, što znači brža preuzimanja i manju potrošnju podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Formati slike kao što su JPEG 2000, JPEG XR i WebP često pružaju bolje sažimanje nego PNG ili JPEG, što znači brža preuzimanja i manju potrošnju podataka. [Saznajte više](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Poslužite slike u modernim formatima" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Ako se širina sadržaja vaše aplikacije ne podudara s vidljivim dijelom, vaša aplikacija možda neće biti optimizirana za mobilne zaslone. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Ako se širina sadržaja vaše aplikacije ne podudara s vidljivim dijelom, vaša aplikacija možda neće biti optimizirana za mobilne zaslone. [Saznajte više](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Veličina vidljivog dijela od {innerWidth} px ne podudara se s veličinom prozora od {outerWidth} px." @@ -453,7 +453,7 @@ "message": "Sadržaj je ispravne veličine za vidljivi dio" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Lanci kritičkih zahtjeva u nastavku prikazuju koji se resursi učitavaju s visokim prioritetom. Savjetujemo vam da skratite duljinu lanaca, smanjite veličinu resursa za preuzimanje ili odgodite preuzimanje resursa koji nisu nužni kako biste poboljšali učitavanje stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Lanci kritičkih zahtjeva u nastavku prikazuju koji se resursi učitavaju s visokim prioritetom. Savjetujemo vam da skratite duljinu lanaca, smanjite veličinu resursa za preuzimanje ili odgodite preuzimanje resursa koji nisu nužni kako biste poboljšali učitavanje stranice. [Saznajte više](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Pronađen je jedan lanac}one{Pronađen je # lanac}few{Pronađena su # lanca}other{Pronađeno je # lanaca}}" @@ -675,7 +675,7 @@ "message": "Na konzoli nema zabilježenih pogrešaka preglednika" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Iskoristite CSS značajku za prikaz fontova kako bi tekst bio vidljiv korisnicima dok se web-fontovi učitavaju. [Saznajte više](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Iskoristite CSS značajku za prikaz fontova kako bi tekst bio vidljiv korisnicima dok se web-fontovi učitavaju. [Saznajte više](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Neka tekst ostaje vidljiv tijekom učitavanja web-fontova" @@ -705,7 +705,7 @@ "message": "Nevažeće informacije o veličini slike {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Preglednici mogu proaktivno zatražiti od korisnika da dodaju vašu aplikaciju na početni zaslon, što može dovesti do veće angažiranosti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Preglednici mogu proaktivno zatražiti od korisnika da dodaju vašu aplikaciju na početni zaslon, što može dovesti do veće angažiranosti. [Saznajte više](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Manifest web-aplikacije ne udovoljava zahtjevima za instalaciju" @@ -729,7 +729,7 @@ "message": "Upotrebljava HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Brzo učitavanje stranice putem mobilne mreže omogućuje dobar doživljaj korisnicima na mobilnim uređajima. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Brzo učitavanje stranice putem mobilne mreže omogućuje dobar doživljaj korisnicima na mobilnim uređajima. [Saznajte više](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktivno u {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategorija" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Savjetujemo vam da skratite vrijeme potrebno za raščlambu, kompiliranje i izvršavanje JS-a. Isporuka manjih JS-ova mogla bi vam pomoći da to postignete." + "message": "Savjetujemo vam da skratite vrijeme potrebno za raščlambu, kompiliranje i izvršavanje JS-a. Isporuka manjih JS-ova mogla bi vam pomoći da to postignete. [Saznajte više](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimizirajte rad glavne niti" @@ -759,49 +759,49 @@ "message": "Minimizira rad glavne niti" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Da bi dosegle najveći broj korisnika, web-lokacije bi trebale funkcionirati u svakom značajnijem pregledniku. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Da bi dosegle najveći broj korisnika, web-lokacije bi trebale funkcionirati u svakom značajnijem pregledniku. [Saznajte više](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Web-lokacija funkcionira na različitim preglednicima" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Pobrinite se da su sve individualne stranice dubinski povezane putem URL-a i da su URL-ovi jedinstveni radi dijeljenja na društvenim medijima. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Pobrinite se da su sve individualne stranice dubinski povezane putem URL-a i da su URL-ovi jedinstveni radi dijeljenja na društvenim medijima. [Saznajte više](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Svaka stranica ima URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Pri dodirivanju stavki prijelazi bi trebali biti brzi, čak i na sporoj mreži, što je ključno za percepciju izvedbe. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Pri dodirivanju stavki prijelazi bi trebali biti brzi, čak i na sporoj mreži. To je ključno za korisnikovu percepciju izvedbe. [Saznajte više](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Ne čini se da se prijelazi stranica blokiraju na mreži" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Procijenjena latencija unosa procjena je vremena koje je potrebno da vaša aplikacija reagira na korisnički unos, u milisekundama, tijekom najintenzivnijih pet sekundi učitavanja stranice. Ako je latencija viša od 50 ms, korisnici mogu doživjeti vašu aplikaciju kao usporenu. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Procijenjena latencija unosa procjena je vremena koje je potrebno da vaša aplikacija reagira na korisnički unos, u milisekundama, tijekom najintenzivnijih pet sekundi učitavanja stranice. Ako je latencija viša od 50 ms, korisnici mogu doživjeti vašu aplikaciju kao usporenu. [Saznajte više](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Procijenjena latencija unosa" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Prvo renderiranje sadržaja označava vrijeme renderiranja prvog teksta ili slike. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Prvo renderiranje sadržaja označava vrijeme renderiranja prvog teksta ili slike. [Saznajte više](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Prvo bojenje sadržaja" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Prvi procesor u mirovanju označava prvi trenutak u kojem je glavna nit stranice dovoljno neopterećena da bi obradila unos. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Prvi procesor u mirovanju označava prvi trenutak u kojem je glavna nit stranice dovoljno neopterećena da bi obradila unos. [Saznajte više](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Prvi procesor u mirovanju" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Prvo korisno renderiranje mjeri kada je vidljiv primarni sadržaj stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Prvo korisno renderiranje mjeri kada je vidljiv primarni sadržaj stranice. [Saznajte više](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Prvo smisleno bojenje" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Vrijeme do interaktivnosti količina je vremena koje je potrebno da stranica postane potpuno interaktivna. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Vrijeme do interaktivnosti količina je vremena koje je potrebno da stranica postane potpuno interaktivna. [Saznajte više](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Vrijeme do interaktivnosti" @@ -813,7 +813,7 @@ "message": "Maks. potencijalno kašnjenje odgovora na prvi unos" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Indeks brzine prikazuje koliko se brzo sadržaj stranice vidljivo popunjava. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Indeks brzine prikazuje koliko se brzo sadržaj stranice vidljivo popunjava. [Saznajte više](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Indeks brzine" @@ -837,7 +837,7 @@ "message": "Pozadinske latencije poslužitelja" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Uslužni alat omogućava web-aplikaciji da bude pouzdana u nepredvidivim mrežnim uvjetima. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Uslužni alat omogućava web-aplikaciji da bude pouzdana u nepredvidivim mrežnim uvjetima. [Saznajte više](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "Za `start_url` ne prikazuje se kôd 200 kad je offline" @@ -861,7 +861,7 @@ "message": "Proračun za izvedbu" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Ako ste već postavili HTTPS, provjerite preusmjeravate li sav HTTP promet na HTTPS kako biste omogućili sigurne web-značajke za sve korisnike. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Ako ste već postavili HTTPS, provjerite preusmjeravate li sav HTTP promet na HTTPS kako biste omogućili sigurne web-značajke za sve korisnike. [Saznajte više](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Ne preusmjerava HTTP promet na HTTPS" @@ -870,7 +870,7 @@ "message": "Preusmjerava HTTP promet na HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Preusmjeravanja uvode dodatna kašnjenja prije nego što se stranica može učitati. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Preusmjeravanja uvode dodatna kašnjenja prije nego što se stranica može učitati. [Saznajte više](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Izbjegavajte višestruka preusmjeravanja stranica" @@ -1035,7 +1035,7 @@ "message": "Ciljevi dodira odgovarajuće su veličine" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Uslužni alat jest tehnologija koja aplikaciji omogućava korištenje brojnih značajki progresivne web-aplikacije, kao što je offline rad, dodavanje na početni zaslon i push obavijesti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Uslužni alat jest tehnologija koja aplikaciji omogućava korištenje brojnih značajki progresivne web-aplikacije, kao što je offline rad, dodavanje na početni zaslon i push obavijesti. [Saznajte više](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Ovom stranicom upravlja uslužni alat, no nije pronađen `start_url` jer manifest nije raščlanjen kao važeći JSON" @@ -1056,7 +1056,7 @@ "message": "Registrira uslužni alat koji upravlja stranicom i `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Tematski pozdravni zaslon pruža bolji doživljaj korisnicima koji pokreću vašu aplikaciju na početnom zaslonu. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Tematski pozdravni zaslon pruža bolji doživljaj korisnicima koji pokreću vašu aplikaciju na početnom zaslonu. [Saznajte više](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nije konfigurirano za prilagođeni pozdravni zaslon" @@ -1065,7 +1065,7 @@ "message": "Konfiguriran za prilagođeni pozdravni zaslon" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Adresna traka preglednika može se tematski podudarati s vašom web-lokacijom. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Adresna traka preglednika može se tematski podudarati s vašom web-lokacijom. [Saznajte više](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Ne postavlja boju teme za adresnu traku." @@ -1092,7 +1092,7 @@ "message": "Upotreba treće strane" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Vrijeme do prvog bajta navodi vrijeme u koje poslužitelj šalje odgovor. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Vrijeme do prvog bajta navodi vrijeme u koje poslužitelj šalje odgovor. [Saznajte više](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Za korijenski dokument bilo je potrebno {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Vrsta" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Savjetujemo vam da na aplikaciju primijenite API za praćenje korisničkog vremena radi mjerenja izvedbe aplikacije u stvarnom vremenu tijekom važnih korisničkih doživljaja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Savjetujemo vam da na aplikaciju primijenite API za praćenje korisničkog vremena radi mjerenja izvedbe aplikacije u stvarnom vremenu tijekom važnih korisničkih doživljaja. [Saznajte više](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{Jedno praćenje korisničkog vremena}one{# praćenje korisničkog vremena}few{# praćenja korisničkog vremena}other{# praćenja korisničkog vremena}}" @@ -1125,7 +1125,7 @@ "message": "Pronađen je <link> za pretpovezivanje za „{securityOrigin}”, ali ga preglednik nije upotrijebio. Provjerite upotrebljavate li atribut `crossorigin` pravilno." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Savjetujemo vam da dodate `preconnect` ili `dns-prefetch` prilagodbe resursa radi uspostavljanja ranih veza s važnim izvorima trećih strana. [Saznajte više](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Savjetujemo vam da dodate `preconnect` ili `dns-prefetch` prilagodbe resursa radi uspostavljanja ranih veza s važnim izvorima trećih strana. [Saznajte više](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Rano se povežite s potrebnim izvorima" @@ -1134,13 +1134,13 @@ "message": "Za „{preloadURL}” pronađen je <link> za predučitavanje, no preglednik ga nije upotrijebio. Provjerite upotrebljavate li atribut `crossorigin` pravilno." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Savjetujemo vam da koristite `<link rel=preload>` da biste dali prednost dohvaćanju resursa koji se trenutačno traže kasnije u učitavanju stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Savjetujemo vam da koristite `<link rel=preload>` da biste dali prednost dohvaćanju resursa koji se trenutačno traže kasnije u učitavanju stranice. [Saznajte više](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Unaprijed učitajte ključne zahtjeve" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Dodajte oznaku `<meta name=\"viewport\">` da biste optimizirali svoju aplikaciju za mobilne zaslone. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Dodajte oznaku `<meta name=\"viewport\">` da biste optimizirali svoju aplikaciju za mobilne zaslone. [Saznajte više](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nijedna oznaka `<meta name=\"viewport\">` nije pronađena" @@ -1152,7 +1152,7 @@ "message": "Ima oznaku `<meta name=\"viewport\">` s `width` ili `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Vaša aplikacija trebala bi prikazati bilo kakav sadržaj kada je onemogućen JavaScript, čak i ako je to samo upozorenje da je JavaScript obavezan za korištenje aplikacije. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Vaša aplikacija trebala bi prikazati bilo kakav sadržaj kada je onemogućen JavaScript, čak i ako je to samo upozorenje da je JavaScript obavezan za korištenje aplikacije. [Saznajte više](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Tijelo stranice trebalo bi generirati bilo kakav sadržaj ako skripte nisu dostupne." @@ -1164,7 +1164,7 @@ "message": "Prikazuje se bilo kakav sadržaj kada JavaScript nije dostupan" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Ako razvijate progresivnu web-aplikaciju, razmislite o korištenju uslužnog alata tako da aplikacija može funkcionirati offline. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Ako razvijate progresivnu web-aplikaciju, razmislite o korištenju uslužnog alata tako da aplikacija može funkcionirati offline. [Saznajte više](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Za trenutačnu stranicu ne prikazuje se kôd 200 kad je offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hu.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hu.json index 159ede5..954acd04 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hu.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hu.json
@@ -30,10 +30,10 @@ "message": "Bizonyos fölérendelt ARIA-szerepköröknek meghatározott alárendelt szerepköröket kell tartalmazniuk, hogy megfelelően teljesíthessék a kívánt kisegítő funkciójukat. [További információ](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Hiányoznak a(z) `[role]` tartalmú leszármazottai azon `[role]` tartalmú elemeknek, melyek meghatározott leszármazott elemeket igényelnek" + "message": "Olyan ARIA `[role]` attribútummal rendelkező elemekből, melyek gyermekelemeiben kell lennie adott `[role]` attribútumnak, hiányzik ezeknek a kötelező gyermekelemeknek mindegyike vagy némelyike." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "A meghatározott `[role]` tartalmú leszármazottakat igénylő `[role]` tartalmú elemek rendelkeznek a szükséges leszármazottakkal." + "message": "Olyan ARIA `[role]` attribútummal rendelkező elemekben, melyek gyermekelemeiben kell lennie adott `[role]` attribútumnak, megvan a kötelező gyermekelemek mindegyike." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Bizonyos alárendelt ARIA-szerepköröket meghatározott fölérendelt szerepköröknek kell tartalmazniuk, hogy megfelelően teljesíthessék a kívánt kisegítő funkciójukat. [További információ](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "A képernyőolvasók olyan funkciókkal is rendelkeznek, amelyek megkönnyítik a táblázatokban való navigációt. Ha a(z) `[headers]` attribútumot használó `<td>` cellák csak a saját táblázatuk más celláira hivatkoznak, jobb felhasználói élményt nyújthat a képernyő felolvasása során. [További információ](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "A(z) `<table>` elemben lévő, `[headers]` attribútumot használó cellák a saját táblázatuk celláira hivatkoznak." + "message": "Az egyik `<table>` elemben lévő, `[headers]` attribútumot használó cellák olyan `id` elemre hivatkoznak, amely nem található meg ugyanabban a táblázatban." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "A(z) `<table>` elemben lévő, `[headers]` attribútumot használó cellák csak a saját táblázatuk celláira hivatkoznak." + "message": "Az egyik `<table>` elemben lévő, `[headers]` attribútumot használó cellák a saját táblázatuk celláira hivatkoznak." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "A képernyőolvasók olyan funkciókkal is rendelkeznek, amelyek megkönnyítik a táblázatokban való navigációt. Ha biztosítja, hogy a táblák fejlécei mindig hivatkozzanak cellákra, megkönnyítheti az oldal használatát a képernyőolvasóra hagyatkozó felhasználók számára. [További információ](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "A(z) `<video>` elemekhez `[kind=\"description\"]` tartalmú `<track>` elem tartozik" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Ha azt szeretné, hogy a megjelenés ideális legyen iOS rendszeren, amikor a felhasználók progresszív webes alkalmazást adnak hozzá a kezdőképernyőhöz, határozzon meg egy `apple-touch-icon` elemet. Az ikonnak 192 képpont (vagy 180 képpont) méretű, nem átlátszó, négyzetes PNG-re kell mutatnia. [További információ](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Ha azt szeretné, hogy a megjelenés ideális legyen iOS rendszeren, amikor a felhasználók progresszív webes alkalmazást adnak hozzá a kezdőképernyőhöz, határozzon meg egy `apple-touch-icon` elemet. Az ikonnak 192 képpont (vagy 180 képpont) méretű, nem átlátszó, négyzetes PNG-re kell mutatnia. [További információ](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Nincs érvényes `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Teljes processzoridő" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Érdemes csökkenteni a JavaScript értelmezésére, összeállítására és végrehajtására fordított időt. Ebben segíthet, ha kisebb méretű JavaScript-forrásokat továbbít. [További információ](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Érdemes csökkenteni a JavaScript értelmezésére, összeállítására és végrehajtására fordított időt. Ebben segíthet, ha kisebb méretű JavaScript-forrásokat továbbít. [További információ](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Csökkentse a JavaScript végrehajtási idejét" @@ -351,25 +351,25 @@ "message": "JavaScript végrehajtási ideje" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "A túl nagy GIF-fájlokkal nem lehet hatékonyan animált tartalmakat nyújtani. Az adatforgalom csökkentésének érdekében a GIF-ek helyett érdemes az animációkhoz MPEG4-/WebM-videókat használnia, a statikus képekhez pedig PNG-/WebP-képeket. [További információ](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "A túl nagy GIF-fájlokkal nem lehet hatékonyan animált tartalmakat nyújtani. Az adatforgalom csökkentésének érdekében a GIF-ek helyett érdemes az animációkhoz MPEG4-/WebM-videókat használnia, a statikus képekhez pedig PNG-/WebP-képeket. [További információ](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Használjon videoformátumot az animált tartalmakhoz" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Vegye fontolóra a képernyőn kívüli és rejtett képek késleltetett, kritikus források utáni betöltését, hogy az oldal hamarabb interaktívvá váljon. [További információ](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Vegye fontolóra a képernyőn kívüli és rejtett képek késleltetett, kritikus források utáni betöltését, hogy az oldal hamarabb interaktívvá váljon. [További információ](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Késleltesse a képernyőn kívüli képek betöltését" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Források blokkolják az oldal első vizuális válaszát. Javasoljuk, hogy a legfontosabb JavaScript-/CSS-elemeket beágyazva továbbítsa, a nem fontos JS-t/CSS-t pedig késleltesse [További információ](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Források blokkolják az oldal első vizuális válaszát. Javasoljuk, hogy a legfontosabb JavaScript-/CSS-elemeket beágyazva továbbítsa, a nem fontos JS-t/CSS-t pedig késleltesse [További információ](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Távolítsa el a megjelenítést gátló erőforrásokat" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "A nagy hálózati terhelés tényleges anyagi költséget jelenthet a felhasználóknak, és jellemzően jelentősen megnöveli a betöltési időt. [További információ](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "A nagy hálózati terhelés tényleges anyagi költséget jelenthet a felhasználóknak, és jellemzően jelentősen megnöveli a betöltési időt. [További információ](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "A teljes méret {totalBytes, number, bytes} kB volt" @@ -381,19 +381,19 @@ "message": "A nagyon nagy hálózati terhelés elkerülése" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "A CSS-fájlok minimalizálása csökkentheti a hálózaton továbbított adatok méretét. [További információ](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "A CSS-fájlok minimalizálása csökkentheti a hálózaton továbbított adatok méretét. [További információ](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minimalizálja a CSS-fájlokat" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "A JavaScript-fájlok minimalizálásával csökkenthető a továbbított adatok mérete és a szkriptek értelmezésére fordított idő. [További információ](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "A JavaScript-fájlok minimalizálásával csökkenthető a továbbított adatok mérete és a szkriptek értelmezésére fordított idő. [További információ](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minimalizálja a JavaScript-kódot" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "A stíluslapok érvénytelen szabályainak eltávolításával és a hajtás feletti tartalomhoz nem használt CSS-kód betöltésének késleltetésével csökkentheti a hálózati tevékenység által felhasznált bájtmennyiséget. [További információ](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "A stíluslapok érvénytelen szabályainak eltávolításával és a hajtás feletti tartalomhoz nem használt CSS-kód betöltésének késleltetésével csökkentheti a hálózati tevékenység által felhasznált bájtmennyiséget. [További információ](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Távolítsa el a nem használt CSS-kódot" @@ -405,7 +405,7 @@ "message": "Távolítsa el a nem használt JavaScript-kódot" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Ha a gyorsítótárak élettartama hosszú, gyorsabbá válnak a weboldal későbbi ismételt megnyitásai. [További információ](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Ha a gyorsítótárak élettartama hosszú, gyorsabbá válnak a weboldal későbbi ismételt megnyitásai. [További információ](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 erőforrás található}other{# erőforrás található}}" @@ -417,31 +417,31 @@ "message": "Használjon hatékony gyorsítótár-házirendet a statikus eszközöknél" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Az optimalizált képek gyorsabban betöltődnek és kevesebb adatforgalmat generálnak. [További információ](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Az optimalizált képek gyorsabban betöltődnek és kevesebb adatforgalmat generálnak. [További információ](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Kódolja hatékonyan a képeket" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Használjon olyan képeket, amelyek megfelelő méretükkel elősegítik a mobiladat-forgalom csökkentését és a betöltési idő javulását. [További információ](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Használjon olyan képeket, amelyek megfelelő méretükkel elősegítik a mobiladat-forgalom csökkentését és a betöltési idő javulását. [További információ](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Méretezze megfelelően a képeket" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "A szövegalapú forrásokat tömörítéssel (gzip, Deflate vagy Brotli) célszerű továbbítani a hálózati adatforgalom minimalizálása érdekében. [További információ](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "A szövegalapú forrásokat tömörítéssel (gzip, Deflate vagy Brotli) célszerű továbbítani a hálózati adatforgalom minimalizálása érdekében. [További információ](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Engedélyezze a szövegtömörítést" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Az olyan képformátumok, mint a JPEG 2000, a JPEG XR és a WebP gyakran jobb tömörítést nyújtanak, mint a PNG és a JPEG, azaz kevesebb adatforgalom mellett gyorsabb letöltést biztosítanak. [További információ](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Az olyan képformátumok, mint a JPEG 2000, a JPEG XR és a WebP gyakran jobb tömörítést nyújtanak, mint a PNG és a JPEG, azaz kevesebb adatforgalom mellett gyorsabb letöltést biztosítanak. [További információ](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Jelenítse meg a képeket következő generációs formátumokban" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Ha az alkalmazás tartalmának szélessége nem egyezik a megjelenítési terület szélességével, akkor lehet, hogy alkalmazása nincs optimalizálva a mobilok képernyőjére. [További információ](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Ha az alkalmazás tartalmának szélessége nem egyezik a megjelenítési terület szélességével, akkor lehet, hogy alkalmazása nincs optimalizálva a mobilok képernyőjére. [További információ](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "A megjelenítési terület mérete ({innerWidth} képpont) nem egyezik az ablak méretével ({outerWidth} képpont)." @@ -453,7 +453,7 @@ "message": "A tartalom megfelelően van méretezve a megjelenítési területhez" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Az alábbi kritikus kérésláncok megjelenítik, hogy milyen források töltődnek be magas prioritással. Az oldalbetöltés javítása érdekében fontolja meg a láncok hosszának csökkentését, a letöltött források méretének csökkentését, vagy a felesleges források letöltésének késleltetését. [További információ](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Az alábbi kritikus kérésláncok megjelenítik, hogy milyen források töltődnek be magas prioritással. Az oldalbetöltés javítása érdekében fontolja meg a láncok hosszának csökkentését, a letöltött források méretének csökkentését, vagy a felesleges források letöltésének késleltetését. [További információ](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 lánc található}other{# lánc található}}" @@ -675,7 +675,7 @@ "message": "Nem került böngészőhiba a konzolra" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Használja a CSS font-display leíróját, hogy a szövegek a webes betűtípusok betöltése közben is biztosan láthatók legyenek a felhasználók számára. [További információ](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Használja a CSS font-display leíróját, hogy a szövegek a webes betűtípusok betöltése közben is biztosan láthatók legyenek a felhasználók számára. [További információ](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Biztosítsa, hogy a szöveg látható marad a webes betűtípusok betöltése során" @@ -705,7 +705,7 @@ "message": "Érvénytelen képméretezési információ {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "A böngészők proaktív módon kérhetik a felhasználókat, hogy adják hozzá az Ön alkalmazását a kezdőképernyőjükhöz, ami erősebb elköteleződéshez vezethet. [További információ](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "A böngészők proaktív módon kérhetik a felhasználókat, hogy adják hozzá az Ön alkalmazását a kezdőképernyőjükhöz, ami erősebb elköteleződéshez vezethet. [További információ](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Az internetes alkalmazás manifestje nem felel meg a telepíthetőségi követelményeknek" @@ -729,7 +729,7 @@ "message": "HTTPS-t használ" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "A mobilhálózatokon is gyors oldalbetöltés jobb mobilos felhasználói élményt jelent. [További információ](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "A mobilhálózatokon is gyors oldalbetöltés jobb mobilos felhasználói élményt jelent. [További információ](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "{timeInMs, number, seconds} mp az interaktívvá válásig" @@ -750,7 +750,7 @@ "message": "Kategória" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Érdemes csökkenteni a JS elemzésére, összeállítására és végrehajtására fordított időt. Ebben segítségére lehet a kisebb JS-hasznosadat-forgalom." + "message": "Érdemes csökkenteni a JavaScript értelmezésére, összeállítására és végrehajtására fordított időt. Ebben segíthet, ha kisebb méretű JavaScript-forrásokat továbbít. [További információ](https://web.dev/mainthread-work-breakdown)." }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimalizálja a fő szál terhelését" @@ -759,49 +759,49 @@ "message": "Minimalizálja a fő szál terhelését" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "A lehető legtöbb felhasználó elérése érdekében a webhelyeknek minden elterjedtebb böngészőben működniük kell. [További információ](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "A lehető legtöbb felhasználó elérése érdekében a webhelyeknek minden elterjedtebb böngészőben működniük kell. [További információ](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "A webhely többféle böngészőben is működik" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Lássa el az egyes oldalakat mélylinkként használható URL-ekkel, és ügyeljen arra, hogy ezek az URL-ek egyediek legyenek a közösségi médiában való megosztás céljából. [További információ](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Lássa el az egyes oldalakat mélylinkként használható URL-ekkel, és ügyeljen arra, hogy ezek az URL-ek egyediek legyenek a közösségi médiában való megosztás céljából. [További információ](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Minden oldal rendelkezik URL-címmel" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "A koppintgatás során az átmeneteknek még lassú hálózaton is gyorsnak kell lenniük – ez az egyik legfontosabb tényező az észlelt teljesítmény tekintetében. [További információ](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "A koppintgatás során az átmeneteknek még lassú hálózaton is gyorsnak kell lenniük. Ez az egyik legfontosabb tényező a felhasználók által észlelt teljesítmény tekintetében. [További információ](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Az oldalak közti váltásnak nem szabadna akadályozni a hálózati forgalmat" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "A becsült bemeneti késés annak a becsült értéke, hogy az alkalmazás mennyi idő alatt reagál – ezredmásodpercben (ms) megadva – a felhasználói interakciókra az oldalbetöltés legforgalmasabb 5 másodperces időkeretében. Ha a várakozási idő meghaladja az 50 ms-ot, a felhasználók lassúnak érezhetik az alkalmazást. [További információ](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "A becsült bemeneti késés annak a becsült értéke, hogy az alkalmazás mennyi idő alatt reagál – ezredmásodpercben (ms) megadva – a felhasználói interakciókra az oldalbetöltés legforgalmasabb 5 másodperces időkeretében. Ha a várakozási idő meghaladja az 50 ms-ot, a felhasználók lassúnak érezhetik az alkalmazást. [További információ](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Becsült bemeneti késés" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Az első vizuális tartalomválasz azt az időpontot jelöli, amikor a rendszer megkezdi az első szöveg vagy kép megjelenítését. [További információ](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Az első vizuális tartalomválasz azt az időpontot jelöli, amikor a rendszer megkezdi az első szöveg vagy kép megjelenítését. [További információ](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Első, tartalommal rendelkező leképezés" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Az első processzor-üresjárat mutató az első olyan alkalmat jelöli, amikor az oldal főszálának aktivitása elég alacsonnyá vált ahhoz, hogy kezelni tudja a felhasználói interakciókat. [További információ](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Az első processzor-üresjárat mutató az első olyan alkalmat jelöli, amikor az oldal főszálának aktivitása elég alacsonnyá vált ahhoz, hogy kezelni tudja a felhasználói interakciókat. [További információ](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Első processzor-üresjárat" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Az első releváns vizuális válasz azt méri, hogy mikor válik láthatóvá az oldal elsődleges tartalma. [További információ](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Az első releváns vizuális válasz azt méri, hogy mikor válik láthatóvá az oldal elsődleges tartalma. [További információ](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Első releváns leképezés" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Az interaktivitásig eltelt idő az az idő, amely ahhoz szükséges, hogy az oldal teljesen interaktívvá váljon. [További információ](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Az interaktivitásig eltelt idő az az idő, amely ahhoz szükséges, hogy az oldal teljesen interaktívvá váljon. [További információ](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Interaktivitásig eltelt idő" @@ -813,7 +813,7 @@ "message": "Első interakciótól számított max. potenciális késés" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "A Sebességindex mutató azt jelzi, hogy az adott oldal tartalmai milyen gyorsan válnak láthatóvá. [További információ](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "A Sebességindex mutató azt jelzi, hogy az adott oldal tartalmai milyen gyorsan válnak láthatóvá. [További információ](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Sebességindex" @@ -837,7 +837,7 @@ "message": "Várakozási idő a háttérszervereknél" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "A szolgáltató munkatársnak köszönhetően internetes alkalmazása előre nem látható hálózati körülmények mellett is megbízhatóan fog működni. [További információ](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "A szolgáltató munkatársnak köszönhetően internetes alkalmazása előre nem látható hálózati körülmények mellett is megbízhatóan fog működni. [További információ](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "A(z) `start_url` nem 200-as állapotkódot küld vissza, amikor offline állapotban van" @@ -861,7 +861,7 @@ "message": "Teljesítménybüdzsé" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Ha már beállította a HTTPS protokollt, gondoskodjon a teljes HTTP-forgalom HTTPS-re történő átirányításáról, hogy a biztonságos webes funkciók az összes felhasználó számára rendelkezésre álljanak. [További információ](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Ha már beállította a HTTPS protokollt, gondoskodjon a teljes HTTP-forgalom HTTPS-re történő átirányításáról, hogy a biztonságos webes funkciók az összes felhasználó számára rendelkezésre álljanak. [További információ](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Nem irányítja át a HTTP-forgalmat HTTPS-re" @@ -870,7 +870,7 @@ "message": "Átirányítja a HTTP-forgalmat HTTPS-re" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Az átirányítások további késlekedéssel hosszabbítják meg az oldalbetöltéshez szükséges időt. [További információ](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Az átirányítások további késlekedéssel hosszabbítják meg az oldalbetöltéshez szükséges időt. [További információ](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Kerülje a többszörös oldalátirányítást" @@ -1035,7 +1035,7 @@ "message": "A koppintási célok mérete megfelelő" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "A szolgáltató munkatárs elnevezésű technológia lehető teszi az alkalmazás számára a progresszív webes alkalmazások funkcióinak használatát. Ilyen funkció például az offline működés, a kezdőképernyőhöz való hozzáadás és a leküldött (push) értesítések. [További információ](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "A szolgáltató munkatárs elnevezésű technológia lehető teszi az alkalmazás számára a progresszív webes alkalmazások funkcióinak használatát. Ilyen funkció például az offline működés, a kezdőképernyőhöz való hozzáadás és a leküldött (push) értesítések. [További információ](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Az oldalt szolgáltató munkatárs vezérli, azonban a(z) `start_url` nem található, ugyanis nem sikerült a manifest érvényes JSON-ként való elemzése" @@ -1056,7 +1056,7 @@ "message": "Olyan szolgáltató munkatársat regisztrál, amely vezérli az oldalt és a(z) `start_url` URL-t" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "A saját témájú betöltési képernyő jó felhasználói élményt eredményez, amikor a kezdőképernyőről indítják el az alkalmazást. [További információ](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "A saját témájú betöltési képernyő jó felhasználói élményt eredményez, amikor a kezdőképernyőről indítják el az alkalmazást. [További információ](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nincs beállítva egyéni betöltési képernyő" @@ -1065,7 +1065,7 @@ "message": "Be van állítva egyéni betöltési képernyő" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "A böngésző címsávjához megadható a webhelyhez illő téma. [További információ](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "A böngésző címsávjához megadható a webhelyhez illő téma. [További információ](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Nem állítja be a téma színét a címsávon." @@ -1092,7 +1092,7 @@ "message": "Harmadik féltől származó kód használata" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Az első bájtig eltelt idő azt mutatja, hogy a szerver mikor küldött választ. [További információ](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Az első bájtig eltelt idő azt mutatja, hogy a szerver mikor küldött választ. [További információ](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "{timeInMs, number, milliseconds} ms a gyökérdokumentumhoz" @@ -1113,7 +1113,7 @@ "message": "Típus" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Érdemes lehet felhasználnia alkalmazásában a User Timing API-t, amellyel valós használat során mért teljesítményadatokat kaphat a legfontosabb felhasználói műveletekről. [További információ](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Érdemes lehet felhasználnia alkalmazásában a User Timing API-t, amellyel valós használat során mért teljesítményadatokat kaphat a legfontosabb felhasználói műveletekről. [További információ](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 felhasználói időmérés}other{# felhasználói időmérés}}" @@ -1125,7 +1125,7 @@ "message": "Előcsatlakozási <link> található a(z) {securityOrigin} címre vonatkozóan, de a böngésző nem használta. Ellenőrizze, hogy megfelelően használja-e a(z) `crossorigin` attribútumot." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Vegye fontolóra `preconnect` vagy `dns-prefetch` erőforrástipp hozzáadását, hogy korai kapcsolatokat hozhasson létre harmadik felekhez tartozó fontos forrásokkal. [További információ](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Vegye fontolóra `preconnect` vagy `dns-prefetch` erőforrástipp hozzáadását, hogy korai kapcsolatokat hozhasson létre harmadik felekhez tartozó fontos forrásokkal. [További információ](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Csatlakozzon előre a szükséges forrásokhoz" @@ -1134,13 +1134,13 @@ "message": "Előtöltési <link> található a(z) {preloadURL} címre vonatkozóan, de a böngésző nem használta. Ellenőrizze, hogy megfelelően használja-e a(z) `crossorigin` attribútumot." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Fontolja meg a(z) `<link rel=preload>` használatát, hogy prioritással tölthesse be azokat a forrásokat, melyeket az aktuális oldalbetöltés egyébként későbbre sorolt. [További információ](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Fontolja meg a(z) `<link rel=preload>` használatát, hogy prioritással tölthesse be azokat a forrásokat, melyeket az aktuális oldalbetöltés egyébként későbbre sorolt. [További információ](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Töltse be előre a kulcsfontosságú kéréseket" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Adjon hozzá `<meta name=\"viewport\">` címkét, amellyel mobilképernyőkre optimalizálhatja az alkalmazást. [További információ](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Adjon hozzá `<meta name=\"viewport\">` címkét, amellyel mobilképernyőkre optimalizálhatja az alkalmazást. [További információ](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nem található `<meta name=\"viewport\">` címke" @@ -1152,7 +1152,7 @@ "message": "Van `width` vagy `initial-scale` beállítással rendelkező `<meta name=\"viewport\">` címkéje" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Az alkalmazásnak akkor is meg kellene jelenítenie valamilyen tartalmat, ha a JavaScript le van tiltva. Ez akár egy figyelmeztetés is lehet, mely szerint JavaScript szükséges az alkalmazás használatához. [További információ](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Az alkalmazásnak akkor is meg kellene jelenítenie valamilyen tartalmat, ha a JavaScript le van tiltva. Ez akár egy figyelmeztetés is lehet, mely szerint JavaScript szükséges az alkalmazás használatához. [További információ](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Az oldal törzsében meg kellene jelennie valamilyen tartalomnak, ha a szkriptek nem használhatók." @@ -1164,7 +1164,7 @@ "message": "Vannak benne tartalmak akkor is, amikor a JavaScript nem használható" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Ha progresszív webes alkalmazást készít, fontolja meg szolgáltató munkatárs használatát, így alkalmazása offline állapotban is működni fog. [További információ](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Ha progresszív webes alkalmazást készít, fontolja meg szolgáltató munkatárs használatát, így alkalmazása offline állapotban is működni fog. [További információ](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "A jelenlegi oldal nem 200-as állapotkódot küld vissza, amikor offline állapotban van"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/id.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/id.json index ef079ba..00007c32 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/id.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/id.json
@@ -30,10 +30,10 @@ "message": "Beberapa peran induk ARIA harus memuat peran turunan tertentu agar dapat menjalankan fungsi aksesibilitas yang diinginkan. [Pelajari lebih lanjut](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Tidak ada elemen dengan `[role]` yang memerlukan `[role]` turunan tertentu." + "message": "Elemen dengan`[role]` ARIA yang mewajibkan turunannya berisi `[role]` tertentu kehilangan beberapa atau semua turunan yang diperlukan." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Elemen dengan `[role]` yang memerlukan `[role]` turunan tertentu sudah ada." + "message": "Elemen dengan `[role]` ARIA yang mewajibkan turunannya berisi `[role]` tertentu memiliki semua turunan yang diperlukan." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Beberapa peran turunan ARIA harus dimuat oleh peran induk tertentu agar dapat menjalankan fungsi aksesibilitas yang diinginkan dengan tepat. [Pelajari lebih lanjut](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Pembaca layar memiliki fitur yang memudahkan navigasi tabel. Memastikan sel `<td>` yang menggunakan atribut `[headers]` hanya merujuk ke sel lain dalam tabel yang sama dapat menyempurnakan pengalaman bagi pengguna pembaca layar. [Pelajari lebih lanjut](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Sel dalam elemen `<table>` yang menggunakan atribut `[headers]` merujuk ke sel lain dalam tabel yang sama." + "message": "Sel di elemen `<table>` yang menggunakan atribut `[headers]` yang merujuk pada elemen `id` tidak ditemukan dalam tabel yang sama." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Sel di elemen `<table>` yang menggunakan atribut `[headers]` hanya merujuk ke sel lain dari tabel yang sama." + "message": "Sel dalam elemen `<table>` yang menggunakan atribut `[headers]` yang merujuk pada sel tabel dalam tabel yang sama." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Pembaca layar memiliki fitur yang memudahkan navigasi tabel. Memastikan header tabel selalu merujuk ke sekumpulan sel dapat menyempurnakan pengalaman bagi pengguna pembaca layar. [Pelajari lebih lanjut](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Elemen `<video>` memuat elemen `<track>` dengan `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Untuk tampilan ideal pada iOS saat pengguna menambahkan progressive web app ke layar utama, tentukan `apple-touch-icon`. Ikon harus mengarah ke PNG persegi 192 piksel (atau 180 piksel) yang tidak transparan. [Pelajari Lebih Lanjut](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Untuk tampilan ideal pada iOS saat pengguna menambahkan progressive web app ke layar utama, tentukan `apple-touch-icon`. Ikon harus mengarah ke PNG persegi 192 piksel (atau 180 piksel) yang tidak transparan. [Pelajari Lebih Lanjut](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Tidak menyediakan `apple-touch-icon` yang valid" @@ -342,7 +342,7 @@ "message": "Waktu CPU Total" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Sebaiknya kurangi waktu yang dihabiskan untuk mengurai, mengompilasi, dan mengeksekusi JS. Coba kirim payload JS yang lebih kecil untuk membantu mengurangi waktu. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Sebaiknya kurangi waktu yang dihabiskan untuk mengurai, mengompilasi, dan mengeksekusi JS. Coba kirim payload JS yang lebih kecil untuk membantu mengurangi waktu. [Pelajari lebih lanjut](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Mengurangi waktu eksekusi JavaScript" @@ -351,25 +351,25 @@ "message": "Waktu eksekusi JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "GIF berukuran besar tidak efisien untuk menayangkan konten animasi. Sebaiknya gunakan video MPEG4/WebM sebagai animasi dan PNG/WebP sebagai gambar statis untuk menggantikan GIF guna menghemat byte jaringan. [Pelajari lebih lanjut](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "GIF berukuran besar tidak efisien untuk menayangkan konten animasi. Sebaiknya gunakan video MPEG4/WebM sebagai animasi dan PNG/WebP sebagai gambar statis untuk menggantikan GIF guna menghemat byte jaringan. [Pelajari lebih lanjut](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Gunakan format video untuk konten animasi" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Sebaiknya lakukan pemuatan lambat di balik layar dan gambar tersembunyi setelah semua resource kritis selesai dimuat guna mengurangi waktu untuk interaktif. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Sebaiknya lakukan pemuatan lambat di balik layar dan gambar tersembunyi setelah semua resource kritis selesai dimuat guna mengurangi waktu untuk interaktif. [Pelajari lebih lanjut](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Tunda gambar di balik layar" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resource memblokir first paint halaman. Sebaiknya kirim inline JS/CSS kritis dan tunda semua JS/gaya yang tidak kritis. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resource memblokir first paint halaman. Sebaiknya kirim inline JS/CSS kritis dan tunda semua JS/gaya yang tidak kritis. [Pelajari lebih lanjut](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Hilangkan resource yang memblokir render" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Payload jaringan yang besar menimbulkan biaya yang tinggi bagi pengguna dan berkorelasi erat dengan waktu pemuatan yang lama. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Payload jaringan yang besar menimbulkan biaya yang tinggi bagi pengguna dan berkorelasi erat dengan waktu pemuatan yang lama. [Pelajari lebih lanjut](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Total ukuran adalah {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Menghindari payload jaringan yang sangat besar" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Meminifikasi file CSS dapat mengurangi ukuran payload jaringan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Meminifikasi file CSS dapat mengurangi ukuran payload jaringan. [Pelajari lebih lanjut](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Kecilkan CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Meminifikasi file JavaScript dapat mengurangi ukuran payload dan waktu penguraian skrip. [Pelajari lebih lanjut](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Meminifikasi file JavaScript dapat mengurangi ukuran payload dan waktu penguraian skrip. [Pelajari lebih lanjut](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Kecilkan ukuran JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Hapus aturan yang tidak berlaku dari stylesheet dan tunda pemuatan CSS yang tidak digunakan untuk konten paruh atas, guna mengurangi byte yang tidak perlu yang digunakan oleh aktivitas jaringan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Hapus aturan yang tidak berlaku dari stylesheet dan tunda pemuatan CSS yang tidak digunakan untuk konten paruh atas, guna mengurangi byte yang tidak perlu yang digunakan oleh aktivitas jaringan. [Pelajari lebih lanjut](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Hapus CSS yang tidak digunakan" @@ -405,7 +405,7 @@ "message": "Hapus JavaScript yang tidak digunakan" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Durasi cache yang panjang dapat mempercepat kunjungan berulang ke halaman Anda. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Durasi cache yang panjang dapat mempercepat kunjungan berulang ke halaman Anda. [Pelajari lebih lanjut](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 resource ditemukan}other{# resource ditemukan}}" @@ -417,31 +417,31 @@ "message": "Menggunakan kebijakan cache yang efisien pada aset statis" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Gambar yang dioptimalkan dimuat lebih cepat dan menghabiskan lebih sedikit data seluler. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Gambar yang dioptimalkan dimuat lebih cepat dan menghabiskan lebih sedikit data seluler. [Pelajari lebih lanjut](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Enkode gambar secara efisien" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Menayangkan gambar yang berukuran sesuai untuk menghemat kuota dan meningkatkan waktu pemuatan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Menayangkan gambar yang berukuran sesuai untuk menghemat kuota dan meningkatkan waktu pemuatan. [Pelajari lebih lanjut](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Ubah ukuran gambar dengan tepat" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Resource berbasis teks harus ditayangkan dengan kompresi (gzip, deflate, atau brotli) untuk meminimalkan total byte jaringan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Resource berbasis teks harus ditayangkan dengan kompresi (gzip, deflate, atau brotli) untuk meminimalkan total byte jaringan. [Pelajari lebih lanjut](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Aktifkan kompresi teks" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Format gambar seperti JPEG 2000, JPEG XR, dan WebP biasanya memberikan kompresi yang lebih baik daripada PNG atau JPEG, sehingga download lebih cepat dan konsumsi data lebih kecil. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Format gambar seperti JPEG 2000, JPEG XR, dan WebP biasanya memberikan kompresi yang lebih baik daripada PNG atau JPEG, sehingga download lebih cepat dan konsumsi data lebih kecil. [Pelajari lebih lanjut](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Tayangkan gambar dalam format generasi berikutnya" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Jika lebar konten aplikasi Anda tidak cocok dengan lebar area pandang, aplikasi mungkin tidak dioptimalkan untuk layar perangkat seluler. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Jika lebar konten aplikasi Anda tidak cocok dengan lebar area pandang, aplikasi mungkin tidak dioptimalkan untuk layar perangkat seluler. [Pelajari lebih lanjut](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Ukuran area pandang {innerWidth} piksel tidak cocok dengan ukuran jendela {outerWidth} piksel." @@ -453,7 +453,7 @@ "message": "Ukuran konten untuk area pandang sudah tepat" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Rantai Permintaan Penting di bawah menampilkan resource apa saja yang dimuat dengan prioritas tinggi. Sebaiknya kurangi panjang rantai, kurangi ukuran download resource, atau tunda download resource yang tidak penting untuk mempercepat pemuatan halaman. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Rantai Permintaan Penting di bawah menampilkan resource apa saja yang dimuat dengan prioritas tinggi. Sebaiknya kurangi panjang rantai, kurangi ukuran download resource, atau tunda download resource yang tidak penting untuk mempercepat pemuatan halaman. [Pelajari lebih lanjut](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 rantai ditemukan}other{# rantai ditemukan}}" @@ -675,7 +675,7 @@ "message": "Tidak ada error browser yang dicatat ke konsol" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Memanfaatkan fitur CSS tampilan font untuk memastikan teks terlihat oleh pengguna saat font web sedang dimuat. [Pelajari lebih lanjut](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Memanfaatkan fitur CSS tampilan font untuk memastikan teks terlihat oleh pengguna saat font web sedang dimuat. [Pelajari lebih lanjut](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Pastikan teks tetap terlihat selama pemuatan font web" @@ -705,7 +705,7 @@ "message": "Informasi ukuran gambar {url} tidak valid" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Browser dapat secara proaktif meminta pengguna untuk menambahkan aplikasi Anda ke layar utama mereka sehingga interaksi menjadi lebih tinggi. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Browser dapat secara proaktif meminta pengguna untuk menambahkan aplikasi Anda ke layar utama mereka sehingga interaksi menjadi lebih tinggi. [Pelajari lebih lanjut](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Manifes aplikasi web tidak memenuhi persyaratan kemampuan penginstalan" @@ -729,7 +729,7 @@ "message": "Menggunakan HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Pemuatan halaman yang cepat melalui jaringan seluler menjamin pengalaman pengguna seluler yang baik. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Pemuatan halaman yang cepat melalui jaringan seluler menjamin pengalaman pengguna seluler yang baik. [Pelajari lebih lanjut](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktif di {timeInMs, number, seconds} dtk" @@ -750,7 +750,7 @@ "message": "Kategori" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Pertimbangkan mengurangi waktu yang dihabiskan untuk mengurai, mengompilasi, dan mengeksekusi JS. Anda mungkin menemukan bahwa mengirim payload JS yang lebih kecil akan membantu mengurangi waktu." + "message": "Sebaiknya kurangi waktu yang dihabiskan untuk mengurai, mengompilasi, dan mengeksekusi JS. Coba kirim payload JS yang lebih kecil untuk membantu mengurangi waktu. [Pelajari lebih lanjut](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimalkan pekerjaan thread utama" @@ -759,49 +759,49 @@ "message": "Meminimalkan pekerjaan thread utama" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Untuk menjangkau jumlah pengguna terbanyak, situs harus berjalan di seluruh browser utama. [Pelajari lebih lanjut](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Untuk menjangkau jumlah pengguna terbanyak, situs harus berjalan di seluruh browser utama. [Pelajari lebih lanjut](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Situs dapat berjalan lintas-browser" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Pastikan halaman individu dapat dijadikan deep link melalui URL, dan URL tersebut unik agar dapat dibagikan di media sosial. [Pelajari lebih lanjut](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Pastikan halaman individu dapat dijadikan deep link melalui URL, dan URL tersebut unik agar dapat dibagikan di media sosial. [Pelajari lebih lanjut](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Setiap halaman memiliki URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Transisi harus terasa cepat ketika Anda mengetuk-ngetuk, bahkan saat jaringan lambat, hal ini merupakan kunci performa yang komprehensif. [Pelajari lebih lanjut](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Transisi harus terasa cepat ketika Anda mengetuk-ngetuk, bahkan saat jaringan lambat. Pengalaman ini merupakan kunci persepsi pengguna terhadap performa. [Pelajari lebih lanjut](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Transisi halaman sepertinya tidak diblokir di jaringan" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Perkiraan Latensi Masukan adalah perkiraan durasi yang diperlukan aplikasi untuk merespons masukan pengguna, dalam milidetik, selama durasi 5 detik tersibuk saat pemuatan halaman. Jika latensi di atas 50 md, pengguna dapat menganggap aplikasi Anda lambat. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Perkiraan Latensi Masukan adalah perkiraan durasi yang diperlukan aplikasi untuk merespons masukan pengguna, dalam milidetik, selama durasi 5 detik tersibuk saat pemuatan halaman. Jika latensi di atas 50 md, pengguna dapat menganggap aplikasi Anda lambat. [Pelajari lebih lanjut](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Perkiraan Latensi Masukan" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "First Contentful Paint menandai waktu saat teks atau gambar pertama di-paint. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "First Contentful Paint menandai waktu saat teks atau gambar pertama di-paint. [Pelajari lebih lanjut](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "First Contentful Paint" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "CPU Pertama Tidak Ada Aktivitas menandai waktu pertama kalinya thread utama halaman menjadi agak tenang untuk menangani masukan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "CPU Pertama Tidak Ada Aktivitas menandai waktu pertama kalinya thread utama halaman menjadi agak tenang untuk menangani masukan. [Pelajari lebih lanjut](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "CPU Pertama Tidak Ada Aktivitas" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "First Meaningful Paint mengukur waktu saat konten utama halaman terlihat. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "First Meaningful Paint mengukur waktu saat konten utama halaman terlihat. [Pelajari lebih lanjut](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "First Meaningful Paint" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Waktu untuk interaktif adalah lamanya waktu yang diperlukan halaman untuk menjadi interaktif sepenuhnya. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Waktu untuk interaktif adalah lamanya waktu yang diperlukan halaman untuk menjadi interaktif sepenuhnya. [Pelajari lebih lanjut](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Waktu untuk Interaktif" @@ -813,7 +813,7 @@ "message": "Potensi Maksimal Penundaan Input Pertama" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Indeks Kecepatan menunjukkan seberapa cepat konten halaman terlihat terisi lengkap. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Indeks Kecepatan menunjukkan seberapa cepat konten halaman terlihat terisi lengkap. [Pelajari lebih lanjut](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Indeks Kecepatan" @@ -837,7 +837,7 @@ "message": "Latensi Backend Server" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Pekerja layanan memungkinkan aplikasi web dapat diandalkan dalam kondisi jaringan yang tidak terduga. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Pekerja layanan memungkinkan aplikasi web dapat diandalkan dalam kondisi jaringan yang tidak terduga. [Pelajari lebih lanjut](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` tidak merespons dengan kode 200 saat offline" @@ -861,7 +861,7 @@ "message": "Anggaran performa" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Jika Anda sudah menyiapkan HTTPS, pastikan mengalihkan semua traffic HTTP ke HTTPS agar dapat menyediakan fitur web yang aman bagi semua pengguna. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Jika Anda sudah menyiapkan HTTPS, pastikan mengalihkan semua traffic HTTP ke HTTPS agar dapat menyediakan fitur web yang aman bagi semua pengguna. [Pelajari lebih lanjut](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Tidak mengalihkan traffic HTTP ke HTTPS" @@ -870,7 +870,7 @@ "message": "Mengalihkan traffic HTTP ke HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Pengalihan mencakup penundaan tambahan sebelum halaman dapat dimuat. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Pengalihan mencakup penundaan tambahan sebelum halaman dapat dimuat. [Pelajari lebih lanjut](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Hindari pengalihan lebih dari satu halaman" @@ -1035,7 +1035,7 @@ "message": "Target ketuk memiliki ukuran yang tepat" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Pekerja layanan adalah teknologi yang memungkinkan aplikasi Anda menggunakan banyak fitur Progressive Web App, seperti fitur offline, tambahkan ke layar utama, dan notifikasi push. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Pekerja layanan adalah teknologi yang memungkinkan aplikasi Anda menggunakan banyak fitur Progressive Web App, seperti fitur offline, tambahkan ke layar utama, dan notifikasi push. [Pelajari lebih lanjut](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Halaman ini dikontrol oleh pekerja layanan, tetapi `start_url` tidak ditemukan karena manifes gagal diurai sebagai JSON yang valid" @@ -1056,7 +1056,7 @@ "message": "Mendaftarkan pekerja layanan yang mengontrol halaman dan `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Layar pembuka yang diberi tema akan memberikan pengalaman berkualitas tinggi saat pengguna meluncurkan aplikasi dari layar utama. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Layar pembuka yang diberi tema akan memberikan pengalaman berkualitas tinggi saat pengguna meluncurkan aplikasi dari layar utama. [Pelajari lebih lanjut](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Tidak dikonfigurasi untuk layar pembuka khusus" @@ -1065,7 +1065,7 @@ "message": "Dikonfigurasi untuk layar pembuka khusus" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Kolom URL browser dapat diberi tema agar cocok dengan situs Anda. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Kolom URL browser dapat diberi tema agar cocok dengan situs Anda. [Pelajari lebih lanjut](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Tidak menyetel warna tema untuk kolom URL." @@ -1092,7 +1092,7 @@ "message": "Penggunaan oleh Pihak Ketiga" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Time To First Byte mengidentifikasi waktu saat server mengirim respons. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Time To First Byte mengidentifikasi waktu saat server mengirim respons. [Pelajari lebih lanjut](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Dokumen root memerlukan waktu {timeInMs, number, milliseconds} md" @@ -1113,7 +1113,7 @@ "message": "Jenis" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Sebaiknya lengkapi aplikasi Anda dengan User Timing API untuk mengukur performa aplikasi Anda yang sebenarnya selama pengalaman pengguna utama. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Sebaiknya lengkapi aplikasi Anda dengan User Timing API untuk mengukur performa aplikasi Anda yang sebenarnya selama pengalaman pengguna utama. [Pelajari lebih lanjut](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 waktu pengguna}other{# waktu pengguna}}" @@ -1125,7 +1125,7 @@ "message": "Sebuah <link> prakoneksi ditemukan untuk {securityOrigin}, tetapi tidak digunakan oleh browser. Pastikan Anda menggunakan atribut `crossorigin` dengan tepat." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Sebaiknya tambahkan petunjuk resource `preconnect` atau `dns-prefetch` guna membuat sambungan lebih awal ke asal pihak ketiga yang penting. [Pelajari lebih lanjut](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Sebaiknya tambahkan petunjuk resource `preconnect` atau `dns-prefetch` guna membuat sambungan lebih awal ke asal pihak ketiga yang penting. [Pelajari lebih lanjut](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Sambungkan terlebih dahulu ke nama domain yang diperlukan" @@ -1134,13 +1134,13 @@ "message": "Sebuah <link> pramuat ditemukan untuk {preloadURL}, tetapi tidak digunakan oleh browser. Pastikan Anda menggunakan atribut `crossorigin` dengan tepat." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Sebaiknya gunakan `<link rel=preload>` untuk memprioritaskan pengambilan resource yang saat ini diminta selama pemuatan halaman. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Sebaiknya gunakan `<link rel=preload>` untuk memprioritaskan pengambilan resource yang saat ini diminta selama pemuatan halaman. [Pelajari lebih lanjut](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Muat permintaan utama terlebih dahulu" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Tambahkan tag `<meta name=\"viewport\">` guna mengoptimalkan aplikasi Anda untuk layar perangkat seluler. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Tambahkan tag `<meta name=\"viewport\">` guna mengoptimalkan aplikasi Anda untuk layar perangkat seluler. [Pelajari lebih lanjut](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Tag `<meta name=\"viewport\">` tidak ditemukan" @@ -1152,7 +1152,7 @@ "message": "Memiliki tag `<meta name=\"viewport\">` dengan `width` atau `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Aplikasi Anda harus menampilkan beberapa konten saat JavaScript nonaktif, meskipun hanya berupa peringatan kepada pengguna bahwa JavaScript diperlukan untuk menggunakan aplikasi. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Aplikasi Anda harus menampilkan beberapa konten saat JavaScript nonaktif, meskipun hanya berupa peringatan kepada pengguna bahwa JavaScript diperlukan untuk menggunakan aplikasi. [Pelajari lebih lanjut](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Isi halaman harus merender beberapa konten jika skripnya tidak tersedia." @@ -1164,7 +1164,7 @@ "message": "Berisi beberapa konten saat JavaScript tidak tersedia" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Jika Anda membuat build Progressive Web App, pertimbangkan untuk menggunakan pekerja layanan agar aplikasi dapat berfungsi secara offline. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Jika Anda membuat build Progressive Web App, pertimbangkan untuk menggunakan pekerja layanan agar aplikasi dapat berfungsi secara offline. [Pelajari lebih lanjut](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Halaman saat ini tidak merespons dengan kode 200 saat offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/it.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/it.json index 3819490e2..7feb2314 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/it.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/it.json
@@ -30,10 +30,10 @@ "message": "Alcuni ruoli principali di ARIA devono contenere specifici ruoli secondari per poter eseguire le funzionalità per l'accessibilità previste. [Ulteriori informazioni](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Mancano gli elementi con `[role]` che richiedono specifici`[role]` secondari." + "message": "Negli elementi con un ruolo ARIA `[role]` che richiedono che gli elementi secondari contengano un ruolo `[role]` specifico mancano alcuni o tutti questi elementi secondari obbligatori." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Sono presenti elementi con `[role]` che richiedono specifici elementi `[role]` secondari" + "message": "Gli elementi con un ruolo ARIA `[role]` che richiedono che gli elementi secondari contengano un ruolo `[role]` specifico hanno tutti gli elementi secondari obbligatori." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Alcuni ruoli secondari di ARIA devono essere contenuti in specifici ruoli principali per poter eseguire in modo corretto le funzionalità per l'accessibilità previste. [Ulteriori informazioni](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Gli screen reader sono dotati di funzionalità che semplificano lo spostamento nelle tabelle. Se ti assicuri che le celle `<td>` che usano l'attributo `[headers]` facciano riferimento esclusivamente ad altre celle nella stessa tabella puoi migliorare l'esperienza degli utenti di screen reader. [Ulteriori informazioni](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Le celle in un elemento `<table>` che utilizzano l'attributo `[headers]` fanno riferimento ad altre celle della stessa tabella." + "message": "Le celle in un elemento `<table>` che utilizzano l'attributo `[headers]` fanno riferimento a un elemento `id` non trovato all'interno della stessa tabella." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Le celle in un elemento `<table>` che utilizzano l'attributo `[headers]` fanno riferimento esclusivamente ad altre celle della stessa tabella." + "message": "Le celle in un elemento `<table>` che utilizzano l'attributo `[headers]` fanno riferimento a celle della stessa tabella." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Gli screen reader sono dotati di funzionalità che semplificano lo spostamento nelle tabelle. Se ti assicuri che le intestazioni delle tabelle facciano sempre riferimento a un insieme di celle puoi migliorare l'esperienza degli utenti di screen reader. [Ulteriori informazioni](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Gli elementi `<video>` contengono un elemento `<track>` con `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Per una visualizzazione ottimale su iOS quando gli utenti aggiungono un'applicazione web progressiva alla schermata Home, definisci un elemento `apple-touch-icon`, che deve rimandare a un'immagine PNG quadrata di 192 px (o 180 px) non trasparente. [Ulteriori informazioni](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Per una visualizzazione ottimale su iOS quando gli utenti aggiungono un'applicazione web progressiva alla schermata Home, definisci un elemento `apple-touch-icon`, che deve rimandare a un'immagine PNG quadrata di 192 px (o 180 px) non trasparente. [Ulteriori informazioni](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Non fornisce un valore `apple-touch-icon` valido" @@ -342,7 +342,7 @@ "message": "Tempo di CPU totale" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Potresti ridurre i tempi di analisi, compilazione ed esecuzione di JavaScript. A tale scopo potrebbe essere utile pubblicare payload JavaScript di dimensioni inferiori. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Potresti ridurre i tempi di analisi, compilazione ed esecuzione di JavaScript. A tale scopo potrebbe essere utile pubblicare payload JavaScript di dimensioni inferiori. [Ulteriori informazioni](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Riduci il tempo di esecuzione di JavaScript" @@ -351,25 +351,25 @@ "message": "Tempo di esecuzione JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "I file GIF di grandi dimensioni non sono efficaci per la pubblicazione di contenuti animati. Anziché il formato GIF potresti usare video MPEG4/WebM per le animazioni e PNG/WebP per le immagini statiche. In questo modo userai meno byte di rete. [Ulteriori informazioni](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "I file GIF di grandi dimensioni non sono efficaci per la pubblicazione di contenuti animati. Anziché il formato GIF potresti usare video MPEG4/WebM per le animazioni e PNG/WebP per le immagini statiche. In questo modo userai meno byte di rete. [Ulteriori informazioni](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Usa formati video per i contenuti animati" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Potresti usare il caricamento lento per le immagini fuori schermo e nascoste al termine del caricamento di tutte le risorse fondamentali per ridurre il tempo necessario per la completa interattività. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Potresti usare il caricamento lento per le immagini fuori schermo e nascoste al termine del caricamento di tutte le risorse fondamentali per ridurre il tempo necessario per la completa interattività. [Ulteriori informazioni](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Rimanda immagini fuori schermo" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Alcune risorse bloccano la prima visualizzazione della pagina. Potresti pubblicare le risorse JS/CSS fondamentali incorporate e rimandare tutte le risorse JS/styles non fondamentali. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Alcune risorse bloccano la prima visualizzazione della pagina. Potresti pubblicare le risorse JS/CSS fondamentali incorporate e rimandare tutte le risorse JS/styles non fondamentali. [Ulteriori informazioni](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Elimina le risorse di blocco della visualizzazione" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "I payload di rete di grandi dimensioni comportano costi reali per gli utenti e sono strettamente correlati a lunghi tempi di caricamento. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "I payload di rete di grandi dimensioni comportano costi reali per gli utenti e sono strettamente correlati a lunghi tempi di caricamento. [Ulteriori informazioni](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Dimensioni totali: {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Vengono evitati payload di rete enormi" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Minimizza i file CSS per ridurre le dimensioni dei payload di rete. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Minimizza i file CSS per ridurre le dimensioni dei payload di rete. [Ulteriori informazioni](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minimizza CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Minimizza i file JavaScript per ridurre le dimensioni dei payload e i tempi di analisi degli script. [Ulteriori informazioni](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Minimizza i file JavaScript per ridurre le dimensioni dei payload e i tempi di analisi degli script. [Ulteriori informazioni](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minimizza JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Rimuovi le regole non valide dai fogli di stile e rimanda il caricamento dei CSS non utilizzati per i contenuti above the fold per ridurre i byte inutili consumati dall'attività di rete. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Rimuovi le regole non valide dai fogli di stile e rimanda il caricamento dei CSS non utilizzati per i contenuti above the fold per ridurre i byte inutili consumati dall'attività di rete. [Ulteriori informazioni](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Rimuovi il CSS inutilizzato" @@ -405,7 +405,7 @@ "message": "Rimuovi il codice JavaScript inutilizzato" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "La memorizzazione nella cache per un lungo periodo di tempo può velocizzare le visite abituali alla tua pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "La memorizzazione nella cache per un lungo periodo di tempo può velocizzare le visite abituali alla tua pagina. [Ulteriori informazioni](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 risorsa trovata}other{# risorse trovate}}" @@ -417,31 +417,31 @@ "message": "Vengono usati criteri della cache efficaci per le risorse statiche" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Le immagini ottimizzate vengono caricate più velocemente e consumano meno traffico della rete dati. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Le immagini ottimizzate vengono caricate più velocemente e consumano meno traffico della rete dati. [Ulteriori informazioni](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Codifica in modo efficace le immagini" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Pubblica immagini di dimensioni adeguate per consumare meno traffico della rete dati e ridurre i tempi di caricamento. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Pubblica immagini di dimensioni adeguate per consumare meno traffico della rete dati e ridurre i tempi di caricamento. [Ulteriori informazioni](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Usa immagini di dimensioni adeguate" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Le risorse basate sul testo dovrebbero essere pubblicate con compressione (gzip, deflate o brotli) per ridurre al minimo il numero totale di byte di rete. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Le risorse basate sul testo dovrebbero essere pubblicate con compressione (gzip, deflate o brotli) per ridurre al minimo il numero totale di byte di rete. [Ulteriori informazioni](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Attiva la compressione del testo" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "I formati delle immagini come JPEG 2000, JPEG XR e WebP spesso consentono una compressione migliore rispetto a quella dei formati PNG o JPEG, che comporta download più veloci e un minor consumo di dati. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "I formati delle immagini come JPEG 2000, JPEG XR e WebP spesso consentono una compressione migliore rispetto a quella dei formati PNG o JPEG, che comporta download più veloci e un minor consumo di dati. [Ulteriori informazioni](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Pubblica immagini in formati più recenti" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Se la larghezza dei contenuti dell'app non corrisponde alla larghezza dell'area visibile, l'app potrebbe non essere ottimizzata per gli schermi dei dispositivi mobili. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Se la larghezza dei contenuti dell'app non corrisponde alla larghezza dell'area visibile, l'app potrebbe non essere ottimizzata per gli schermi dei dispositivi mobili. [Ulteriori informazioni](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Le dimensioni di {innerWidth} px dell'area visibile non corrispondono alle dimensioni di {outerWidth} px della finestra." @@ -453,7 +453,7 @@ "message": "Le dimensioni dei contenuti sono corrette per l'area visibile" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Nella sezione Catene di richieste fondamentali indicata di seguito vengono mostrate le risorse caricate con priorità elevata. Potresti ridurre la lunghezza delle catene e le dimensioni del download delle risorse oppure rimandare il download delle risorse non necessarie per velocizzare il caricamento della pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Nella sezione Catene di richieste fondamentali indicata di seguito vengono mostrate le risorse caricate con priorità elevata. Potresti ridurre la lunghezza delle catene e le dimensioni del download delle risorse oppure rimandare il download delle risorse non necessarie per velocizzare il caricamento della pagina. [Ulteriori informazioni](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 catena trovata}other{# catene trovate}}" @@ -675,7 +675,7 @@ "message": "Nessun errore del browser registrato nella console" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Usa la funzionalità CSS font-display per assicurarti che il testo sia visibile agli utenti durante il caricamento dei caratteri web. [Ulteriori informazioni](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Usa la funzionalità CSS font-display per assicurarti che il testo sia visibile agli utenti durante il caricamento dei caratteri web. [Ulteriori informazioni](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Assicurati che il testo rimanga visibile durante il caricamento dei caratteri web" @@ -705,7 +705,7 @@ "message": "Informazioni sulle dimensioni dell'immagine {url} non valide" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "I browser possono chiedere proattivamente agli utenti di aggiungere la tua app alla schermata Home, che potrebbe comportare un maggiore coinvolgimento. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "I browser possono chiedere proattivamente agli utenti di aggiungere la tua app alla schermata Home, che potrebbe comportare un maggiore coinvolgimento. [Ulteriori informazioni](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Il file manifest dell'applicazione web non soddisfa i requisiti di installabilità" @@ -729,7 +729,7 @@ "message": "Usa HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Il caricamento veloce delle pagine su una rete cellulare assicura una buona esperienza utente sui dispositivi mobili. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Il caricamento veloce delle pagine su una rete cellulare assicura una buona esperienza utente sui dispositivi mobili. [Ulteriori informazioni](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interattiva a {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Categoria" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Potresti ridurre i tempi di analisi, compilazione ed esecuzione di JS. A tale scopo potrebbe essere utile pubblicare payload JS di dimensioni inferiori." + "message": "Potresti ridurre i tempi di analisi, compilazione ed esecuzione di JavaScript. A tale scopo potrebbe essere utile pubblicare payload JavaScript di dimensioni inferiori. [Ulteriori informazioni](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Riduci al minimo il lavoro del thread principale" @@ -759,49 +759,49 @@ "message": "Il lavoro del thread principale è ridotto al minimo" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Per raggiungere il maggior numero di utenti, i siti dovrebbero funzionare su ogni browser più usato. [Ulteriori informazioni](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Per raggiungere il maggior numero di utenti, i siti dovrebbero funzionare su ogni browser più usato. [Ulteriori informazioni](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Il sito funziona su più browser" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Assicurati che le singole pagine siano collegabili tramite link diretti sotto forma di URL e che gli URL siano univoci per la condivisione sui social media. [Ulteriori informazioni](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Assicurati che le singole pagine siano collegabili tramite link diretti sotto forma di URL e che gli URL siano univoci per la condivisione sui social media. [Ulteriori informazioni](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Ogni pagina ha un URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Le transizioni dovrebbero sembrare rapide mentre esegui i tocchi, anche con una rete lenta. Questo fattore incide sulle prestazioni percepite. [Ulteriori informazioni](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Le transizioni dovrebbero sembrare rapide mentre esegui i tocchi, anche con una rete lenta. Questa esperienza è un fattore che incide sulle prestazioni percepite dall'utente. [Ulteriori informazioni](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Non sembra che le transizioni di pagina si blocchino sulla rete" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "La metrica Latenza input stimata fornisce una stima del tempo impiegato dall'app, espresso in millisecondi, per rispondere all'input dell'utente durante il periodo di 5 s più impegnativo del caricamento della pagina. Se la latenza è superiore a 50 ms, gli utenti potrebbero considerare lenta la tua app. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "La metrica Latenza input stimata fornisce una stima del tempo impiegato dall'app, espresso in millisecondi, per rispondere all'input dell'utente durante il periodo di 5 s più impegnativo del caricamento della pagina. Se la latenza è superiore a 50 ms, gli utenti potrebbero considerare lenta la tua app. [Ulteriori informazioni](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Latenza input stimata" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "La metrica First Contentful Paint (prima visualizzazione con contenuti) indica il momento in cui vengono visualizzati il primo testo o la prima immagine. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "La metrica First Contentful Paint (prima visualizzazione con contenuti) indica il momento in cui vengono visualizzati il primo testo o la prima immagine. [Ulteriori informazioni](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Visualizzazione dei primi contenuti" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "La metrica Prima inattività CPU indica la prima volta in cui il thread principale della pagina è abbastanza tranquillo da poter gestire l'input. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "La metrica Prima inattività CPU indica la prima volta in cui il thread principale della pagina è abbastanza tranquillo da poter gestire l'input. [Ulteriori informazioni](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Prima inattività CPU" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "La metrica First Meaningful Paint (visualizzazione primo elemento utile) indica quando diventano visibili i contenuti principali di una pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "La metrica First Meaningful Paint (visualizzazione primo elemento utile) indica quando diventano visibili i contenuti principali di una pagina. [Ulteriori informazioni](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Visualizzazione primi contenuti utili" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "La metrica Tempo all'interattività indica il tempo necessario affinché la pagina diventi completamente interattiva. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "La metrica Tempo all'interattività indica il tempo necessario affinché la pagina diventi completamente interattiva. [Ulteriori informazioni](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tempo per interattività" @@ -813,7 +813,7 @@ "message": "Ritardo prima interazione potenziale max" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "La metrica Indice velocità mostra la velocità con cui diventano visibili i contenuti di una pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "La metrica Indice velocità mostra la velocità con cui diventano visibili i contenuti di una pagina. [Ulteriori informazioni](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Indice velocità" @@ -837,7 +837,7 @@ "message": "Latenze server backend" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Un service worker rende la tua applicazione web affidabile in condizioni di rete imprevedibili. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Un service worker rende la tua applicazione web affidabile in condizioni di rete imprevedibili. [Ulteriori informazioni](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` non risponde con un codice 200 quando è offline" @@ -861,7 +861,7 @@ "message": "Budget per le prestazioni" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Se hai già configurato HTTPS, assicurati di reindirizzare tutto il traffico HTTP a HTTPS per attivare funzionalità web sicure per tutti i tuoi utenti. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Se hai già configurato HTTPS, assicurati di reindirizzare tutto il traffico HTTP a HTTPS per attivare funzionalità web sicure per tutti i tuoi utenti. [Ulteriori informazioni](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Non reindirizza il traffico HTTP a HTTPS" @@ -870,7 +870,7 @@ "message": "Reindirizza il traffico HTTP a HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "I reindirizzamenti comportano ulteriori ritardi prima del caricamento della pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "I reindirizzamenti comportano ulteriori ritardi prima del caricamento della pagina. [Ulteriori informazioni](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Evita i reindirizzamenti tra più pagine" @@ -1035,7 +1035,7 @@ "message": "I target dei tocchi sono dimensionati in modo appropriato" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Il service worker è la tecnologia che consente alla tua app di usare tante funzionalità delle applicazioni web progressive, ad esempio il funzionamento offline, l'aggiunta alla schermata Home e le notifiche push. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Il service worker è la tecnologia che consente alla tua app di usare tante funzionalità delle applicazioni web progressive, ad esempio il funzionamento offline, l'aggiunta alla schermata Home e le notifiche push. [Ulteriori informazioni](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Questa pagina è controllata tramite un service worker, ma non è stato trovato alcun elemento `start_url` perché non è stato possibile analizzare il file manifest come JSON valido" @@ -1056,7 +1056,7 @@ "message": "Registra un service worker che controlla la pagina e `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Una schermata iniziale a tema assicura un'esperienza di alta qualità quando gli utenti avviano la tua app dalla schermata Home. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Una schermata iniziale a tema assicura un'esperienza di alta qualità quando gli utenti avviano la tua app dalla schermata Home. [Ulteriori informazioni](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Non è configurato con una schermata iniziale personalizzata" @@ -1065,7 +1065,7 @@ "message": "Configurato con una schermata iniziale personalizzata" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "È possibile impostare per la barra degli indirizzi del browser un tema corrispondente a quello del tuo sito. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "È possibile impostare per la barra degli indirizzi del browser un tema corrispondente a quello del tuo sito. [Ulteriori informazioni](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Non imposta un colore tema per la barra degli indirizzi." @@ -1092,7 +1092,7 @@ "message": "Uso di terze parti" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "La metrica Tempo per primo byte identifica il momento in cui il server invia una risposta. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "La metrica Tempo per primo byte identifica il momento in cui il server invia una risposta. [Ulteriori informazioni](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Il documento radice ha richiesto {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tipo" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Potresti dotare la tua app dell'API User Timing per misurare le prestazioni reali dell'app durante le esperienze utente chiave. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Potresti dotare la tua app dell'API User Timing per misurare le prestazioni reali dell'app durante le esperienze utente chiave. [Ulteriori informazioni](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 tempo utente}other{# tempi utente}}" @@ -1125,7 +1125,7 @@ "message": "È stato trovato un elemento <link> di preconnessione per \"{securityOrigin}\", ma non è stato utilizzato dal browser. Verifica che l'attributo `crossorigin` sia utilizzato in modo corretto." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Potresti aggiungere hint delle risorse `preconnect` o `dns-prefetch` per collegarti anticipatamente a importanti origini di terze parti. [Ulteriori informazioni](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Potresti aggiungere hint delle risorse `preconnect` o `dns-prefetch` per collegarti anticipatamente a importanti origini di terze parti. [Ulteriori informazioni](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Precollegati alle origini necessarie" @@ -1134,13 +1134,13 @@ "message": "È stato trovato un elemento <link> di precaricamento per \"{preloadURL}\", ma non è stato utilizzato dal browser. Verifica che l'attributo `crossorigin` sia utilizzato in modo corretto." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Potresti usare `<link rel=preload>` per dare la priorità al recupero delle risorse attualmente richieste in un secondo momento nel caricamento della pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Potresti usare `<link rel=preload>` per dare la priorità al recupero delle risorse attualmente richieste in un secondo momento nel caricamento della pagina. [Ulteriori informazioni](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Precarica le richieste fondamentali" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Aggiungi un tag `<meta name=\"viewport\">` per ottimizzare la tua app per gli schermi dei dispositivi mobili. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Aggiungi un tag `<meta name=\"viewport\">` per ottimizzare la tua app per gli schermi dei dispositivi mobili. [Ulteriori informazioni](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nessun tag `<meta name=\"viewport\">` trovato" @@ -1152,7 +1152,7 @@ "message": "Ha un tag `<meta name=\"viewport\">` con `width` o `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Nella tua app dovresti visualizzare alcuni contenuti quando JavaScript è disattivato, anche soltanto un avviso che comunica all'utente che è necessario JavaScript per usare l'app. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Nella tua app dovresti visualizzare alcuni contenuti quando JavaScript è disattivato, anche soltanto un avviso che comunica all'utente che è necessario JavaScript per usare l'app. [Ulteriori informazioni](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Nel corpo della pagina dovrebbero essere visualizzati alcuni contenuti se gli script della pagina non sono disponibili." @@ -1164,7 +1164,7 @@ "message": "Ha alcuni contenuti quando JavaScript non è disponibile" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Se devi creare un'applicazione web progressiva, potresti usare un service worker per far funzionare la tua app offline. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Se devi creare un'applicazione web progressiva, potresti usare un service worker per far funzionare la tua app offline. [Ulteriori informazioni](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "La pagina attuale non risponde con un codice 200 quando è offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ja.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ja.json index 6fa3930..64bec7ff 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ja.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ja.json
@@ -30,10 +30,10 @@ "message": "目的のユーザー補助機能を実行するには、一部の ARIA 親役割に特定の子役割を含める必要があります。[詳細](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "特定の子 `[role]` を必要とする `[role]` を指定した要素が見つかりません。" + "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "特定の子 `[role]` を必要とする `[role]` を指定した要素があります" + "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "目的のユーザー補助機能を正しく実行するには、一部の ARIA 子役割を特定の親役割に含める必要があります。[詳細](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "スクリーン リーダーには、表内の移動を補助する機能があります。`[headers]` 属性を使用している `<td>` セルが同じ表の他のセルのみを参照するように設定すると、スクリーン リーダーの利便性が向上する可能性があります。[詳細](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`[headers]` 属性を使用している `<table>` 要素内のセルは、同じ表の他のセルを参照しています。" + "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to an element `id` not found within the same table." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "`[headers]` 属性を使用している `<table>` 要素内のセルは、同じ表の他のセルのみを参照しています。" + "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "スクリーン リーダーには、表内の移動を補助する機能があります。表のヘッダーが常に一部のセルを参照するように設定すると、スクリーン リーダーの利便性が向上する可能性があります。[詳細](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "`<video>` 要素に `[kind=\"description\"]` が指定された `<track>` 要素が含まれています" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "ユーザーがプログレッシブ ウェブアプリを iOS のホーム画面に追加したとき、アプリが希望どおりのデザインで表示されるようにするには、`apple-touch-icon` を定義します。参照先は不透明な 192 ピクセル(または 180 ピクセル)の正方形の PNG 画像とする必要があります。[詳細](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "ユーザーがプログレッシブ ウェブアプリを iOS のホーム画面に追加したとき、アプリが希望どおりのデザインで表示されるようにするには、`apple-touch-icon` を定義します。参照先は不透明な 192 ピクセル(または 180 ピクセル)の正方形の PNG 画像とする必要があります。[詳細](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "有効な `apple-touch-icon` が提供されていません" @@ -342,7 +342,7 @@ "message": "合計 CPU 時間" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "JavaScript の解析、コンパイル、実行にかかる時間の短縮をご検討ください。配信する JavaScript ペイロードのサイズを抑えると効果が見込めます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "JavaScript の解析、コンパイル、実行にかかる時間の短縮をご検討ください。配信する JavaScript ペイロードのサイズを抑えると効果が見込めます。[詳細](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "JavaScript の実行にかかる時間の低減" @@ -351,25 +351,25 @@ "message": "JavaScript の実行にかかる時間" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "サイズの大きい GIF は、アニメーション コンテンツの配信方法として効率的ではありません。ネットワークの通信量を抑えるため、GIF を使用する代わりに、アニメーションには MPEG4/WebM 動画、静止画像には PNG/WebP を使用することをご検討ください。[詳細](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "サイズの大きい GIF は、アニメーション コンテンツの配信方法として効率的ではありません。ネットワークの通信量を抑えるため、GIF を使用する代わりに、アニメーションには MPEG4/WebM 動画、静止画像には PNG/WebP を使用することをご検討ください。[詳細](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "アニメーション コンテンツでの動画フォーマットの使用" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "オフスクリーンの非表示の画像は、重要なリソースをすべて読み込んだ後に遅れて読み込むようにして、操作可能になるまでの時間を短縮することをご検討ください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "オフスクリーンの非表示の画像は、重要なリソースをすべて読み込んだ後に遅れて読み込むようにして、操作可能になるまでの時間を短縮することをご検討ください。[詳細](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "オフスクリーン画像の遅延読み込み" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "ページの初回ペイントをリソースがブロックしています。重要な JavaScript や CSS はインラインで配信し、それ以外の JavaScript やスタイルはすべて遅らせることをご検討ください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "ページの First Paint をリソースがブロックしています。重要な JavaScript や CSS はインラインで配信し、それ以外の JavaScript やスタイルはすべて遅らせることをご検討ください。[詳細](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "レンダリングを妨げるリソースの除外" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "ネットワーク ペイロードのサイズが大きいと、ユーザーの金銭的負担が大きくなり、多くの場合、読み込み時間が長くなります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "ネットワーク ペイロードのサイズが大きいと、ユーザーの金銭的負担が大きくなり、多くの場合、読み込み時間が長くなります。[詳細](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "合計サイズは {totalBytes, number, bytes} KB でした" @@ -381,19 +381,19 @@ "message": "過大なネットワーク ペイロードの回避" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "CSS ファイルを最小化すると、ネットワーク ペイロードのサイズを抑えることができます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "CSS ファイルを最小化すると、ネットワーク ペイロードのサイズを抑えることができます。[詳細](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "CSS の最小化" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "JavaScript ファイルを最小化すると、ペイロード サイズとスクリプトの解析時間を抑えることができます。[詳細](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "JavaScript ファイルを最小化すると、ペイロード サイズとスクリプトの解析時間を抑えることができます。[詳細](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "JavaScript の最小化" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "スタイルシートから古いルールを削除し、スクロールせずに見える範囲のコンテンツに使用されていない CSS の読み込みを遅延させると、データ通信量を減らすことができます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "スタイルシートから古いルールを削除し、スクロールせずに見える範囲のコンテンツに使用されていない CSS の読み込みを遅延させると、データ通信量を減らすことができます。[詳細](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "使用していない CSS を削除してください" @@ -405,7 +405,7 @@ "message": "使用していない JavaScript の削除" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "キャッシュの有効期間を長くすると、再訪問したユーザーへのページの読み込み速度を向上できます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "キャッシュの有効期間を長くすると、再訪問したユーザーへのページの読み込み速度を向上できます。[詳細](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 件のリソースが見つかりました}other{# 件のリソースが見つかりました}}" @@ -417,31 +417,31 @@ "message": "静的なアセットでの効率的なキャッシュ ポリシーの使用" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "画像を最適化すると、読み込み時間を短縮しモバイルデータ量を抑えることができます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "画像を最適化すると、読み込み時間を短縮しモバイルデータ量を抑えることができます。[詳細](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "効率的な画像フォーマット" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "適切なサイズの画像を配信して、モバイルデータ量を節約し読み込み時間を短縮してください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "適切なサイズの画像を配信して、モバイルデータ量を節約し読み込み時間を短縮してください。[詳細](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "適切なサイズの画像" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "テキストベースのリソースは圧縮(gzip、deflate、または brotli)して配信し、ネットワークの全体的な通信量を最小限に抑えてください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "テキストベースのリソースは圧縮(gzip、deflate、または brotli)して配信し、ネットワークの全体的な通信量を最小限に抑えてください。[詳細](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "テキスト圧縮の有効化" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000、JPEG XR、WebP などの画像フォーマットは、PNG や JPEG より圧縮性能が高く、ダウンロード時間やデータ使用量を抑えることができます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "JPEG 2000、JPEG XR、WebP などの画像フォーマットは、PNG や JPEG より圧縮性能が高く、ダウンロード時間やデータ使用量を抑えることができます。[詳細](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "次世代フォーマットでの画像の配信" }, "lighthouse-core/audits/content-width.js | description": { - "message": "アプリのコンテンツの幅がビューポートの幅と一致しない場合、アプリがモバイル画面に合わせて最適化されない可能性があります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "アプリのコンテンツの幅がビューポートの幅と一致しない場合、アプリがモバイル画面に合わせて最適化されない可能性があります。[詳細](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "ビューポートのサイズ({innerWidth} ピクセル)がウィンドウのサイズ({outerWidth} ピクセル)と一致していません。" @@ -453,7 +453,7 @@ "message": "コンテンツのサイズとビューポートのサイズが一致しています" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "下のクリティカル リクエスト チェーンでは、高い優先度で読み込まれたリソースを確認できます。チェーンの長さを縮小する、リソースのダウンロード サイズを抑える、不要なリソースのダウンロードを遅らせるなどの手段を行って、ページの読み込み速度を改善することをご検討ください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "下のクリティカル リクエスト チェーンでは、高い優先度で読み込まれたリソースを確認できます。チェーンの長さを縮小する、リソースのダウンロード サイズを抑える、不要なリソースのダウンロードを遅らせるなどの手段を行って、ページの読み込み速度を改善することをご検討ください。[詳細](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 件のチェーンが見つかりました}other{# 件のチェーンが見つかりました}}" @@ -675,7 +675,7 @@ "message": "コンソールに記録されたブラウザのエラーはありません" }, "lighthouse-core/audits/font-display.js | description": { - "message": "フォント表示の CSS 機能を使用して、Web フォントの読み込み中にユーザーがテキストを読めるようにしてください。[詳細](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "フォント表示の CSS 機能を使用して、Web フォントの読み込み中にユーザーがテキストを読めるようにしてください。[詳細](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "ウェブフォント読み込み中のテキストの表示" @@ -705,7 +705,7 @@ "message": "画像サイズに関する情報({url})が正しくありません" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "ブラウザではホーム画面へのアプリの追加を促すメッセージを事前にユーザーに表示できます。これによりエンゲージメントが向上します。[詳細](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "ブラウザではホーム画面へのアプリの追加を促すメッセージを事前にユーザーに表示できます。これによりエンゲージメントが向上します。[詳細](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "ウェブアプリのマニフェストはインストール可能となる要件を満たしていません" @@ -729,7 +729,7 @@ "message": "HTTPS を使用しています" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "モバイル ネットワークでのページ読み込みを速くすることで、優れたモバイル ユーザー エクスペリエンスが実現されます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "モバイル ネットワークでのページ読み込みを速くすることで、優れたモバイル ユーザー エクスペリエンスが実現されます。[詳細](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "操作可能になるまでの時間: {timeInMs, number, seconds} 秒" @@ -750,7 +750,7 @@ "message": "カテゴリ" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "JS の解析、コンパイル、実行にかかる時間の短縮をご検討ください。配信する JS ペイロードのサイズを抑えると効果が見込めます。" + "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "メインスレッド処理の最小化" @@ -759,49 +759,49 @@ "message": "メインスレッド処理の最小化" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "ユーザー数を最大限に増やすには、サイトがすべての主要ブラウザで機能するようにします。[詳細](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "ユーザー数を最大限に増やすには、サイトがすべての主要ブラウザで機能するようにします。[詳細](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "サイトがクロスブラウザに対応している" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "ソーシャル メディアで共有できるように、個々のページが URL によるディープリンクに対応していることと、それらの URL が固有であることを確認してください。[詳細](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "ソーシャル メディアで共有できるように、個々のページが URL によるディープリンクに対応していることと、それらの URL が固有であることを確認してください。[詳細](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "ページごとに 1 つの URL を使用している" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "遅いネットワークであってもタップしたときに画面がすばやく切り替われば、パフォーマンスが悪いと感じにくくなります。[詳細](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Transitions should feel snappy as you tap around, even on a slow network. This experience is key to a user's perception of performance. [Learn more](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "ページの切り替え時、ネットワークが遅いという印象を与えない" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "入力の推定待ち時間とは、ページ読み込みの最もビジーな 5 秒間における、ユーザーの入力に対するアプリの推定応答時間(ミリ秒単位)です。待ち時間が 50 ミリ秒より長い場合、ユーザーはアプリの反応が悪いと感じる可能性があります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "入力の推定待ち時間とは、ページ読み込みの最もビジーな 5 秒間における、ユーザーの入力に対するアプリの推定応答時間(ミリ秒単位)です。待ち時間が 50 ミリ秒より長い場合、ユーザーはアプリの反応が悪いと感じる可能性があります。[詳細](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "入力の推定待ち時間" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "コンテンツの初回ペイントは、テキストまたは画像が初めてペイントされるまでにかかった時間です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "First Contentful Paint は、テキストまたは画像が初めてペイントされるまでにかかった時間です。[詳細](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { - "message": "コンテンツの初回ペイント" + "message": "First Contentful Paint" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "CPU の初回アイドルは、ページのメインスレッド処理が静止し、初めて入力の処理が可能になるまでにかかった時間です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "CPU の初回アイドル" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "意味のあるコンテンツの初回ペイントは、ページの主要なコンテンツが可視化されるまでにかかった時間です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "First Meaningful Paint は、ページの主要なコンテンツが可視化されるまでにかかった時間です。[詳細](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { - "message": "意味のあるコンテンツの初回ペイント" + "message": "First Meaningful Paint" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "操作可能になるまでの時間とは、ページが完全に操作可能になるのに要する時間です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "操作可能になるまでの時間とは、ページが完全に操作可能になるのに要する時間です。[詳細](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "インタラクティブになるまでの時間" @@ -813,7 +813,7 @@ "message": "初回入力遅延の最大推定時間" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "速度インデックスは、ページのコンテンツが取り込まれて表示される速さを表します。[詳細](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "速度インデックスは、ページのコンテンツが取り込まれて表示される速さを表します。[詳細](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "速度インデックス" @@ -837,7 +837,7 @@ "message": "サーバーのバックエンド待ち時間" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Service Worker によって、ネットワークが予期しない状態になったときでもウェブアプリの安定した動作が可能になります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Service Worker によって、ネットワークが予期しない状態になったときでもウェブアプリの安定した動作が可能になります。[詳細](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` は、オフライン時にステータス 200 の応答を返しません" @@ -861,7 +861,7 @@ "message": "パフォーマンス予算" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "HTTPS を設定済みの場合は、すべてのユーザーに安全なウェブ機能を提供できるように、すべての HTTP トラフィックが HTTPS にリダイレクトされることを確認してください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "HTTPS を設定済みの場合は、すべてのユーザーに安全なウェブ機能を提供できるように、すべての HTTP トラフィックが HTTPS にリダイレクトされることを確認してください。[詳細](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "HTTP トラフィックは HTTPS にリダイレクトされません" @@ -870,7 +870,7 @@ "message": "HTTP トラフィックは HTTPS にリダイレクトされます" }, "lighthouse-core/audits/redirects.js | description": { - "message": "リダイレクトを行うと、ページの読み込みにさらに時間がかかる可能性があります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "リダイレクトを行うと、ページの読み込みにさらに時間がかかる可能性があります。[詳細](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "複数のページ リダイレクトの回避" @@ -1035,7 +1035,7 @@ "message": "タップ ターゲットのサイズは適切に設定されています" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service Worker は、多くのプログレッシブ ウェブアプリ機能(オフライン、ホーム画面への追加、プッシュ通知など)をアプリで使用できるようにするための技術です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Service Worker は、多くのプログレッシブ ウェブアプリ機能(オフライン、ホーム画面への追加、プッシュ通知など)をアプリで使用できるようにするための技術です。[詳細](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "このページは Service Worker によって制御されていますが、マニフェストが有効な JSON としてパースされなかったため、`start_url` は見つかりませんでした" @@ -1056,7 +1056,7 @@ "message": "ページと `start_url` を制御する Service Worker が登録されています" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "テーマのあるスプラッシュ画面を設定すると、ホーム画面からのアプリの起動時に、質の良いアプリであることをユーザーにアピールできます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "テーマのあるスプラッシュ画面を設定すると、ホーム画面からのアプリの起動時に、質の良いアプリであることをユーザーにアピールできます。[詳細](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "カスタムのスプラッシュ画面が設定されていません" @@ -1065,7 +1065,7 @@ "message": "カスタムのスプラッシュ画面が設定されています" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "ブラウザのアドレスバーにサイトに合わせたテーマを設定できます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "ブラウザのアドレスバーにサイトに合わせたテーマを設定できます。[詳細](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "アドレスバーにテーマの色が設定されていません。" @@ -1092,7 +1092,7 @@ "message": "第三者コードの利用" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "最初の 1 バイトまでの時間は、サーバーが応答を返すまでにかかった時間を表しています。[詳細](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "最初の 1 バイトまでの時間は、サーバーが応答を返すまでにかかった時間を表しています。[詳細](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "ルート ドキュメントの読み込みに {timeInMs, number, milliseconds} ミリ秒かかりました" @@ -1113,7 +1113,7 @@ "message": "タイプ" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "User Timing API を使用してアプリをインストルメント化し、主要なユーザー エクスペリエンスでのアプリの実際のパフォーマンスを測定できるようにしてください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "User Timing API を使用してアプリをインストルメント化し、主要なユーザー エクスペリエンスでのアプリの実際のパフォーマンスを測定できるようにしてください。[詳細](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 件のカスタム速度}other{# 件のカスタム速度}}" @@ -1125,7 +1125,7 @@ "message": "「{securityOrigin}」で事前接続の <link> が見つかりましたが、ブラウザで使用されませんでした。`crossorigin` 属性を適切に使用していることをご確認ください。" }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "重要な第三者ドメインへの接続を早期に確立できるように、`preconnect` または `dns-prefetch` のリソースヒントを追加することを検討してください。[詳細](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "重要な第三者ドメインへの接続を早期に確立できるように、`preconnect` または `dns-prefetch` のリソースヒントを追加することを検討してください。[詳細](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "必須のドメインへの事前接続" @@ -1134,13 +1134,13 @@ "message": "「{preloadURL}」のプリロード <link> が見つかりましたが、ブラウザで使用されませんでした。`crossorigin` 属性を適切に使用していることをご確認ください。" }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "`<link rel=preload>` を使用して、現在ページ読み込みの後のほうでリクエストしているリソースを優先的に取得することをご検討ください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "`<link rel=preload>` を使用して、現在ページ読み込みの後のほうでリクエストしているリソースを優先的に取得することをご検討ください。[詳細](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "キー リクエストのプリロード" }, "lighthouse-core/audits/viewport.js | description": { - "message": "モバイル画面用にアプリを最適化するには、`<meta name=\"viewport\">` タグを追加してください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "モバイル画面用にアプリを最適化するには、`<meta name=\"viewport\">` タグを追加してください。[詳細](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "`<meta name=\"viewport\">` タグが見つかりません" @@ -1152,7 +1152,7 @@ "message": "`width` または `initial-scale` を指定した `<meta name=\"viewport\">` タグがあります" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "JavaScript が無効になっている場合でも、アプリではなんらかのコンテンツを表示する必要があります。「アプリの使用には JavaScript が必要」という旨の警告を表示するだけでもかまいません。[詳細](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "JavaScript が無効になっている場合でも、アプリではなんらかのコンテンツを表示する必要があります。「アプリの使用には JavaScript が必要」という旨の警告を表示するだけでもかまいません。[詳細](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "スクリプトを利用できない場合でも、ページの本文にはなんらかのコンテンツを表示する必要があります。" @@ -1164,7 +1164,7 @@ "message": "JavaScript を利用できない場合のコンテンツが含まれています" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "プログレッシブ ウェブアプリを作成している場合は、アプリがオフラインでも動作するように、Service Worker の使用を検討してください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "プログレッシブ ウェブアプリを作成している場合は、アプリがオフラインでも動作するように、Service Worker の使用を検討してください。[詳細](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "現在のページは、オフライン時にステータス 200 の応答を返しません" @@ -1248,10 +1248,10 @@ "message": "診断" }, "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": { - "message": "パフォーマンスの最も重要な点は、ピクセルをどのくらい速く画面にレンダリングできるかです。主要な指標: コンテンツの初回ペイント、意味のあるコンテンツの初回ペイント" + "message": "パフォーマンスの最も重要な点は、ピクセルをどのくらい速く画面にレンダリングできるかです。主要な指標: First Contentful Paint、First Meaningful Paint" }, "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": { - "message": "初回ペイントの改善点" + "message": "First Paint の改善点" }, "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": { "message": "これらの提案を実施すると、ページの読み込み時間を短縮できる可能性があります。なお、パフォーマンス スコアには[直接影響](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)しません。"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ko.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ko.json index b661ce51..5b271f2 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ko.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ko.json
@@ -30,10 +30,10 @@ "message": "일부 ARIA 상위 역할에서 의도한 접근성 기능을 실행하려면 특정 하위 역할을 포함하고 있어야 합니다. [자세히 알아보기](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "특정 하위 `[role]`이(가) 필요한 `[role]` 지원 요소가 누락됨" + "message": "하위 요소에 특정 `[role]`을(를) 포함해야 하는 ARIA `[role]` 지원 요소에 일부 또는 전체 하위 요소가 누락되었습니다." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "특정 하위 `[role]`이(가) 필요한 `[role]` 지원 요소가 존재함" + "message": "하위 요소에 특정 `[role]`을(를) 포함해야 하는 ARIA `[role]` 지원 요소에 필요한 모든 하위 요소가 있습니다." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "일부 ARIA 하위 역할에서 의도한 접근성 기능을 올바르게 실행하려면 특정 상위 역할에 포함되어 있어야 합니다. [자세히 알아보기](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "스크린 리더에는 표를 좀 더 쉽게 탐색하는 기능이 있습니다. `[headers]` 속성을 사용하는 `<td>` 셀이 동일한 테이블에 있는 다른 셀만 참조하게 하면 스크린 리더 사용자 환경을 개선할 수 있습니다. [자세히 알아보기](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`[headers]` 속성을 사용하는 `<table>` 요소의 셀이 동일한 테이블의 다른 셀을 참조함" + "message": "`[headers]` 속성을 사용하는 `<table>` 요소의 셀은 동일한 테이블 내에 없는 요소 `id`만 참조합니다." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "`[headers]` 속성을 사용하는 `<table>` 요소의 셀은 동일한 테이블의 다른 셀만 참조함" + "message": "`[headers]` 속성을 사용하는 `<table>` 요소의 셀이 동일한 테이블 내의 테이블 셀을 참조합니다." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "스크린 리더에는 표를 좀 더 쉽게 탐색하는 기능이 있습니다. 표 헤더에서 항상 셀 세트 일부를 참조하게 하면 스크린 리더 사용자 환경이 개선될 수 있습니다. [자세히 알아보기](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "`<video>` 요소에 `[kind=\"description\"]` 지원 `<track>` 요소가 포함됨" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "프로그레시브 웹 앱을 홈 화면에 추가했을 때 iOS에서 제대로 표시되려면 `apple-touch-icon`을(를) 정의해야 합니다. 투명하지 않은 192px 또는 180px 정사각형 PNG로 설정되어야 합니다. [자세히 알아보기](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "프로그레시브 웹 앱을 홈 화면에 추가했을 때 iOS에서 제대로 표시되려면 `apple-touch-icon`을(를) 정의해야 합니다. 투명하지 않은 192px 또는 180px 정사각형 PNG로 설정되어야 합니다. [자세히 알아보기](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "유효한 `apple-touch-icon`이(가) 제공되지 않음" @@ -342,7 +342,7 @@ "message": "총 CPU 시간" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "JS 파싱, 컴파일, 실행에 소요되는 시간을 줄여 보세요. 용량이 적은 JS 페이로드를 제공하면 도움이 될 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "JS 파싱, 컴파일, 실행에 소요되는 시간을 줄여 보세요. 용량이 적은 JS 페이로드를 제공하면 도움이 될 수 있습니다. [자세히 알아보기](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "자바스크립트 실행 시간 단축" @@ -351,25 +351,25 @@ "message": "자바스크립트 실행 시간" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "대용량의 GIF는 애니메이션 콘텐츠를 전달하는 데 비효율적입니다. 애니메이션에는 MPEG4/WebM 동영상을, 정적인 이미지에는 GIF 대신 PNG/WebP를 사용하여 네트워크 바이트를 절약하세요. [자세히 알아보기](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "대용량의 GIF는 애니메이션 콘텐츠를 전달하는 데 비효율적입니다. 애니메이션에는 MPEG4/WebM 동영상을, 정적인 이미지에는 GIF 대신 PNG/WebP를 사용하여 네트워크 바이트를 절약하세요. [자세히 알아보기](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "애니메이션 콘텐츠에 동영상 형식 사용하기" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "중요한 리소스의 로드가 모두 완료된 후에는 오프스크린 및 숨겨진 이미지를 지연 로드함으로써 상호작용 시간을 줄이는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "중요한 리소스의 로드가 모두 완료된 후에는 오프스크린 및 숨겨진 이미지를 지연 로드함으로써 상호작용 시간을 줄이는 것이 좋습니다. [자세히 알아보기](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "오프스크린 이미지 지연하기" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "리소스가 페이지의 첫 페인트를 차단하고 있습니다. 중요한 JS/CSS를 인라인으로 전달하고 중요하지 않은 모든 JS/Style을 지연하는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "리소스가 페이지의 첫 페인트를 차단하고 있습니다. 중요한 JS/CSS를 인라인으로 전달하고 중요하지 않은 모든 JS/Style을 지연하는 것이 좋습니다. [자세히 알아보기](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "렌더링 차단 리소스 제거하기" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "네트워크 페이로드가 커지면 사용자에게 실제 비용 부담이 되며 로드 시간이 길어질 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "네트워크 페이로드가 커지면 사용자에게 실제 비용 부담이 되며 로드 시간이 길어질 수 있습니다. [자세히 알아보기](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "총 크기: {totalBytes, number, bytes}KB" @@ -381,19 +381,19 @@ "message": "대규모 네트워크 페이로드 방지하기" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "CSS 파일을 축소하면 네트워크 페이로드 크기를 줄일 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "CSS 파일을 축소하면 네트워크 페이로드 크기를 줄일 수 있습니다. [자세히 알아보기](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "CSS 축소하기" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "자바스크립트 파일을 축소하면 페이로드 크기와 스크립트 파싱 시간을 줄일 수 있습니다. [자세히 알아보기](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "자바스크립트 파일을 축소하면 페이로드 크기와 스크립트 파싱 시간을 줄일 수 있습니다. [자세히 알아보기](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "자바스크립트 줄이기" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "스타일시트에서 사용하지 않는 규칙을 삭제하고 스크롤 없이 볼 수 있는 부분에 사용되지 않는 CSS의 로드를 지연시켜 네트워크 활동에 소비되는 불필요한 바이트를 줄이세요. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "스타일시트에서 사용하지 않는 규칙을 삭제하고 스크롤 없이 볼 수 있는 부분에 사용되지 않는 CSS의 로드를 지연시켜 네트워크 활동에 소비되는 불필요한 바이트를 줄이세요. [자세히 알아보기](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "사용하지 않는 CSS 제거" @@ -405,7 +405,7 @@ "message": "사용하지 않는 자바스크립트 삭제하기" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "캐시 수명이 길면 페이지를 반복해서 방문하는 속도가 빨라질 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "캐시 수명이 길면 페이지를 반복해서 방문하는 속도가 빨라질 수 있습니다. [자세히 알아보기](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{리소스 1개 발견됨}other{리소스 #개 발견됨}}" @@ -417,31 +417,31 @@ "message": "정적인 애셋에 효율적인 캐시 정책 사용하기" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "최적화된 이미지는 빠르게 로드되며 모바일 데이터를 적게 소비합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "최적화된 이미지는 빠르게 로드되며 모바일 데이터를 적게 소비합니다. [자세히 알아보기](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "효율적으로 이미지 인코딩하기" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "적절한 크기의 이미지를 게재하여 모바일 데이터를 절약하고 로드 시간을 단축하세요. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "적절한 크기의 이미지를 게재하여 모바일 데이터를 절약하고 로드 시간을 단축하세요. [자세히 알아보기](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "이미지 크기 적절하게 설정하기" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "총 네트워크 바이트를 최소화하려면 텍스트 기반 리소스를 압축(gzip, deflate, brotli)하여 제공해야 합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "총 네트워크 바이트를 최소화하려면 텍스트 기반 리소스를 압축(gzip, deflate, brotli)하여 제공해야 합니다. [자세히 알아보기](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "텍스트 압축 사용" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000, JPEG XR, WebP와 같은 이미지 형식을 사용하면 PNG 또는 JPEG보다 압축률이 높으므로 다운로드 속도가 빠르고 데이터 소비량도 줄어듭니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "JPEG 2000, JPEG XR, WebP와 같은 이미지 형식을 사용하면 PNG 또는 JPEG보다 압축률이 높으므로 다운로드 속도가 빠르고 데이터 소비량도 줄어듭니다. [자세히 알아보기](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "차세대 형식을 사용해 이미지 제공하기" }, "lighthouse-core/audits/content-width.js | description": { - "message": "앱 콘텐츠의 너비가 표시 영역의 너비와 일치하지 않을 경우 앱이 휴대기기 화면에 최적화되지 않을 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "앱 콘텐츠의 너비가 표시 영역의 너비와 일치하지 않을 경우 앱이 휴대기기 화면에 최적화되지 않을 수 있습니다. [자세히 알아보기](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "{innerWidth}px의 표시 영역 크기는 {outerWidth}px인 창 크기와 일치하지 않습니다." @@ -453,7 +453,7 @@ "message": "콘텐츠의 크기가 표시 영역에 알맞음" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "다음의 크리티컬 요청 체인은 로드 시 우선순위가 높은 리소스를 보여줍니다. 체인의 길이를 줄이고, 리소스의 다운로드 크기를 줄이거나 불필요한 리소스의 다운로드를 지연하여 페이지 로드 속도를 높이는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "다음의 크리티컬 요청 체인은 로드 시 우선순위가 높은 리소스를 보여줍니다. 체인의 길이를 줄이고, 리소스의 다운로드 크기를 줄이거나 불필요한 리소스의 다운로드를 지연하여 페이지 로드 속도를 높이는 것이 좋습니다. [자세히 알아보기](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1개 체인 발견됨}other{#개 체인 발견됨}}" @@ -675,7 +675,7 @@ "message": "콘솔에 로그된 브라우저 오류 없음" }, "lighthouse-core/audits/font-display.js | description": { - "message": "웹폰트가 로드되는 동안 사용자에게 텍스트가 표시되도록 글꼴 표시 CSS 기능을 사용합니다. [자세히 알아보기](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "웹폰트가 로드되는 동안 사용자에게 텍스트가 표시되도록 글꼴 표시 CSS 기능을 사용합니다. [자세히 알아보기](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "웹폰트가 로드되는 동안 텍스트가 계속 표시되는지 확인하기" @@ -705,7 +705,7 @@ "message": "잘못된 이미지 크기 정보 {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "브라우저는 사용자에게 홈 화면에 앱을 추가하라는 메시지를 사전에 표시할 수 있으며 이렇게 하면 참여도가 높아질 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "브라우저는 사용자에게 홈 화면에 앱을 추가하라는 메시지를 사전에 표시할 수 있으며 이렇게 하면 참여도가 높아질 수 있습니다. [자세히 알아보기](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "웹 앱 매니페스트가 설치 가능 요건을 충족하지 않음" @@ -729,7 +729,7 @@ "message": "HTTPS 사용" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "셀룰러 네트워크에서 페이지 로드가 빠르면 우수한 모바일 사용자 환경을 제공할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "셀룰러 네트워크에서 페이지 로드가 빠르면 우수한 모바일 사용자 환경을 제공할 수 있습니다. [자세히 알아보기](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "페이지와 상호작용할 수 있게 될 때까지 걸린 시간: {timeInMs, number, seconds}초" @@ -738,7 +738,7 @@ "message": "시뮬레이션된 모바일 네트워크에서 페이지와 상호작용할 수 있게 될 때까지 걸린 시간: {timeInMs, number, seconds}초" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": { - "message": "페이지가 너무 느리게 로드되므로 10초 이내에 사용할 수 없습니다. '성능' 섹션에서 추천 내용과 진단을 확인하고 개선 방안을 알아보세요." + "message": "페이지가 너무 느리게 로드되므로 10초 이내에 사용할 수 없습니다. '성능' 섹션에서 추천 내용과 진단을 확인해 개선 방안을 알아보세요." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": { "message": "모바일 네트워크에서 페이지 로딩이 충분히 빠르지 않음" @@ -750,7 +750,7 @@ "message": "카테고리" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "JS 파싱, 컴파일, 실행에 소요되는 시간을 줄이세요. 용량이 적은 JS 페이로드를 제공하면 도움이 될 수 있습니다." + "message": "JS 파싱, 컴파일, 실행에 소요되는 시간을 줄여 보세요. 용량이 적은 JS 페이로드를 제공하면 도움이 될 수 있습니다. [자세히 알아보기](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "기본 스레드 작업 최소화하기" @@ -759,49 +759,49 @@ "message": "기본 스레드 작업 최소화하기" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "최대한 많은 사용자가 이용할 수 있으려면 사이트가 모든 주요 브라우저에서 작동해야 합니다. [자세히 알아보기](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "최대한 많은 사용자가 이용할 수 있으려면 사이트가 모든 주요 브라우저에서 작동해야 합니다. [자세히 알아보기](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "사이트가 다양한 브라우저에서 작동함" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "페이지를 소셜 미디어에 공유하려면 개별 페이지가 URL을 통해 딥 링크로 연결될 수 있어야 하며 페이지별로 URL이 달라야 합니다. [자세히 알아보기](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "페이지를 소셜 미디어에 공유하려면 개별 페이지가 URL을 통해 딥 링크로 연결될 수 있어야 하며 페이지별로 URL이 달라야 합니다. [자세히 알아보기](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "페이지마다 URL이 있음" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "탭을 했을 때 느린 네트워크에서도 전환이 빠르게 느껴져야 하며 이는 체감 성능의 핵심입니다. [자세히 알아보기](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "탭을 했을 때 느린 네트워크에서도 전환이 빠르게 느껴져야 합니다. 이 환경은 사용자가 체감하는 성능의 핵심입니다. [자세히 알아보기](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "페이지 전환 시 네트워크에서 막히는 느낌이 들지 않음" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "예상 입력 대기시간은 페이지 로드가 가장 많은 5초 동안 앱이 사용자 입력에 응답하는 데 걸리는 시간(밀리초)의 추정치입니다. 지연 시간이 50밀리초보다 길면 사용자가 앱이 느리다고 인식할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "예상 입력 대기시간은 페이지 로드가 가장 많은 5초 동안 앱이 사용자 입력에 응답하는 데 걸리는 시간(밀리초)의 추정치입니다. 지연 시간이 50밀리초보다 길면 사용자가 앱이 느리다고 인식할 수 있습니다. [자세히 알아보기](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "예상 입력 대기시간" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "콘텐츠가 포함된 첫 페인트는 첫 번째 텍스트 또는 이미지가 표시되는 시간을 나타냅니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "콘텐츠가 포함된 첫 페인트는 첫 번째 텍스트 또는 이미지가 표시되는 시간을 나타냅니다. [자세히 알아보기](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "최초 만족 페인트" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "최초 CPU 유휴 상태는 페이지의 기본 스레드가 입력을 처리할 수 있을 만큼 조용한 상태가 된 첫 번째 시간을 표시합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "최초 CPU 유휴 상태는 페이지의 기본 스레드가 입력을 처리할 수 있을 만큼 조용한 상태가 된 첫 번째 시간을 표시합니다. [자세히 알아보기](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "최초 CPU 유휴 상태" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "유의미한 첫 페인트는 페이지의 기본 콘텐츠가 표시되는 경우를 측정합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "유의미한 첫 페인트는 페이지의 기본 콘텐츠가 표시되는 경우를 측정합니다. [자세히 알아보기](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "최초 유의미 페인트" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "사용할 수 있을 때까지 걸리는 시간은 완전히 페이지와 상호작용할 수 있게 될 때까지 걸리는 시간입니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "사용할 수 있을 때까지 걸리는 시간은 완전히 페이지와 상호작용할 수 있게 될 때까지 걸리는 시간입니다. [자세히 알아보기](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "상호작용 시간" @@ -813,7 +813,7 @@ "message": "최대 첫 입력 지연 예상 시간" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "속도 색인은 페이지 콘텐츠가 얼마나 빨리 표시되는지 보여줍니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "속도 색인은 페이지 콘텐츠가 얼마나 빨리 표시되는지 보여줍니다. [자세히 알아보기](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "속도 색인" @@ -837,7 +837,7 @@ "message": "서버 백엔드 지연 시간" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "서비스 워커를 사용하면 예측 불가능한 네트워크 상태에서도 웹 앱이 안정적으로 작동할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "서비스 워커를 사용하면 예측 불가능한 네트워크 상태에서도 웹 앱이 안정적으로 작동할 수 있습니다. [자세히 알아보기](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url`이(가) 오프라인 시 200으로 응답하지 않음" @@ -861,7 +861,7 @@ "message": "성능 예산" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "HTTPS를 이미 설정한 경우 모든 사용자가 안전한 웹 기능을 사용하기 위해서는 모든 HTTP 트래픽이 HTTPS로 리디렉션되어야 합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "HTTPS를 이미 설정한 경우 모든 사용자가 안전한 웹 기능을 사용하기 위해서는 모든 HTTP 트래픽이 HTTPS로 리디렉션되어야 합니다. [자세히 알아보기](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "HTTP 트래픽을 HTTPS로 리디렉션하지 않음" @@ -870,7 +870,7 @@ "message": "HTTP 트래픽을 HTTPS로 리디렉션함" }, "lighthouse-core/audits/redirects.js | description": { - "message": "리디렉션을 사용하면 페이지가 로드되기 전 추가적인 지연이 발생합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "리디렉션을 사용하면 페이지가 로드되기 전 추가적인 지연이 발생합니다. [자세히 알아보기](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "여러 차례의 페이지 리디렉션 피하기" @@ -1035,7 +1035,7 @@ "message": "탭 타겟의 크기가 적절함" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "서비스 워커는 앱에서 오프라인, 홈 화면에 추가, 푸시 알림 등 다양한 프로그레시브 웹 앱 기능을 사용할 수 있도록 설정하는 기술입니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "서비스 워커는 앱에서 오프라인, 홈 화면에 추가, 푸시 알림 등 다양한 프로그레시브 웹 앱 기능을 사용할 수 있도록 설정하는 기술입니다. [자세히 알아보기](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "이 페이지는 서비스 워커로 인해 제어되지만 매니페스트가 유효한 JSON으로 파싱하는 데 실패했으므로 `start_url`을(를) 찾지 못했습니다." @@ -1053,10 +1053,10 @@ "message": "페이지와 `start_url`을(를) 제어하는 서비스 워커를 등록하지 않음" }, "lighthouse-core/audits/service-worker.js | title": { - "message": "페이지와`start_url`을(를) 제어하는 서비스 워커를 등록함" + "message": "페이지와 `start_url`을(를) 제어하는 서비스 워커를 등록함" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "테마 스플래시 화면을 사용하면 사용자가 홈 화면에서 앱을 실행했을 때 고품질의 환경을 경험할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "테마 스플래시 화면을 사용하면 사용자가 홈 화면에서 앱을 실행했을 때 고품질의 환경을 경험할 수 있습니다. [자세히 알아보기](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "맞춤 스플래시 화면에 맞게 구성되지 않음" @@ -1065,7 +1065,7 @@ "message": "맞춤 스플래시 화면에 맞게 구성됨" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "브라우저 주소 표시줄에는 사이트와 맞는 테마를 설정할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "브라우저 주소 표시줄에는 사이트와 맞는 테마를 설정할 수 있습니다. [자세히 알아보기](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "주소 표시줄의 테마 색상을 설정하지 않음" @@ -1092,7 +1092,7 @@ "message": "타사 사용" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Time To First Byte는 서버가 응답을 보내는 시간을 식별합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "Time To First Byte는 서버가 응답을 보내는 시간을 식별합니다. [자세히 알아보기](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "루트 문서에 {timeInMs, number, milliseconds} ms 소요됨" @@ -1113,7 +1113,7 @@ "message": "유형" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "앱에서 User Timing API를 사용하여 중요 사용자 경험이 이루어지는 동안의 실제 성능을 측정하세요. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "앱에서 User Timing API를 사용하여 중요 사용자 경험이 이루어지는 동안의 실제 성능을 측정하세요. [자세히 알아보기](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{사용자 시간 1회}other{사용자 시간 #회}}" @@ -1125,7 +1125,7 @@ "message": "‘{securityOrigin}’에 사전 연결 <link>가 있으나 브라우저에서 사용되지 않습니다. `crossorigin` 속성을 올바르게 사용하고 있는지 확인하세요." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "`preconnect` 또는 `dns-prefetch` 리소스 힌트를 추가하여 중요한 타사 원본에 대한 조기 연결을 수립하는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "`preconnect` 또는 `dns-prefetch` 리소스 힌트를 추가하여 중요한 타사 원본에 대한 조기 연결을 수립하는 것이 좋습니다. [자세히 알아보기](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "필수 원본 미리 연결하기" @@ -1134,13 +1134,13 @@ "message": "'{preloadURL}'에 사전 로드 <link>가 있으나 브라우저에서 사용되지 않습니다. `crossorigin` 속성을 올바르게 사용하고 있는지 확인하세요." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "`<link rel=preload>`을(를) 사용하여 현재 요청되는 리소스를 페이지 로드에 나중에 가져올 때 우선순위를 정하는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "`<link rel=preload>`을(를) 사용하여 현재 요청되는 리소스를 페이지 로드에 나중에 가져올 때 우선순위를 정하는 것이 좋습니다. [자세히 알아보기](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "중요한 요청을 미리 로드하기" }, "lighthouse-core/audits/viewport.js | description": { - "message": "휴대기기 화면에 앱을 최적화하려면 `<meta name=\"viewport\">` 태그를 추가합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "휴대기기 화면에 앱을 최적화하려면 `<meta name=\"viewport\">` 태그를 추가합니다. [자세히 알아보기](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "`<meta name=\"viewport\">` 태그 없음" @@ -1152,10 +1152,10 @@ "message": "`width` 또는 `initial-scale`이(가) 포함된 `<meta name=\"viewport\">` 태그가 있음" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "JavaScript가 사용 중지되었더라도 사용자에게 앱을 사용하려면 JavaScript가 필요하다는 경고 등의 일부 콘텐츠는 앱에 표시되어야 합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "JavaScript가 사용 중지되었더라도 사용자에게 앱을 사용하려면 JavaScript가 필요하다는 경고 등의 일부 콘텐츠는 앱에 표시되어야 합니다. [자세히 알아보기](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { - "message": "스크립트를 사용할 수 없는 경우 페이지 본문에서 일부 콘텐츠를 렌더링해야 합니다." + "message": "페이지 본문에서 스크립트를 사용할 수 없는 경우 본문에서 콘텐츠를 일부 렌더링해야 합니다." }, "lighthouse-core/audits/without-javascript.js | failureTitle": { "message": "JavaScript를 사용할 수 없는 경우 대체 콘텐츠를 제공하지 않음" @@ -1164,7 +1164,7 @@ "message": "JavaScript를 사용할 수 없는 경우에도 일부 콘텐츠를 포함함" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "프로그레시브 웹 앱을 빌드할 경우 앱이 오프라인에서도 작동할 수 있도록 서비스 워커를 사용하는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "프로그레시브 웹 앱을 빌드할 경우 앱이 오프라인에서도 작동할 수 있도록 서비스 워커를 사용하는 것이 좋습니다. [자세히 알아보기](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "현재 페이지가 오프라인 시 200으로 응답하지 않음"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lt.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lt.json index 1b21175..1a4ec08 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lt.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lt.json
@@ -30,10 +30,10 @@ "message": "Kai kuriuose ARIA pirminiuose vaidmenyse turi būti konkrečių antrinių vaidmenų, kad būtų galima atlikti numatytas pritaikomumo funkcijas. [Sužinokite daugiau](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Trūksta elementų su atributu „`[role]`“, kuriam reikia konkrečių antrinių elementų „`[role]`“." + "message": "Elementuose su ARIA vaidmeniu „`[role]`“, kurių antriniuose elementuose turi būti nurodytas konkretus „`[role]`“, trūksta kai kurių arba visų būtinų antrinių elementų." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Elementai su atributu „`[role]`“, kuriam reikia konkrečių antrinių elementų „`[role]`“ yra pateikti" + "message": "Elementuose su ARIA vaidmeniu „`[role]`“, kurių antriniuose elementuose turi būti nurodytas konkretus „`[role]`“, yra visi būtini antriniai elementai." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Kai kurie ARIA antriniai vaidmenys turi būti konkrečiuose pirminiuose vaidmenyse, kad būtų tinkamai vykdomos numatytosios pritaikomumo funkcijos. [Sužinokite daugiau](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Ekrano skaitytuvuose naudojamos funkcijos, padedančios lengviau naršyti lenteles. Užtikrinus, kad langeliai „`<td>`“, kuriuose naudojamas atributas „`[headers]`“, nurodo tik langelius toje pačioje lentelėje, gali būti pagerinta ekrano skaitytuvų naudotojų patirtis. [Sužinokite daugiau](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Langeliai elemente „`<table>`“, kuriuose naudojamas atributas „`[headers]`“, nurodo tik kitus tos pačios lentelės langelius." + "message": "Langeliai elemente „`<table>`“, kuriuose naudojamas atributas „`[headers]`“, nurodo elementą „`id`“, nerastą toje pačioje lentelėje." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Langeliai elemente „`<table>`“, kuriuose naudojamas atributas „`[headers]`“, nurodo tik kitus tos pačios lentelės langelius." + "message": "Langeliai elemente „`<table>`“, kuriuose naudojamas atributas „`[headers]`“, nurodo lentelės langelius, esančius toje pačioje lentelėje." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Ekrano skaitytuvuose naudojamos funkcijos, padedančios lengviau naršyti lenteles. Užtikrinus, kad lentelės antraštės visada nurodo tam tikrą langelių rinkinį, gali būti pagerinta ekrano skaitytuvų naudotojų patirtis. [Sužinokite daugiau](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Elementuose „`<video>`“ yra elementas „`<track>`“ su atributu „`[kind=\"description\"]`“" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Kad būtų tinkamai rodoma sistemoje „iOS“, kai naudotojai prideda laipsniškąją žiniatinklio programą prie pagrindinio ekrano, nurodykite `apple-touch-icon`. Ji turi nukreipti į neskaidrų 192 tšk. (arba 180 tšk.) kvadratinį PNG failą. [Sužinokite daugiau](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Kad būtų tinkamai rodoma sistemoje „iOS“, kai naudotojai prideda laipsniškąją žiniatinklio programą prie pagrindinio ekrano, nurodykite `apple-touch-icon`. Ji turi nukreipti į neskaidrų 192 tšk. (arba 180 tšk.) kvadratinį PNG failą. [Sužinokite daugiau](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Nepateikiama tinkama piktograma „`apple-touch-icon`“" @@ -342,7 +342,7 @@ "message": "Bendras centrinio procesoriaus laikas" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Apsvarstykite galimybę sutrumpinti JS analizei, kompiliavimui ir vykdymui skiriamą laiką. Mažesnės JS naudingosios apkrovos gali padėti tai padaryti. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Apsvarstykite galimybę sutrumpinti JS analizei, kompiliavimui ir vykdymui skiriamą laiką. Mažesnės JS naudingosios apkrovos gali padėti tai padaryti. [Sužinokite daugiau](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Sutrumpinkite „JavaScript“ vykdymo laiką" @@ -351,25 +351,25 @@ "message": "„JavaScript“ vykdymo laikas" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Dideli GIF failai nėra efektyvus animuoto turinio pateikimo būdas. Kad sutaupytumėte tinklo baitų, vietoje GIF failų galite naudoti MPEG4 ar „WebM“ vaizdo įrašų animacijai ir PNG ar „WebP“ statiniams vaizdams pateikti. [Sužinokite daugiau](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Dideli GIF failai nėra efektyvus animuoto turinio pateikimo būdas. Kad sutaupytumėte tinklo baitų, vietoje GIF failų galite naudoti MPEG4 ar „WebM“ vaizdo įrašų animacijai ir PNG ar „WebP“ statiniams vaizdams pateikti. [Sužinokite daugiau](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Naudokite vaizdo įrašo formatus animuotam turiniui pateikti" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Apsvarstykite galimybę įkelti ne ekraninius ir paslėptus vaizdus tik tada, kai bus įkelti visi svarbiausi ištekliai, kad sutrumpėtų laikas iki sąveikos. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Apsvarstykite galimybę įkelti ne ekraninius ir paslėptus vaizdus tik tada, kai bus įkelti visi svarbiausi ištekliai, kad sutrumpėtų laikas iki sąveikos. [Sužinokite daugiau](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Atidėkite ne ekraninius vaizdus" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Šaltiniai blokuoja puslapio pirmą žymėjimą. Apsvarstykite galimybę pateikti svarbiausius JS ar CSS kaip eilutinius elementus ir atidėti visus nesvarbius JS ar stilius. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Šaltiniai blokuoja puslapio pirmą žymėjimą. Apsvarstykite galimybę pateikti svarbiausius JS ar CSS kaip eilutinius elementus ir atidėti visus nesvarbius JS ar stilius. [Sužinokite daugiau](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Pašalinkite pateikimą blokuojančius išteklius" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Naudotojai turi mokėti už dideles tinklo naudingąsias apkrovas, be to, jos glaudžiai susijusios su ilgu įkėlimo laiku. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Naudotojai turi mokėti už dideles tinklo naudingąsias apkrovas, be to, jos glaudžiai susijusios su ilgu įkėlimo laiku. [Sužinokite daugiau](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Bendras dydis: {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Išvengiama didelių tinklo naudingųjų apkrovų" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Sumažinus CSS failų dydį, gali sumažėti tinklo naudingosios apkrovos. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Sumažinus CSS failų dydį, gali sumažėti tinklo naudingosios apkrovos. [Sužinokite daugiau](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Sumažinkite CSS failus" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Sumažinus „JavaScript“ failus, galima sumažinti naudingąsias apkrovas ir sutrumpinti scenarijaus analizavimo laiką. [Sužinokite daugiau](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Sumažinus „JavaScript“ failus, galima sumažinti naudingąsias apkrovas ir sutrumpinti scenarijaus analizavimo laiką. [Sužinokite daugiau](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Sumažinkite „JavaScript“" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Pašalinkite neveikiančias taisykles iš stiliaus failų ir atidėkite CSS kalbos, nenaudojamos turiniui virš matomos ribos, įkėlimą, kad tinklo veikla sunaudotų mažiau baitų. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Pašalinkite neveikiančias taisykles iš stiliaus failų ir atidėkite CSS kalbos, nenaudojamos turiniui virš matomos ribos, įkėlimą, kad tinklo veikla sunaudotų mažiau baitų. [Sužinokite daugiau](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Pašalinkite nevartojamą CSS kalbą" @@ -405,7 +405,7 @@ "message": "Pašalinkite nenaudojamą „JavaScript“" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Jei talpykla galios ilgiau, greičiau sulauksite pakartotinių apsilankymų puslapyje. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Jei talpykla galios ilgiau, greičiau sulauksite pakartotinių apsilankymų puslapyje. [Sužinokite daugiau](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Rastas 1 išteklius}one{Rastas # išteklius}few{Rasti # ištekliai}many{Rasta # ištekliaus}other{Rasta # išteklių}}" @@ -417,31 +417,31 @@ "message": "Naudojama efektyvi statinių išteklių talpyklos politika" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimizuoti vaizdai įkeliami greičiau ir sunaudoja mažiau mobiliojo ryšio duomenų. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimizuoti vaizdai įkeliami greičiau ir sunaudoja mažiau mobiliojo ryšio duomenų. [Sužinokite daugiau](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Efektyviai koduokite vaizdus" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Teikite tinkamo dydžio vaizdus, kad būtų taupomi mobiliojo ryšio duomenys ir puslapis būtų įkeliamas greičiau. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Teikite tinkamo dydžio vaizdus, kad būtų taupomi mobiliojo ryšio duomenys ir puslapis būtų įkeliamas greičiau. [Sužinokite daugiau](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Pasirinkite tinkamo dydžio vaizdus" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Tekstinius išteklius reikėtų suglaudinti (naudojant „Gzip“, „Deflate“ arba „Brotli“), kad bendrai būtų sunaudojama kuo mažiau tinklo baitų. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Tekstinius išteklius reikėtų suglaudinti (naudojant „Gzip“, „Deflate“ arba „Brotli“), kad bendrai būtų sunaudojama kuo mažiau tinklo baitų. [Sužinokite daugiau](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Įgalinkite teksto glaudinimą" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Tokių formatų kaip JPEG 2000, JPEG XR ir „WebP“ vaizdai dažniausiai glaudinami geriau nei PNG ar JPEG vaizdai, todėl yra atsisiunčiami greičiau ir sunaudoja mažiau duomenų. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Tokių formatų kaip JPEG 2000, JPEG XR ir „WebP“ vaizdai dažniausiai glaudinami geriau nei PNG ar JPEG vaizdai, todėl yra atsisiunčiami greičiau ir sunaudoja mažiau duomenų. [Sužinokite daugiau](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Pateikite naujos kartos formatų vaizdus" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Jei programos turinio plotis nesutampa su peržiūros srities pločiu, jūsų programa gali būti neoptimizuota mobiliųjų įrenginių ekranams. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Jei programos turinio plotis nesutampa su peržiūros srities pločiu, jūsų programa gali būti neoptimizuota mobiliųjų įrenginių ekranams. [Sužinokite daugiau](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "{innerWidth} tšk. peržiūros sritis neatitinka {outerWidth} tšk. lango dydžio." @@ -453,7 +453,7 @@ "message": "Turinys yra tinkamo dydžio peržiūros sričiai" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Toliau pateiktose svarbiausių užklausų grandinėse nurodoma, kurie ištekliai įkelti nurodant aukštą prioritetą. Kad puslapio įkėlimas būtų sklandesnis, apsvarstykite galimybę sutrumpinti grandines, sumažinti atsisiunčiamų išteklių dydį arba atidėti nebūtinų išteklių atsisiuntimą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Toliau pateiktose svarbiausių užklausų grandinėse nurodoma, kurie ištekliai įkelti nurodant aukštą prioritetą. Kad puslapio įkėlimas būtų sklandesnis, apsvarstykite galimybę sutrumpinti grandines, sumažinti atsisiunčiamų išteklių dydį arba atidėti nebūtinų išteklių atsisiuntimą. [Sužinokite daugiau](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Rasta 1 grandinė}one{Rasta # grandinė}few{Rastos # grandinės}many{Rasta # grandinės}other{Rasta # grandinių}}" @@ -675,7 +675,7 @@ "message": "Pulte neužregistruota naršyklės klaidų" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Pasinaudokite šriftų pateikimo CSS funkcija, kad tekstas būtų matomas naudotojui, kol įkeliami žiniatinklio šriftai. [Sužinokite daugiau](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Pasinaudokite šriftų pateikimo CSS funkcija, kad tekstas būtų matomas naudotojui, kol įkeliami žiniatinklio šriftai. [Sužinokite daugiau](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Užtikrinkite, kad įkeliant žiniatinklio šriftą būtų matomas tekstas" @@ -705,7 +705,7 @@ "message": "Netinkama vaizdo dydžio informacija: {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Naršyklės gali aktyviai raginti naudotojus pridėti jūsų programą prie pagrindinio ekrano, tai paskatintų geresnį įtraukimą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Naršyklės gali aktyviai raginti naudotojus pridėti jūsų programą prie pagrindinio ekrano, tai paskatintų geresnį įtraukimą. [Sužinokite daugiau](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Žiniatinklio programos aprašas neatitinka diegiamumo reikalavimų." @@ -729,7 +729,7 @@ "message": "Naudojamas HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Spartus puslapių įkėlimas mobiliojo ryšio tinkle užtikrina gerą mobiliųjų įrenginių naudotojų patirtį. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Spartus puslapių įkėlimas mobiliojo ryšio tinkle užtikrina gerą mobiliųjų įrenginių naudotojų patirtį. [Sužinokite daugiau](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Laikas iki sąveikos – {timeInMs, number, seconds} sek." @@ -750,7 +750,7 @@ "message": "Kategorija" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Apsvarstykite, ar neverta sutrumpinti JS analizei, kompiliavimui ir vykdymui skiriamo laiko. Mažesnės JS naudingosios apkrovos gali padėti tai padaryti." + "message": "Apsvarstykite galimybę sutrumpinti JS analizei, kompiliavimui ir vykdymui skiriamą laiką. Mažesnės JS naudingosios apkrovos gali padėti tai padaryti. [Sužinokite daugiau](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Pagrindinės grupės veikimo sutrumpinimas" @@ -759,49 +759,49 @@ "message": "Sutrumpinamas pagrindinės grupės veikimas" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Norint pasiekti daugiausia naudotojų, svetainės turi veikti visose svarbiausiose naršyklėse. [Sužinokite daugiau](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Norint pasiekti daugiausia naudotojų, svetainės turi veikti visose svarbiausiose naršyklėse. [Sužinokite daugiau](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Svetainė veikia skirtingose naršyklėse" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Užtikrinkite, kad atskiri puslapiai būtų susiejami giliąja nuoroda naudojant URL ir kad URL yra unikalūs pagal bendrinimo visuomeninėje medijoje tikslą. [Sužinokite daugiau](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Užtikrinkite, kad atskiri puslapiai būtų susiejami giliąja nuoroda naudojant URL ir kad URL yra unikalūs pagal bendrinimo visuomeninėje medijoje tikslą. [Sužinokite daugiau](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Kiekvienas puslapis turi URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Palietus aplink perėjimai turi būti sklandūs, net esant lėtam interneto ryšiui, tai labai svarbu norint suprasti našumą. [Sužinokite daugiau](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Palietus ekraną perėjimai turi būti sklandūs, net esant lėtam interneto ryšiui. Tai labai svarbu, kad naudotojas tinkamai suvoktų našumą. [Sužinokite daugiau](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Neatrodo, kad puslapio perėjimai būtų blokuojami tinklo" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Įvertinta įvesties delsa yra įvertintas laikas milisekundėmis, per kurį programa atsako į naudotojo įvestį per labiausiai užimtas puslapio įkėlimo 5 sekundes. Jei delsa ilgesnė nei 50 ms, naudotojams gali atrodyti, kad programa veikia lėtai. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Įvertinta įvesties delsa yra įvertintas laikas milisekundėmis, per kurį programa atsako į naudotojo įvestį per labiausiai užimtas puslapio įkėlimo 5 sekundes. Jei delsa ilgesnė nei 50 ms, naudotojams gali atrodyti, kad programa veikia lėtai. [Sužinokite daugiau](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Įvertinta įvesties delsa" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Pirmas turiningas žymėjimas nurodo laiką, kada pažymimas pirmasis tekstas ar vaizdas. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Pirmas turiningas žymėjimas nurodo laiką, kada pažymimas pirmasis tekstas ar vaizdas. [Sužinokite daugiau](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Pirmasis „Contentful“ parodymas" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Pirmas centrinio procesoriaus neaktyvumo laikas nurodo pirmą kartą, kai pagrindinė puslapio grupė buvo pakankamai neaktyvi, kad galėtų apdoroti įvestį. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Pirmas centrinio procesoriaus neaktyvumo laikas nurodo pirmą kartą, kai pagrindinė puslapio grupė yra pakankamai neaktyvi, kad galėtų apdoroti įvestį. [Sužinokite daugiau](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Pirmas cent. procesoriaus laisvas laikas" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Pirmasis reikšmingas parodymas nurodo, kada parodomas pagrindinis puslapio turinys. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Pirmasis reikšmingas parodymas nurodo, kada parodomas pagrindinis puslapio turinys. [Sužinokite daugiau](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Pirmasis reikšmingas parodymas" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Laikas iki sąveikos yra vertė, nurodanti, kiek laiko reikia, kol puslapis tampa visiškai interaktyvus. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Laikas iki sąveikos yra vertė, nurodanti, kiek laiko reikia, kol puslapis tampa visiškai interaktyvus. [Sužinokite daugiau](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Laikas iki sąveikos" @@ -813,7 +813,7 @@ "message": "Maksimali potenciali pirmosios įvesties delsa" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Greičio rodiklis parodo, kaip greitai pavaizduojamas puslapio turinys. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Greičio rodiklis parodo, kaip greitai pavaizduojamas puslapio turinys. [Sužinokite daugiau](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Greičio rodiklis" @@ -837,7 +837,7 @@ "message": "Serverio vidinės pusės delsa" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Pagalbinis „JavaScript“ failas įgalina žiniatinklio programą veikti patikimai nenuspėjamomis tinklo sąlygomis. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Pagalbinis „JavaScript“ failas įgalina žiniatinklio programą veikti patikimai nenuspėjamomis tinklo sąlygomis. [Sužinokite daugiau](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "Kai neprisijungta prie interneto, `start_url` neatsako rodydamas klaidos kodą 200." @@ -861,7 +861,7 @@ "message": "Našumo biudžetas" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Jei jau nustatėte HTTPS, būtinai peradresuokite visą HTTP srautą į HTTPS, kad visi naudotojai galėtų naudotis saugiomis žiniatinklio funkcijomis. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Jei jau nustatėte HTTPS, būtinai peradresuokite visą HTTP srautą į HTTPS, kad visi naudotojai galėtų naudotis saugiomis žiniatinklio funkcijomis. [Sužinokite daugiau](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Nenukreipia HTTP srauto į HTTPS" @@ -870,7 +870,7 @@ "message": "Nukreipia HTTP srautą į HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Peradresuojant puslapio įkėlimo delsos laikas dar labiau pailgėja. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Peradresuojant puslapio įkėlimo delsos laikas dar labiau pailgėja. [Sužinokite daugiau](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Venkite kelių puslapio peradresavimų" @@ -1035,7 +1035,7 @@ "message": "Liečiami objektai tinkamo dydžio" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Pagalbinis „JavaScript“ failas – tai technologija, įgalinanti jūsų programą naudoti daug laipsniškosios žiniatinklio programos funkcijų, pvz., naudoti neprisijungus, pridėti prie pagrindinio ekrano ar naudoti iš karto gaunamus pranešimus. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Pagalbinis „JavaScript“ failas – tai technologija, įgalinanti jūsų programą naudoti daug laipsniškosios žiniatinklio programos funkcijų, pvz., naudoti neprisijungus, pridėti prie pagrindinio ekrano ar naudoti iš karto gaunamus pranešimus. [Sužinokite daugiau](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Šis puslapis valdomas naudojant pagalbinį „JavaScript“ failą, tačiau `start_url` nerasta, nes aprašo nepavyko analizuoti kaip galiojančio JSON" @@ -1056,7 +1056,7 @@ "message": "Registruojamas pagalbinis „JavaScript“ failas, naudojamas puslapiams ir `start_url` valdyti" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Teminis prisistatymo langas užtikrina kokybišką patirtį naudotojui paleidžiant jūsų programą iš pagrindinio ekrano. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Teminis prisistatymo langas užtikrina kokybišką patirtį naudotojui paleidžiant jūsų programą iš pagrindinio ekrano. [Sužinokite daugiau](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nesukonfigūruota tinkintam prisistatymo langui" @@ -1065,7 +1065,7 @@ "message": "Sukonfigūruota tinkintam prisistatymo langui" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Naršyklės adreso juostos temos negalima pakeisti taip, kad atitiktų svetainės temą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "Naršyklės adreso juostos temos negalima pakeisti taip, kad atitiktų svetainės temą. [Sužinokite daugiau](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Nenustatoma adreso juostos temos spalva." @@ -1092,7 +1092,7 @@ "message": "Trečiosios šalies naudojimas" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Laikas iki pirmojo baito nurodo laiką, per kurį serveris atsako. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Laikas iki pirmojo baito nurodo laiką, per kurį serveris atsako. [Sužinokite daugiau](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Šakninio dokumento įkėlimas užtruko {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tipas" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Apsvarstykite galimybę apdoroti programą naudojant naudotojo laiko API ir įvertinti programos realų našumą, kai naudotojas naudoja pagrindines funkcijas. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Apsvarstykite galimybę apdoroti programą naudojant naudotojo laiko API ir įvertinti programos realų našumą, kai naudotojas naudoja pagrindines funkcijas. [Sužinokite daugiau](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 naudotojo laikas}one{# naudotojo laikas}few{# naudotojo laikai}many{# naudotojo laiko}other{# naudotojo laikų}}" @@ -1125,7 +1125,7 @@ "message": "Rasta atributo „{securityOrigin}“ išankstinio sujungimo nuoroda „<link>“, bet naršyklė jos nenaudojo. Patikrinkite, ar atributas „`crossorigin`“ naudojamas tinkamai." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Apsvarstykite galimybę pridėti `preconnect` arba `dns-prefetch` ištekliaus nurodymus, kad ryšys su svarbiais trečiųjų šalių šaltiniais būtų užmezgamas iš anksto. [Sužinokite daugiau](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Apsvarstykite galimybę pridėti `preconnect` arba `dns-prefetch` ištekliaus nurodymus, kad ryšys su svarbiais trečiųjų šalių šaltiniais būtų užmezgamas iš anksto. [Sužinokite daugiau](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Iš anksto prisijunkite prie reikiamų šaltinių" @@ -1134,13 +1134,13 @@ "message": "Rasta atributo „{preloadURL}“ išankstinio įkėlimo nuoroda „<link>“, bet naršyklė jos nenaudojo. Patikrinkite, ar atributas „`crossorigin`“ naudojamas tinkamai." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Apsvarstykite galimybę naudoti „`<link rel=preload>`“ ir suteikti pirmenybę gaunamiems ištekliams, kurių užklausos šiuo metu teikiamos vėliau įkeliant puslapį. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Apsvarstykite galimybę naudoti „`<link rel=preload>`“ ir suteikti pirmenybę gaunamiems ištekliams, kurių užklausos šiuo metu teikiamos vėliau įkeliant puslapį. [Sužinokite daugiau](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Iš anksto įkelkite svarbiausias užklausas" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Pridedama žyma `<meta name=\"viewport\">`, siekiant optimizuoti programą mobiliųjų ekranams. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Pridedama žyma `<meta name=\"viewport\">`, siekiant optimizuoti programą mobiliųjų ekranams. [Sužinokite daugiau](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Žyma `<meta name=\"viewport\">` nerasta" @@ -1152,7 +1152,7 @@ "message": "Yra žyma `<meta name=\"viewport\">` su `width` arba `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Kai „JavaScript“ išjungta, jūsų programoje turėtų būti rodoma turinio, net jei tai tik įspėjimas naudotojui, kad „JavaScript“ būtina norint naudoti programą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "Kai „JavaScript“ išjungta, jūsų programoje turėtų būti rodoma turinio, net jei tai tik įspėjimas naudotojui, kad „JavaScript“ būtina norint naudoti programą. [Sužinokite daugiau](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Puslapio pagrindinėje dalyje turi būti pateikta turinio, jei scenarijus nepasiekiamas." @@ -1164,7 +1164,7 @@ "message": "Yra turinio, kai „JavaScript“ nepasiekiama" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Jei kuriate laipsniškąją žiniatinklio programą, apsvarstykite galimybę naudoti pagalbinį „JavaScript“ failą, kad programa veiktų neprisijungus. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Jei kuriate laipsniškąją žiniatinklio programą, apsvarstykite galimybę naudoti pagalbinį „JavaScript“ failą, kad programa veiktų neprisijungus. [Sužinokite daugiau](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Kai neprisijungta prie interneto, dabartinis puslapis neatsako rodydamas klaidos kodą 200."
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lv.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lv.json index c56f0b7..5056775 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lv.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lv.json
@@ -30,10 +30,10 @@ "message": "Dažām ARIA vecāklomām ir jāietver konkrētas pakārtotās lomas, lai varētu nodrošināt pieejamības funkcijas. [Uzziniet vairāk](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Trūkst elementu ar elementiem `[role]`, kuriem ir nepieciešamas konkrētas bērna lomas (`[role]`)" + "message": "Elementos ar ARIA lomu `[role]`, kuru pakārtotajiem elementiem ir jāsatur konkrēts vienums `[role]`, trūkst dažu vai visu šo obligāto pakārtoto elementu." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Elementi ar atribūtiem `[role]`, kuriem ir nepieciešamas konkrētas bērna lomas (`[role]`), ir klātesoši" + "message": "Elementos ar ARIA lomu `[role]`, kuru pakārtotajiem elementiem ir jāsatur konkrēts vienums `[role]`, ir visi obligātie pakārtotie elementi." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Dažām ARIA pakārtotajām lomām ir jābūt ietvertām konkrētās vecāklomās, lai varētu nodrošināt pieejamības funkcijas. [Uzziniet vairāk](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Ekrāna lasītāju funkcijas atvieglo pārvietošanos tabulās. Ja elementa `<td>` šūnās, kas izmanto atribūtu `[headers]`, ir atsauces tikai uz citām šūnām tajā pašā tabulā, tiek nodrošināta labāka pieredze lietotājiem, kuri izmanto ekrāna lasītājus. [Uzziniet vairāk](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Elementa `<table>` šūnās, kas izmanto atribūtu `[headers]`, ir atsauces uz citām šūnām tajā pašā tabulā" + "message": "Elementa `<table>` šūnās, kuras izmanto atribūtu `[headers]`, ir atsauces uz elementu `id`, kas netika atrasts tajā pašā tabulā." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Elementa `<table>` šūnās, kas izmanto atribūtu `[headers]` ir atsauces tikai uz citām šūnām tajā pašā tabulā" + "message": "Elementa `<table>` šūnās, kuras izmanto atribūtu `[headers]`, ir atsauces uz citām šūnām tajā pašā tabulā." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Ekrāna lasītāju funkcijas atvieglo pārvietošanos tabulās. Ja tabulu virsrakstos vienmēr ir atsauces uz citām šūnām, tas var nodrošināt labāku pieredzi lietotājiem, kuri izmanto ekrāna lasītājus. [Uzziniet vairāk](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Elementi `<video>` ietver elementu `<track>` ar parametru `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Lai iegūtu ideālu izskatu iOS ierīcē, lietotājiem pievienojot progresīvo tīmekļa lietotni sākuma ekrānam, definējiet atribūtu `apple-touch-icon`. Tam ir jānorāda uz necaurspīdīgu 192 pikseļu (vai 180 pikseļu) kvadrātveida PNG. [Uzziniet vairāk](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Lai iegūtu ideālu izskatu iOS ierīcē, lietotājiem pievienojot progresīvo tīmekļa lietotni sākuma ekrānam, definējiet atribūtu `apple-touch-icon`. Tam ir jānorāda uz necaurspīdīgu 192 pikseļu (vai 180 pikseļu) kvadrātveida PNG. [Uzziniet vairāk](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Netiek nodrošināts derīgs atribūts “`apple-touch-icon`”" @@ -342,7 +342,7 @@ "message": "Kopējais centrālā procesora laiks" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Ieteicams samazināt laiku, kas tiek izmantots JS parsēšanai, kompilēšanai un izpildei. Iespējams, konstatēsiet, ka ir noderīgi izmantot mazākas JS lietderīgās slodzes. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Ieteicams samazināt laiku, kas tiek izmantots JS parsēšanai, kompilēšanai un izpildei. Iespējams, konstatēsiet, ka ir noderīgi izmantot mazākas JS lietderīgās slodzes. [Uzziniet vairāk](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "JavaScript izpildes laika samazināšana" @@ -351,25 +351,25 @@ "message": "JavaScript izpildes laiks" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Lieli GIF attēli nav efektīvi animēta satura rādīšanai. Animācijām ieteicams izmantot MPEG4/WebM video, bet statiskiem attēliem — PNG/WebP, nevis GIF, lai samazinātu tīkla lietojumu (baitos). [Uzziniet vairāk](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)." + "message": "Lieli GIF attēli nav efektīvi animēta satura rādīšanai. Animācijām ieteicams izmantot MPEG4/WebM video, bet statiskiem attēliem — PNG/WebP, nevis GIF, lai samazinātu tīkla lietojumu (baitos). [Uzziniet vairāk](https://web.dev/efficient-animated-content)." }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Izmantojiet video failu formātus animētam saturam" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Lai samazinātu laiku līdz interaktivitātei, ārpus ekrāna attēlus un paslēptos attēlus ar lēnu ielādi ieteicams atlikt līdz visu svarīgo resursu ielādes pabeigšanai. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Lai samazinātu laiku līdz interaktivitātei, ārpus ekrāna attēlus un paslēptos attēlus ar lēnu ielādi ieteicams atlikt līdz visu svarīgo resursu ielādes pabeigšanai. [Uzziniet vairāk](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Ārpus ekrāna esošo attēlu atlikšana" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resursi bloķē jūsu lapas pirmo satura atveidojumu. Ieteicams rādīt svarīgos JS/CSS iekļautā veidā un atteikties no visiem nesvarīgajiem JS/stiliem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resursi bloķē jūsu lapas pirmo satura atveidojumu. Ieteicams rādīt svarīgos JS/CSS iekļautā veidā un atteikties no visiem nesvarīgajiem JS/stiliem. [Uzziniet vairāk](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Samaziniet resursus, kas bloķē renderēšanu" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Lielas tīkla lietderīgās slodzes izmaksā lietotājiem īstu naudu un ir cieši saistītas ar ilgu ielādes laiku. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Lielas tīkla lietderīgās slodzes izmaksā lietotājiem īstu naudu un ir cieši saistītas ar ilgu ielādes laiku. [Uzziniet vairāk](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Kopējais lielums bija {totalBytes, number, bytes} KB." @@ -381,19 +381,19 @@ "message": "Nepieļauj pārāk lielu tīkla lietderīgo slodzi" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Samazinot CSS failus, var samazināties tīkla lietderīgā slodze. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Samazinot CSS failus, var samazināties tīkla lietderīgā slodze. [Uzziniet vairāk](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Samaziniet CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Samazinot JavaScript failus, var samazināties lietderīgās slodzes apjomi un skriptu parsēšanas laiks. [Uzziniet vairāk](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Samazinot JavaScript failus, var samazināties lietderīgās slodzes apjomi un skriptu parsēšanas laiks. [Uzziniet vairāk](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "JavaScript·samazināšana" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Noņemiet stila lapās kārtulas, kas nedarbojas, un atlieciet pirmajā ekrāna saturā neizmantotā CSS ielādi, lai samazinātu tīkla aktivitātes nevajadzīgi izmantoto baitu apjomu. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Noņemiet stila lapās kārtulas, kas nedarbojas, un atlieciet pirmajā ekrāna saturā neizmantotā CSS ielādi, lai samazinātu tīkla aktivitātes nevajadzīgi izmantoto baitu apjomu. [Uzziniet vairāk](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Noņemt neizmantoto CSS" @@ -405,7 +405,7 @@ "message": "Noņemiet neizmantoto JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Iestatot ilgu kešatmiņas mūžu, lapas atkārtoti apmeklējumi varētu paātrināties. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Iestatot ilgu kešatmiņas mūžu, lapas atkārtoti apmeklējumi varētu paātrināties. [Uzziniet vairāk](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Atrasts 1 resurss}zero{Atrasti # resursi}one{Atrasts # resurss}other{Atrasti # resursi}}" @@ -417,31 +417,31 @@ "message": "Efektīvas kešatmiņas politikas izmantošana statiskiem elementiem" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimizēti attēli tiek ielādēti ātrāk un izmanto mazāku mobilo datu apjomu. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimizēti attēli tiek ielādēti ātrāk un izmanto mazāku mobilo datu apjomu. [Uzziniet vairāk](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Efektīva attēlu kodēšana" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Rādiet atbilstoša izmēra attēlus, lai tiktu izmantots mazāks mobilo datu apjoms un tiktu uzlabots ielādes laiks. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Rādiet atbilstoša izmēra attēlus, lai tiktu izmantots mazāks mobilo datu apjoms un tiktu uzlabots ielādes laiks. [Uzziniet vairāk](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Atbilstoša lieluma attēli" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Lai samazinātu kopējo tīkla lietojumu (baitos), ieteicams izmantot saspiešanu (Gzip, Deflate vai Brotli). [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Lai samazinātu kopējo tīkla lietojumu (baitos), ieteicams izmantot saspiešanu (Gzip, Deflate vai Brotli). [Uzziniet vairāk](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Iespējojiet teksta saspiešanu" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Tādi attēlu formāti kā JPEG 2000, JPEG XR un WebP bieži ir veiksmīgāk saspiežami nekā PNG vai JPEG. Tas nozīmē ātrāku lejupielādi un mazāku datu patēriņu. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Tādi attēlu formāti kā JPEG 2000, JPEG XR un WebP bieži ir veiksmīgāk saspiežami nekā PNG vai JPEG. Tas nozīmē ātrāku lejupielādi un mazāku datu patēriņu. [Uzziniet vairāk](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Rādiet attēlus nākamās paaudzes formātos" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Ja lietotnes satura platums neatbilst skatvietas platumam, lietotne var nebūt optimizēta mobilo ierīču ekrāniem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Ja lietotnes satura platums neatbilst skatvietas platumam, lietotne var nebūt optimizēta mobilo ierīču ekrāniem. [Uzziniet vairāk](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Skatvietas izmērs ({innerWidth} px) neatbilst loga izmēram ({outerWidth} px)." @@ -453,7 +453,7 @@ "message": "Satura izmērs ir pareizs, salīdzinot ar skatvietu" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Metrika “Kritisko pieprasījumu ķēdes” tālāk parāda, kuri resursi ir ielādēti ar augstāko prioritāti. Lai uzlabotu lapas ielādi, ieteicams samazināt ķēžu garumu, samazināt resursu lejupielādes apjomu vai atlikt nevajadzīgo resursu lejupielādi. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Metrika “Kritisko pieprasījumu ķēdes” tālāk parāda, kuri resursi ir ielādēti ar augstāko prioritāti. Lai uzlabotu lapas ielādi, ieteicams samazināt ķēžu garumu, samazināt resursu lejupielādes apjomu vai atlikt nevajadzīgo resursu lejupielādi. [Uzziniet vairāk](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Atrasta 1 ķēde}zero{Atrastas # ķēdes}one{Atrasta # ķēde}other{Atrastas # ķēdes}}" @@ -675,7 +675,7 @@ "message": "Neviena pārlūkprogrammas kļūda nav reģistrēta konsolē" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Izmantojiet fonta rādīšanas CSS funkciju, lai lietotāji tīmekļa fontu ielādes laikā varētu redzēt tekstu. [Uzziniet vairāk](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Izmantojiet fonta rādīšanas CSS funkciju, lai lietotāji tīmekļa fontu ielādes laikā varētu redzēt tekstu. [Uzziniet vairāk](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Visa teksta redzamības nodrošināšana tīmekļa fonta ielādes laikā" @@ -705,7 +705,7 @@ "message": "Nederīga attēla lieluma informācija: {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Pārlūkprogrammās var aktīvi rādīt lietotājiem uzvednes ar ierosinājumu pievienot jūsu lietotni sākuma ekrānam. Tādējādi var izdoties palielināt iesaisti. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Pārlūkprogrammās var aktīvi rādīt lietotājiem uzvednes ar ierosinājumu pievienot jūsu lietotni sākuma ekrānam. Tādējādi var izdoties palielināt iesaisti. [Uzziniet vairāk](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Tīmekļa lietotnes manifests neatbilst instalējamības prasībām" @@ -729,7 +729,7 @@ "message": "Tiek izmantots protokols HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Ātra lapas ielāde, izmantojot mobilo datu tīklu, nodrošina labu pieredzi mobilo ierīču lietotājiem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Ātra lapas ielāde, izmantojot mobilo datu tīklu, nodrošina labu pieredzi mobilo ierīču lietotājiem. [Uzziniet vairāk](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktīvais laiks: {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategorija" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Ieteicams samazināt laiku, kas tiek izmantots JS parsēšanai, kompilēšanai un izpildei. Iespējams, konstatēsiet, ka ir noderīgi izmantot mazākas JS lietderīgās slodzes." + "message": "Ieteicams samazināt laiku, kas tiek izmantots JS parsēšanai, kompilēšanai un izpildei. Iespējams, konstatēsiet, ka ir noderīgi izmantot mazākas JS lietderīgās slodzes. [Uzziniet vairāk](https://web.dev/mainthread-work-breakdown)." }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Samaziniet galvenā pavediena darbu" @@ -759,49 +759,49 @@ "message": "Galvenā pavediena darba samazināšana" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Lai sasniegtu pēc iespējas vairāk lietotāju, ieteicams izstrādāt vietnes, kas darbojas visās lielākajās pārlūkprogrammās. [Uzziniet vairāk](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Lai sasniegtu pēc iespējas vairāk lietotāju, ieteicams izstrādāt vietnes, kas darbojas visās lielākajās pārlūkprogrammās. [Uzziniet vairāk](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Vietne darbojas dažādās pārlūkprogrammās" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Nodrošiniet, lai lietotāji varētu veidot un atvērt dziļās saites uz atsevišķām lapām, izmantojot URL. Turklāt URL jābūt unikāliem, lai varētu kopīgot lapas sociālajos saziņas līdzekļos. [Uzziniet vairāk](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Nodrošiniet, lai lietotāji varētu veidot un atvērt dziļās saites uz atsevišķām lapām, izmantojot URL. Turklāt URL jābūt unikāliem, lai varētu kopīgot lapas sociālajos saziņas līdzekļos. [Uzziniet vairāk](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Katrai lapai ir URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Ieteicams, lai pārejas būtu ātras pat tad, ja tīkls ir lēns. Pāreju ātrums stipri ietekmē lietotāju priekšstatu par lietotnes veiktspēju. [Uzziniet vairāk](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Ieteicams, lai, pieskaroties lietotnes elementiem, pārejas būtu ātras pat tad, ja tīkla darbība ir lēna. Šis ir galvenais faktors, kas nosaka to, kā lietotājs uztver veiktspēju. [Uzziniet vairāk](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Tīklā nerodas sajūta, ka lēna ielāde bloķētu pārejas starp lapām" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Paredzētais ievades latentums aptuveni norāda, pēc cik ilga laika (milisekundēs) uz lietotāja ievadi reaģēs jūsu lietotne aizņemtākajā lapas ielādes 5 s periodā. Ja latentums pārsniedz 50 ms, iespējams, lietotājiem liksies, ka jūsu lietotne strādā ar traucējumiem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Paredzētais ievades latentums aptuveni norāda, pēc cik ilga laika (milisekundēs) uz lietotāja ievadi reaģēs jūsu lietotne aizņemtākajā lapas ielādes 5 s periodā. Ja latentums pārsniedz 50 ms, iespējams, lietotājiem liksies, ka jūsu lietotne strādā ar traucējumiem. [Uzziniet vairāk](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Paredzētais ievades latentums" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Metrika \"Pirmais satura marķējums\" atzīmē laiku, kad tiek marķēts pirmais teksts vai attēls. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Metrika \"Pirmais satura marķējums\" atzīmē laiku, kad tiek marķēts pirmais teksts vai attēls. [Uzziniet vairāk](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Pirmais saturīgais satura atveidojums" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Metrika “Pirmā CPU dīkstāve” norāda laiku, kad lapas galvenais pavediens ir kļuvis pietiekami mazs, lai varētu apstrādāt ievadi. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Metrika “Pirmā CPU dīkstāve” norāda laiku, kad lapas galvenais pavediens ir kļuvis pietiekami mazs, lai varētu apstrādāt ievadi. [Uzziniet vairāk](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Pirmā CPU dīkstāve" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Metrika “Pirmais nozīmīgais satura atveidojums” norāda, kad kļūst redzams lapas galvenais saturs. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Metrika “Pirmais nozīmīgais satura atveidojums” norāda, kad kļūst redzams lapas galvenais saturs. [Uzziniet vairāk](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Pirmais nozīmīgais satura atveidojums" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Laiks līdz interaktivitātei ir laika apjoms, kas nepieciešams, lai lapa kļūtu pilnībā interaktīva. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Laiks līdz interaktivitātei ir laika apjoms, kas nepieciešams, lai lapa kļūtu pilnībā interaktīva. [Uzziniet vairāk](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Laiks līdz interaktivitātei" @@ -813,7 +813,7 @@ "message": "Maks. potenciālā pirmā ievades aizkave" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Ātruma rādītājs norāda, cik ātri tiek parādīts lapas saturs. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Ātruma rādītājs norāda, cik ātri tiek parādīts lapas saturs. [Uzziniet vairāk](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Ātruma rādītājs" @@ -837,7 +837,7 @@ "message": "Servera aizmugursistēmas latentums" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Izmantojot pakalpojumu skriptu, varat nodrošināt uzticamu tīmekļa lietotnes darbību neparedzamos tīkla apstākļos. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Izmantojot pakalpojumu skriptu, varat nodrošināt uzticamu tīmekļa lietotnes darbību neparedzamos tīkla apstākļos. [Uzziniet vairāk](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` bezsaistē nereaģē ar statusa kodu 200" @@ -861,7 +861,7 @@ "message": "Izpildes budžets" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Ja HTTPS protokols jau ir iestatīts, noteikti novirziet visu HTTP datplūsmu uz HTTPS, lai visiem lietotājiem iespējotu droša tīmekļa funkcijas. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Ja HTTPS protokols jau ir iestatīts, noteikti novirziet visu HTTP datplūsmu uz HTTPS, lai visiem lietotājiem iespējotu droša tīmekļa funkcijas. [Uzziniet vairāk](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "HTTP datplūsma netiek novirzīta uz HTTPS lapām" @@ -870,7 +870,7 @@ "message": "HTTP datplūsma tiek novirzīta uz HTTPS lapām" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Novirzīšana rada papildu aizkaves pirms lapas ielādes. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Novirzīšana rada papildu aizkaves pirms lapas ielādes. [Uzziniet vairāk](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Nepieļaujiet vairākas lapas novirzīšanas" @@ -1035,7 +1035,7 @@ "message": "Pieskārienu mērķi ir pietiekami liela izmēra" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Pakalpojuma skripts ir tehnoloģija, kas palīdz nodrošināt daudzas progresīvo tīmekļa lietotņu funkcijas, piemēram, lietotnes izmantošanu bezsaistē, pievienošanu sākuma ekrānam un informatīvos paziņojumus. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Pakalpojuma skripts ir tehnoloģija, kas palīdz nodrošināt daudzas progresīvo tīmekļa lietotņu funkcijas, piemēram, lietotnes izmantošanu bezsaistē, pievienošanu sākuma ekrānam un informatīvos paziņojumus. [Uzziniet vairāk](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Lapu kontrolē pakalpojumu skripts, taču netika atrasts `start_url`, jo neizdevās analizēt manifestu kā derīgu JSON failu" @@ -1056,7 +1056,7 @@ "message": "Ir reģistrēts pakalpojumu skripts, kas kontrolē lapu un `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Uzplaiksnījuma ekrāns ar piemērotu motīvu nodrošina labu pieredzi, lietotājiem palaižot lietotni no sākuma ekrāna. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Uzplaiksnījuma ekrāns ar piemērotu motīvu nodrošina labu pieredzi, lietotājiem palaižot lietotni no sākuma ekrāna. [Uzziniet vairāk](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nav konfigurēta ar pielāgotu uzplaiksnījuma ekrānu" @@ -1065,7 +1065,7 @@ "message": "Konfigurēta ar pielāgotu uzplaiksnījuma ekrānu" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Pārlūkprogrammas adreses joslu var noformēt atbilstoši jūsu vietnes motīvam. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Pārlūkprogrammas adreses joslu var noformēt atbilstoši jūsu vietnes motīvam. [Uzziniet vairāk](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Lapa neiestata adreses joslas motīva krāsu." @@ -1092,7 +1092,7 @@ "message": "Trešo pušu lietojums" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Metrika “Laiks līdz pirmajam baitam” norāda laiku, kad jūsu serveris nosūta atbildi. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Metrika “Laiks līdz pirmajam baitam” norāda laiku, kad jūsu serveris nosūta atbildi. [Uzziniet vairāk](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Saknes dokumentam nepieciešamais laiks: {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Veids" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Ieteicams pievienot lietotnei “Lietotāja laika API”, lai noteiktu lietotnes aktuālo veiktspēju lietotāju pamata darbības laikā. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Ieteicams pievienot lietotnei “Lietotāja laika API”, lai noteiktu lietotnes aktuālo veiktspēju lietotāju pamata darbības laikā. [Uzziniet vairāk](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 lietotāja laiks}zero{# lietotāju laiks}one{# lietotāja laiks}other{# lietotāju laiks}}" @@ -1125,7 +1125,7 @@ "message": "Elementam “{securityOrigin}” tika atrasta iepriekšējas pieslēgšanās parametrs <link>, taču pārlūkprogramma to neizmantoja. Pārbaudiet, vai pareizi izmantojat atribūtu “`crossorigin`”." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Ieteicams pievienot “`preconnect`” vai “`dns-prefetch`” resursa norādes, lai savlaicīgi izveidotu savienojumus ar svarīgiem trešo pušu sākumpunktiem. [Uzziniet vairāk](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Ieteicams pievienot “`preconnect`” vai “`dns-prefetch`” resursa norādes, lai savlaicīgi izveidotu savienojumus ar svarīgiem trešo pušu sākumpunktiem. [Uzziniet vairāk](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Veiciet iepriekšēju pieslēgšanu obligātajiem sākumpunktiem" @@ -1134,13 +1134,13 @@ "message": "Saitei “{preloadURL}” tika atrasts iepriekšējas ielādes parametrs <link>, taču pārlūkprogramma to neizmantoja. Pārbaudiet, vai pareizi izmantojat atribūtu “`crossorigin`”." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Ieteicams izmantot atribūtu `<link rel=preload>`, lai noteiktu prioritāti tādu resursu iegūšanai, kas pašlaik lapas ielādē tiek pieprasīti vēlāk. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Ieteicams izmantot atribūtu `<link rel=preload>`, lai noteiktu prioritāti tādu resursu iegūšanai, kas pašlaik lapas ielādē tiek pieprasīti vēlāk. [Uzziniet vairāk](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Veiciet svarīgāko pieprasījumu iepriekšēju ielādi" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Pievienojiet tagu `<meta name=\"viewport\">`, lai optimizētu lietotni mobilo ierīču ekrāniem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Pievienojiet tagu `<meta name=\"viewport\">`, lai optimizētu lietotni mobilo ierīču ekrāniem. [Uzziniet vairāk](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Netika atrasts tags `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Ir tags `<meta name=\"viewport\">` ar `width` vai `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Ja JavaScript ir atspējots, lietotnē jāparāda zināms saturs — kaut vai tikai brīdinājums, ka lietotnes izmantošanai nepieciešams JavaScript. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Ja JavaScript ir atspējots, lietotnē jāparāda zināms saturs — kaut vai tikai brīdinājums, ka lietotnes izmantošanai nepieciešams JavaScript. [Uzziniet vairāk](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Ja lapas skripti nav pieejami, lapas pamattekstā jātiek vismaz daļēji attēlotam saturam." @@ -1164,7 +1164,7 @@ "message": "Ja JavaScript nav pieejams, lapas saturs zināmā mērā tiek parādīts" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Ja izstrādājat progresīvo tīmekļa lietotni, apsveriet iespēju izmantot pakalpojumu skriptu, lai lietotne varētu darboties bezsaistē. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Ja izstrādājat progresīvo tīmekļa lietotni, apsveriet iespēju izmantot pakalpojumu skriptu, lai lietotne varētu darboties bezsaistē. [Uzziniet vairāk](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Pašreizējā lapa bezsaistē nereaģē ar statusa kodu 200"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/nl.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/nl.json index 4b76fe1..6e193b4 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/nl.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/nl.json
@@ -30,10 +30,10 @@ "message": "Sommige bovenliggende ARIA-rollen moeten specifieke onderliggende rollen bevatten om de beoogde toegankelijkheidsfuncties uit te voeren. [Meer informatie](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Er ontbreken elementen met `[role]` die specifieke onderliggende `[role]`-elementen vereisen." + "message": "In elementen met een ARIA `[role]` die vereisen dat onderliggende elementen een specifieke `[role]` bevatten, ontbreken enkele (of alle) van die vereiste onderliggende elementen." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Er zijn elementen met `[role]` aanwezig die specifieke onderliggende `[role]`-elementen vereisen." + "message": "Elementen met een ARIA `[role]` die vereisen dat onderliggende elementen een specifieke `[role]` bevatten, bevatten alle vereiste onderliggende elementen." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Sommige onderliggende ARIA-rollen moeten zijn opgenomen in specifieke bovenliggende rollen om de beoogde toegankelijkheidsfuncties op de juiste manier uit te voeren. [Meer informatie](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "Schermlezers hebben functies waarmee gemakkelijker kan worden genavigeerd in tabellen. Als je zorgt dat `<td>`-cellen die het `[headers]`-kenmerk gebruiken, alleen verwijzen naar andere cellen in dezelfde tabel, kun je de functionaliteit verbeteren voor gebruikers van een schermlezer. [Meer informatie](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Cellen in een `<table>`-element die het `[headers]`-kenmerk gebruiken, verwijzen naar andere cellen in dezelfde tabel." + "message": "Cellen in een `<table>`-element die het `[headers]`-kenmerk gebruiken, verwijzen naar een element `id` dat niet in dezelfde tabel wordt gevonden." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Cellen in een `<table>`-element die het `[headers]`-kenmerk gebruiken, verwijzen alleen naar andere cellen in diezelfde tabel." + "message": "Cellen in een `<table>`-element dat het `[headers]`-kenmerk gebruikt, verwijzen naar tabelcellen in dezelfde tabel." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Schermlezers hebben functies waarmee gemakkelijker kan worden genavigeerd in tabellen. Als je zorgt dat tabelheaders altijd verwijzen naar een bepaalde reeks cellen, kun je de functionaliteit verbeteren voor gebruikers van een schermlezer. [Meer informatie](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "`<video>`-elementen bevatten een `<track>`-element met `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Definieer een `apple-touch-icon` voor een ideale weergave op iOS wanneer gebruikers een progressive web-app aan het startscherm toevoegen. Deze moet verwijzen naar een niet-transparante vierkante PNG van 192px (of 180px). [Meer informatie](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Definieer een `apple-touch-icon` voor een ideale weergave op iOS wanneer gebruikers een progressive web-app aan het startscherm toevoegen. Deze moet verwijzen naar een niet-transparante vierkante PNG van 192px (of 180px). [Meer informatie](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Geeft geen geldig `apple-touch-icon` op" @@ -342,7 +342,7 @@ "message": "Totale CPU-tijd" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Overweeg de tijd te verminderen die aan parseren, compileren en uitvoeren van JS wordt besteed. Het leveren van kleinere JS-payloads kan hierbij helpen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "Overweeg de tijd te verminderen die aan parseren, compileren en uitvoeren van JS wordt besteed. Het leveren van kleinere JS-payloads kan hierbij helpen. [Meer informatie](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Verkort de JavaScript-uitvoeringstijd" @@ -351,25 +351,25 @@ "message": "JavaScript-uitvoeringstijd" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Grote gif's zijn niet efficiënt om content met animaties te leveren. Overweeg het gebruik van MPEG4-/WebM-video's voor animaties en PNG/WebP voor statische afbeeldingen in plaats van gif's om netwerkbytes te besparen. [Meer informatie](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Grote gif's zijn niet efficiënt om content met animaties te leveren. Overweeg het gebruik van MPEG4-/WebM-video's voor animaties en PNG/WebP voor statische afbeeldingen in plaats van gif's om netwerkbytes te besparen. [Meer informatie](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Gebruik video-indelingen voor content met animaties" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Overweeg om afbeeldingen die niet in beeld zijn en verborgen afbeeldingen via 'lazy loading' te laden nadat alle kritieke bronnen zijn geladen om zo de tijd tot interactief te verlagen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "Overweeg om afbeeldingen die niet in beeld zijn en verborgen afbeeldingen via 'lazy loading' te laden nadat alle kritieke bronnen zijn geladen om zo de tijd tot interactief te verlagen. [Meer informatie](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Laad afbeeldingen die niet in beeld zijn nog niet" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Bronnen blokkeren de eerste weergave (FP) voor je pagina. Overweeg kritieke JS/css inline te leveren en alle niet-kritieke JS/stijlen uit te stellen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "Bronnen blokkeren de eerste weergave (FP) voor je pagina. Overweeg kritieke JS/css inline te leveren en alle niet-kritieke JS/stijlen uit te stellen. [Meer informatie](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Verwijder bronnen die de weergave blokkeren" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Grote netwerkpayloads kosten gebruikers effectief geld en hebben vaak lange laadtijden. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "Grote netwerkpayloads kosten gebruikers effectief geld en hebben vaak lange laadtijden. [Meer informatie](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Totale grootte was {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Vermijdt enorme netwerkpayloads" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Als je css-bestanden verkleint, kun je de omvang van netwerkpayloads verkleinen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "Als je css-bestanden verkleint, kun je de omvang van netwerkpayloads verkleinen. [Meer informatie](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Verklein de css" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Als je JavaScript-bestanden verkleint, kunnen de omvang van de payload en de parseringstijd van het script worden verkleind. [Meer informatie](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "Als je JavaScript-bestanden verkleint, kunnen de omvang van de payload en de parseringstijd van het script worden verkleind. [Meer informatie](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Verklein JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Verwijder overbodig geworden regels uit stylesheets en stel het laden van ongebruikte css uit voor content boven de vouw zodat er minder onnodige bytes worden verbruikt door netwerkactiviteit. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "Verwijder overbodig geworden regels uit stylesheets en stel het laden van ongebruikte css uit voor content boven de vouw zodat er minder onnodige bytes worden verbruikt door netwerkactiviteit. [Meer informatie](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Ongebruikte css verwijderen" @@ -405,7 +405,7 @@ "message": "Verwijder ongebruikt JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Een lange levensduur voor het cachegeheugen kan herhaalde bezoeken aan je pagina versnellen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "Een lange levensduur voor het cachegeheugen kan herhaalde bezoeken aan je pagina versnellen. [Meer informatie](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 bron gevonden}other{# bronnen gevonden}}" @@ -417,31 +417,31 @@ "message": "Gebruikt een efficiënt cachebeleid voor statische items" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Geoptimaliseerde afbeeldingen worden sneller geladen en verbruiken minder mobiele data. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "Geoptimaliseerde afbeeldingen worden sneller geladen en verbruiken minder mobiele data. [Meer informatie](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Codeer afbeeldingen op een efficiënte manier" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Lever afbeeldingen met het juiste formaat om mobiele data te besparen en de laadtijd te verbeteren. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "Lever afbeeldingen met het juiste formaat om mobiele data te besparen en de laadtijd te verbeteren. [Meer informatie](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Geef afbeeldingen het juiste formaat" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Tekstgebaseerde bronnen moeten worden geleverd met compressie (gzip, deflate of brotli) om het totale aantal netwerkbytes te minimaliseren. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "Tekstgebaseerde bronnen moeten worden geleverd met compressie (gzip, deflate of brotli) om het totale aantal netwerkbytes te minimaliseren. [Meer informatie](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Schakel tekstcompressie in" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Afbeeldingsindelingen zoals JPEG 2000, JPEG XR en WebP bieden vaak betere compressie dan PNG of JPEG. Dit resulteert in snellere downloads en minder dataverbruik. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "Afbeeldingsindelingen zoals JPEG 2000, JPEG XR en WebP bieden vaak betere compressie dan PNG of JPEG. Dit resulteert in snellere downloads en minder dataverbruik. [Meer informatie](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Lever afbeeldingen in moderne indelingen" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Als de breedte van de content van je app niet overeenkomt met de breedte van het kijkvenster, is je app mogelijk niet geoptimaliseerd voor mobiele schermen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Als de breedte van de content van je app niet overeenkomt met de breedte van het kijkvenster, is je app mogelijk niet geoptimaliseerd voor mobiele schermen. [Meer informatie](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Het kijkvensterformaat van {innerWidth}px komt niet overeen met het vensterformaat van {outerWidth}px." @@ -453,7 +453,7 @@ "message": "De content heeft het juiste formaat voor het kijkvenster" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "De onderstaande kritieke verzoekketens laten zien welke bronnen met een hoge prioriteit worden geladen. Overweeg de lengte van ketens te verkleinen, de downloadgrootte van bronnen te beperken of het downloaden van onnodige bronnen uit te stellen om de laadtijd van de pagina te verbeteren. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "De onderstaande kritieke verzoekketens laten zien welke bronnen met een hoge prioriteit worden geladen. Overweeg de lengte van ketens te verkleinen, de downloadgrootte van bronnen te beperken of het downloaden van onnodige bronnen uit te stellen om de laadtijd van de pagina te verbeteren. [Meer informatie](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 keten gevonden}other{# ketens gevonden}}" @@ -675,7 +675,7 @@ "message": "Er zijn geen browserfouten gelogd op de console" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Maak gebruik van de css-functie 'font-display' om ervoor te zorgen dat tekst zichtbaar is voor gebruikers terwijl weblettertypen worden geladen. [Meer informatie](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "Maak gebruik van de css-functie 'font-display' om ervoor te zorgen dat tekst zichtbaar is voor gebruikers terwijl weblettertypen worden geladen. [Meer informatie](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Zorg ervoor dat tekst zichtbaar blijft tijdens het laden van weblettertypen" @@ -705,7 +705,7 @@ "message": "Ongeldige informatie over afbeeldingsformaat {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Browsers kunnen gebruikers proactief vragen je app aan hun startscherm toe te voegen. Dit kan leiden tot grotere betrokkenheid. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Browsers kunnen gebruikers proactief vragen je app aan hun startscherm toe te voegen. Dit kan leiden tot grotere betrokkenheid. [Meer informatie](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Het manifest van de web-app voldoet niet aan de vereisten voor installeerbaarheid" @@ -729,7 +729,7 @@ "message": "Gebruikt HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Snel laden van een pagina via een mobiel netwerk zorgt voor een goede mobiele gebruikerservaring. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "Snel laden van een pagina via een mobiel netwerk zorgt voor een goede mobiele gebruikerservaring. [Meer informatie](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interactief na {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Categorie" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Overweeg minder tijd te besteden aan het parseren, compileren en uitvoeren van JS. Het leveren van kleinere JS-payloads kan hierbij helpen." + "message": "Overweeg de tijd te verminderen die aan parseren, compileren en uitvoeren van JS wordt besteed. Het leveren van kleinere JS-payloads kan hierbij helpen. [Meer informatie](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Primaire threadbewerkingen minimaliseren" @@ -759,49 +759,49 @@ "message": "Primaire threadbewerkingen minimaliseren" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Sites moeten werken in alle grote browsers om zoveel mogelijk gebruikers te bereiken. [Meer informatie](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Sites moeten werken in alle grote browsers om zoveel mogelijk gebruikers te bereiken. [Meer informatie](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "De site werkt in verschillende browsers" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Zorg ervoor dat deep links voor afzonderlijke pagina's via een URL kunnen worden opgenomen en dat URL's uniek zijn zodat ze op social media kunnen worden gedeeld. [Meer informatie](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Zorg ervoor dat deep links voor afzonderlijke pagina's via een URL kunnen worden opgenomen en dat URL's uniek zijn zodat ze op social media kunnen worden gedeeld. [Meer informatie](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Elke pagina heeft een URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Overgangen moeten snel aanvoelen terwijl je op een pagina tikt, zelfs bij gebruik van een langzaam netwerk. Dit is een sleutel tot waargenomen prestaties. [Meer informatie](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Overgangen moeten snel aanvoelen terwijl je op een pagina tikt, zelfs bij gebruik van een langzaam netwerk. Dit is essentieel voor hoe de gebruiker de prestaties waarneemt. [Meer informatie](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Paginaovergangen voelen niet alsof ze vastlopen op het netwerk" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Geschatte wachttijd voor invoer is een schatting van de tijd die je app nodig heeft om te reageren op gebruikersinvoer (in milliseconden) gemeten voor de drukste periode van 5 seconden tijdens het laden van de pagina. Als de wachttijd langer dan 50 ms is, kunnen gebruikers je app als traag beschouwen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "Geschatte wachttijd voor invoer is een schatting van de tijd die je app nodig heeft om te reageren op gebruikersinvoer (in milliseconden) gemeten voor de drukste periode van 5 seconden tijdens het laden van de pagina. Als de wachttijd langer dan 50 ms is, kunnen gebruikers je app als traag beschouwen. [Meer informatie](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Geschatte invoerwachttijd" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "'Eerste tekenbewerking met content' (FCP) geeft het tijdstip aan waarop de eerste tekst of afbeelding wordt weergegeven. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "'Eerste tekenbewerking met content' (FCP) geeft het tijdstip aan waarop de eerste tekst of afbeelding wordt weergegeven. [Meer informatie](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Eerste weergave met content (FCP)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "'Eerste keer dat CPU inactief was' geeft de eerste keer aan dat de primaire thread van de pagina rustig genoeg was om invoer te verwerken. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "'Eerste keer dat CPU inactief was' geeft de eerste keer aan dat de primaire thread van de pagina rustig genoeg was om invoer te verwerken. [Meer informatie](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Eerste keer dat CPU inactief was" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "'Eerste nuttige weergave' (FMP) meet wanneer de primaire content van een pagina zichtbaar is. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "'Eerste nuttige weergave' (FMP) meet wanneer de primaire content van een pagina zichtbaar is. [Meer informatie](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Eerste nuttige weergave (FMP)" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Tijd tot interactief is de hoeveelheid tijd die nodig is voordat een pagina volledig interactief is. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "Tijd tot interactief is de hoeveelheid tijd die nodig is voordat een pagina volledig interactief is. [Meer informatie](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tijd tot interactief" @@ -813,7 +813,7 @@ "message": "Max. potentiële eerste invoervertraging" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Snelheidsindex laat zien hoe snel de content van een pagina zichtbaar is. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "Snelheidsindex laat zien hoe snel de content van een pagina zichtbaar is. [Meer informatie](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Snelheidsindex" @@ -837,7 +837,7 @@ "message": "Wachttijden van server-backend" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Met een service worker kan je web-app betrouwbaar functioneren bij onvoorspelbare netwerkomstandigheden. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Met een service worker kan je web-app betrouwbaar functioneren bij onvoorspelbare netwerkomstandigheden. [Meer informatie](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` retourneert geen 200-statuscode wanneer de pagina offline is" @@ -861,7 +861,7 @@ "message": "Prestatiebudget" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Als je HTTPS al hebt ingesteld, zorg je ervoor dat je al het HTTP-verkeer omleidt naar HTTPS om beveiligde webfuncties voor alle gebruikers te activeren. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Als je HTTPS al hebt ingesteld, zorg je ervoor dat je al het HTTP-verkeer omleidt naar HTTPS om beveiligde webfuncties voor alle gebruikers te activeren. [Meer informatie](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Hiermee wordt HTTP-verkeer niet omgeleid naar HTTPS" @@ -870,7 +870,7 @@ "message": "Hiermee wordt HTTP-verkeer omgeleid naar HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Omleidingen zorgen voor extra vertraging voordat de pagina kan worden geladen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "Omleidingen zorgen voor extra vertraging voordat de pagina kan worden geladen. [Meer informatie](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "Vermijd meerdere pagina-omleidingen" @@ -1035,7 +1035,7 @@ "message": "Tikdoelen hebben het juiste formaat" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "De service worker is de technologie waarmee je app veel functies van progressive web-apps kan gebruiken, zoals offline functionaliteit, toevoegen aan het startscherm en pushmeldingen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "De service worker is de technologie waarmee je app veel functies van progressive web-apps kan gebruiken, zoals offline functionaliteit, toevoegen aan het startscherm en pushmeldingen. [Meer informatie](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Deze pagina wordt beheerd door een service worker, maar er is geen `start_url` gevonden omdat het manifest niet kan worden geparseerd als geldig json-bestand" @@ -1056,7 +1056,7 @@ "message": "Registreert een service worker die de pagina en `start_url` beheert" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Een startscherm met een thema zorgt voor een gebruikerservaring van hoge kwaliteit wanneer gebruikers je app starten vanaf hun startscherm. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Een startscherm met een thema zorgt voor een gebruikerservaring van hoge kwaliteit wanneer gebruikers je app starten vanaf hun startscherm. [Meer informatie](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Is niet geconfigureerd voor een aangepast startscherm" @@ -1065,7 +1065,7 @@ "message": "Is geconfigureerd voor een aangepast startscherm" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Het thema van de adresbalk van de browser kan worden aangepast aan je site. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "Het thema van de adresbalk van de browser kan worden aangepast aan je site. [Meer informatie](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Hiermee wordt geen themakleur voor de adresbalk ingesteld." @@ -1092,7 +1092,7 @@ "message": "Gebruik door derden" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "'Tijd tot eerste byte' identificeert het tijdstip waarop je server een reactie stuurt. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "'Tijd tot eerste byte' identificeert het tijdstip waarop je server een reactie stuurt. [Meer informatie](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Hoofddocument duurde {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Type" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Overweeg je app te voorzien van de API voor gebruikerstiming om de daadwerkelijke prestaties van je app tijdens belangrijke gebruikerservaringen te meten. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "Overweeg je app te voorzien van de API voor gebruikerstiming om de daadwerkelijke prestaties van je app tijdens belangrijke gebruikerservaringen te meten. [Meer informatie](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 gebruikerstiming}other{# gebruikerstimings}}" @@ -1125,7 +1125,7 @@ "message": "Er is een <link> voor vooraf verbinden gevonden voor {securityOrigin} maar deze is niet gebruikt door de browser. Controleer of je het `crossorigin`-kenmerk juist gebruikt." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Overweeg hints voor `preconnect` of `dns-prefetch` van bronnen toe te voegen om vroege verbindingen met belangrijke externe herkomsten tot stand te brengen. [Meer informatie](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Overweeg hints voor `preconnect` of `dns-prefetch` van bronnen toe te voegen om vroege verbindingen met belangrijke externe herkomsten tot stand te brengen. [Meer informatie](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Maak vooraf verbinding met vereiste herkomsten" @@ -1134,13 +1134,13 @@ "message": "Er is een <link> voor vooraf laden gevonden voor {preloadURL} maar deze is niet gebruikt door de browser. Controleer of je het `crossorigin`-kenmerk juist gebruikt." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Overweeg `<link rel=preload>` te gebruiken om prioriteit te geven aan het ophalen van bronnen die momenteel later tijdens het laden van de pagina worden opgehaald. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "Overweeg `<link rel=preload>` te gebruiken om prioriteit te geven aan het ophalen van bronnen die momenteel later tijdens het laden van de pagina worden opgehaald. [Meer informatie](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Laad belangrijke verzoeken vooraf" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Voeg een `<meta name=\"viewport\">`-tag toe om je app te optimaliseren voor mobiele schermen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Voeg een `<meta name=\"viewport\">`-tag toe om je app te optimaliseren voor mobiele schermen. [Meer informatie](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Geen `<meta name=\"viewport\">`-tag gevonden" @@ -1152,7 +1152,7 @@ "message": "Bevat een `<meta name=\"viewport\">`-tag met `width` of `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Je app moet wat content weergeven wanneer JavaScript is uitgeschakeld, zelfs als het alleen maar een waarschuwing aan de gebruiker is dat JavaScript is vereist om de app te gebruiken. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "Je app moet wat content weergeven wanneer JavaScript is uitgeschakeld, zelfs als het alleen maar een waarschuwing aan de gebruiker is dat JavaScript is vereist om de app te gebruiken. [Meer informatie](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Het hoofdgedeelte van de pagina moet wat content weergeven als de bijbehorende scripts niet beschikbaar zijn." @@ -1164,7 +1164,7 @@ "message": "Bevat wat content wanneer JavaScript niet beschikbaar is" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Als je een progressive web-app bouwt, kun je overwegen een service worker te gebruiken zodat je app offline kan worden gebruikt. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Als je een progressive web-app bouwt, kun je overwegen een service worker te gebruiken zodat je app offline kan worden gebruikt. [Meer informatie](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "De huidige pagina retourneert geen 200-statuscode wanneer de pagina offline is"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/no.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/no.json index 9702b2e..5f78d10 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/no.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/no.json
@@ -30,10 +30,10 @@ "message": "Noen overordnede ARIA-roller må inneholde spesifikke underordnede roller for å utføre de tiltenkte tilgjengelighetsfunksjonene. [Finn ut mer](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Elementer med `[role]` som krever spesifikke underordnede `[role]`-elementer, mangler." + "message": "Elementer som har en ARIA-`[role]` og krever underordnede elementer som inneholder en spesifikk `[role]`, mangler noen av eller alle disse underordnede elementene." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Det finnes elementer med `[role]` som krever spesifikke underordnede `[role]`-elementer." + "message": "Elementer som har en ARIA-`[role]` og krever underordnede elementer som inneholder en spesifikk `[role]`, har alle de nødvendige underordnede elementene." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Noen underordnede ARIA-roller må ligge innenfor de spesifikke overordnede rollene for å utføre de tiltenkte tilgjengelighetsfunksjonene på riktig måte. [Finn ut mer](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Skjermlesere har funksjonalitet som gjør det enklere å navigere i tabeller. Ved å sørge for at `<td>`-celler som bruker `[headers]`-attributtet, kun refererer til andre celler i den samme tabellen, kan du gjøre opplevelsen bedre for brukere av skjermlesere. [Finn ut mer](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Celler som er en del av et `<table>`-element og bruker `[headers]`-attributtet, refererer bare til andre celler i den samme tabellen." + "message": "Celler som er en del av et `<table>`-element og bruker `[headers]`-attributtet, refererer til et element (`id`) som ikke finnes i den samme tabellen." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Celler som er en del av et `<table>`-element som bruker `[headers]`-attributtet, refererer bare til andre celler i den samme tabellen." + "message": "Celler som er en del av et `<table>`-element og bruker `[headers]`-attributtet, refererer til tabellceller i den samme tabellen." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Skjermlesere har funksjonalitet som gjør det enklere å navigere i tabeller. Ved å sørge for at tabelloverskrifter alltid refererer til spesifikke cellesett, kan du gjøre opplevelsen bedre for brukere av skjermlesere. [Finn ut mer](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "`<video>`-elementer inneholder et `<track>`-element med `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "For å oppnå det ideelle utseendet på iOS når brukere legger til progressive nettprogrammer på startskjermen, definer et `apple-touch-icon`. Det må peke til et ugjennomsiktig, kvadratisk PNG-bilde med sidelengde på 192 (eller 180) piksler. [Finn ut mer](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "For å oppnå det ideelle utseendet på iOS når brukere legger til progressive nettprogrammer på startskjermen, definer et `apple-touch-icon`. Det må peke til et ugjennomsiktig, kvadratisk PNG-bilde med sidelengde på 192 (eller 180) piksler. [Finn ut mer](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Har ikke noe gyldig `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Total CPU-tid" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Vurder å redusere tiden som brukes til parsing, kompilering og kjøring av JavaScript. Levering av mindre JS-ressurser kan bidra til dette. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Vurder å redusere tiden som brukes til parsing, kompilering og kjøring av JavaScript. Levering av mindre JS-ressurser kan bidra til dette. [Finn ut mer](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reduser JavaScript-kjøretiden" @@ -351,25 +351,25 @@ "message": "JavaScript-kjøretid" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Store GIF-er er mindre effektive for visning av animert innhold. I stedet for GIF bør du vurdere å bruke MPEG4/WebM-videoer for animasjon og PNG/WebP for statiske bilder, da dette belaster nettverket mindre. [Finn ut mer](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Store GIF-er er mindre effektive for visning av animert innhold. I stedet for GIF bør du vurdere å bruke MPEG4/WebM-videoer for animasjon og PNG/WebP for statiske bilder, da dette belaster nettverket mindre. [Finn ut mer](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Bruk videoformat for animert innhold" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Vurder «lat» innlasting av bilder som er utenfor skjermen eller skjult, etter at alle kritiske ressurser er ferdig innlastet, for å redusere tiden det tar før siden blir interaktiv. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Vurder «lat» innlasting av bilder som er utenfor skjermen eller skjult, etter at alle kritiske ressurser er ferdig innlastet, for å redusere tiden det tar før siden blir interaktiv. [Finn ut mer](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Utsett bilder utenfor skjermen" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Ressurser blokkerer første opptegning (FP) av siden. Vurder å levere kritisk JS/CSS innebygd og utsette all JS/CSS som ikke er kritisk. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Ressurser blokkerer første opptegning (FP) av siden. Vurder å levere kritisk JS/CSS innebygd og utsette all JS/CSS som ikke er kritisk. [Finn ut mer](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Eliminer ressurser som blokkerer gjengivelse" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Store nettverksressurser koster brukerne ekte penger og er hovedgrunnen til lange innlastingstider. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Store nettverksressurser koster brukerne ekte penger og er hovedgrunnen til lange innlastingstider. [Finn ut mer](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Den totale størrelsen var {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Unngår enorme nettverksbelastninger" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Forminskede CSS-filer kan redusere nettverksbelastningen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Forminskede CSS-filer kan redusere nettverksbelastningen. [Finn ut mer](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Forminsk CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Forminskede JavaScript-filer kan redusere mengden data som må overføres, og parsetiden for skript. [Finn ut mer](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Forminskede JavaScript-filer kan redusere mengden data som må overføres, og parsetiden for skript. [Finn ut mer](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Forminsk JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Fjern overflødige regler fra stilark og utsett å laste inn CSS som ikke brukes på innholdet i den synlige delen av nettsiden. Da reduserer du antall byte som går med til unødvendig nettverksaktivitet. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Fjern overflødige regler fra stilark og utsett å laste inn CSS som ikke brukes på innholdet i den synlige delen av nettsiden. Da reduserer du antall byte som går med til unødvendig nettverksaktivitet. [Finn ut mer](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Fjern ubrukt CSS" @@ -405,7 +405,7 @@ "message": "Fjern ubrukt JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "En lang bufferlevetid kan gjøre at gjentatte besøk på siden din går raskere. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "En lang bufferlevetid kan gjøre at gjentatte besøk på siden din går raskere. [Finn ut mer](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 ressurs funnet}other{# ressurser funnet}}" @@ -417,31 +417,31 @@ "message": "Bruker effektive buffer-retningslinjer på statiske ressurser" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimaliserte bilder lastes inn raskere og bruker mindre mobildata. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimaliserte bilder lastes inn raskere og bruker mindre mobildata. [Finn ut mer](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Effektiviser omgjøring av bilder til kode" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Vis bilder som har passende størrelse, for å spare mobildata og redusere innlastingstiden. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Vis bilder som har passende størrelse, for å spare mobildata og redusere innlastingstiden. [Finn ut mer](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Velg riktige bildestørrelser" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Tekstbaserte ressurser bør leveres komprimert (gzip, deflate eller brotli) for å minimere antall byte som sendes over nettverket. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Tekstbaserte ressurser bør leveres komprimert (gzip, deflate eller brotli) for å minimere antall byte som sendes over nettverket. [Finn ut mer](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Aktiver tekstkomprimering" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Bildeformater som JPEG 2000, JPEG XR og WebP gir ofte bedre komprimering enn PNG eller JPEG, noe som betyr raskere nedlasting og mindre databruk. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Bildeformater som JPEG 2000, JPEG XR og WebP gir ofte bedre komprimering enn PNG eller JPEG, noe som betyr raskere nedlasting og mindre databruk. [Finn ut mer](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Bruk nyere bildeformater" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Hvis bredden på appinnholdet ikke samsvarer med bredden på det synlige området, er appen kanskje ikke optimalisert for mobilskjermer. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Hvis bredden på appinnholdet ikke samsvarer med bredden på det synlige området, er appen kanskje ikke optimalisert for mobilskjermer. [Finn ut mer](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Det synlige områdets størrelse på {innerWidth} px samsvarer ikke med vindusstørrelsen på {outerWidth} px." @@ -453,7 +453,7 @@ "message": "Innholdet har riktig størrelse i forhold til det synlige området" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "De kritiske forespørselskjedene nedenfor viser hvilke ressurser som lastes inn med høy prioritet. Vurder å redusere lengden på kjedene, redusere nedlastingsstørrelsen på ressursene eller utsette nedlasting av unødvendige ressurser for å bedre sideinnlastingen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "De kritiske forespørselskjedene nedenfor viser hvilke ressurser som lastes inn med høy prioritet. Vurder å redusere lengden på kjedene, redusere nedlastingsstørrelsen på ressursene eller utsette nedlasting av unødvendige ressurser for å bedre sideinnlastingen. [Finn ut mer](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 kjede funnet}other{# kjeder funnet}}" @@ -675,7 +675,7 @@ "message": "Ingen nettleserfeil ble loggført i konsollen" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Bruk CSS-funksjonen font-display til å forsikre deg om at brukerne ser teksten mens skrifttypene for nettet lastes inn. [Finn ut mer](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Bruk CSS-funksjonen font-display til å forsikre deg om at brukerne ser teksten mens skrifttypene for nettet lastes inn. [Finn ut mer](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Sørg for at teksten forblir synlig under innlasting av skrifttyper for nettet" @@ -705,7 +705,7 @@ "message": "Ugyldig informasjon om bildestørrelse – {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Nettlesere kan aktivt spørre brukere om de vil legge til appen på startskjermen sin. Det kan føre til økt interaksjon. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Nettlesere kan aktivt spørre brukere om de vil legge til appen på startskjermen sin. Det kan føre til økt interaksjon. [Finn ut mer](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Manifestet til nettprogrammet oppfyller ikke kravene til installerbarhet" @@ -729,7 +729,7 @@ "message": "Bruker HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Når sider lastes inn raskt over mobilnettverk, gir det en god brukeropplevelse på mobilenheter. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Når sider lastes inn raskt over mobilnettverk, gir det en god brukeropplevelse på mobilenheter. [Finn ut mer](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktiv etter {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategori" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Vurder å redusere tiden som brukes til parsing, kompilering og kjøring i JS. Levering av mindre JS-ressurser kan bidra til dette." + "message": "Vurder å redusere tiden som brukes til parsing, kompilering og kjøring av JS. Levering av mindre JS-ressurser kan bidra til dette. [Finn ut mer](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimer arbeidet på hovedtråden" @@ -759,49 +759,49 @@ "message": "Minimerer arbeidet på hovedtråden" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "For å nå så mange brukere som mulig bør nettsteder fungere i alle de vanligste nettleserne. [Finn ut mer](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "For å nå så mange brukere som mulig bør nettsteder fungere i alle de vanligste nettleserne. [Finn ut mer](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Nettstedet fungerer i ulike nettlesere" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Sørg for at individuelle sider kan dyplinkes via nettadresser, og at nettadressene er unike, slik at de kan deles på sosiale medier. [Finn ut mer](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Sørg for at individuelle sider kan dyplinkes via nettadresser, og at nettadressene er unike, slik at de kan deles på sosiale medier. [Finn ut mer](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Hver side har en nettadresse" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Overganger skal føles smidige når du trykker deg rundt, selv på et tregt nettverk. Dette er sentralt for den opplevde ytelsen. [Finn ut mer](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Overganger skal føles smidige når du trykker deg rundt, selv på et tregt nettverk. Denne opplevelsen er avgjørende for brukerens opplevelse av ytelsen. [Finn ut mer](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Sideoverganger føles ikke som om de blokkerer på nettverket" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Beregnet inndataforsinkelse er et estimat av hvor lang tid (i millisekunder) det tar for appen å svare på brukerinndata i det travleste 5-sekunders tidsrommet mens siden lastes inn. Hvis tidsforsinkelsen er høyere enn 50 ms, kan brukere oppleve appen som treg. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Beregnet inndataforsinkelse er et estimat av hvor lang tid (i millisekunder) det tar for appen å svare på brukerinndata i det travleste 5-sekunders tidsrommet mens siden lastes inn. Hvis tidsforsinkelsen er høyere enn 50 ms, kan brukere oppleve appen som treg. [Finn ut mer](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Anslått tidsforsinkelse for inndata" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Den første innholdsrike opptegningen (FCP) markerer den første gangen tekst eller bilder tegnes opp. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Den første innholdsrike opptegningen (FCP) markerer den første gangen tekst eller bilder tegnes opp. [Finn ut mer](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Første innholdsrike opptegning" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Første prosessor ledig markerer den første gangen sidens hovedtråd er stille nok til å klare å håndtere inndata. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Første prosessor ledig markerer den første gangen at sidens hovedtråd er rolig nok til å klare å håndtere inndata. [Finn ut mer](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Første prosessor ledig" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Første vesentlige opptegning måler når hovedinnholdet på en side er synlig. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Første vesentlige opptegning måler når hovedinnholdet på en side er synlig. [Finn ut mer](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Første vesentlige opptegning" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Tid til interaktiv vil si hvor lang tid det tar før siden blir helt interaktiv. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Tid til interaktiv vil si hvor lang tid det tar før siden blir helt interaktiv. [Finn ut mer](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tid til interaktiv" @@ -813,7 +813,7 @@ "message": "Maks forsinkelse for første inndata" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Hastighetsindeksen viser hvor raskt innholdet på siden blir synlig. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Hastighetsindeksen viser hvor raskt innholdet på siden blir synlig. [Finn ut mer](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Hastighetsindeks" @@ -837,7 +837,7 @@ "message": "Forsinkelser i tjenerdelen" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Med en tjenestearbeider kan nettprogrammet ditt vært pålitelig under uforutsigbare nettverksforhold. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Med en tjenestearbeider kan nettprogrammet ditt vært pålitelig under uforutsigbare nettverksforhold. [Finn ut mer](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` svarer ikke med 200 når siden er uten nett" @@ -861,7 +861,7 @@ "message": "Ytelsesbudsjett" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Hvis du allerede har satt opp HTTPS, må du sørge for at du viderekobler all HTTP-trafikk til HTTPS, slik at du gir alle brukerne dine tilgang til sikker nettfunksjonalitet. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Hvis du allerede har satt opp HTTPS, må du sørge for at du viderekobler all HTTP-trafikk til HTTPS, slik at du gir alle brukerne dine tilgang til sikker nettfunksjonalitet. [Finn ut mer](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Viderekobler ikke HTTP-trafikk til HTTPS" @@ -870,7 +870,7 @@ "message": "Viderekobler HTTP-trafikk til HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Viderekoblinger fører til flere forsinkelser før siden kan lastes inn. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Viderekoblinger fører til flere forsinkelser før siden kan lastes inn. [Finn ut mer](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Unngå flere viderekoblinger av siden" @@ -1035,7 +1035,7 @@ "message": "Trykkbare elementer er store nok" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Tjenestearbeideren er teknologien som gjør at appen din kan bruke mange funksjoner for progressive nettprogrammer, f.eks. muligheten til å bruke appen uten nett, legge den til på startskjermen og sende pushvarslinger. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Tjenestearbeideren er teknologien som gjør at appen din kan bruke mange funksjoner for progressive nettprogrammer, f.eks. muligheten til å bruke appen uten nett, legge den til på startskjermen og sende pushvarslinger. [Finn ut mer](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Denne siden styres av en tjenestearbeider, men ingen `start_url` ble funnet fordi manifestet ikke kunne parses som gyldig JSON" @@ -1056,7 +1056,7 @@ "message": "Registrerer en tjenestearbeider som styrer siden og `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Tematiske splash-skjermer gjør at brukerne får en kvalitetsopplevelse når de starter appen fra startskjermen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Tematiske splash-skjermer gjør at brukerne får en kvalitetsopplevelse når de starter appen fra startskjermen. [Finn ut mer](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Er ikke konfigurert med tilpasset splash-skjerm" @@ -1065,7 +1065,7 @@ "message": "Konfigurert med tilpasset splash-skjerm" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Adressefeltet i nettleseren kan gis et tema for å stå i stil med nettstedet ditt. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Adressefeltet i nettleseren kan gis et tema for å stå i stil med nettstedet ditt. [Finn ut mer](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Angir ikke en temafarge for adressefeltet." @@ -1092,7 +1092,7 @@ "message": "Tredjepartsbruk" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Tid til første byte identifiserer tidspunktet da tjeneren sendte et svar. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Tid til første byte identifiserer tidspunktet da tjeneren sendte et svar. [Finn ut mer](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Root-dokumentet brukte {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Type" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Vurder å utstyre appen din med brukertiming-API-et for å måle appens reelle ytelse under viktige brukeropplevelser. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Vurder å utstyre appen din med brukertiming-API-et for å måle appens reelle ytelse under viktige brukeropplevelser. [Finn ut mer](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{ 1 brukertiming}other{# brukertiminger}}" @@ -1125,7 +1125,7 @@ "message": "Det ble funnet en <link> for forhåndstilkobling for {securityOrigin}, men denne ble ikke brukt av nettleseren. Kontrollér at du bruker `crossorigin`-attributtet riktig." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Vurder å legge til `preconnect`- eller `dns-prefetch`-ressurshint for å opprette tidlige tilkoblinger til viktige tredjepartsplasseringer. [Finn ut mer](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Vurder å legge til `preconnect`- eller `dns-prefetch`-ressurshint for å opprette tidlige tilkoblinger til viktige tredjepartsplasseringer. [Finn ut mer](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Opprett forhåndstilkobling til nødvendige domenenavn" @@ -1134,13 +1134,13 @@ "message": "Det ble funnet en <link> for forhåndsinnlasting for {preloadURL}, men denne ble ikke brukt av nettleseren. Kontrollér at du bruker `crossorigin`-attributtet riktig." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Vurder å bruke `<link rel=preload>` for å prioritere henting av ressurser som for øyeblikket blir forespurt senere i sideinnlastingen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Vurder å bruke `<link rel=preload>` for å prioritere henting av ressurser som for øyeblikket blir forespurt senere i sideinnlastingen. [Finn ut mer](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Forhåndsinnlast (preload) nøkkelforespørsler" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Legg til en `<meta name=\"viewport\">`-tag for å optimalisere appen for mobilskjermer. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Legg til en `<meta name=\"viewport\">`-tag for å optimalisere appen for mobilskjermer. [Finn ut mer](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Fant ingen `<meta name=\"viewport\">`-tag" @@ -1152,7 +1152,7 @@ "message": "Har en `<meta name=\"viewport\">`-tag med `width` eller `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Appen bør vise noe innhold når JavaScript er deaktivert, selv om det bare er en advarsel til brukeren om at JavaScript kreves for å bruke appen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Appen bør vise noe innhold når JavaScript er deaktivert, selv om det bare er en advarsel til brukeren om at JavaScript kreves for å bruke appen. [Finn ut mer](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Sidekroppen bør vise noe innhold hvis skriptene ikke er tilgjengelige." @@ -1164,7 +1164,7 @@ "message": "Inneholder noe innhold når JavaScript ikke er tilgjengelig" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Hvis du utvikler et progressivt nettprogram, kan du vurdere å bruke en tjenestearbeider, så appen fungerer uten nett. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Hvis du utvikler et progressivt nettprogram, kan du vurdere å bruke en tjenestearbeider, så appen fungerer uten nett. [Finn ut mer](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Den gjeldende siden svarer ikke med 200 når den er uten nett"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pl.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pl.json index e2c34a3..3be8eea5 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pl.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pl.json
@@ -30,10 +30,10 @@ "message": "Niektóre role nadrzędne ARIA muszą zawierać określone role podrzędne, by poprawnie realizować funkcje ułatwień dostępu. [Więcej informacji](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Elementy z atrybutem `[role]` wymagają elementów podrzędnych z określonym atrybutem `[role]`, których brak." + "message": "Elementy z atrybutem ARIA `[role]`, których elementy podrzędne muszą zawierać określony atrybut `[role]`, nie mają niektórych lub wszystkich tych wymaganych elementów podrzędnych." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Obecne są elementy z atrybutem `[role]`, które wymagają elementów podrzędnych z określonym atrybutem `[role]`" + "message": "Elementy z atrybutem ARIA `[role]`, których elementy podrzędne muszą zawierać określony atrybut `[role]`, mają wszystkie wymagane elementy podrzędne." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Niektóre role podrzędne ARIA muszą znajdować się wewnątrz określonych ról nadrzędnych, by poprawnie realizować funkcje ułatwień dostępu. [Więcej informacji](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "Czytniki ekranu mają funkcje, które ułatwiają nawigację w tabelach. Gdy komórki `<td>` używające atrybutu `[headers]` odwołują się tylko do innych komórek w tej samej tabeli, użytkownicy czytników ekranu mogą wygodniej korzystać z tabel. [Więcej informacji](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Komórki w elemencie `<table>`, które używają atrybutu `[headers]`, odwołują się do innych komórek w tej samej tabeli." + "message": "Komórki w elemencie `<table>`, które używają atrybutu `[headers]`, odwołują się do elementu `id`, którego nie znaleziono w tej samej tabeli." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Komórki w elemencie `<table>`, które używają atrybutu `[headers]`, odwołują się tylko do innych komórek w tej samej tabeli." + "message": "Komórki w elemencie `<table>`, które używają atrybutu `[headers]`, odwołują się do komórek w tej samej tabeli." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Czytniki ekranu mają funkcje, które ułatwiają nawigację w tabelach. Gdy nagłówki tabel zawsze odwołują się do jakiegoś zbioru komórek, użytkownicy czytników ekranu mogą wygodniej korzystać z tabel. [Więcej informacji](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "Elementy `<video>` zawierają element `<track>` z atrybutem `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Zdefiniuj element `apple-touch-icon`, by Twoja progresywna aplikacja internetowa wyglądała idealnie na iOS, gdy użytkownicy dodadzą ją do ekranu głównego. Element musi wskazywać kwadratowy obraz PNG o rozmiarze 192 (lub 180) pikseli bez przezroczystości. [Więcej informacji](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Zdefiniuj element `apple-touch-icon`, by Twoja progresywna aplikacja internetowa wyglądała idealnie na iOS, gdy użytkownicy dodadzą ją do ekranu głównego. Element musi wskazywać kwadratowy obraz PNG o rozmiarze 192 (lub 180) pikseli bez przezroczystości. [Więcej informacji](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Nie dostarcza prawidłowego atrybutu `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Łączny czas pracy procesora" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Pomyśl o skróceniu czasu poświęcanego na analizowanie, kompilowanie i wykonywanie kodu JS. Może w tym pomóc dostarczanie mniejszych ładunków JS. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "Pomyśl o skróceniu czasu poświęcanego na analizowanie, kompilowanie i wykonywanie kodu JS. Może w tym pomóc dostarczanie mniejszych ładunków JS. [Więcej informacji](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Skróć czas wykonywania JavaScriptu" @@ -351,25 +351,25 @@ "message": "Czas wykonania JavaScriptu" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Duże pliki GIF są nieefektywnym sposobem dostarczania animacji. Proponujemy użyć zamiast nich filmów MPEG4/WebM (animacje) lub plików PNG/WebP (obrazy statyczne), by zmniejszyć ilość przesyłanych danych. [Więcej informacji](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Duże pliki GIF są nieefektywnym sposobem dostarczania animacji. Proponujemy użyć zamiast nich filmów MPEG4/WebM (animacje) lub plików PNG/WebP (obrazy statyczne), by zmniejszyć ilość przesyłanych danych. [Więcej informacji](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Użyj formatów wideo dla animacji" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Aby skrócić czas do pełnej interaktywności, warto skorzystać z leniwego ładowania. Dzięki temu najpierw będą ładowane wszystkie zasoby kluczowe, a dopiero potem obrazy ukryte i znajdujące się poza ekranem. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "Aby skrócić czas do pełnej interaktywności, warto skorzystać z leniwego ładowania. Dzięki temu najpierw będą ładowane wszystkie zasoby kluczowe, a dopiero potem obrazy ukryte i znajdujące się poza ekranem. [Więcej informacji](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Odłóż ładowanie obrazów poza ekranem" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Zasoby blokują pierwsze wyrenderowanie strony. Sugerujemy umieszczenie krytycznego kodu JS/CSS w kodzie strony i opóźnienie ładowania wszystkich niekrytycznych plików JS i stylów. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "Zasoby blokują pierwsze wyrenderowanie strony. Sugerujemy umieszczenie krytycznego kodu JS/CSS w kodzie strony i opóźnienie ładowania wszystkich niekrytycznych plików JS i stylów. [Więcej informacji](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Wyeliminuj zasoby blokujące renderowanie" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Duże ładunki sieciowe powodują wyższe koszty dla użytkowników i są mocno powiązane z długim czasem ładowania. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "Duże ładunki sieciowe powodują wyższe koszty dla użytkowników i są mocno powiązane z długim czasem ładowania. [Więcej informacji](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Łączny rozmiar to {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Unikaj bardzo dużych ładunków sieciowych" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Minifikacja plików CSS może zmniejszyć ładunki sieciowe. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "Minifikacja plików CSS może zmniejszyć ładunki sieciowe. [Więcej informacji](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minifikuj CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Minifikacja plików JavaScript może zmniejszyć ładunki i skrócić czas analizowania skryptów. [Więcej informacji](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "Minifikacja plików JavaScript może zmniejszyć ładunki i skrócić czas analizowania skryptów. [Więcej informacji](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minifikuj JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Usuń nieużywane reguły z arkuszy stylów i opóźnij ładowanie kodu CSS, który nie jest używany w części strony widocznej na ekranie bez przewijania, by zmniejszyć ilość danych niepotrzebnie przesyłanych w sieci. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "Usuń nieużywane reguły z arkuszy stylów i opóźnij ładowanie kodu CSS, który nie jest używany w części strony widocznej na ekranie bez przewijania, by zmniejszyć ilość danych niepotrzebnie przesyłanych w sieci. [Więcej informacji](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Usuń nieużywany kod CSS" @@ -405,7 +405,7 @@ "message": "Usuń nieużywany JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Długi czas przechowywania w pamięci podręcznej może przyśpieszyć ponowne otwarcie strony. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "Długi czas przechowywania w pamięci podręcznej może przyśpieszyć ponowne otwarcie strony. [Więcej informacji](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Znaleziono 1 zasób}few{Znaleziono # zasoby}many{Znaleziono # zasobów}other{Znaleziono # zasobu}}" @@ -417,31 +417,31 @@ "message": "Stosuje efektywne zasady pamięci podręcznej dla zasobów statycznych" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Zoptymalizowane obrazy ładują się szybciej i wykorzystują mniej komórkowej transmisji danych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "Zoptymalizowane obrazy ładują się szybciej i wykorzystują mniej komórkowej transmisji danych. [Więcej informacji](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Użyj efektywnego kodowania obrazów" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Wyświetlaj obrazy o odpowiednim rozmiarze, by oszczędzać komórkową transmisję danych i przyśpieszyć ładowanie. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "Wyświetlaj obrazy o odpowiednim rozmiarze, by oszczędzać komórkową transmisję danych i przyśpieszyć ładowanie. [Więcej informacji](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Zmień rozmiar obrazów" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Zasoby tekstowe powinny być kompresowane (gzip, deflate lub brotli), by zminimalizować ilość danych przesyłanych w sieci. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "Zasoby tekstowe powinny być kompresowane (gzip, deflate lub brotli), by zminimalizować ilość danych przesyłanych w sieci. [Więcej informacji](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Włącz kompresję tekstu" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Takie formaty obrazów jak JPEG 2000, JPEG XR i WebP często zapewniają lepszą kompresję niż PNG czy JPEG, co przekłada się na szybsze pobieranie i mniejsze wykorzystanie danych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "Takie formaty obrazów jak JPEG 2000, JPEG XR i WebP często zapewniają lepszą kompresję niż PNG czy JPEG, co przekłada się na szybsze pobieranie i mniejsze wykorzystanie danych. [Więcej informacji](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Wyświetlaj obrazy w formatach nowej generacji" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Jeśli szerokość zawartości aplikacji nie odpowiada szerokości widocznego obszaru, aplikacja może nie być zoptymalizowana pod kątem ekranów urządzeń mobilnych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Jeśli szerokość zawartości aplikacji nie odpowiada szerokości widocznego obszaru, aplikacja może nie być zoptymalizowana pod kątem ekranów urządzeń mobilnych. [Więcej informacji](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Rozmiar widocznego obszaru ({innerWidth} piks.) nie odpowiada rozmiarowi okna ({outerWidth} piks.)." @@ -453,7 +453,7 @@ "message": "Zawartość jest odpowiednio dopasowana do widocznego obszaru" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Poniższe łańcuchy żądań krytycznych pokazują zasoby ładowane z wysokim priorytetem. Aby przyśpieszyć ładowanie strony, możesz skrócić łańcuchy, zmniejszyć rozmiar pobieranych zasobów lub opóźnić pobieranie zasobów, które nie są niezbędne. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "Poniższe łańcuchy żądań krytycznych pokazują zasoby ładowane z wysokim priorytetem. Aby przyśpieszyć ładowanie strony, możesz skrócić łańcuchy, zmniejszyć rozmiar pobieranych zasobów lub opóźnić pobieranie zasobów, które nie są niezbędne. [Więcej informacji](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Znaleziono 1 łańcuch}few{Znaleziono # łańcuchy}many{Znaleziono # łańcuchów}other{Znaleziono # łańcucha}}" @@ -675,7 +675,7 @@ "message": "W konsoli nie zostały zarejestrowane żadne błędy przeglądarki" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Użyj funkcji CSS „font-display”, by zapewnić widoczność tekstu dla użytkownika podczas ładowania czcionek internetowych. [Więcej informacji](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "Użyj funkcji CSS „font-display”, by zapewnić widoczność tekstu dla użytkownika podczas ładowania czcionek internetowych. [Więcej informacji](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Zapewnij widoczność tekstu podczas ładowania czcionek internetowych" @@ -705,7 +705,7 @@ "message": "Nieprawidłowa informacja o rozmiarze obrazu {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Przeglądarki mogą aktywnie prosić użytkowników o dodanie Twojej aplikacji do ekranu głównego, co może przekładać się na większe zaangażowanie. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Przeglądarki mogą aktywnie prosić użytkowników o dodanie Twojej aplikacji do ekranu głównego, co może przekładać się na większe zaangażowanie. [Więcej informacji](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Plik manifestu aplikacji internetowej nie spełnia wymagań instalowalności" @@ -729,7 +729,7 @@ "message": "Używa HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Szybkie wczytywanie stron przez sieć komórkową zapewnia dobre wrażenia użytkowników telefonów. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "Szybkie wczytywanie stron przez sieć komórkową zapewnia dobre wrażenia użytkowników telefonów. [Więcej informacji](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktywna po {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategoria" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Pomyśl o skróceniu czasu poświęcanego na analizowanie, kompilowanie i wykonywanie kodu JS. Może w tym pomóc dostarczanie mniejszych ładunków JS." + "message": "Pomyśl o skróceniu czasu poświęcanego na analizowanie, kompilowanie i wykonywanie kodu JS. Może w tym pomóc dostarczanie mniejszych ładunków JS. [Więcej informacji](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Zminimalizuj aktywność głównego wątku" @@ -759,49 +759,49 @@ "message": "Minimalizuje aktywność głównego wątku" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Witryny powinny działać w każdej popularnej przeglądarce, by mogło do nich dotrzeć jak najwięcej użytkowników. [Więcej informacji](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Witryny powinny działać w każdej popularnej przeglądarce, by mogło do nich dotrzeć jak najwięcej użytkowników. [Więcej informacji](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Witryna działa w różnych przeglądarkach" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Upewnij się, że do poszczególnych stron można dotrzeć za pomocą precyzyjnych linków w postaci adresów URL i że adresy URL są unikalne na potrzeby udostępniania w mediach społecznościowych. [Więcej informacji](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Upewnij się, że do poszczególnych stron można dotrzeć za pomocą precyzyjnych linków w postaci adresów URL i że adresy URL są unikalne na potrzeby udostępniania w mediach społecznościowych. [Więcej informacji](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Każda strona ma swój URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Przejścia po kliknięciu powinny być płynne, nawet jeśli sieć jest wolna. Ma to kluczowe znaczenie dla postrzegania szybkości działania aplikacji. [Więcej informacji](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Przejścia po kliknięciu powinny być płynne, nawet jeśli sieć jest wolna. Ma to kluczowe znaczenie dla postrzegania szybkości działania przeglądarki. [Więcej informacji](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Przejścia między stronami nie sprawiają wrażenia, jakby zacinały się z powodu opóźnień w sieci" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Szacowane opóźnienie reakcji jest szacunkowym czasem (w milisekundach), po którym aplikacja reaguje na działanie użytkownika w trakcie najbardziej intensywnego, pięciosekundowego okresu ładowania strony. Jeśli opóźnienie jest większe niż 50 ms, użytkownicy mogą uznać aplikację za powolną. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "Szacowane opóźnienie reakcji jest szacunkowym czasem (w milisekundach), po którym aplikacja reaguje na działanie użytkownika w trakcie najbardziej intensywnego, pięciosekundowego okresu ładowania strony. Jeśli opóźnienie jest większe niż 50 ms, użytkownicy mogą uznać aplikację za powolną. [Więcej informacji](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Szacowane opóźnienie reakcji" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Pierwsze wyrenderowanie treści oznacza czas wyrenderowania pierwszego tekstu lub obrazu. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "Pierwsze wyrenderowanie treści oznacza czas wyrenderowania pierwszego tekstu lub obrazu. [Więcej informacji](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Pierwsze wyrenderowanie treści" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "CPU bezczynny po raz pierwszy oznacza czas, gdy wątek główny na stronie jest po raz pierwszy na tyle mało obciążony, że może obsługiwać działania użytkownika. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "CPU bezczynny po raz pierwszy oznacza czas, gdy wątek główny na stronie jest po raz pierwszy na tyle mało obciążony, że może obsługiwać działania użytkownika. [Więcej informacji](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "CPU bezczynny po raz pierwszy" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Pierwsze wyrenderowanie elementu znaczącego oznacza czas pojawienia się na ekranie głównej zawartości strony. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "Pierwsze wyrenderowanie elementu znaczącego oznacza czas pojawienia się na ekranie głównej zawartości strony. [Więcej informacji](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Pierwsze wyrenderowanie elementu znaczącego" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Czas do pełnej interaktywności to czas, po którym strona staje się w pełni interaktywna. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "Czas do pełnej interaktywności to czas, po którym strona staje się w pełni interaktywna. [Więcej informacji](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Czas do pełnej interaktywności" @@ -813,7 +813,7 @@ "message": "Maks. potencjalne opóźnienie przy 1. działaniu" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Indeks szybkości wskazuje, jak szybko strona zapełnia się widocznymi treściami. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "Indeks szybkości wskazuje, jak szybko strona zapełnia się widocznymi treściami. [Więcej informacji](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Indeks szybkości" @@ -837,7 +837,7 @@ "message": "Opóźnienia backendu serwera" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Skrypt service worker pozwala aplikacji działać stabilnie w nieprzewidywalnych warunkach sieciowych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Skrypt service worker pozwala aplikacji działać stabilnie w nieprzewidywalnych warunkach sieciowych. [Więcej informacji](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` nie wyświetla błędu 200, kiedy jest offline" @@ -861,7 +861,7 @@ "message": "Budżet wydajności" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Jeśli HTTPS jest już skonfigurowany, upewnij się, że cały ruch HTTP jest przekierowywany do HTTPS, by wszyscy użytkownicy mogli korzystać z bezpiecznych funkcji. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Jeśli HTTPS jest już skonfigurowany, upewnij się, że cały ruch HTTP jest przekierowywany do HTTPS, by wszyscy użytkownicy mogli korzystać z bezpiecznych funkcji. [Więcej informacji](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Nie przekierowuje ruchu HTTP do HTTPS" @@ -870,7 +870,7 @@ "message": "Przekierowuje ruch HTTP do HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Przekierowania wprowadzają dodatkowe opóźnienia przed rozpoczęciem ładowania strony. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "Przekierowania wprowadzają dodatkowe opóźnienia przed rozpoczęciem ładowania strony. [Więcej informacji](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "Unikaj wielokrotnych przekierowań" @@ -1035,7 +1035,7 @@ "message": "Elementy dotykowe mają odpowiednią wielkość" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Skrypt service worker pozwala aplikacji na korzystanie z wielu funkcji progresywnych aplikacji internetowych – takich jak działanie offline, dodawanie do ekranu głównego czy powiadomienia push. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Skrypt service worker pozwala aplikacji na korzystanie z wielu funkcji progresywnych aplikacji internetowych – takich jak działanie offline, dodawanie do ekranu głównego czy powiadomienia push. [Więcej informacji](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Stroną steruje skrypt service worker, ale nie znaleziono elementu `start_url`, ponieważ nie udało się przetworzyć pliku manifestu jako prawidłowego pliku JSON" @@ -1056,7 +1056,7 @@ "message": "Rejestruje skrypt service worker, który steruje stroną i elementem `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Ekran powitalny z niestandardowym motywem zapewnia użytkownikom lepsze wrażenia podczas otwierania aplikacji z ekranu głównego. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Ekran powitalny z niestandardowym motywem zapewnia użytkownikom lepsze wrażenia podczas otwierania aplikacji z ekranu głównego. [Więcej informacji](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nie skonfigurowano niestandardowego ekranu powitalnego" @@ -1065,7 +1065,7 @@ "message": "Skonfigurowano niestandardowy ekran powitalny" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Motyw paska adresu w przeglądarce możesz dopasować do swojej witryny. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "Motyw paska adresu w przeglądarce możesz dopasować do swojej witryny. [Więcej informacji](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Nie ustawia motywu kolorystycznego paska adresu." @@ -1092,7 +1092,7 @@ "message": "Używanie kodu spoza witryny" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Czas do pierwszego bajta oznacza czas wysłania odpowiedzi przez serwer. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "Czas do pierwszego bajta oznacza czas wysłania odpowiedzi przez serwer. [Więcej informacji](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Czas odpowiedzi głównego dokumentu: {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Typ" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Do aplikacji możesz dodać obsługę interfejsu User Timing API, by mierzyć rzeczywistą szybkość aplikacji z punktu widzenia użytkownika. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "Do aplikacji możesz dodać obsługę interfejsu User Timing API, by mierzyć rzeczywistą szybkość aplikacji z punktu widzenia użytkownika. [Więcej informacji](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 czas działań użytkownika}few{# czasy działań użytkownika}many{# czasów działań użytkownika}other{# czasu działań użytkownika}}" @@ -1125,7 +1125,7 @@ "message": "Znaleziono element <link> typu preconnect dla „{securityOrigin}”, który nie jest używany przez przeglądarkę. Sprawdź, czy poprawnie używasz atrybutu `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Rozważ dodanie wskazówek `preconnect` lub `dns-prefetch`, by wcześniej nawiązać połączenia z ważnymi źródłami w innych domenach. [Więcej informacji](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Rozważ dodanie wskazówek `preconnect` lub `dns-prefetch`, by wcześniej nawiązać połączenia z ważnymi źródłami w innych domenach. [Więcej informacji](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Wcześniej nawiąż połączenia z wymaganymi źródłami" @@ -1134,13 +1134,13 @@ "message": "Znaleziono element <link> wstępnego wczytywania dla „{preloadURL}”, który nie jest używany przez przeglądarkę. Sprawdź, czy poprawnie używasz atrybutu `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Pomyśl o użyciu elementu `<link rel=preload>`, by szybciej pobierały się zasoby, które są obecnie żądane na dalszym etapie ładowania strony. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "Pomyśl o użyciu elementu `<link rel=preload>`, by szybciej pobierały się zasoby, które są obecnie żądane na dalszym etapie ładowania strony. [Więcej informacji](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Załaduj wstępnie kluczowe żądania" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Dodaj tag `<meta name=\"viewport\">`, by zoptymalizować aplikację pod kątem ekranów urządzeń mobilnych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Dodaj tag `<meta name=\"viewport\">`, by zoptymalizować aplikację pod kątem ekranów urządzeń mobilnych. [Więcej informacji](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nie znaleziono tagu `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Zawiera tag `<meta name=\"viewport\">` z elementem `width` lub `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Aplikacja powinna wyświetlać jakieś treści, jeśli JavaScript jest wyłączony. Wystarczy nawet ostrzeżenie, że JavaScript jest wymagany do korzystania z aplikacji. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "Aplikacja powinna wyświetlać jakieś treści, jeśli JavaScript jest wyłączony. Wystarczy nawet ostrzeżenie, że JavaScript jest wymagany do korzystania z aplikacji. [Więcej informacji](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Główna część strony powinna renderować jakieś treści, kiedy jej skrypty są niedostępne" @@ -1164,7 +1164,7 @@ "message": "Zawiera jakieś treści na wypadek niedostępności JavaScriptu" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Jeśli tworzysz progresywną aplikację internetową, rozważ użycie skryptu service worker, który pozwoli na działanie aplikacji w trybie offline. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Jeśli tworzysz progresywną aplikację internetową, rozważ użycie skryptu service worker, który pozwoli na działanie aplikacji w trybie offline. [Więcej informacji](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Strona nie wyświetla błędu 200, kiedy jest offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt-PT.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt-PT.json index f7fe89e..6ee289a5 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt-PT.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt-PT.json
@@ -30,10 +30,10 @@ "message": "Algumas funções superiores ARIA têm de conter funções secundárias específicas para desempenhar as respetivas funções de acessibilidade previstas. [Saiba mais](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Os elementos com `[role]` que exigem `[role]`s secundários específicos estão em falta." + "message": "Os elementos com um `[role]` ARIA que requerem que os elementos secundários contenham um `[role]` específico têm alguns ou todos esses elementos secundários requeridos em falta." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Os elementos com `[role]` que exigem `[role]`s secundários específicos estão presentes" + "message": "Os elementos com um `[role]` ARIA que requerem que os elementos secundários contenham um `[role]` específico têm todos os elementos secundários requeridos." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Algumas funções secundárias ARIA têm de ser contidas por funções superiores específicas para desempenharem adequadamente as respetivas funções de acessibilidade pretendidas. [Saiba mais](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Os leitores de ecrã têm funcionalidades para facilitar a navegação em tabelas. Garantir que as células `<td>` que utilizam o atributo `[headers]` apenas referenciam outras células na mesma tabela pode melhorar a experiência para os utilizadores com leitores de ecrã. [Saiba mais](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "As células num elemento `<table>` que utilizam o atributo `[headers]` referem-se a outras células dessa mesma tabela." + "message": "As células num elemento `<table>` que utilizam o atributo `[headers]` referem-se a um elemento `id` que não se encontra dentro da mesma tabela." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "As células num elemento `<table>` que utilizam o atributo `[headers]` apenas referenciam outras células dessa mesma tabela." + "message": "As células num elemento `<table>` que utilizam o atributo `[headers]` referem-se a células de tabela dentro da mesma tabela." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Os leitores de ecrã têm funcionalidades para facilitar a navegação em tabelas. Garantir que os cabeçalhos de tabelas referenciam sempre algum conjunto de células pode melhorar a experiência dos utilizadores com leitores de ecrã. [Saiba mais](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Os elementos `<video>` contêm um elemento `<track>` com `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Para um aspeto ideal no iOS quando os utilizadores adicionam uma progressive web app ao ecrã principal, defina um `apple-touch-icon`. Deve apontar para um PNG quadrado não transparente de 192 px (ou 180 px). [Saiba mais](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Para um aspeto ideal no iOS quando os utilizadores adicionam uma progressive web app ao ecrã principal, defina um `apple-touch-icon`. Deve apontar para um PNG quadrado não transparente de 192 px (ou 180 px). [Saiba mais](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Não fornece um `apple-touch-icon` válido" @@ -342,7 +342,7 @@ "message": "Tempo total da CPU" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Considere reduzir o tempo despendido a analisar, compilar e executar JS. Poderá descobrir que é útil fornecer payloads de JS mais pequenos. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Considere reduzir o tempo despendido a analisar, compilar e executar JS. Poderá descobrir que é útil fornecer payloads de JS mais pequenos. [Saiba mais](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reduza o tempo de execução de JavaScript" @@ -351,25 +351,25 @@ "message": "Tempo de execução de JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Os GIFs grandes são ineficientes para publicação de conteúdo animado. Para poupar bytes de rede, considere utilizar vídeos MPEG4/WebM para animações e ficheiros PNG/WebP para imagens estáticas em vez de GIFs. [Saiba mais](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Os GIFs grandes são ineficientes para publicação de conteúdo animado. Para poupar bytes de rede, considere utilizar vídeos MPEG4/WebM para animações e ficheiros PNG/WebP para imagens estáticas em vez de GIFs. [Saiba mais](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Utilize formatos de vídeo para conteúdo animado" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Considere utilizar imagens de carregamento lento não visíveis e ocultas após a conclusão do carregamento de todos os recursos críticos, para reduzir o tempo até à interação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Considere utilizar imagens de carregamento lento não visíveis e ocultas após a conclusão do carregamento de todos os recursos críticos, para reduzir o tempo até à interação. [Saiba mais](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Adie as imagens não visíveis" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Os recursos estão a bloquear o primeiro preenchimento da página. Considere publicar JS/CSS críticos inline e adiar todos os JS/estilos não críticos. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Os recursos estão a bloquear o primeiro preenchimento da página. Considere publicar JS/CSS críticos inline e adiar todos os JS/estilos não críticos. [Saiba mais](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Elimine recursos que bloqueiam o processamento" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Os grandes payloads de rede têm custos reais para os utilizadores e estão fortemente correlacionados com tempos de carregamento demorados. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Os grandes payloads de rede têm custos reais para os utilizadores e estão fortemente correlacionados com tempos de carregamento demorados. [Saiba mais](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "O tamanho total era {totalBytes, number, bytes} KB." @@ -381,19 +381,19 @@ "message": "Evita enormes payloads de rede" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Reduzir os ficheiros CSS pode reduzir os tamanhos dos payloads de rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Reduzir os ficheiros CSS pode reduzir os tamanhos dos payloads de rede. [Saiba mais](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Reduza o CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Reduzir os ficheiros JavaScript pode reduzir os tamanhos dos payloads e o tempo de análise de scripts. [Saiba mais](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Reduzir os ficheiros JavaScript pode reduzir os tamanhos dos payloads e o tempo de análise de scripts. [Saiba mais](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Reduza o JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Remova as regras vazias das folhas de estilo e adie o carregamento de CSS não utilizado para conteúdo na parte superior para reduzir a quantidade de bytes desnecessários consumidos pela atividade da rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Remova as regras vazias das folhas de estilo e adie o carregamento de CSS não utilizado para conteúdo na parte superior para reduzir a quantidade de bytes desnecessários consumidos pela atividade da rede. [Saiba mais](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Remova o CSS não utilizado" @@ -405,7 +405,7 @@ "message": "Remova o JavaScript não utilizado" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Uma longa duração total da cache pode acelerar as visitas repetidas à sua página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Uma longa duração total da cache pode acelerar as visitas repetidas à sua página. [Saiba mais](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 recurso encontrado}other{# recursos encontrados}}" @@ -417,31 +417,31 @@ "message": "Utiliza uma política de cache eficiente em recursos estáticos" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "As imagens otimizadas são carregadas mais rapidamente e consomem menos dados móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "As imagens otimizadas são carregadas mais rapidamente e consomem menos dados móveis. [Saiba mais](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Codifique as imagens de forma eficiente" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Publique imagens com um tamanho adequado para poupar dados móveis e melhorar o tempo de carregamento. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Publique imagens com um tamanho adequado para poupar dados móveis e melhorar o tempo de carregamento. [Saiba mais](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Dimensione adequadamente as imagens" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Os recursos baseados em texto devem ser publicados com compressão (gzip, Deflate ou Brotli) para reduzir o total de bytes de rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Os recursos baseados em texto devem ser publicados com compressão (gzip, Deflate ou Brotli) para reduzir o total de bytes de rede. [Saiba mais](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Ative a compressão de texto" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Muitas vezes, os formatos de imagem como JPEG 2000, JPEG XR e WebP proporcionam uma melhor compressão do que os formatos PNG ou JPEG, o que se traduz em transferências mais rápidas e num menor consumo de dados. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Muitas vezes, os formatos de imagem como JPEG 2000, JPEG XR e WebP proporcionam uma melhor compressão do que os formatos PNG ou JPEG, o que se traduz em transferências mais rápidas e num menor consumo de dados. [Saiba mais](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Publique imagens em formatos de última geração" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Se a largura do conteúdo da sua aplicação não corresponder à largura da área visível, a sua aplicação poderá não estar otimizada para ecrãs de dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Se a largura do conteúdo da sua aplicação não corresponder à largura da área visível, a sua aplicação poderá não estar otimizada para ecrãs de dispositivos móveis. [Saiba mais](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "O tamanho da área visível de {innerWidth} px não corresponde ao tamanho da janela de {outerWidth} px." @@ -453,7 +453,7 @@ "message": "O conteúdo é dimensionado corretamente para a área visível" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "As Cadeias de pedidos críticos abaixo apresentam os recursos que são carregados com uma prioridade elevada. Considere reduzir o tamanho das cadeias, reduzir o tamanho de transferência dos recursos ou adiar a transferência de recursos desnecessários para melhorar o carregamento de página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "As Cadeias de pedidos críticos abaixo apresentam os recursos que são carregados com uma prioridade elevada. Considere reduzir o tamanho das cadeias, reduzir o tamanho de transferência dos recursos ou adiar a transferência de recursos desnecessários para melhorar o carregamento de página. [Saiba mais](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 cadeia encontrada}other{# cadeias encontradas}}" @@ -675,7 +675,7 @@ "message": "Nenhum erro do navegador registado na consola" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Tire partido da funcionalidade CSS de apresentação de tipos de letra para garantir que o texto é visível para o utilizador enquanto os tipos de letra para Websites são carregados. [Saiba mais](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Tire partido da funcionalidade CSS de apresentação de tipos de letra para garantir que o texto é visível para o utilizador enquanto os tipos de letra para Websites são carregados. [Saiba mais](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Garanta que o texto permanece visível durante o carregamento de tipos de letra para Websites" @@ -705,7 +705,7 @@ "message": "Informações inválidas de dimensionamento de imagens {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Os navegadores podem solicitar proativamente aos utilizadores que adicionem a sua aplicação ao respetivo ecrã principal, o que pode levar a uma maior interação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Os navegadores podem solicitar proativamente aos utilizadores que adicionem a sua aplicação ao respetivo ecrã principal, o que pode levar a uma maior interação. [Saiba mais](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "O manifesto da aplicação para a Web não cumpre os requisitos de capacidade de instalação" @@ -729,7 +729,7 @@ "message": "Utiliza HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Um rápido carregamento da página numa rede móvel assegura uma boa experiência do utilizador móvel. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Um rápido carregamento da página numa rede móvel assegura uma boa experiência do utilizador móvel. [Saiba mais](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interativa em {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Categoria" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Considere reduzir o tempo despendido a analisar, compilar e executar JS. Poderá descobrir que é útil fornecer payloads de JS mais pequenos." + "message": "Considere reduzir o tempo despendido a analisar, compilar e executar JS. Poderá descobrir que é útil fornecer payloads de JS mais pequenos. [Saiba mais](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Reduzir as operações do thread principal" @@ -759,49 +759,49 @@ "message": "Reduz as operações do thread principal" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Para alcançar o maior número possível de utilizadores, os sites devem funcionar em todos os navegadores principais. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Para alcançar o maior número possível de utilizadores, os sites devem funcionar em todos os navegadores principais. [Saiba mais](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "O site funciona em vários navegadores" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Certifique-se de que as páginas individuais têm links diretos através de URLs e que os URLs são exclusivos para a finalidade de serem partilhados em redes sociais. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Certifique-se de que as páginas individuais têm links diretos através de URLs e que os URLs são exclusivos para a finalidade de serem partilhados em redes sociais. [Saiba mais](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Cada página tem um URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "As transições devem parecer rápidas à medida que toca em qualquer local, mesmo numa rede lenta, o que é essencial para o desempenho percecionado. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "As transições devem parecer rápidas à medida em que toca em qualquer local, mesmo numa rede lenta. Esta experiência é essencial para a perceção do desempenho de um utilizador. [Saiba mais](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "As transições da página não parecem ficar bloqueadas na rede" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "A Latência de entrada estimada é uma estimativa do tempo que a sua aplicação demora a responder a ações do utilizador, em milissegundos, durante a janela dos 5 segundos mais ativos do carregamento da página. Se a latência for superior a 50 ms, os utilizadores podem considerar que a sua aplicação é lenta. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "A Latência de entrada estimada é uma estimativa do tempo que a sua aplicação demora a responder a ações do utilizador, em milissegundos, durante a janela dos 5 segundos mais ativos do carregamento da página. Se a latência for superior a 50 ms, os utilizadores podem considerar que a sua aplicação é lenta. [Saiba mais](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Latência estimada das ações" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "O Primeiro preenchimento com conteúdo assinala o momento de preenchimento com o primeiro texto ou a primeira imagem. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "O Primeiro preenchimento com conteúdo assinala o momento de preenchimento com o primeiro texto ou a primeira imagem. [Saiba mais](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Primeiro preenchimento com conteúdo" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "A métrica Primeira CPU inativa indica quando é que o thread principal da página está suficientemente inativo pela primeira vez para processar ações. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "A métrica Primeira CPU inativa indica quando é que o thread principal da página está suficientemente inativo pela primeira vez para processar ações. [Saiba mais](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Primeira CPU inativa" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "A métrica Primeiro preenchimento significativo mede quando é que o conteúdo principal de uma página fica visível. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "A métrica Primeiro preenchimento significativo mede quando é que o conteúdo principal de uma página fica visível. [Saiba mais](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Primeiro preenchimento significativo" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "O Tempo até à interação é a quantidade de tempo que a página demora a ficar totalmente interativa. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "O Tempo até à interação é a quantidade de tempo que a página demora a ficar totalmente interativa. [Saiba mais](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tempo até à interação" @@ -813,7 +813,7 @@ "message": "Máximo potencial de primeiro atraso de entrada" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "A métrica Índice de velocidade apresenta a rapidez de preenchimento visível dos conteúdos de uma página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "A métrica Índice de velocidade apresenta a rapidez de preenchimento visível dos conteúdos de uma página. [Saiba mais](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Índice de velocidade" @@ -837,7 +837,7 @@ "message": "Latências de back-end do servidor" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Um service worker permite que a sua aplicação para a Web seja fiável em condições de rede imprevisíveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Um service worker permite que a sua aplicação para a Web seja fiável em condições de rede imprevisíveis. [Saiba mais](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` não responde com um 200 quando está offline" @@ -861,7 +861,7 @@ "message": "Orçamento de desempenho" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Se já tiver configurado o HTTPS, certifique-se de que redireciona todo o tráfego HTTP para HTTPS de modo a ativar as funcionalidades Web seguras para todos os seus utilizadores. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Se já tiver configurado o HTTPS, certifique-se de que redireciona todo o tráfego HTTP para HTTPS de modo a ativar as funcionalidades Web seguras para todos os seus utilizadores. [Saiba mais](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Não redireciona o tráfego HTTP para HTTPS" @@ -870,7 +870,7 @@ "message": "Redireciona o tráfego HTTP para HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "A auditoria Redirecionamentos introduz atrasos adicionais antes do carregamento da página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "A auditoria Redirecionamentos introduz atrasos adicionais antes do carregamento da página. [Saiba mais](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Evite vários redirecionamentos de página" @@ -1035,7 +1035,7 @@ "message": "Os alvos táteis estão dimensionados corretamente" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "O service worker é a tecnologia que permite que a sua aplicação utilize muitas funcionalidades de progressive web app, tais como offline, adicionar ao ecrã principal e envios de notificações. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "O service worker é a tecnologia que permite que a sua aplicação utilize muitas funcionalidades de progressive web app, tais como offline, adicionar ao ecrã principal e envios de notificações. [Saiba mais](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Esta página é controlada por um service worker, no entanto, não foi encontrado nenhum `start_url` porque o manifesto falhou ao analisar como um JSON válido." @@ -1056,7 +1056,7 @@ "message": "Regista um service worker que controla a página e `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Um ecrã inicial temático garante uma experiência de alta qualidade quando os utilizadores iniciam a aplicação a partir dos respetivos ecrãs principais. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Um ecrã inicial temático garante uma experiência de alta qualidade quando os utilizadores iniciam a aplicação a partir dos respetivos ecrãs principais. [Saiba mais](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Não está configurado para um ecrã inicial personalizado" @@ -1065,7 +1065,7 @@ "message": "Configurado para um ecrã inicial personalizado" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "A barra de endereço do navegador pode ter um tema que corresponda ao seu site. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "A barra de endereço do navegador pode ter um tema que corresponda ao seu site. [Saiba mais](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Não define uma cor do tema para a barra de endereço." @@ -1092,7 +1092,7 @@ "message": "Utilização de terceiros" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "A auditoria Tempo até ao primeiro byte indica o tempo de envio de uma resposta pelo seu servidor. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "A auditoria Tempo até ao primeiro byte indica o tempo de envio de uma resposta pelo seu servidor. [Saiba mais](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "O documento de raiz demorou {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tipo" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Pondere a possibilidade de complementar a sua aplicação com a API Tempos do utilizador para analisar o desempenho real da aplicação durante as principais experiências do utilizador. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Pondere a possibilidade de complementar a sua aplicação com a API Tempos do utilizador para analisar o desempenho real da aplicação durante as principais experiências do utilizador. [Saiba mais](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 tempo do utilizador}other{# tempos do utilizador}}" @@ -1125,7 +1125,7 @@ "message": "Foi encontrado um <link> de pré-ligação para \"{securityOrigin}\", mas este não foi utilizado pelo navegador. Confirme se está a utilizar o atributo `crossorigin` adequadamente." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Considere adicionar instruções para recursos de `preconnect` ou `dns-prefetch` para estabelecer ligações antecipadamente a origens de terceiros importantes. [Saiba mais](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Considere adicionar instruções para recursos de `preconnect` ou `dns-prefetch` para estabelecer ligações antecipadamente a origens de terceiros importantes. [Saiba mais](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Efetue a pré-ligação às origens necessárias" @@ -1134,13 +1134,13 @@ "message": "Foi encontrado um <link> de pré-carregamento para \"{preloadURL}\", mas este não foi utilizado pelo navegador. Confirme se está a utilizar o atributo `crossorigin` adequadamente." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Considere utilizar `<link rel=preload>` para dar prioridade à obtenção de recursos que são atualmente solicitados mais tarde no carregamento de página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Considere utilizar `<link rel=preload>` para dar prioridade à obtenção de recursos que são atualmente solicitados mais tarde no carregamento de página. [Saiba mais](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Pré-carregue pedidos-chave" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Adicione uma etiqueta `<meta name=\"viewport\">` para otimizar a sua aplicação para ecrãs de dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Adicione uma etiqueta `<meta name=\"viewport\">` para otimizar a sua aplicação para ecrãs de dispositivos móveis. [Saiba mais](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nenhuma etiqueta `<meta name=\"viewport\">` encontrada." @@ -1152,7 +1152,7 @@ "message": "Tem uma etiqueta `<meta name=\"viewport\">` com `width` ou `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "A sua aplicação deve apresentar algum conteúdo quando o JavaScript está desativado, mesmo que seja apenas um aviso ao utilizador de que o JavaScript é necessário para utilizar a aplicação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "A sua aplicação deve apresentar algum conteúdo quando o JavaScript está desativado, mesmo que seja apenas um aviso ao utilizador de que o JavaScript é necessário para utilizar a aplicação. [Saiba mais](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "O corpo da página deve renderizar algum conteúdo se os respetivos scripts não estiverem disponíveis." @@ -1164,7 +1164,7 @@ "message": "Contém algum conteúdo quando o JavaScript não está disponível" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Se estiver a criar uma progressive web app, considere utilizar um service worker para que a sua aplicação possa funcionar offline. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Se estiver a criar uma progressive web app, considere utilizar um service worker para que a sua aplicação possa funcionar offline. [Saiba mais](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "A página atual não responde com um 200 quando está offline" @@ -1518,10 +1518,10 @@ "message": "Um número de [plug-ins do WordPress](https://wordpress.org/plugins/search/minify+javascript/) pode acelerar o seu site ao concatenar, reduzir e comprimir os seus scripts. Poderá ainda utilizar um processo de criação para proceder previamente à redução se possível." }, "stack-packs/packs/wordpress.js | unused_css_rules": { - "message": "Considere reduzir ou mudar o número de [plug-ins do WordPress](https://wordpress.org/plugins/) que carregam CSS não utilizadas na sua página. Para identificar plug-ins que estejam a adicionar CSS não reconhecido, experimente realizar a [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) nas DevTools do Chrome. Pode identificar o tema/plug-in responsável a partir do URL da folha de estilos. Esteja atento a plug-ins que tenham muitas folhas de estilo na lista com muito vermelho na cobertura do código. Um plug-in só deve ter uma folha de estilos na fila de espera se esta for realmente utilizada na página." + "message": "Considere reduzir ou mudar o número de [plug-ins do WordPress](https://wordpress.org/plugins/) que carregam CSS não utilizadas na sua página. Para identificar plug-ins que estejam a adicionar CSS não reconhecido, experimente realizar a [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) nas DevTools do Chrome. Pode identificar o tema/plug-in responsável a partir do URL da folha de estilos. Esteja atento a plug-ins que tenham muitas folhas de estilo na lista com muito vermelho na cobertura do código. Um plug-in só deve ter uma folha de estilos na lista de espera se esta for realmente utilizada na página." }, "stack-packs/packs/wordpress.js | unused_javascript": { - "message": "Considere reduzir ou mudar o número de [plug-ins do WordPress](https://wordpress.org/plugins/) que carregam JavaScript não utilizado na sua página. Para identificar plug-ins que estejam a adicionar JS não reconhecido, experimente realizar a [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) nas DevTools do Chrome. Pode identificar o tema/plug-in responsável a partir do URL do script. Esteja atento a plug-ins que tenham muitos scripts na lista com muito vermelho na cobertura do código. Um plug-in só deve ter um script na fila de espera se este for realmente utilizado na página." + "message": "Considere reduzir ou mudar o número de [plug-ins do WordPress](https://wordpress.org/plugins/) que carregam JavaScript não utilizado na sua página. Para identificar plug-ins que estejam a adicionar JS não reconhecido, experimente realizar a [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) nas DevTools do Chrome. Pode identificar o tema/plug-in responsável a partir do URL do script. Esteja atento a plug-ins que tenham muitos scripts na lista com muito vermelho na cobertura do código. Um plug-in só deve ter um script na lista de espera se este for realmente utilizado na página." }, "stack-packs/packs/wordpress.js | uses_long_cache_ttl": { "message": "Leia sobre [Colocação do navegador em cache no WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt.json index 7171cff..e396fb9 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt.json
@@ -30,10 +30,10 @@ "message": "Algumas funções ARIA mães precisam ter funções filhas específicas para cumprir as tarefas de acessibilidade pretendidas. [Saiba mais](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Os elementos com `[role]` que exigem `[role]`s filhos específicos não estão presentes." + "message": "Elementos com uma `[role]` ARIA que exigem que os filhos contenham uma `[role]` específica não têm alguns ou nenhum dos filhos obrigatórios." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Os elementos com `[role]` que exigem `[role]`s filhos específicos estão presentes" + "message": "Elementos com uma `[role]` ARIA que exigem que os filhos contenham uma `[role]` específica têm todos os filhos obrigatórios." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Algumas funções ARIA filhas precisam fazer parte das funções mães específicas para cumprir as tarefas de acessibilidade pretendidas. [Saiba mais](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Os leitores de tela têm recursos para facilitar a navegação em tabelas. Para melhorar a experiência dos usuários de leitores de tela, as células `<td>` que usam o atributo `[headers]` precisam referenciar apenas outras células na mesma tabela. [Saiba mais](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "As células de um elemento `<table>` que usa o atributo `[headers]` se referem às outras células dessa mesma tabela." + "message": "Células em um elemento `<table>` que usam o atributo `[headers]` referem-se a um elemento `id` não encontrado na mesma tabela." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "As células em um elemento `<table>` que usam o atributo `[headers]` se referem apenas às outras células da mesma tabela." + "message": "Células em um elemento `<table>` que usam o atributo `[headers]` referem-se às células na mesma tabela." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Os leitores de tela têm recursos para facilitar a navegação em tabelas. Garantir que os cabeçalhos das tabelas se refiram sempre a alguns conjuntos de células pode melhorar a experiência dos usuários de leitores de tela. [Saiba mais](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Os elementos `<video>` contêm um elemento `<track>` com `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Para ter uma exibição ideal no iOS quando o usuário adiciona um Progressive Web App à tela inicial, defina um `apple-touch-icon`. Ele precisa apontar para um PNG quadrado não transparente de 192 px (ou 180 px). [Saiba mais](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Para ter uma exibição ideal no iOS quando o usuário adiciona um Progressive Web App à tela inicial, defina um `apple-touch-icon`. Ele precisa apontar para um PNG quadrado não transparente de 192 px (ou 180 px). [Saiba mais](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Não oferece um `apple-touch-icon` válido" @@ -342,7 +342,7 @@ "message": "Tempo total de CPU" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Diminua o tempo gasto na análise, compilação e execução de JS. Você perceberá que exibir payloads de JS menores ajuda a fazer isso. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Diminua o tempo gasto na análise, compilação e execução de JS. Você perceberá que exibir payloads de JS menores ajuda a fazer isso. [Saiba mais](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Reduza o tempo de execução de JavaScript" @@ -351,25 +351,25 @@ "message": "Tempo de execução de JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "GIFs grandes não são eficientes para exibir conteúdo animado. Use vídeos MPEG4/WebM para animações e PNG/WebP para imagens estáticas em vez de GIF para economizar bytes de rede. [Saiba mais](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "GIFs grandes não são eficientes para exibir conteúdo animado. Use vídeos MPEG4/WebM para animações e PNG/WebP para imagens estáticas em vez de GIF para economizar bytes de rede. [Saiba mais](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Use formatos de vídeo para conteúdo animado" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "A fim de reduzir o tempo para interação da página, faça o carregamento lento de imagens fora da tela e ocultas quando todos os recursos críticos já estiverem carregados. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "A fim de reduzir o tempo para interação da página, faça o carregamento lento de imagens fora da tela e ocultas quando todos os recursos críticos já estiverem carregados. [Saiba mais](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Adie imagens fora da tela" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Os recursos estão bloqueando a primeira exibição da sua página. Exiba JS/CSS crítico inline e adie todos os JS/estilos não críticos. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Os recursos estão bloqueando a primeira exibição da sua página. Exiba JS/CSS crítico inline e adie todos os JS/estilos não críticos. [Saiba mais](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Elimine recursos que impedem a renderização" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Grandes payloads de rede geram custos para o usuário e estão diretamente relacionados a tempos de carregamento maiores. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Grandes payloads de rede geram custos para o usuário e estão diretamente relacionados a tempos de carregamento maiores. [Saiba mais](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "O tamanho total foi de {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Evita payloads de rede muito grandes" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "A redução de arquivos CSS pode diminuir o tamanho do payload de rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "A redução de arquivos CSS pode diminuir o tamanho do payload de rede. [Saiba mais](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Reduza o CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "A redução de arquivos JavaScript pode diminuir o tamanho de payloads e o tempo de análise de scripts. [Saiba mais](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "A redução de arquivos JavaScript pode diminuir o tamanho de payloads e o tempo de análise de scripts. [Saiba mais](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Reduza o JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Remova as regras inativas das folhas de estilo e adie o carregamento de CSS não usado para conteúdo acima da dobra, a fim de reduzir o consumo desnecessário de bytes da atividade da rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Remova as regras inativas das folhas de estilo e adie o carregamento de CSS não usado para conteúdo acima da dobra, a fim de reduzir o consumo desnecessário de bytes da atividade da rede. [Saiba mais](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Remova CSS não utilizado" @@ -405,7 +405,7 @@ "message": "Remova o JavaScript não utilizado" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Um cache com ciclo de vida longo pode acelerar visitas repetidas à sua página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Um cache com ciclo de vida longo pode acelerar visitas repetidas à sua página. [Saiba mais](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 recurso encontrado}one{# recurso encontrado}other{# recursos encontrados}}" @@ -417,31 +417,31 @@ "message": "Usa uma política de cache eficiente em recursos estáticos" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Imagens otimizadas são carregadas mais rapidamente e consomem menos dados da rede celular. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Imagens otimizadas são carregadas mais rapidamente e consomem menos dados da rede celular. [Saiba mais](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Codifique as imagens com eficiência" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Veicule imagens que tenham o tamanho adequado para economizar dados da rede celular e melhorar o tempo de carregamento. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Veicule imagens que tenham o tamanho adequado para economizar dados da rede celular e melhorar o tempo de carregamento. [Saiba mais](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Defina um tamanho adequado para as imagens" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Os recursos baseados em texto precisam ser veiculados com compactação (gzip, deflate ou brotli) para minimizar o total de bytes da rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Os recursos baseados em texto precisam ser veiculados com compactação (gzip, deflate ou brotli) para minimizar o total de bytes da rede. [Saiba mais](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Ative a compactação de texto" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Formatos de imagem como JPEG 2000, JPEG XR e WebP geralmente oferecem uma melhor compactação do que PNG ou JPEG, o que significa downloads mais rápidos e menor consumo de dados. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Formatos de imagem como JPEG 2000, JPEG XR e WebP geralmente oferecem uma melhor compactação do que PNG ou JPEG, o que significa downloads mais rápidos e menor consumo de dados. [Saiba mais](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Disponibilize imagens em formatos de última geração" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Se a largura do conteúdo do seu app não corresponder à largura da janela de visualização, não será possível otimizar o app para telas de dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Se a largura do conteúdo do seu app não corresponder à largura da janela de visualização, não será possível otimizar o app para telas de dispositivos móveis. [Saiba mais](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "O tamanho da janela de visualização de {innerWidth} px não corresponde ao tamanho da janela {outerWidth} px." @@ -453,7 +453,7 @@ "message": "O conteúdo está no tamanho correto para a janela de visualização" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "As cadeias de solicitação críticas abaixo mostram quais recursos são carregados com prioridade alta. Diminua o tamanho das cadeias, reduza o tamanho do download de recursos ou adie o download de recursos desnecessários para melhorar o carregamento de página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "As cadeias de solicitação críticas abaixo mostram quais recursos são carregados com prioridade alta. Diminua o tamanho das cadeias, reduza o tamanho do download de recursos ou adie o download de recursos desnecessários para melhorar o carregamento de página. [Saiba mais](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 rede encontrada}one{# rede encontrada}other{# redes encontradas}}" @@ -675,7 +675,7 @@ "message": "Nenhum erro do navegador registrado no console" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Use o recurso CSS de exibição de fonte para garantir que o texto possa ser visto pelo usuário enquanto as webfonts são carregadas. [Saiba mais](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Use o recurso CSS de exibição de fonte para garantir que o texto possa ser visto pelo usuário enquanto as webfonts são carregadas. [Saiba mais](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Garanta que o texto continue visível durante o carregamento da webfont" @@ -705,7 +705,7 @@ "message": "Informações inválidas para tamanho de imagem {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Os navegadores podem solicitar automaticamente aos usuários que adicionem o app à tela inicial deles, o que pode aumentar a interação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Os navegadores podem solicitar automaticamente aos usuários que adicionem o app à tela inicial deles, o que pode aumentar a interação. [Saiba mais](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "O manifesto do app da Web não atende os requisitos de instabilidade." @@ -729,7 +729,7 @@ "message": "Utiliza HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Um carregamento de página rápido em uma rede celular garante uma boa experiência do usuário em dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Um carregamento de página rápido em uma rede celular garante uma boa experiência do usuário em dispositivos móveis. [Saiba mais](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interativa em {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Categoria" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Reduza o tempo gasto com análise, compilação e execução de JS. Você perceberá que exibir payloads de JS menores ajuda a fazer isso." + "message": "Considere diminuir o tempo gasto na análise, compilação e execução de JS. Você perceberá que exibir payloads de JS menores ajuda a fazer isso. [Saiba mais](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimize o trabalho da thread principal" @@ -759,49 +759,49 @@ "message": "Minimiza o trabalho da thread principal" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Os sites precisam funcionar em todos os principais navegadores para que sejam acessíveis ao maior número de usuários. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Os sites precisam funcionar em todos os principais navegadores para que sejam acessíveis ao maior número de usuários. [Saiba mais](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "O site funciona em diferentes navegadores" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "É necessário que as páginas individuais permitam links diretos via URL e que os URLs sejam exclusivos para o propósito de compartilhamento em mídias sociais. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "É necessário que as páginas individuais permitam links diretos via URL e que os URLs sejam exclusivos para o propósito de compartilhamento em mídias sociais. [Saiba mais](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Cada página tem um URL." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "As transições precisam ser dinâmicas durante a navegação por toque, mesmo em uma conexão de rede lenta. Isso é essencial para a percepção de desempenho. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "As transições precisam ser dinâmicas durante a navegação por toque, mesmo em uma conexão de rede lenta. Essa experiência é essencial para a percepção de desempenho. [Saiba mais](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "As transições de página não devem parecer bloqueadas pelo carregamento da rede." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "\"Latência de entrada estimada\" é uma estimativa de quanto tempo o app leva para responder à entrada do usuário, em milésimos de segundo, durante a janela de carregamento de página mais movimentada de cinco segundos. Se a latência for maior que 50 ms, o usuário poderá notar lentidão no app. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "\"Latência de entrada estimada\" é uma estimativa de quanto tempo o app leva para responder à entrada do usuário, em milésimos de segundo, durante a janela de carregamento de página mais movimentada de cinco segundos. Se a latência for maior que 50 ms, o usuário poderá notar lentidão no app. [Saiba mais](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Latência de entrada estimada" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "\"Primeira exibição de conteúdo\" marca o momento em que o primeiro texto ou imagem é disponibilizado. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "\"Primeira exibição de conteúdo\" marca o momento em que o primeiro texto ou imagem é disponibilizado. [Saiba mais](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Primeiro aparecimento com conteúdo" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "\"Primeira CPU ociosa\" marca a primeira vez que o thread principal da página fica silencioso o suficiente para lidar com a entrada. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "\"Primeira CPU ociosa\" marca a primeira vez que a linha de execução principal da página fica silenciosa o suficiente para lidar com a entrada. [Saiba mais](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Primeira CPU ociosa" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "\"Primeira exibição significativa\" marca o momento em que o conteúdo principal de uma página se torna visível. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "\"Primeira exibição significativa\" marca o momento em que o conteúdo principal de uma página se torna visível. [Saiba mais](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Primeira exibição importante" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "\"Tempo para interação da página\" é o período necessário para que ela fique totalmente interativa. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "\"Tempo para interação da página\" é o período necessário para que ela fique totalmente interativa. [Saiba mais](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tempo até ficar interativa" @@ -813,7 +813,7 @@ "message": "Possível latência máxima na primeira entrada" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "\"Índice de velocidade\" mostra a rapidez com que o conteúdo de uma página é preenchido visivelmente. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "\"Índice de velocidade\" mostra a rapidez com que o conteúdo de uma página é preenchido visivelmente. [Saiba mais](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Índice de velocidade" @@ -837,7 +837,7 @@ "message": "Latências do back-end do servidor" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Um service worker permite que seu app da Web funcione de maneira confiável em condições imprevisíveis de rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Um service worker permite que seu app da Web funcione de maneira confiável em condições imprevisíveis de rede. [Saiba mais](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` não responde com um código 200 quando off-line." @@ -861,7 +861,7 @@ "message": "Orçamento de desempenho" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Se você já definiu o HTTPS, redirecione todo o tráfego HTTP para HTTPS para garantir recursos da Web para todos os seus usuários. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Se você já definiu o HTTPS, redirecione todo o tráfego HTTP para HTTPS para garantir recursos da Web para todos os seus usuários. [Saiba mais](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "O tráfego HTTP não é redirecionado para HTTPS" @@ -870,7 +870,7 @@ "message": "O tráfego HTTP é redirecionado para HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Os redirecionamentos causam mais atrasos antes do carregamento da página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Os redirecionamentos causam mais atrasos antes do carregamento da página. [Saiba mais](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Evite redirecionamentos múltiplos de página" @@ -1035,7 +1035,7 @@ "message": "As áreas de toque estão dimensionadas corretamente" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "O service worker é a tecnologia que permite que seu app use muitos recursos do Progressive Web App, como disponibilidade off-line, adicionar à tela inicial, e notificações de push. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "O service worker é a tecnologia que permite que seu app use muitos recursos do Progressive Web App, como disponibilidade off-line, adicionar à tela inicial, e notificações de push. [Saiba mais](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Esta página é controlada por um service worker, no entanto, nenhum `start_url` foi encontrado porque o manifesto não foi analisado como um JSON válido." @@ -1056,7 +1056,7 @@ "message": "Há registro de um service worker que controla a página e `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Uma tela de apresentação personalizada garante uma experiência de alta qualidade quando os usuários abrem o aplicativo na tela inicial. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Uma tela de apresentação personalizada garante uma experiência de alta qualidade quando os usuários abrem o aplicativo na tela inicial. [Saiba mais](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Não foi configurado para uma tela de apresentação personalizada" @@ -1065,7 +1065,7 @@ "message": "Configurado para uma tela de apresentação personalizada" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "É possível atribuir um tema relacionado ao seu site à barra de endereço do navegador. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "É possível atribuir um tema relacionado ao seu site à barra de endereço do navegador. [Saiba mais](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Não foi definida uma cor de tema para a barra de endereços." @@ -1092,7 +1092,7 @@ "message": "Uso de terceiros" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "\"Tempo até o primeiro byte\" identifica o momento em que o servidor envia uma resposta. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "\"Tempo até o primeiro byte\" identifica o momento em que o servidor envia uma resposta. [Saiba mais](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "O documento raiz levou {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tipo" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Instrumente seu app com a API User Timing para avaliar o desempenho real do app durante as principais experiências do usuário. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Instrumente seu app com a API User Timing para avaliar o desempenho real do app durante as principais experiências do usuário. [Saiba mais](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 velocidade do usuário}one{# velocidade do usuário}other{# velocidades do usuário}}" @@ -1125,7 +1125,7 @@ "message": "Um <link> de pré-conexão foi encontrado para \"{securityOrigin}\", mas não foi utilizado pelo navegador. Verifique se você está usando o atributo `crossorigin` corretamente." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Adicione dicas de recursos de `preconnect` ou `dns-prefetch` para estabelecer conexões antecipadas a origens importantes de terceiros. [Saiba mais](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Adicione dicas de recursos de `preconnect` ou `dns-prefetch` para estabelecer conexões antecipadas a origens importantes de terceiros. [Saiba mais](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Pré-conecte às origens necessárias" @@ -1134,13 +1134,13 @@ "message": "Um <link> de pré-carregamento foi encontrado para \"{preloadURL}\", mas não foi usado pelo navegador. Verifique se você está usando o atributo `crossorigin` corretamente." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Use `<link rel=preload>` para priorizar a busca de recursos que, no momento, são solicitados posteriormente no carregamento de página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Use `<link rel=preload>` para priorizar a busca de recursos que, no momento, são solicitados posteriormente no carregamento de página. [Saiba mais](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Pré-carregue as principais solicitações" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Adicione uma tag `<meta name=\"viewport\">` para otimizar seu app para telas de dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Adicione uma tag `<meta name=\"viewport\">` para otimizar seu app para telas de dispositivos móveis. [Saiba mais](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nenhuma tag `<meta name=\"viewport\">` foi encontrada." @@ -1152,7 +1152,7 @@ "message": "Há uma tag `<meta name=\"viewport\">` com `width` ou `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Seu app precisa mostrar algum conteúdo quando o JavaScript está desativado, mesmo que seja somente um aviso de que o JavaScript é necessário para o uso do app. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Seu app precisa mostrar algum conteúdo quando o JavaScript está desativado, mesmo que seja somente um aviso de que o JavaScript é necessário para o uso do app. [Saiba mais](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "O corpo da página precisa renderizar algum conteúdo se os scripts não estão disponíveis." @@ -1164,7 +1164,7 @@ "message": "Algum conteúdo é exibido quando o JavaScript não está disponível." }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Se você estiver criando um Progressive Web App, é recomendável usar um service worker para que seu app possa funcionar off-line. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Se você estiver criando um Progressive Web App, é recomendável usar um service worker para que seu app possa funcionar off-line. [Saiba mais](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "A página atual não responde com um código 200 quando off-line"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ro.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ro.json index c872ebfbc..6a9f08a 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ro.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ro.json
@@ -30,10 +30,10 @@ "message": "Unele roluri ARIA principale trebuie să conțină roluri secundare specifice pentru a-și îndeplini funcțiile de accesibilitate pentru care au fost concepute. [Află mai multe](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Lipsesc elementele cu `[role]` care necesită anumite `[role]` de elemente secundare." + "message": "Din elementele unui rol ARIA `[role]` care impun ca elementele secundare să conțină un anumit element `[role]` lipsește unul sau toate elementele secundare necesare respective." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Elementele cu `[role]` care necesită anumite elemente secundare `[role]` sunt prezente" + "message": "Elementele unui rol ARIA `[role]` care impun ca elementele secundare să conțină un anumit element `[role]` includ toate elementele secundare necesare." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Unele roluri ARIA secundare trebuie să fie conținute de roluri principale specifice pentru a-și îndeplini corect funcțiile de accesibilitate pentru care au fost concepute. [Află mai multe](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Cititoarele de ecran au funcții care facilitează navigarea în tabele. Dacă se asigură că celulele `<td>` care folosesc atributul `[headers]` se referă doar la alte celule din același tabel, se poate îmbunătăți experiența pentru utilizatorii de cititoare de ecran. [Află mai multe](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Celulele dintr-un element `<table>` care folosesc atributul `[headers]` se referă la alte celule ale aceluiași tabel." + "message": "Celulele dintr-un element `<table>` care folosesc atributul `[headers]` se referă la un element `id` care nu se găsește în același tabel." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Celulele dintr-un element `<table>` care folosesc atributul `[headers]` se referă doar la alte celule ale aceluiași tabel." + "message": "Celulele dintr-un element `<table>` care folosesc atributul `[headers]` se referă la celule ale aceluiași tabel." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Cititoarele de ecran au funcții care facilitează navigarea în tabele. Dacă se asigură că antetele tabelelor se referă întotdeauna la unele seturi de celule, se poate îmbunătăți experiența pentru utilizatorii de cititoare de ecran. [Află mai multe](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Elementele `<video>` conțin un element `<track>` cu `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Pentru un aspect ideal în iOS atunci când utilizatorii adaugă o aplicație web progresivă în ecranul de pornire, definește o `apple-touch-icon`. Aceasta trebuie să indice spre un PNG pătrat netransparent, de 192 px (sau 180 px). [Află mai multe](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Pentru un aspect ideal în iOS atunci când utilizatorii adaugă o aplicație web progresivă în ecranul de pornire, definește o `apple-touch-icon`. Aceasta trebuie să indice spre un PNG pătrat netransparent, de 192 px (sau 180 px). [Află mai multe](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Nu oferă o `apple-touch-icon` validă" @@ -342,7 +342,7 @@ "message": "Timp CPU total" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Poți reduce timpul petrecut cu analizarea, compilarea și executarea JS. Livrarea unor sarcini JS mai mici poate ajuta în acest sens. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Poți reduce timpul petrecut cu analizarea, compilarea și executarea JS. Livrarea unor sarcini JS mai mici poate ajuta în acest sens. [Află mai multe](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Redu timpul de execuție JavaScript" @@ -351,25 +351,25 @@ "message": "Timpul de executare JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "GIF-urile mari nu sunt eficiente pentru difuzarea conținutului animat. Folosește videoclipuri MPEG4/WebM pentru animații și PNG/WebP pentru imagini statice în locul GIF-urilor ca să economisești date în rețea. [Află mai multe](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "GIF-urile mari nu sunt eficiente pentru difuzarea conținutului animat. Folosește videoclipuri MPEG4/WebM pentru animații și PNG/WebP pentru imagini statice în locul GIF-urilor ca să economisești date în rețea. [Află mai multe](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Folosește formate video pentru conținut animat" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Poți încărca lent imaginile ascunse sau pe cele din afara ecranului după ce toate resursele esențiale s-au încărcat, pentru a micșora timpul până la interactivitate. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Poți încărca lent imaginile ascunse sau pe cele din afara ecranului după ce toate resursele esențiale s-au încărcat, pentru a micșora timpul până la interactivitate. [Află mai multe](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Amână imaginile din afara ecranului" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resursele blochează prima redare a paginii. Poți să livrezi conținutul JS/CSS esențial inline și să amâni toate elementele JS/stilurile neesențiale. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resursele blochează prima redare a paginii. Poți să livrezi conținutul JS/CSS esențial inline și să amâni toate elementele JS/stilurile neesențiale. [Află mai multe](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Elimină resursele care blochează redarea" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Sarcinile mari de rețea îi costă pe utilizatori și sunt corelate cu timpi de încărcare îndelungați. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Sarcinile mari de rețea îi costă pe utilizatori și sunt corelate cu timpi de încărcare îndelungați. [Află mai multe](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Dimensiunea totală a fost de {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Evită sarcinile uriașe de rețea" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Comprimarea fișierelor CSS poate reduce dimensiunea sarcinilor de rețea. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Comprimarea fișierelor CSS poate reduce dimensiunea sarcinilor de rețea. [Află mai multe](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Comprimă codul CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Comprimarea fișierelor JavaScript poate reduce dimensiunea sarcinilor și timpul de analizare a scripturilor. [Află mai multe](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Comprimarea fișierelor JavaScript poate reduce dimensiunea sarcinilor și timpul de analizare a scripturilor. [Află mai multe](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Comprimă codul JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Elimină regulile nefolosite din foile de stil și amână încărcarea conținutului CSS nefolosit pentru conținutul din partea superioară a paginii ca să reduci numărul de byți consumați de activitatea în rețea. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Elimină regulile nefolosite din foile de stil și amână încărcarea conținutului CSS nefolosit pentru conținutul din partea superioară a paginii ca să reduci numărul de byți consumați de activitatea în rețea. [Află mai multe](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Elimină conținutul CSS nefolosit" @@ -405,7 +405,7 @@ "message": "Elimină codul JavaScript nefolosit" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "O durată lungă a memoriei cache poate grăbi accesările repetate ale paginii. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "O durată lungă a memoriei cache poate grăbi accesările repetate ale paginii. [Află mai multe](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{o resursă găsită}few{# resurse găsite}other{# de resurse găsite}}" @@ -417,31 +417,31 @@ "message": "Folosește o politică eficientă de stocare în memoria cache pentru elementele statice" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Imaginile optimizate se încarcă mai repede și consumă mai puține date mobile. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Imaginile optimizate se încarcă mai repede și consumă mai puține date mobile. [Află mai multe](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Codifică eficient imaginile" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Difuzează imagini de dimensiuni corespunzătoare ca să economisești date mobile și să obții o încărcare mai rapidă. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Difuzează imagini de dimensiuni corespunzătoare ca să economisești date mobile și să obții o încărcare mai rapidă. [Află mai multe](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Dimensionează corect imaginile" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Resursele bazate pe text trebuie comprimate (gzip, deflate sau brotli) pentru a minimiza numărul total de byți în rețea. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Resursele bazate pe text trebuie comprimate (gzip, deflate sau brotli) pentru a minimiza numărul total de byți în rețea. [Află mai multe](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Activează comprimarea textului" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Formatele de imagine ca JPEG 2000, JPEG XR și WebP oferă adesea o comprimare mai bună decât PNG sau JPEG, ceea ce înseamnă descărcări mai rapide și mai puțin consum de date. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Formatele de imagine ca JPEG 2000, JPEG XR și WebP oferă adesea o comprimare mai bună decât PNG sau JPEG, ceea ce înseamnă descărcări mai rapide și mai puțin consum de date. [Află mai multe](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Difuzează imagini în formate moderne" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Dacă lățimea conținutului aplicației nu se potrivește cu lățimea ariei vizibile, este posibil ca aplicația să nu fie optimizată pentru ecrane mobile. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Dacă lățimea conținutului aplicației nu se potrivește cu lățimea ariei vizibile, este posibil ca aplicația să nu fie optimizată pentru ecrane mobile. [Află mai multe](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Aria vizibilă de {innerWidth} px nu corespunde cu dimensiunea ferestrei, de {outerWidth} px." @@ -453,7 +453,7 @@ "message": "Conținutul este dimensionat corect pentru aria vizibilă" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Lanțurile de solicitări esențiale de mai jos îți arată ce resurse sunt încărcate cu prioritate ridicată. Poți să reduci lungimea lanțurilor, să reduci dimensiunea de descărcare a resurselor sau să amâni descărcarea de resurse inutile pentru a îmbunătăți încărcarea paginilor. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Lanțurile de solicitări esențiale de mai jos îți arată ce resurse sunt încărcate cu prioritate ridicată. Poți să reduci lungimea lanțurilor, să reduci dimensiunea de descărcare a resurselor sau să amâni descărcarea de resurse inutile pentru a îmbunătăți încărcarea paginilor. [Află mai multe](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{un lanț găsit}few{# lanțuri găsite}other{# de lanțuri găsite}}" @@ -675,7 +675,7 @@ "message": "Nu s-a înregistrat nicio eroare de browser pe consolă" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Poți folosi funcția CSS de afișare a fonturilor pentru a verifica dacă textul este vizibil pentru utilizatori în timp ce se încarcă fonturile web. [Află mai multe](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Poți folosi funcția CSS de afișare a fonturilor pentru a verifica dacă textul este vizibil pentru utilizatori în timp ce se încarcă fonturile web. [Află mai multe](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Asigură-te că textul rămâne vizibil în timpul încărcării fonturilor web" @@ -705,7 +705,7 @@ "message": "Informații nevalide privind dimensiunea imaginilor {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Browserele le pot solicita utilizatorilor să adauge aplicația pe ecranele de pornire, lucru care poate duce la o implicare mai mare. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Browserele le pot solicita utilizatorilor să adauge aplicația pe ecranele de pornire, lucru care poate duce la o implicare mai mare. [Află mai multe](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Manifestul aplicației web nu îndeplinește cerințele de instalare" @@ -729,7 +729,7 @@ "message": "Folosește HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "O încărcare rapidă a paginii într-o rețea celulară asigură o experiență bună a utilizatorului pe mobil. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "O încărcare rapidă a paginii într-o rețea celulară asigură o experiență bună a utilizatorului pe mobil. [Află mai multe](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interactiv la {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Categorie" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Poți reduce timpul petrecut cu analizarea, compilarea și executarea JS. Livrarea unor sarcini JS mai mici poate ajuta în acest sens." + "message": "Poți reduce timpul petrecut cu analizarea, compilarea și executarea JS. Livrarea unor sarcini JS mai mici poate ajuta în acest sens. [Află mai multe](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimizează procesarea firului principal" @@ -759,49 +759,49 @@ "message": "Minimizează procesarea firului principal" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Ca să se adreseze cât mai multor utilizatori, site-urile trebuie să funcționeze în toate browserele importante. [Află mai multe](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Ca să se adreseze cât mai multor utilizatori, site-urile trebuie să funcționeze în toate browserele importante. [Află mai multe](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Site-ul funcționează pe orice browser" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Asigură-te că se pot crea linkuri directe către pagini individuale prin adresa URL și că adresele URL sunt unice, pentru a putea fi trimise în rețelele sociale. [Află mai multe](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Asigură-te că se pot crea linkuri directe către pagini individuale prin adresa URL și că adresele URL sunt unice, pentru a putea fi trimise în rețelele sociale. [Află mai multe](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Fiecare pagină are o adresă URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Tranzițiile trebuie să aibă loc repede atunci când atingi ecranul, chiar și în rețele lente, pentru o performanță percepută superioară. [Află mai multe](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Tranzițiile trebuie să aibă loc repede atunci când atingi ecranul, chiar și în rețele lente. Această experiență este esențială pentru performanța percepută de utilizator. [Află mai multe](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Tranzițiile de pagini nu par să blocheze rețeaua" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Latența estimată a comenzilor reprezintă o estimare a duratei necesare pentru ca aplicația să răspundă la comanda utilizatorului, în milisecunde, în cea mai aglomerată fereastră de cinci secunde de încărcare a paginii. Dacă latența este mai mare de 50 ms, utilizatorii îți pot percepe aplicația ca fiind lentă. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Latența estimată a comenzilor reprezintă o estimare a duratei necesare pentru ca aplicația să răspundă la comanda utilizatorului, în milisecunde, în cea mai aglomerată fereastră de cinci secunde de încărcare a paginii. Dacă latența este mai mare de 50 ms, utilizatorii îți pot percepe aplicația ca fiind lentă. [Află mai multe](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Latența estimată a comenzilor" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Prima redare de conținut arată momentul când se redă primul text sau prima imagine. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Prima redare de conținut arată momentul când se redă primul text sau prima imagine. [Află mai multe](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Prima redare de conținut" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Primul „CPU inactiv” semnalează primul moment în care firul principal al paginii este suficient de liber pentru a accepta comenzi. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Primul „CPU inactiv” semnalează primul moment în care firul principal al paginii este suficient de liber pentru a accepta comenzi. [Află mai multe](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Primul „CPU inactiv”" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Prima redare semnificativă arată momentul când este vizibil conținutul principal al unei pagini. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Prima redare semnificativă arată momentul când este vizibil conținutul principal al unei pagini. [Află mai multe](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Prima redare semnificativă" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Timpul până la interactivitate este timpul necesar pentru ca pagina să devină complet interactivă. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Timpul până la interactivitate este timpul necesar pentru ca pagina să devină complet interactivă. [Află mai multe](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Timpul până la interactivitate" @@ -813,7 +813,7 @@ "message": "Timpul maxim potențial de la prima interacțiune" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Indexul de viteză arată cât de repede se completează vizibil conținutul unei pagini. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Indexul de viteză arată cât de repede se completează vizibil conținutul unei pagini. [Află mai multe](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Index de viteză" @@ -837,7 +837,7 @@ "message": "Latențe ale backendului serverului" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Un service worker permite ca aplicația să fie fiabilă în condiții de rețea imprevizibile. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Un service worker permite ca aplicația să fie fiabilă în condiții de rețea imprevizibile. [Află mai multe](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` nu răspunde cu codul de stare 200 când este offline" @@ -861,7 +861,7 @@ "message": "Buget de performanță" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Dacă ai configurat deja HTTPS, redirecționează tot traficul HTTP spre HTTPS, ca să activezi funcțiile web sigure pentru toți utilizatorii. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Dacă ai configurat deja HTTPS, redirecționează tot traficul HTTP spre HTTPS, ca să activezi funcțiile web sigure pentru toți utilizatorii. [Află mai multe](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Nu redirecționează traficul HTTP spre HTTPS" @@ -870,7 +870,7 @@ "message": "Redirecționează traficul HTTP spre HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Redirecționările introduc întârzieri suplimentare înainte ca pagina să se poată încărca. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Redirecționările introduc întârzieri suplimentare înainte ca pagina să se poată încărca. [Află mai multe](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Evită mai multe redirecționări ale paginii" @@ -1035,7 +1035,7 @@ "message": "Direcționările atingerilor sunt dimensionate corect" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service worker este tehnologia care îi permite aplicației să folosească mai multe funcții de aplicații web progresive, cum ar fi cele offline, adăugarea în ecranul de pornire și notificările push. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Service worker este tehnologia care îi permite aplicației să folosească mai multe funcții de aplicații web progresive, cum ar fi cele offline, adăugarea în ecranul de pornire și notificările push. [Află mai multe](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Pagina este controlată de un service worker, dar nu s-a găsit niciun `start_url`, deoarece manifestul nu s-a putut analiza ca un JSON valid" @@ -1056,7 +1056,7 @@ "message": "Înregistrează un service worker care să controleze pagina și `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Un ecran de întâmpinare tematic asigură o experiență de calitate atunci când utilizatorii lansează aplicația din ecranele de pornire. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Un ecran de întâmpinare tematic asigură o experiență de calitate atunci când utilizatorii lansează aplicația din ecranele de pornire. [Află mai multe](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nu este configurat pentru un ecran de întâmpinare personalizat" @@ -1065,7 +1065,7 @@ "message": "Configurat pentru un ecran de întâmpinare personalizat" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Bara de adrese din browser poate avea o temă ce corespunde cu site-ul tău. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Bara de adrese din browser poate avea o temă ce corespunde cu site-ul tău. [Află mai multe](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Nu setează o culoare tematică pentru bara de adrese." @@ -1092,7 +1092,7 @@ "message": "Utilizarea terță parte" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Timpul până la primul byte identifică timpul în care serverul trimite un răspuns. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Timpul până la primul byte identifică timpul în care serverul trimite un răspuns. [Află mai multe](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Documentul rădăcină a avut nevoie de {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tip" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Îți poți îmbunătăți aplicația cu API-ul User Timing ca să măsori performanța reală a acesteia în timpul experiențelor de utilizare principale. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Îți poți îmbunătăți aplicația cu API-ul User Timing ca să măsori performanța reală a acesteia în timpul experiențelor de utilizare principale. [Află mai multe](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{o durată a utilizării}few{# durate ale utilizărilor}other{# de durate ale utilizărilor}}" @@ -1125,7 +1125,7 @@ "message": "Un <link> preconectat a fost găsit pentru „{securityOrigin}”, dar nu a fost folosit de browser. Verifică dacă folosești corect atributul `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Adaugă indicii de resurse `preconnect` sau `dns-prefetch` pentru a crea conexiunile inițiale la originile terță parte importante. [Află mai multe](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Adaugă indicii de resurse `preconnect` sau `dns-prefetch` pentru a crea conexiunile inițiale la originile terță parte importante. [Află mai multe](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Preconectează la originile necesare" @@ -1134,13 +1134,13 @@ "message": "Un <link> preîncărcat a fost găsit pentru „{preloadURL}”, dar nu a fost folosit de browser. Verifică dacă folosești corect atributul `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Poți folosi `<link rel=preload>` ca să acorzi prioritate preluării resurselor care sunt momentan solicitate mai târziu la încărcarea paginii. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Poți folosi `<link rel=preload>` ca să acorzi prioritate preluării resurselor care sunt momentan solicitate mai târziu la încărcarea paginii. [Află mai multe](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Preîncarcă solicitările importante" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Adaugă o etichetă `<meta name=\"viewport\">` ca să-ți optimizezi aplicația pentru ecranele mobile. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Adaugă o etichetă `<meta name=\"viewport\">` ca să-ți optimizezi aplicația pentru ecranele mobile. [Află mai multe](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nu s-a găsit nicio etichetă `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Are o etichetă `<meta name=\"viewport\">` cu `width` sau `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Aplicația ta trebuie să afișeze o parte de conținut când JavaScript este dezactivat, chiar dacă este doar o atenționare pentru utilizator că JavaScript este obligatoriu pentru a folosi aplicația. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Aplicația ta trebuie să afișeze o parte de conținut când JavaScript este dezactivat, chiar dacă este doar o atenționare pentru utilizator că JavaScript este obligatoriu pentru a folosi aplicația. [Află mai multe](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Corpul paginii trebuie să redea o parte de conținut dacă scripturile sale nu sunt disponibile." @@ -1164,7 +1164,7 @@ "message": "Include o parte de conținut când JavaScript nu este disponibil" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Dacă creezi o aplicație web progresivă, poți folosi un service worker pentru ca aplicația să poată funcționa offline. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Dacă creezi o aplicație web progresivă, poți folosi un service worker pentru ca aplicația să poată funcționa offline. [Află mai multe](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Pagina curentă nu răspunde cu codul de stare 200 când este offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ru.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ru.json index 2a97905..f7081cf 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ru.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ru.json
@@ -30,10 +30,10 @@ "message": "Некоторые родительские элементы с ролями ARIA должны содержать определенные дочерние роли, иначе связанные с ними функции специальных возможностей будут работать неправильно. [Подробнее…](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Отсутствуют элементы с атрибутом `[role]`, для которых необходимы дочерние элементы с определенными атрибутами `[role]`" + "message": "В элементах с ролью ARIA `[role]` отсутствуют некоторые или все обязательные дочерние элементы, которые должны содержать определенный элемент `[role]`." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Элементы с атрибутом `[role]`, для которых необходимы дочерние элементы с определенными атрибутами `[role]`, присутствуют" + "message": "В элементах с ролью ARIA `[role]` присутствуют все обязательные дочерние элементы, которые должны содержать определенный элемент `[role]`." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Некоторые дочерние элементы с ролями ARIA должны содержаться внутри определенных родительских элементов, иначе связанные с ними функции специальных возможностей будут работать неправильно. [Подробнее…](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "Чтобы пользователям было проще перемещаться по таблицам с помощью программ чтения с экрана, убедитесь, что ячейки в элементах `<td>` с атрибутом `[headers]` ссылаются только на другие ячейки в той же таблице. [Подробнее…](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Ячейки внутри элемента `<table>`, в которых используется атрибут `[headers]`, не ссылаются на другие ячейки той же таблицы" + "message": "Ячейки внутри элемента `<table>`, в которых используется атрибут `[headers]`, ссылаются на элемент `id`, не найденный внутри той же таблицы." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Ячейки внутри элемента `<table>`, в которых используется атрибут `[headers]`, ссылаются на другие ячейки той же таблицы" + "message": "Ячейки внутри элемента `<table>`, в которых используется атрибут `[headers]`, ссылаются на ячейки той же таблицы." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Чтобы пользователям было проще перемещаться по таблицам с помощью программ чтения с экрана, убедитесь, что все заголовки в таблицах ссылаются на определенный набор ячеек. [Подробнее…](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "Элементы `<video>` содержат элемент `<track>` с атрибутом `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Чтобы современное веб-приложение лучше смотрелось на главном экране iOS, задайте значение для атрибута `apple-touch-icon`. Он должен указывать на непрозрачное квадратное PNG-изображение со стороной 192 или 180 пикселей. [Подробнее…](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Чтобы современное веб-приложение лучше смотрелось на главном экране iOS, задайте значение для атрибута `apple-touch-icon`. Он должен указывать на непрозрачное квадратное PNG-изображение со стороной 192 или 180 пикселей. [Подробнее…](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Не содержит действительный атрибут `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Общее процессорное время" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Рекомендуем сократить время на анализ, компиляцию и выполнение скриптов JS. Для этого вы можете уменьшить размер фрагментов кода JS. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "Рекомендуем сократить время на анализ, компиляцию и выполнение скриптов JS. Для этого вы можете уменьшить размер фрагментов кода JS. [Подробнее…](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Сократите время выполнения кода JavaScript" @@ -351,25 +351,25 @@ "message": "Время выполнения кода JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Анимированный контент неэффективно загружать в виде больших GIF-файлов. Чтобы сэкономить сетевой трафик, используйте формат видео MPEG4/WebM для анимированного контента и формат изображений PNG/WebP – для статического. [Подробнее…](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Анимированный контент неэффективно загружать в виде больших GIF-файлов. Чтобы сэкономить сетевой трафик, используйте формат видео MPEG4/WebM для анимированного контента и формат изображений PNG/WebP – для статического. [Подробнее…](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Используйте видеоформаты для анимированного контента" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Чтобы уменьшить время загрузки для взаимодействия, рекомендуем настроить отложенную загрузку скрытых изображений. Тогда основные ресурсы сайта будут загружаться в первую очередь. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "Чтобы уменьшить время загрузки для взаимодействия, рекомендуем настроить отложенную загрузку скрытых изображений. Тогда основные ресурсы сайта будут загружаться в первую очередь. [Подробнее…](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Отложите загрузку скрытых изображений" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Некоторые ресурсы блокируют первую отрисовку страницы. Рекомендуем встроить критическую часть данных JS/CSS в код HTML и отложить загрузку остальных ресурсов. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "Некоторые ресурсы блокируют первую отрисовку страницы. Рекомендуем встроить критическую часть данных JS/CSS в код HTML и отложить загрузку остальных ресурсов. [Подробнее…](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Устраните ресурсы, блокирующие отображение" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Чрезмерная нагрузка на сеть стоит пользователям реальных денег и может стать причиной долгого ожидания при работе в Интернете. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "Чрезмерная нагрузка на сеть стоит пользователям реальных денег и может стать причиной долгого ожидания при работе в Интернете. [Подробнее…](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Общий размер достиг {totalBytes, number, bytes} КБ" @@ -381,19 +381,19 @@ "message": "Предотвращение чрезмерной нагрузки на сеть" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Уменьшив файлы CSS, вы можете сократить объем полезной сетевой нагрузки. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "Уменьшив файлы CSS, вы можете сократить объем полезной сетевой нагрузки. [Подробнее…](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Уменьшите размер кода CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Уменьшив файлы JavaScript, вы можете сократить объем полезной нагрузки и время анализа скриптов. [Подробнее…](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "Уменьшив файлы JavaScript, вы можете сократить объем полезной нагрузки и время анализа скриптов. [Подробнее…](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Уменьшите размер кода JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Чтобы сократить расход трафика, удалите ненужные правила из таблиц стилей и отложите загрузку кода CSS, который не используется в верхней части страницы. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "Чтобы сократить расход трафика, удалите ненужные правила из таблиц стилей и отложите загрузку кода CSS, который не используется в верхней части страницы. [Подробнее…](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Удалите неиспользуемый код CSS" @@ -405,7 +405,7 @@ "message": "Удалите неиспользуемый код JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Благодаря долгому времени хранения кеша страница может быстрее загружаться при повторных посещениях. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "Благодаря долгому времени хранения кеша страница может быстрее загружаться при повторных посещениях. [Подробнее…](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Найден 1 ресурс}one{Найден # ресурс}few{Найдено # ресурса}many{Найдено # ресурсов}other{Найдено # ресурса}}" @@ -417,31 +417,31 @@ "message": "Настройка правил эффективного использования кеша для статических объектов" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Оптимизированные изображения загружаются быстрее и меньше расходуют мобильный трафик. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "Оптимизированные изображения загружаются быстрее и меньше расходуют мобильный трафик. [Подробнее…](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Настройте эффективную кодировку изображений" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Чтобы сэкономить мобильный трафик и ускорить загрузку страницы, следите за тем, чтобы размеры ваших изображений соответствовали требованиям. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "Чтобы сэкономить мобильный трафик и ускорить загрузку страницы, следите за тем, чтобы размеры ваших изображений соответствовали требованиям. [Подробнее…](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Настройте подходящий размер изображений" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Чтобы уменьшить расход сетевого трафика, рекомендуем сжимать текстовые ресурсы (gzip, deflate или brotli). [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "Чтобы уменьшить расход сетевого трафика, рекомендуем сжимать текстовые ресурсы (gzip, deflate или brotli). [Подробнее…](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Включите сжатие текста" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Форматы JPEG 2000, JPEG XR и WebP обеспечивают более эффективное сжатие по сравнению с PNG или JPEG, поэтому такие изображения загружаются быстрее и потребляют меньше трафика. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "Форматы JPEG 2000, JPEG XR и WebP обеспечивают более эффективное сжатие по сравнению с PNG или JPEG, поэтому такие изображения загружаются быстрее и потребляют меньше трафика. [Подробнее…](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Используйте современные форматы изображений" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Приложение не оптимизировано для работы на экранах мобильных устройств, если ширина контента приложения не совпадает с шириной области просмотра. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Приложение не оптимизировано для работы на экранах мобильных устройств, если ширина контента приложения не совпадает с шириной области просмотра. [Подробнее…](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Область просмотра ({innerWidth} пикселей) не совпадает с размером окна ({outerWidth} пикселей)." @@ -453,7 +453,7 @@ "message": "Размер контента соответствует области просмотра" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Приведенные ниже цепочки критических запросов показывают, какие ресурсы загружаются с высоким приоритетом. Чтобы ускорить загрузку страниц, рекомендуем сократить длину цепочек, уменьшить размер скачиваемых ресурсов или отложить скачивание ненужных ресурсов. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "Приведенные ниже цепочки критических запросов показывают, какие ресурсы загружаются с высоким приоритетом. Чтобы ускорить загрузку страниц, рекомендуем сократить длину цепочек, уменьшить размер скачиваемых ресурсов или отложить скачивание ненужных ресурсов. [Подробнее…](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Найдена 1 цепочка}one{Найдена # цепочка}few{Найдено # цепочки}many{Найдено # цепочек}other{Найдено # цепочки}}" @@ -675,7 +675,7 @@ "message": "В журнале консоли нет ошибок браузера" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Используйте свойство CSS font-display, чтобы пользователи могли видеть текст во время загрузки веб-шрифтов. [Подробнее…](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "Используйте свойство CSS font-display, чтобы пользователи могли видеть текст во время загрузки веб-шрифтов. [Подробнее…](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Настройте показ всего текста во время загрузки веб-шрифтов" @@ -705,7 +705,7 @@ "message": "Недействительные данные о размере изображения {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Для увеличения частоты использования браузеры могут предлагать пользователям добавлять приложение на главный экран. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Для увеличения частоты использования браузеры могут предлагать пользователям добавлять приложение на главный экран. [Подробнее…](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Манифест веб-приложения не соответствует условиям, необходимым для установки" @@ -729,7 +729,7 @@ "message": "Используется протокол HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Если страницы будут быстро загружаться по мобильной сети, сайтом станет удобно пользоваться на телефоне или планшете. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "Если страницы будут быстро загружаться по мобильной сети, сайтом станет удобно пользоваться на телефоне или планшете. [Подробнее…](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Станица интерактивна через {timeInMs, number, seconds} сек." @@ -750,7 +750,7 @@ "message": "Категория" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Рекомендуем сократить время на анализ, компиляцию и выполнение скриптов JS. Для этого вы можете уменьшить размер фрагментов кода JS." + "message": "Рекомендуем сократить время на анализ, компиляцию и выполнение скриптов JS. Для этого вы можете уменьшить размер фрагментов кода JS. [Подробнее…](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Минимизируйте работу в основном потоке" @@ -759,49 +759,49 @@ "message": "Минимизация работы в основном потоке" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Для максимального охвата аудитории сайт должен поддерживать все основные браузеры. [Подробнее…](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Для максимального охвата аудитории сайт должен поддерживать все основные браузеры. [Подробнее…](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Сайт работает в разных браузерах" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Убедитесь, что у каждой страницы есть уникальный URL, чтобы их было удобно распространять в социальных сетях. [Подробнее…](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Убедитесь, что у каждой страницы есть уникальный URL, чтобы их было удобно распространять в социальных сетях. [Подробнее…](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "У каждой страницы есть URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Переходы создают впечатление мгновенного отклика приложения даже при медленной работе сети. [Подробнее…](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Переходы должны создавать впечатление мгновенного отклика даже при медленной работе сети. Это имеет решающее значение для удобства работы с приложением. [Подробнее…](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Во время перехода между страницами нет ощущения, что они ожидают ответа от сети" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Примерное время задержки при вводе показывает время в миллисекундах, через которое приложение реагирует на действия пользователя в течение самых активных 5 секунд загрузки страницы. Если это время превышает 50 мс, пользователям может показаться, что ваше приложение работает слишком медленно. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "Примерное время задержки при вводе показывает время в миллисекундах, через которое приложение реагирует на действия пользователя в течение самых активных 5 секунд загрузки страницы. Если это время превышает 50 мс, пользователям может показаться, что ваше приложение работает слишком медленно. [Подробнее…](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Приблизительное время задержки при вводе" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Первая отрисовка контента – показатель, который определяет интервал времени между началом загрузки страницы и появлением первого изображения или блока текста. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "Первая отрисовка контента – показатель, который определяет интервал времени между началом загрузки страницы и появлением первого изображения или блока текста. [Подробнее…](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Время загрузки первого контента" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Время окончания работы ЦП – время, когда на странице становится возможной обработка пользовательского ввода. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "Время окончания работы ЦП – время, когда на странице становится возможна обработка пользовательского ввода. [Подробнее…](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Время окончания работы ЦП" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Первая значимая отрисовка – показатель, определяющий интервал времени между началом загрузки страницы и появлением основного контента. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "Первая значимая отрисовка – показатель, определяющий интервал времени между началом загрузки страницы и появлением основного контента. [Подробнее…](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Время загрузки достаточной части контента" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Время загрузки для взаимодействия – это время, в течение которого страница становится полностью готова к взаимодействию с пользователем. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "Время загрузки для взаимодействия – это время, в течение которого страница становится полностью готова к взаимодействию с пользователем. [Подробнее…](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Время загрузки для взаимодействия" @@ -813,7 +813,7 @@ "message": "Макс. потенц. задержка после первого ввода" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Индекс скорости загрузки показывает, как быстро на странице появляется контент. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "Индекс скорости загрузки показывает, как быстро на странице появляется контент. [Подробнее…](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Индекс скорости загрузки" @@ -837,7 +837,7 @@ "message": "Задержка со стороны сервера" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Service Worker обеспечивает надежную работу веб-приложения при нестабильных условиях работы сети. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Service Worker обеспечивает надежную работу веб-приложения при нестабильных условиях работы сети. [Подробнее…](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` не отправляет код 200 в офлайн-режиме" @@ -861,7 +861,7 @@ "message": "Бюджет производительности" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Если у вас уже настроен протокол HTTPS, убедитесь, что весь трафик перенаправляется с HTTP на HTTPS, чтобы обеспечить безопасность для всех своих пользователей. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Если у вас уже настроен протокол HTTPS, убедитесь, что весь трафик перенаправляется с HTTP на HTTPS, чтобы обеспечить безопасность для всех своих пользователей. [Подробнее…](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Не перенаправляет трафик с HTTP на HTTPS" @@ -870,7 +870,7 @@ "message": "Перенаправляет трафик с HTTP на HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Переадресации могут стать причиной дополнительных задержек при загрузке страницы. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "Переадресации могут стать причиной дополнительных задержек при загрузке страницы. [Подробнее…](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "Избегайте большого количества переадресаций" @@ -1035,7 +1035,7 @@ "message": "Размер интерактивных элементов оптимален" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service Worker — это технология, добавляющая в приложение преимущества современных веб-приложений, такие как поддержка офлайн-режима, добавления на главный экран и push-уведомлений. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Service Worker — это технология, добавляющая в приложение преимущества современных веб-приложений, такие как поддержка офлайн-режима, добавления на главный экран и push-уведомлений. [Подробнее…](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Страницей управляет Service Worker, но не найден `start_url`, так как не удалось интерпретировать манифест как JSON." @@ -1056,7 +1056,7 @@ "message": "Регистрируется Service Worker, управляющий страницей и `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Приложение оставляет у пользователей более приятное впечатление, когда оно встречает их качественной заставкой. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Приложение оставляет у пользователей более приятное впечатление, когда оно встречает их качественной заставкой. [Подробнее…](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Собственная заставка не настроена" @@ -1065,7 +1065,7 @@ "message": "Настроена собственная заставка" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Цвет адресной строки браузера можно изменить под цвет сайта. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "Цвет адресной строки браузера можно изменить под цвет сайта. [Подробнее…](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Не изменяет цвет адресной строки в соответствии с темой" @@ -1092,7 +1092,7 @@ "message": "Сторонний код" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Время до первого байта – показатель, который определяет интервал времени между отправкой запроса и ответом вашего сервера. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "Время до первого байта – показатель, который определяет интервал времени между отправкой запроса и ответом вашего сервера. [Подробнее…](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Загрузка корневого документа заняла {timeInMs, number, milliseconds} мс" @@ -1113,7 +1113,7 @@ "message": "Тип" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Используйте User Timing API, чтобы измерить реальную производительность своего приложения во время ключевых моментов взаимодействия с пользователями. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "Используйте User Timing API, чтобы измерить реальную производительность своего приложения во время ключевых моментов взаимодействия с пользователями. [Подробнее…](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 временная метка}one{# временная метка}few{# временные метки}many{# временных меток}other{# временной метки}}" @@ -1125,7 +1125,7 @@ "message": "Для страницы {securityOrigin} найден элемент <link> с атрибутом rel=\"preconnect\", но он не использовался браузером. Проверьте значение атрибута `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Чтобы быстро устанавливать соединение с необходимыми сторонними источниками, добавьте ресурсную подсказку `preconnect` или `dns-prefetch`. [Подробнее…](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Чтобы быстро устанавливать соединение с необходимыми сторонними источниками, добавьте ресурсную подсказку `preconnect` или `dns-prefetch`. [Подробнее…](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Используйте предварительное подключение к необходимым доменам" @@ -1134,13 +1134,13 @@ "message": "Для страницы {preloadURL} найден элемент <link> с атрибутом rel=\"preload\", но он не использовался браузером. Проверьте значение атрибута `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Чтобы основные ресурсы загружались в первую очередь, используйте для них элемент `<link rel=preload>`. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "Чтобы основные ресурсы загружались в первую очередь, используйте для них элемент `<link rel=preload>`. [Подробнее…](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Настройте предварительную загрузку ключевых запросов" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Добавьте метатег `<meta name=\"viewport\">`, чтобы оптимизировать приложение для экранов мобильных устройств. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Добавьте метатег `<meta name=\"viewport\">`, чтобы оптимизировать приложение для экранов мобильных устройств. [Подробнее…](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Метатег `<meta name=\"viewport\">` не найден." @@ -1152,7 +1152,7 @@ "message": "Присутствует метатег `<meta name=\"viewport\">` со свойством `width` или `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "В приложении должен отображаться контент, даже если JavaScript отключен. Достаточно уведомления, что для работы приложения необходим JavaScript. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "В приложении должен отображаться контент, даже если JavaScript отключен. Достаточно уведомления, что для работы приложения необходим JavaScript. [Подробнее…](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Даже при недоступности скриптов в теле страницы должен отображаться контент." @@ -1164,7 +1164,7 @@ "message": "Содержит некоторый контент при недоступности JavaScript" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "При создании современного веб-приложения используйте Service Worker, чтобы оно продолжало работу в офлайн-режиме. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "При создании современного веб-приложения используйте Service Worker, чтобы оно продолжало работу в офлайн-режиме. [Подробнее…](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Текущая страница не отправляет код 200 в офлайн-режиме"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sk.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sk.json index 6b9d07c0..a6aed71 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sk.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sk.json
@@ -30,10 +30,10 @@ "message": "Ak majú poskytovať správne funkcie dostupnosti, musia niektoré nadradené roly ARIA obsahovať určité podradené roly. [Ďalšie informácie](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Chýbajú prvky s rolou `[role]`, ktoré vyžadujú konkrétne podradené roly `[role]`." + "message": "Prvkom so štítkom ARIA `[role]`, ktoré vyžadujú, aby podradené prvky obsahovali konkrétnu rolu `[role]`, chýbajú niektoré alebo všetky požadované podradené prvky." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Prvky s rolou `[role]`, ktoré vyžadujú konkrétne podradené roly `[role]`, sú prítomné." + "message": "Prvky so štítkom ARIA `[role]`, ktoré vyžadujú, aby podradené prvky obsahovali konkrétnu rolu `[role]`, majú všetky požadované podradené prvky." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Ak majú niektoré podradené roly ARIA poskytovať správne funkcie dostupnosti, musia byť obsiahnuté v konkrétnych nadradených rolách. [Ďalšie informácie](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "Čítačky obrazovky majú funkcie, ktoré zjednodušujú prehliadanie tabuliek. Keď zaistíte, aby bunky `<td>` s atribútom `[headers]` odkazovali iba na bunky v rovnakej tabuľke, môžete tým používateľom čítačiek obrazovky zjednodušiť prehliadanie. [Ďalšie informácie](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Bunky v prvku `<table>`, ktoré používajú atribút `[headers]`, odkazujú na ďalšie bunky v rovnakej tabuľke." + "message": "Bunky v prvku `<table>`, ktoré používajú atribút `[headers]`, odkazujú na prvok `id`, ktorý nie je v rovnakej tabuľke." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Bunky v prvku `<table>`, ktoré používajú atribút `[headers]`, odkazujú iba na ďalšie bunky v rovnakej tabuľke." + "message": "Bunky v prvku `<table>`, ktoré používajú atribút `[headers]`, odkazujú na bunky v tej istej tabuľke." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Čítačky obrazovky majú funkcie, ktoré zjednodušujú prehliadanie tabuliek. Dojem používateľov čítačiek obrazovky môžete vylepšiť tým, že hlavičky tabuliek budú odkazovať na určitú skupinu buniek. [Ďalšie informácie](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "Prvky `<video>` obsahujú prvok `<track>` s titulkami `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Ak chcete zaistiť ideálny vzhľad progresívnej webovej aplikácie v systéme iOS, keď si ju používateľ pridá na plochu, definujte vlastnosť `apple-touch-icon`. Musí odkazovať na nepriehľadný obrázok PNG s veľkosťou 192 × 192 px (alebo 180 × 180 px). [Ďalšie informácie](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Ak chcete zaistiť ideálny vzhľad progresívnej webovej aplikácie v systéme iOS, keď si ju používateľ pridá na plochu, definujte vlastnosť `apple-touch-icon`. Musí odkazovať na nepriehľadný obrázok PNG s veľkosťou 192 × 192 px (alebo 180 × 180 px). [Ďalšie informácie](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Neposkytuje platnú ikonu `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Celkový čas využitia procesora" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Zvážte skrátenie času stráveného analýzou, zostavovaním a spustením JavaScriptu. Možno vám s tým pomôže zobrazovanie menších prenášaných dát JavaScriptu. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "Zvážte skrátenie času stráveného analýzou, zostavovaním a spustením JavaScriptu. Možno vám s tým pomôže zobrazovanie menších prenášaných dát JavaScriptu. [Ďalšie informácie](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Skráťte čas spustenia JavaScriptu" @@ -351,25 +351,25 @@ "message": "Čas spustenia JavaScriptu" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Veľké gify nie sú vhodné na zobrazovanie animovaného obsahu. Namiesto nich odporúčame použiť videá MPEG4/WebM pre animácie a PNG/WebP pre statické obrázky, aby ste ušetrili spotrebu bajtov v sieti. [Ďalšie informácie](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Veľké gify nie sú vhodné na zobrazovanie animovaného obsahu. Namiesto nich odporúčame použiť videá MPEG4/WebM pre animácie a PNG/WebP pre statické obrázky, aby ste ušetrili spotrebu bajtov v sieti. [Ďalšie informácie](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Pre animovaný obsah použite formáty videa" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Zvážte oneskorené načítanie obrázkov, ktoré sú mimo obrazovky alebo skryté, a to až po dokončení načítania všetkých podstatných zdrojov, čím skrátite čas do interaktívneho vykreslenia. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "Zvážte oneskorené načítanie obrázkov, ktoré sú mimo obrazovky alebo skryté, a to až po dokončení načítania všetkých podstatných zdrojov, čím skrátite čas do interaktívneho vykreslenia. [Ďalšie informácie](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Oddiaľte načítanie obrázkov mimo obrazovky" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Zdroje blokujú prvé vykreslenie stránky. Zvážte zobrazovanie podstatných JavaScriptov alebo šablón CSS v texte a oddialenie všetkých nepodstatných JavaScriptov alebo štýlov. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "Zdroje blokujú prvé vykreslenie stránky. Zvážte zobrazovanie podstatných JavaScriptov alebo šablón CSS v texte a oddialenie všetkých nepodstatných JavaScriptov alebo štýlov. [Ďalšie informácie](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Odstráňte zdroje blokujúce vykreslenie" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Veľké sieťové prenosy dát stoja používateľov mnoho peňazí a často sú spájané s dlhými časmi načítania. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "Veľké sieťové prenosy dát stoja používateľov mnoho peňazí a často sú spájané s dlhými časmi načítania. [Ďalšie informácie](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Celková veľkosť bola {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Zabráni nadmerným sieťovým prenosom dát" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Minifikáciou súborov šablón CSS môžete znížiť veľkosti sieťových prenosov dát. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "Minifikáciou súborov šablón CSS môžete znížiť veľkosti sieťových prenosov dát. [Ďalšie informácie](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minifikujte súbory CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Minifikáciou súborov JavaScriptu môžete znížiť veľkosti prenášaných dát a čas analýzy skriptu. [Ďalšie informácie](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "Minifikáciou súborov JavaScriptu môžete znížiť veľkosti prenášaných dát a čas analýzy skriptu. [Ďalšie informácie](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minifikujte JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Odstráňte nepoužívané pravidlá zo šablón štýlov a odložte načítavanie šablón CSS, ktoré sa nepoužívajú pre obsah nad záhybom stránky, čím znížite zbytočnú spotrebu bajtov sieťovou aktivitou. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "Odstráňte nepoužívané pravidlá zo šablón štýlov a odložte načítavanie šablón CSS, ktoré sa nepoužívajú pre obsah nad záhybom stránky, čím znížite zbytočnú spotrebu bajtov sieťovou aktivitou. [Ďalšie informácie](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Odstráňte nepoužívané šablóny CSS" @@ -405,7 +405,7 @@ "message": "Odstráňte nepoužívaný JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Dlhá životnosť vyrovnávacej pamäte môže zrýchliť opakované návštevy stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "Dlhá životnosť vyrovnávacej pamäte môže zrýchliť opakované návštevy stránky. [Ďalšie informácie](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Našiel sa 1 zdroj}few{Našli sa # zdroje}many{# resources found}other{Našlo sa # zdrojov}}" @@ -417,31 +417,31 @@ "message": "Používa účinné pravidlá ukladania do vyrovnávacej pamäte pre statické podklady" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimalizované obrázky sa načítavajú rýchlejšie a spotrebúvajú menej mobilných dát. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "Optimalizované obrázky sa načítavajú rýchlejšie a spotrebúvajú menej mobilných dát. [Ďalšie informácie](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Účinne zakódujte obrázky" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Zobrazujte obrázky s primeranou veľkosťou, čím ušetríte mobilné dáta a skrátite čas načítania. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "Zobrazujte obrázky s primeranou veľkosťou, čím ušetríte mobilné dáta a skrátite čas načítania. [Ďalšie informácie](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Nastavte primeranú veľkosť obrázkov" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Textové zdroje by sa mali zobrazovať komprimované (gzip, deflate alebo brotli), aby sa minimalizovala celková spotreba bajtov v sieti. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "Textové zdroje by sa mali zobrazovať komprimované (gzip, deflate alebo brotli), aby sa minimalizovala celková spotreba bajtov v sieti. [Ďalšie informácie](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Povoľte kompresiu textu" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Formáty obrázka, napríklad JPEG 2000, JPEG XR a WebP, zvyčajne poskytujú lepšiu kompresiu než PNG alebo JPEG, čo znamená rýchlejšie sťahovanie a nižšiu spotrebu dát. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "Formáty obrázka, napríklad JPEG 2000, JPEG XR a WebP, zvyčajne poskytujú lepšiu kompresiu než PNG alebo JPEG, čo znamená rýchlejšie sťahovanie a nižšiu spotrebu dát. [Ďalšie informácie](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Zobrazujte obrázky vo formátoch ďalšej generácie" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Ak šírka obsahu vašej aplikácie nezodpovedá šírke oblasti zobrazenia, aplikácia nemusí byť optimalizovaná pre obrazovky mobilných zariadení. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Ak šírka obsahu vašej aplikácie nezodpovedá šírke oblasti zobrazenia, aplikácia nemusí byť optimalizovaná pre obrazovky mobilných zariadení. [Ďalšie informácie](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Veľkosť oblasti zobrazenia {innerWidth} px nezodpovedá veľkosti okna {outerWidth} px." @@ -453,7 +453,7 @@ "message": "Obsah má správnu veľkosť pre oblasť zobrazenia" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Reťazce podstatných žiadostí uvedené nižšie znázorňujú, ktoré zdroje sú načítané s vysokou prioritou. Zvážte skrátenie dĺžky reťazcov, aby ste znížili veľkosť sťahovaných zdrojov, alebo odložte sťahovanie nepotrebných zdrojov, čím zlepšíte načítanie stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "Reťazce podstatných žiadostí uvedené nižšie znázorňujú, ktoré zdroje sú načítané s vysokou prioritou. Zvážte skrátenie dĺžky reťazcov, aby ste znížili veľkosť sťahovaných zdrojov, alebo odložte sťahovanie nepotrebných zdrojov, čím zlepšíte načítanie stránky. [Ďalšie informácie](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Našiel sa 1 reťazec}few{Našli sa # reťazce}many{# chains found}other{Našlo sa # reťazcov}}" @@ -675,7 +675,7 @@ "message": "Do konzoly neboli zaznamenané žiadne chyby prehliadača" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Využite funkciu CSS zobrazenia písma, ktorá pomôže zaistiť, aby používatelia videli text počas načítavania webfontov. [Ďalšie informácie](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "Využite funkciu CSS zobrazenia písma, ktorá pomôže zaistiť, aby používatelia videli text počas načítavania webfontov. [Ďalšie informácie](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Zaistite, aby text zostal počas načítania webfontov viditeľný" @@ -705,7 +705,7 @@ "message": "Neplatné informácie o veľkosti obrázka {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Prehliadače môžu proaktívne vyzývať používateľov, aby si pridali vašu aplikáciu na plochu, čo môže viesť k ich lepšiemu zapojeniu. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Prehliadače môžu proaktívne vyzývať používateľov, aby si pridali vašu aplikáciu na plochu, čo môže viesť k ich lepšiemu zapojeniu. [Ďalšie informácie](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Manifest webovej aplikácie nespĺňa požiadavky na inštaláciu" @@ -729,7 +729,7 @@ "message": "Používa HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Rýchle načítanie stránky cez mobilnú sieť zaisťuje dobrý dojem používateľov mobilných zariadení. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "Rýchle načítanie stránky cez mobilnú sieť zaisťuje dobrý dojem používateľov mobilných zariadení. [Ďalšie informácie](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktívna po {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategória" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Zvážte skrátenie času stráveného analýzou, zostavovaním a spustením JavaScriptu. Možno vám s tým pomôže zobrazovanie menších prenášaných dát JavaScriptu." + "message": "Zvážte skrátenie času stráveného analýzou, zostavovaním a spustením JavaScriptu. Možno vám s tým pomôže zobrazovanie menších prenášaných dát JavaScriptu. [Ďalšie informácie](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimalizujte prácu hlavného vlákna" @@ -759,49 +759,49 @@ "message": "Minimalizuje prácu hlavného vlákna" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Ak chcete osloviť maximálny počet používateľov, weby by mali fungovať vo všetkých hlavných prehliadačoch. [Ďalšie informácie](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Ak chcete osloviť maximálny počet používateľov, weby by mali fungovať vo všetkých hlavných prehliadačoch. [Ďalšie informácie](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Web funguje v rôznych prehliadačoch" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Zaistite, aby jednotlivé stránky podporovali priame odkazovanie prostredníctvom webovej adresy a aby dané webové adresy boli jedinečné na účely zdieľania v sociálnych médiách. [Ďalšie informácie](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Zaistite, aby jednotlivé stránky podporovali priame odkazovanie prostredníctvom webovej adresy a aby dané webové adresy boli jedinečné na účely zdieľania v sociálnych médiách. [Ďalšie informácie](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Každá stránka má webovú adresu" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Prechody by pri klepaní mali pôsobiť plynulo, dokonca aj v pomalej sieti, pretože ide o kľúčový faktor ovplyvňujúci vnímanú výkonnosť. [Ďalšie informácie](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Prechody by pri klepaní mali pôsobiť plynulo, dokonca aj v pomalej sieti. Ide o kľúčový faktor ovplyvňujúci vnímanú výkonnosť. [Ďalšie informácie](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Prechody stránok zrejme nie sú blokované sieťou" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Odhadovaná latencia vstupu je odhadovaný čas odozvy na vstup používateľa v milisekundách počas najrušnejších 5 sekúnd načítania stránky. Ak latencia prevyšuje 50 ms, používateľom sa môžu zdať odozvy aplikácie oneskorené. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "Odhadovaná latencia vstupu je odhadovaný čas odozvy na vstup používateľa v milisekundách počas najrušnejších 5 sekúnd načítania stránky. Ak latencia prevyšuje 50 ms, používateľom sa môžu zdať odozvy aplikácie oneskorené. [Ďalšie informácie](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Odhadovaná latencia vstupu" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Prvé vykreslenie obsahu označuje čas, za ktorý je vykreslený prvý text alebo obrázok. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "Prvé vykreslenie obsahu označuje čas, za ktorý je vykreslený prvý text alebo obrázok. [Ďalšie informácie](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Prvé obsahové vyfarbenie" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Prvá nečinnosť procesora označuje, kedy je hlavné vlákno stránky prvýkrát dostatočne nečinné na spracovanie vstupu. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "Prvá nečinnosť procesora označuje, kedy je hlavné vlákno stránky prvýkrát dostatočne nečinné na spracovanie vstupu. [Ďalšie informácie](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Prvá nečinnosť procesora" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Prvé zmysluplné vykreslenie meria, kedy je hlavný obsah stránky viditeľný. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "Prvé zmysluplné vykreslenie meria, kedy je hlavný obsah stránky viditeľný. [Ďalšie informácie](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Prvé účelné vyfarbenie" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Čas do interaktivity je údaj o tom, koľko času prejde, kým bude stránka plne interaktívna. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "Čas do interaktivity je údaj o tom, koľko času prejde, kým bude stránka plne interaktívna. [Ďalšie informácie](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Čas do interaktívneho vykreslenia" @@ -813,7 +813,7 @@ "message": "Max. potenc. oneskorenie prvého vstupu" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Index rýchlosti znázorňuje, za aký čas sa viditeľne doplní obsah stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "Index rýchlosti znázorňuje, za aký čas sa viditeľne doplní obsah stránky. [Ďalšie informácie](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Index rýchlosti" @@ -837,7 +837,7 @@ "message": "Latencie na strane servera" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Obsluha umožňuje vašej webovej aplikácii spoľahlivo fungovať za nepredvídateľných podmienok siete. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Obsluha umožňuje vašej webovej aplikácii spoľahlivo fungovať za nepredvídateľných podmienok siete. [Ďalšie informácie](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` nereaguje kódom 200, keď je offline" @@ -861,7 +861,7 @@ "message": "Rozpočet výkonnosti" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Ak ste už nastavili HTTPS, zaistite presmerovanie všetkej návštevnosti cez HTTP na HTTPS a poskytnite tak funkcie zabezpečeného webu všetkým používateľom. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Ak ste už nastavili HTTPS, zaistite presmerovanie všetkej návštevnosti cez HTTP na HTTPS a poskytnite tak funkcie zabezpečeného webu všetkým používateľom. [Ďalšie informácie](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Nepresmerúva návštevnosť cez HTTP na HTTPS" @@ -870,7 +870,7 @@ "message": "Presmerúva návštevnosť cez HTTP na HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Presmerovania spôsobujú ďalšie oneskorenia pri načítavaní stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "Presmerovania spôsobujú ďalšie oneskorenia pri načítavaní stránky. [Ďalšie informácie](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "Vyhnite sa viacnásobným presmerovaniam stránky" @@ -1035,7 +1035,7 @@ "message": "Cieľové oblasti klepnutia majú vhodnú veľkosť" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Obsluha je technológia, ktorá umožňuje vašej aplikácii používať mnoho funkcií progresívnej webovej aplikácie, napríklad offline režim, pridanie na plochu a upozornenia aplikácie. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Obsluha je technológia, ktorá umožňuje vašej aplikácii používať mnoho funkcií progresívnej webovej aplikácie, napríklad offline režim, pridanie na plochu a upozornenia aplikácie. [Ďalšie informácie](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Túto stránku ovláda obsluha, ale nenašla sa vlastnosť `start_url`, pretože sa nepodarilo analyzovať manifest ako platný súbor JSON" @@ -1056,7 +1056,7 @@ "message": "Má zaregistrovanú obsluhu, ktorá ovláda stránku a vlastnosť `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Úvodná obrazovka s motívom zaistí skvelý dojem používateľa, keď si spustí vašu aplikáciu z plochy. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Úvodná obrazovka s motívom zaistí skvelý dojem používateľa, keď si spustí vašu aplikáciu z plochy. [Ďalšie informácie](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nie je nakonfigurovaný pre vlastnú úvodnú obrazovku" @@ -1065,7 +1065,7 @@ "message": "Nakonfigurované pre vlastnú úvodnú obrazovku" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Panel s adresou prehliadača je možné upraviť motívom, aby zodpovedal vášmu webu. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "Panel s adresou prehliadača je možné upraviť motívom, aby zodpovedal vášmu webu. [Ďalšie informácie](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Nenastavuje farbu motívu pre panel s adresou." @@ -1092,7 +1092,7 @@ "message": "Používanie tretími stranami" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Čas do prvého bajtu určuje čas, za ktorý váš server odošle odpoveď. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "Čas do prvého bajtu určuje čas, za ktorý váš server odošle odpoveď. [Ďalšie informácie](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Hlavný dokument trval {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Typ" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Odporúčame do aplikácie implementovať rozhranie User Timing API, ktoré umožňuje odmerať jej skutočnú výkonnosť počas udalostí kľúčových pre dojem používateľov. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "Odporúčame do aplikácie implementovať rozhranie User Timing API, ktoré umožňuje odmerať jej skutočnú výkonnosť počas udalostí kľúčových pre dojem používateľov. [Ďalšie informácie](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 trvanie aktivít používateľov}few{# trvania aktivít používateľov}many{# user timings}other{# trvaní aktivít používateľov}}" @@ -1125,7 +1125,7 @@ "message": "Pre atribút {securityOrigin} sa našiel odkaz predpripojenia <link>, prehliadač ho však nepoužil. Skontrolujte, či atribút `crossorigin` používate správne." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Zvážte pridanie indikátorov zdrojov `preconnect` a `dns-prefetch`, ktoré vám pomôžu zriadiť predbežné pripojenia k dôležitým zdrojom tretích strán. [Ďalšie informácie](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Zvážte pridanie indikátorov zdrojov `preconnect` a `dns-prefetch`, ktoré vám pomôžu zriadiť predbežné pripojenia k dôležitým zdrojom tretích strán. [Ďalšie informácie](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Nastavte predbežné pripojenie k požadovaným zdrojom" @@ -1134,13 +1134,13 @@ "message": "Pre atribút {preloadURL} sa našiel odkaz <link> prednačítania, prehliadač ho však nepoužil. Skontrolujte, či atribút `crossorigin` používate správne." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Zvážte použitie funkcie `<link rel=preload>`, čím uprednostníte načítanie zdrojov momentálne požadovaných v neskoršej fáze načítania stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "Zvážte použitie funkcie `<link rel=preload>`, čím uprednostníte načítanie zdrojov momentálne požadovaných v neskoršej fáze načítania stránky. [Ďalšie informácie](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Predbežne načítavajte kľúčové žiadosti" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Ak chcete optimalizovať svoju aplikáciu pre obrazovky mobilných zariadení, pridajte značku `<meta name=\"viewport\">`. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Ak chcete optimalizovať svoju aplikáciu pre obrazovky mobilných zariadení, pridajte značku `<meta name=\"viewport\">`. [Ďalšie informácie](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nenašla sa žiadna značka `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Obsahuje značku `<meta name=\"viewport\">` s vlastnosťou `width` alebo `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Vaša aplikácia by mala zobrazovať nejaký obsah, keď je zakázaný JavaScript, aj keby malo ísť iba o upozornenie používateľa, že na používanie aplikácie sa vyžaduje JavaScript. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "Vaša aplikácia by mala zobrazovať nejaký obsah, keď je zakázaný JavaScript, aj keby malo ísť iba o upozornenie používateľa, že na používanie aplikácie sa vyžaduje JavaScript. [Ďalšie informácie](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Telo stránky by malo vykresliť nejaký obsah, ak jej skripty nie sú k dispozícii." @@ -1164,7 +1164,7 @@ "message": "Obsahuje určitý obsah, keď nie je k dispozícii JavaScript" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Ak vytvárate progresívnu webovú aplikáciu, zvážte použitie obsluhy, aby aplikácia mohla fungovať offline. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Ak vytvárate progresívnu webovú aplikáciu, zvážte použitie obsluhy, aby aplikácia mohla fungovať offline. [Ďalšie informácie](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Aktuálna stránka nereaguje kódom 200, keď je offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sl.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sl.json index 9ba8c4f..af11be3 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sl.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sl.json
@@ -30,10 +30,10 @@ "message": "Nekatere nadrejene vloge ARIA morajo zaradi ustreznega izvajanja funkcij za ljudi s posebnimi potrebami vsebovati določene podrejene vloge. [Več o tem](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Elementi z vlogo `[role]`, ki zahtevajo določene podrejene vloge `[role]`, manjkajo." + "message": "Elementi z vlogo ARIA `[role]`, ki zahtevajo, da podrejeni elementi vsebujejo določeno vlogo `[role]`, ne vsebujejo nekaterih ali vseh teh zahtevanih podrejenih elementov." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Elementi z vlogo `[role]`, ki zahtevajo določene podrejene vloge `[role]`, so prisotni" + "message": "Elementi z vlogo ARIA `[role]`, ki zahtevajo, da podrejeni elementi vsebujejo določeno vlogo `[role]`, vsebujejo vse zahtevane podrejene elemente." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Nekatere podrejene vloge ARIA morajo biti zaradi ustreznega izvajanja funkcij za ljudi s posebnimi potrebami vsebovane v določenih nadrejenih vlogah. [Več o tem](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Bralniki zaslona imajo funkcije za preprostejše pomikanje po razpredelnicah. Če zagotovite, da se celice `<td>`, ki uporabljajo atribut `[headers]`, nanašajo samo na druge celice v isti razpredelnici, lahko izboljšate izkušnjo za uporabnike bralnikov zaslona. [Več o tem](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Celice v elementu `<table>`, ki uporabljajo atribut `[headers]`, se nanašajo samo na druge celice v isti razpredelnici." + "message": "Celice v elementu `<table>`, ki uporabljajo atribut `[headers]`, se nanašajo na element `id`, ki ga ni mogoče najti v isti razpredelnici." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Celice v elementu `<table>`, ki uporabljajo atribut `[headers]`, se nanašajo samo na druge celice v isti razpredelnici." + "message": "Celice v elementu `<table>`, ki uporabljajo atribut `[headers]`, se nanašajo na celice razpredelnice v isti razpredelnici." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Bralniki zaslona imajo funkcije za preprostejše pomikanje po razpredelnicah. Če zagotovite, da se glave razpredelnic vedno nanašajo na določen nabor celic, lahko izboljšate izkušnjo za uporabnike bralnikov zaslona. [Več o tem](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Elementi `<video>` vsebujejo element `<track>` s podnapisi `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Za idealen prikaz v iOSu, ko uporabniki dodajo moderno spletno aplikacijo na začetni zaslon, določite to: `apple-touch-icon`. Kazati mora na neprosojno kvadratno datoteko PNG velikosti 192 (ali 180) slikovnih pik. [Več o tem](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Za idealen prikaz v iOSu, ko uporabniki dodajo moderno spletno aplikacijo na začetni zaslon, določite to: `apple-touch-icon`. Kazati mora na neprosojno kvadratno datoteko PNG velikosti 192 (ali 180) slikovnih pik. [Več o tem](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Ne vsebuje veljavne vrednosti `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Skupni čas CPE" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Razmislite o skrajšanju časa, ki ga porabite za razčlenjevanje, prevajanje in izvajanje JavaScripta. Ugotovili boste, da vam lahko pri tem morda pomaga dostavljanje manjših paketov koristne vsebine JavaScript. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Razmislite o skrajšanju časa, ki ga porabite za razčlenjevanje, prevajanje in izvajanje JavaScripta. Ugotovili boste, da vam lahko pri tem morda pomaga dostavljanje manjših paketov koristne vsebine JavaScript. [Več o tem](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Skrajšajte čas izvajanja JavaScripta" @@ -351,25 +351,25 @@ "message": "Čas izvajanja JavaScripta" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Veliki GIF-i so neučinkoviti za dostavljanje animirane vsebine. Razmislite o uporabi videoposnetkov MPEG4/WebM za animacije in slik PNG/WebP za statične slike namesto GIF-ov, s čimer prihranite omrežne bajte. [Več o tem](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Veliki GIF-i so neučinkoviti za dostavljanje animirane vsebine. Razmislite o uporabi videoposnetkov MPEG4/WebM za animacije in slik PNG/WebP za statične slike namesto GIF-ov, s čimer prihranite omrežne bajte. [Več o tem](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Uporabite oblike zapisa videoposnetkov za animirano vsebino" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Razmislite o odloženem nalaganju slik zunaj zaslona in skritih slik po dokončanem nalaganju kritičnih sredstev zaradi skrajšanja časa do interaktivnosti strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Razmislite o odloženem nalaganju slik zunaj zaslona in skritih slik po dokončanem nalaganju kritičnih sredstev zaradi skrajšanja časa do interaktivnosti strani. [Več o tem](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Odložite nalaganje slik, ki so zunaj zaslona" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Sredstva blokirajo prvo barvanje strani. Razmislite o sprotnem dostavljanju kritičnega JavaScripta/CSS-ja in odlaganju JavaScripta/slogov, ki ni oziroma niso kritični. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Sredstva blokirajo prvo barvanje strani. Razmislite o sprotnem dostavljanju kritičnega JavaScripta/CSS-ja in odlaganju JavaScripta/slogov, ki ni oziroma niso kritični. [Več o tem](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Izločite sredstva, ki blokirajo upodabljanje" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Veliki omrežni paketi koristne vsebine uporabnikom povzročajo dejanske stroške in so tesno povezani z dolgimi časi nalaganja. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Veliki omrežni paketi koristne vsebine uporabnikom povzročajo dejanske stroške in so tesno povezani z dolgimi časi nalaganja. [Več o tem](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Skupna velikost je bila {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Izogiba se velikanskim omrežnim paketom koristne vsebine" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Z zmanjšanjem datotek CSS-ja lahko zmanjšate velikosti paketov koristne vsebine. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Z zmanjšanjem datotek CSS-ja lahko zmanjšate velikosti paketov koristne vsebine. [Več o tem](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Zmanjšajte CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Z zmanjšanjem datotek JavaScript lahko zmanjšate velikosti paketov koristne vsebine in skrajšate čas razčlenjevanja skriptov. [Več o tem](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Z zmanjšanjem datotek JavaScript lahko zmanjšate velikosti paketov koristne vsebine in skrajšate čas razčlenjevanja skriptov. [Več o tem](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Pomanjšajte JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Iz slogovnih datotek odstranite nedejavna pravila in odložite nalaganje CSS-ja, ki se ne uporablja za vsebino na vrhu strani, ter tako zmanjšajte nepotrebno porabo bajtov v omrežni dejavnosti. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Iz slogovnih datotek odstranite nedejavna pravila in odložite nalaganje CSS-ja, ki se ne uporablja za vsebino na vrhu strani, ter tako zmanjšajte nepotrebno porabo bajtov v omrežni dejavnosti. [Več o tem](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Odstranitev neuporabljenega CSS-ja" @@ -405,7 +405,7 @@ "message": "Odstranite neuporabljeni JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Dolgotrajno predpomnjenje lahko pospeši vnovične obiske strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Dolgotrajno predpomnjenje lahko pospeši vnovične obiske strani. [Več o tem](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Najdeno je bilo 1 sredstvo}one{Najdeno je bilo # sredstvo}two{Najdeni sta bili # sredstvi}few{Najdena so bila # sredstva}other{Najdenih je bilo # sredstev}}" @@ -417,31 +417,31 @@ "message": "Uporaba pravilnika o učinkovitem predpomnjenju za statična sredstva" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimizirane slike se nalagajo hitreje in terjajo manj prenesenih podatkov v mobilnih omrežjih. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimizirane slike se nalagajo hitreje in terjajo manj prenesenih podatkov v mobilnih omrežjih. [Več o tem](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Učinkovito kodirajte slike" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Prikazujte slike primerne velikosti, s čimer poskrbite za prihranek prenesenih podatkov v mobilnih omrežjih in izboljšate čas nalaganja. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Prikazujte slike primerne velikosti, s čimer poskrbite za prihranek prenesenih podatkov v mobilnih omrežjih in izboljšate čas nalaganja. [Več o tem](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Uporabite slike ustrezne velikosti" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Pri dostavi besedilnih sredstev uporabite stiskanje (gzip, deflate ali brotli) zaradi zmanjšanja skupnega števila omrežnih bajtov. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Pri dostavi besedilnih sredstev uporabite stiskanje (gzip, deflate ali brotli) zaradi zmanjšanja skupnega števila omrežnih bajtov. [Več o tem](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Omogočite stiskanje besedila" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Oblike zapisa slik, kot so JPEG 2000, JPEG XR in WebP, pogosto omogočajo učinkovitejše stiskanje kot oblika zapisa PNG ali JPEG, kar pomeni hitrejše prenose in manjšo porabo podatkov. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Oblike zapisa slik, kot so JPEG 2000, JPEG XR in WebP, pogosto omogočajo učinkovitejše stiskanje kot oblika zapisa PNG ali JPEG, kar pomeni hitrejše prenose in manjšo porabo podatkov. [Več o tem](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Dostavljajte slike v sodobnih oblikah zapisa" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Če se širina vsebine aplikacije ne ujema s širino vidnega polja, aplikacija morda ni optimizirana za zaslone mobilnih naprav. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Če se širina vsebine aplikacije ne ujema s širino vidnega polja, aplikacija morda ni optimizirana za zaslone mobilnih naprav. [Več o tem](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Velikost vidnega območja, ki znaša {innerWidth} slikovnih pik, se ne ujema z velikostjo okna, ki znaša {outerWidth} slikovnih pik." @@ -453,7 +453,7 @@ "message": "Vsebina je ustrezne velikosti za vidno območje" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Verige kritičnih zahtev spodaj vam prikazujejo, katera sredstva so naložena z visoko prednostjo. Razmislite o skrajšanju verig, zmanjšanju velikosti sredstev ali odlaganju prenosa nepotrebnih sredstev zaradi izboljšanja nalaganja strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Verige kritičnih zahtev spodaj vam prikazujejo, katera sredstva so naložena z visoko prednostjo. Razmislite o skrajšanju verig, zmanjšanju velikosti sredstev ali odlaganju prenosa nepotrebnih sredstev zaradi izboljšanja nalaganja strani. [Več o tem](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Najdena je bila 1 veriga}one{Najdena je bila # veriga}two{Najdeni sta bili # verigi}few{Najdene so bile # verige}other{Najdenih je bilo # verig}}" @@ -675,7 +675,7 @@ "message": "V konzoli ni bila zabeležena nobena napaka brskalnika" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Izkoristite funkcijo CSS-ja za prikaz pisave, s čimer poskrbite, da je med nalaganjem spletne pisave besedilo vidno uporabnikom. [Več o tem](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Izkoristite funkcijo CSS-ja za prikaz pisave, s čimer poskrbite, da je med nalaganjem spletne pisave besedilo vidno uporabnikom. [Več o tem](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Poskrbite, da bo med nalaganjem spletne pisave besedilo ostalo vidno" @@ -705,7 +705,7 @@ "message": "Neveljavni podatki o velikosti slike {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Brskalniki lahko proaktivno pozovejo uporabnike, da dodajo vašo aplikacijo na začetni zaslon, kar lahko privede do več dejavnosti. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Brskalniki lahko proaktivno pozovejo uporabnike, da dodajo vašo aplikacijo na začetni zaslon, kar lahko privede do več dejavnosti. [Več o tem](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Manifest spletne aplikacije ne izpolnjuje zahtev za izvedljivost namestitve" @@ -729,7 +729,7 @@ "message": "Uporablja HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Hitro nalaganje strani prek mobilnega omrežja zagotavlja dobro uporabniško izkušnjo pri uporabi mobilnih naprav. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Hitro nalaganje strani prek mobilnega omrežja zagotavlja dobro uporabniško izkušnjo pri uporabi mobilnih naprav. [Več o tem](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktivno ob {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategorija" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Razmislite o skrajšanju časa, ki ga porabite za razčlenjevanje, prevajanje in izvajanje JavaScripta. Ugotovili boste, da vam lahko pri tem pomaga dostavljanje manjših paketov koristne vsebine JavaScript." + "message": "Razmislite o skrajšanju časa, ki ga porabite za razčlenjevanje, prevajanje in izvajanje JavaScripta. Ugotovili boste, da vam lahko pri tem morda pomaga dostavljanje manjših paketov koristne vsebine JavaScript. [Več o tem](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minimizirajte delo glavne niti" @@ -759,49 +759,49 @@ "message": "Minimizira delo glavne niti" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Če želite doseči največ uporabnikov, morajo spletna mesta delovati v vsakem pomembnejšem brskalniku. [Več o tem](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Če želite doseči največ uporabnikov, morajo spletna mesta delovati v vsakem pomembnejšem brskalniku. [Več o tem](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Spletno mesto deluje v različnih brskalnikih" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Zagotovite povezave v globino do posameznih strani prek URL-jev in poskrbite, da so zaradi objavljanja v družbenih omrežjih ti URL-ji enolični. [Več o tem](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Zagotovite povezave v globino do posameznih strani prek URL-jev in poskrbite, da so zaradi objavljanja v družbenih omrežjih ti URL-ji enolični. [Več o tem](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Vsaka stran ima URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Prehodi morajo ob dotikanju delovati hitro in tekoče tudi v počasnem omrežju, kar je ključno za vtis zmogljivega delovanja. [Več o tem](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Prehodi morajo ob dotikanju delovati hitro in tekoče tudi v počasnem omrežju. To je ključno za uporabnikov vtis zmogljivega delovanja. [Več o tem](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Prehodi med stranmi ne dajejo občutka, kot da so blokirani v omrežju" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Predvidena vhodna zakasnitev je ocena, koliko milisekund potrebuje vaša aplikacija za odziv na uporabnikovo dejavnost med najaktivnejšimi 5 sekundami pri nalaganju strani. Če je zakasnitev večja od 50 ms, se lahko uporabnikom zdi, da se aplikacija zatika. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Predvidena vhodna zakasnitev je ocena, koliko milisekund potrebuje vaša aplikacija za odziv na uporabnikovo dejavnost med najaktivnejšimi 5 sekundami pri nalaganju strani. Če je zakasnitev večja od 50 ms, se lahko uporabnikom zdi, da se aplikacija zatika. [Več o tem](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Ocenjena zakasnitev vnosa" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Prvi vsebinski izris označuje čas, ko je izrisano prvo besedilo oziroma je izrisana prva slika. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Prvi vsebinski izris označuje čas, ko je izrisano prvo besedilo oziroma je izrisana prva slika. [Več o tem](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Prvo vsebinsko barvanje" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Prva nedejavnost CPE-ja označuje čas, po katerem je glavna nit strani dovolj neobremenjena, da lahko obravnava vnos. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Prva nedejavnost CPE-ja označuje čas, po katerem je glavna nit strani dovolj neobremenjena, da lahko obravnava vnos. [Več o tem](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Prva nedejavnost CPE-ja" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Prvo smiselno barvanje meri, kdaj je vidna glavna vsebina strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Prvo smiselno barvanje meri, kdaj je vidna glavna vsebina strani. [Več o tem](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Prvo smiselno barvanje" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Čas do interaktivnosti je čas, potreben, da stran postane povsem interaktivna. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Čas do interaktivnosti je čas, potreben, da stran postane povsem interaktivna. [Več o tem](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Čas do interaktivnosti" @@ -813,7 +813,7 @@ "message": "Najv. potencial. zakasn. od prvega vnosa" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Indeks hitrosti prikazuje, kako hitro je vsebina strani vidno izpolnjena. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Indeks hitrosti prikazuje, kako hitro je vsebina strani vidno izpolnjena. [Več o tem](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Indeks hitrosti" @@ -837,7 +837,7 @@ "message": "Zakasnitve strežnikovega zaledja" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Proces storitve spletni aplikaciji omogoča zanesljivost v nepredvidljivih omrežnih okoliščinah. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Proces storitve spletni aplikaciji omogoča zanesljivost v nepredvidljivih omrežnih okoliščinah. [Več o tem](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` se ne odzove s kodo stanja HTTP 200, ko nima povezave" @@ -861,7 +861,7 @@ "message": "Proračun za uspešnost" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Če ste že nastavili protokol HTTPS, poskrbite za preusmeritev vsega prometa prek protokola HTTP na protokol HTTPS, da zagotovite varne spletne funkcije vsem uporabnikom. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Če ste že nastavili protokol HTTPS, poskrbite za preusmeritev vsega prometa prek protokola HTTP na protokol HTTPS, da zagotovite varne spletne funkcije vsem uporabnikom. [Več o tem](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Ne preusmeri prometa prek protokola HTTP na protokol HTTPS" @@ -870,7 +870,7 @@ "message": "Preusmeri promet prek protokola HTTP na protokol HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Preusmeritve vnašajo dodatne zakasnitve nalaganja strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Preusmeritve vnašajo dodatne zakasnitve nalaganja strani. [Več o tem](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Izogibajte se preusmeritvam na več strani" @@ -1035,7 +1035,7 @@ "message": "Cilji za dotikanje so ustrezne velikosti" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Proces storitve je tehnologija, ki aplikaciji omogoča uporabo številnih funkcij moderne spletne aplikacije, na primer delovanje brez povezave, dodajanje na začetni zaslon in potisna obvestila. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Proces storitve je tehnologija, ki aplikaciji omogoča uporabo številnih funkcij moderne spletne aplikacije, na primer delovanje brez povezave, dodajanje na začetni zaslon in potisna obvestila. [Več o tem](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "To stran nadzira proces storitve, vendar ni bilo mogoče najti ničesar od tega: `start_url`, ker ni bilo mogoče razčleniti manifesta kot veljavne datoteke JSON" @@ -1056,7 +1056,7 @@ "message": "Registrira proces storitve, ki nadzira stran in to: `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "S tematskim pozdravnim zaslonom zagotovite visokokakovostno izkušnjo, ko uporabniki zaženejo aplikacijo z začetnih zaslonov. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "S tematskim pozdravnim zaslonom zagotovite visokokakovostno izkušnjo, ko uporabniki zaženejo aplikacijo z začetnih zaslonov. [Več o tem](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Ni konfigurirano za pozdravni zaslon po meri" @@ -1065,7 +1065,7 @@ "message": "Konfigurirano za pozdravni zaslon po meri" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Naslovno vrstico brskalnika je mogoče prilagoditi s temo, ki se ujema s spletnim mestom. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Naslovno vrstico brskalnika je mogoče prilagoditi s temo, ki se ujema s spletnim mestom. [Več o tem](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Ne nastavi barve teme za naslovno vrstico." @@ -1092,7 +1092,7 @@ "message": "Uporaba drugih ponudnikov" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "»Čas do prvega bajta« navaja čas, v katerem vaš strežnik pošlje odziv. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "»Čas do prvega bajta« navaja čas, v katerem vaš strežnik pošlje odziv. [Več o tem](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Korenski dokument je terjal {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Vrsta" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Razmislite o uporabi API-ja za merjenje dejanskih izvedb uporabniških dogodkov (User Timing API), če želite izmeriti dejansko delovanje aplikacije med ključnimi uporabniškimi izkušnjami. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Razmislite o uporabi API-ja za merjenje dejanskih izvedb uporabniških dogodkov (User Timing API), če želite izmeriti dejansko delovanje aplikacije med ključnimi uporabniškimi izkušnjami. [Več o tem](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 trajanje izvedbe uporabniških dogodkov}one{# trajanje izvedbe uporabniških dogodkov}two{# trajanji izvedbe uporabniških dogodkov}few{# trajanja izvedbe uporabniških dogodkov}other{# trajanj izvedbe uporabniških dogodkov}}" @@ -1125,7 +1125,7 @@ "message": "Povezava <link> za vnaprejšnje povezovanje je bila najdena za »{securityOrigin}«, vendar je brskalnik ni uporabil. Preverite, ali pravilno uporabljate atribut `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Razmislite o dodajanju namigov za sredstva (`preconnect` ali `dns-prefetch`) zaradi vzpostavljanja zgodnjih povezav s pomembnimi izvori drugih ponudnikov. [Več o tem](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Razmislite o dodajanju namigov za sredstva (`preconnect` ali `dns-prefetch`) zaradi vzpostavljanja zgodnjih povezav s pomembnimi izvori drugih ponudnikov. [Več o tem](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Vnaprej se povežite z zahtevanimi izvori" @@ -1134,13 +1134,13 @@ "message": "Najden je bil element <link> za »{preloadURL}«, vendar ga brskalnik ni uporabil. Preverite, ali pravilno uporabljate atribut `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Razmislite o uporabi oznake `<link rel=preload>` za dodeljevanje višje stopnje prednosti pri pridobivanju sredstev, ki so trenutno zahtevana pri nadaljnjem nalaganju strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Razmislite o uporabi oznake `<link rel=preload>` za dodeljevanje višje stopnje prednosti pri pridobivanju sredstev, ki so trenutno zahtevana pri nadaljnjem nalaganju strani. [Več o tem](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Vnaprej nalagajte ključne zahteve" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Dodajte oznako `<meta name=\"viewport\">`, da optimizirate aplikacijo za zaslone mobilnih naprav. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Dodajte oznako `<meta name=\"viewport\">`, da optimizirate aplikacijo za zaslone mobilnih naprav. [Več o tem](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Ni oznak `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Ima oznako `<meta name=\"viewport\">` s tem: `width` ali `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Aplikacija bi morala prikazati nekaj vsebine, če je JavaScript onemogočen, četudi zgolj opozorilo uporabniku, da uporaba aplikacije terja JavaScript. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Aplikacija bi morala prikazati nekaj vsebine, če je JavaScript onemogočen, četudi zgolj opozorilo uporabniku, da uporaba aplikacije terja JavaScript. [Več o tem](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Telo strani bi moralo upodobiti nekaj vsebine, če njeni skripti niso na voljo." @@ -1164,7 +1164,7 @@ "message": "Vsebuje nekaj vsebine, ko JavaScript ni na voljo" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Če ustvarjate moderno spletno aplikacijo, razmislite o uporabi procesa storitve, da lahko aplikacija deluje brez povezave. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Če ustvarjate moderno spletno aplikacijo, razmislite o uporabi procesa storitve, da lahko aplikacija deluje brez povezave. [Več o tem](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Trenutna stran se ne odzove s kodo stanja HTTP 200, ko nima povezave"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr-Latn.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr-Latn.json index 44977f12..162d3f3 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr-Latn.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr-Latn.json
@@ -30,10 +30,10 @@ "message": "Pojedine nadređene ARIA uloge moraju da obuhvataju određene podređene uloge da bi pravilno obavljale namenjene funkcije pristupačnosti. [Saznajte više](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Nedostaju elementi sa ulogom `[role]` koji zahtevaju određenu podređenu ulogu `[role]`." + "message": "Elementima sa ARIA ulogom `[role]` koji zahtevaju da podređeni elementi sadrže konkretni element `[role]` nedostaju neki ili svi ti potrebni podređeni elementi." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Prisutni su elementi sa ulogom `[role]` koji zahtevaju određenu podređenu ulogu `[role]`" + "message": "Elementi sa ARIA ulogom `[role]` koji zahtevaju da podređeni elementi sadrže konkretni element `[role]` imaju sve potrebne podređene elemente." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Pojedine podređene ARIA uloge moraju da budu obuhvaćene određenim nadređenim ulogama da bi pravilno obavljale namenjene funkcije pristupačnosti. [Saznajte više](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Čitači ekrana imaju funkcije koje olakšavaju kretanje kroz tabele. Ako se pobrinete da se ćelije `<td>` koje koriste atribut `[headers]` odnose samo na druge ćelije u istoj tabeli, možete da poboljšate doživljaj za korisnike čitača ekrana. [Saznajte više](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Ćelije u elementu `<table>` koje koriste atribut `[headers]` odnose se na druge ćelije u toj istoj tabeli." + "message": "Ćelije u elementu `<table>` koje koriste atribut `[headers]` odnose se na element `id` koji se ne nalazi u istoj tabeli." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Ćelije u elementu `<table>` koje koriste atribut `[headers]` odnose se samo na druge ćelije u toj istoj tabeli." + "message": "Ćelije u elementu `<table>` koje koriste atribut `[headers]` odnose se na ćelije tabele u istoj tabeli." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Čitači ekrana imaju funkcije koje olakšavaju kretanje kroz tabele. Ako se pobrinete da se naslovi tabela uvek odnose na neku grupu ćelija, možete da poboljšate doživljaj za korisnike čitača ekrana. [Saznajte više](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Elementi `<video>` sadrže element `<track>` sa atributom `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Da bi izgled na iOS-u bio idealan kada korisnici dodaju progresivnu veb-aplikaciju na početni ekran, definišite ikonu `apple-touch-icon`. Ona mora da usmerava na netransparentni kvadratni PNG od 192 piksela (ili 180 piksela). [Saznajte više](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Da bi izgled na iOS-u bio idealan kada korisnici dodaju progresivnu veb-aplikaciju na početni ekran, definišite ikonu `apple-touch-icon`. Ona mora da usmerava na netransparentni kvadratni PNG od 192 piksela (ili 180 piksela). [Saznajte više](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Ne pruža važeći atribut `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Ukupno CPU vreme" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Preporučujemo vam da smanjite vreme potrebno za raščlanjivanje, kompajliranje i izvršavanje JS datoteka. Prikazivanje manjih JS resursa će vam možda pomoći u tome. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Preporučujemo vam da smanjite vreme potrebno za raščlanjivanje, kompajliranje i izvršavanje JS datoteka. Prikazivanje manjih JS resursa će vam možda pomoći u tome. [Saznajte više](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Smanjite vreme izvršavanja JavaScript datoteka" @@ -351,25 +351,25 @@ "message": "Vreme izvršavanja JavaScript-a" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Veliki GIF-ovi nisu korisni za prikazivanje animiranog sadržaja. Preporučujemo vam da umesto GIF-ova koristite MPEG4/WebM video snimke za animacije i PNG/WebP za statične slike da biste uštedeli mrežne podatke. [Saznajte više](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Veliki GIF-ovi nisu korisni za prikazivanje animiranog sadržaja. Preporučujemo vam da umesto GIF-ova koristite MPEG4/WebM video snimke za animacije i PNG/WebP za statične slike da biste uštedeli mrežne podatke. [Saznajte više](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Koristite video formate za animirani sadržaj" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Preporučujemo vam da odložite učitavanje slika van ekrana i skrivenih slika dok se svi veoma važni resursi ne učitaju kako biste smanjili vreme do početka interakcije. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Preporučujemo vam da odložite učitavanje slika van ekrana i skrivenih slika dok se svi veoma važni resursi ne učitaju kako biste smanjili vreme do početka interakcije. [Saznajte više](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Odložite slike van ekrana" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resursi blokiraju prvo prikazivanje stranice. Preporučujemo vam da prikazujete sve važne JS/CSS datoteke u tekstu i da odložite sve JS datoteke/stilove koji nisu toliko važni. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resursi blokiraju prvo prikazivanje stranice. Preporučujemo vam da prikazujete sve važne JS/CSS datoteke u tekstu i da odložite sve JS datoteke/stilove koji nisu toliko važni. [Saznajte više](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Eliminišite resurse koji blokiraju prikazivanje" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Velike mrežne resurse korisnici moraju da plate stvarnim novcem i oni su veoma povezani sa dugim vremenima učitavanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Velike mrežne resurse korisnici moraju da plate stvarnim novcem i oni su veoma povezani sa dugim vremenima učitavanja. [Saznajte više](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Ukupna veličina je bila {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Izbegava ogromne mrežne resurse" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Umanjivanjem CSS datoteka možete da smanjite veličine mrežnih resursa. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Umanjivanjem CSS datoteka možete da smanjite veličine mrežnih resursa. [Saznajte više](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Umanjite CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Umanjivanje JavaScript datoteka može da smanji veličine resursa i vreme raščlanjivanja skripta. [Saznajte više](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Umanjivanje JavaScript datoteka može da smanji veličine resursa i vreme raščlanjivanja skripta. [Saznajte više](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Umanjite JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Uklonite neaktivna pravila iz opisa stilova i odložite učitavanje CSS-a koji se ne koristi za sadržaj iznad preloma da biste smanjili nepotrebnu potrošnju podataka tokom mrežnih aktivnosti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Uklonite neaktivna pravila iz opisa stilova i odložite učitavanje CSS-a koji se ne koristi za sadržaj iznad preloma da biste smanjili nepotrebnu potrošnju podataka tokom mrežnih aktivnosti. [Saznajte više](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Uklonite nekorišćeni CSS" @@ -405,7 +405,7 @@ "message": "Uklonite nekorišćeni JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Dugo trajanje keša može da ubrza ponovne posete stranici. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Dugo trajanje keša može da ubrza ponovne posete stranici. [Saznajte više](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Pronađen je 1 resurs}one{Pronađen je # resurs}few{Pronađena su # resursa}other{Pronađeno je # resursa}}" @@ -417,31 +417,31 @@ "message": "Koristi efikasne smernice keša na statičnim elementima" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimizovane slike se učitavaju brže i troše manje mobilnih podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimizovane slike se učitavaju brže i troše manje mobilnih podataka. [Saznajte više](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Efikasno kodirajte slike" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Prikazujte slike odgovarajuće veličine da biste uštedeli mobilne podatke i poboljšali vreme učitavanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Prikazujte slike odgovarajuće veličine da biste uštedeli mobilne podatke i poboljšali vreme učitavanja. [Saznajte više](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Odredite odgovarajuću veličinu slika" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Resurse zasnovane na tekstu treba da prikazujete u komprimovanom formatu (gzip, deflate ili brotli) da biste smanjili ukupnu količinu potrošenih mrežnih podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Resurse zasnovane na tekstu treba da prikazujete u komprimovanom formatu (gzip, deflate ili brotli) da biste smanjili ukupnu količinu potrošenih mrežnih podataka. [Saznajte više](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Omogućite kompresiju teksta" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Formati slika kao što su JPEG 2000, JPEG XR i WebP često pružaju bolju kompresiju nego PNG ili JPEG, što podrazumeva brža preuzimanja i manju potrošnju podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Formati slika kao što su JPEG 2000, JPEG XR i WebP često pružaju bolju kompresiju nego PNG ili JPEG, što podrazumeva brža preuzimanja i manju potrošnju podataka. [Saznajte više](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Prikazujte slike u formatima sledeće generacije" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Ako se širina sadržaja aplikacije ne podudara sa širinom oblasti prikaza, aplikacija možda nije optimizovana za ekrane na mobilnim uređajima. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Ako se širina sadržaja aplikacije ne podudara sa širinom oblasti prikaza, aplikacija možda nije optimizovana za ekrane na mobilnim uređajima. [Saznajte više](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Veličina oblasti prikaza od {innerWidth} piksela se ne podudara sa veličinom prozora od {outerWidth} piksela." @@ -453,7 +453,7 @@ "message": "Sadržaj je odgovarajuće veličine za oblast prikaza" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Lanci veoma važnih zahteva u nastavku vam prikazuju koji resursi se učitavaju sa visokim prioritetom. Preporučujemo vam da smanjite dužinu lanaca, da smanjite veličinu preuzimanja za resurse ili da odložite preuzimanje resursa koji nisu neophodni radi bržeg učitavanja stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Lanci veoma važnih zahteva u nastavku vam prikazuju koji resursi se učitavaju sa visokim prioritetom. Preporučujemo vam da smanjite dužinu lanaca, da smanjite veličinu preuzimanja za resurse ili da odložite preuzimanje resursa koji nisu neophodni radi bržeg učitavanja stranice. [Saznajte više](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Pronađen je 1 lanac}one{Pronađen je # lanac}few{Pronađena su # lanca}other{Pronađeno je # lanaca}}" @@ -675,7 +675,7 @@ "message": "Nijedna greška pregledača nije evidentirana u konzoli" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Iskoristite CSS funkciju za prikaz fontova da biste bili sigurni da korisnik može da vidi tekst dok se veb-fontovi učitavaju. [Saznajte više](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Iskoristite CSS funkciju za prikaz fontova da biste bili sigurni da korisnik može da vidi tekst dok se veb-fontovi učitavaju. [Saznajte više](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Pobrinite se da tekst ostane vidljiv tokom učitavanja veb-fontova" @@ -705,7 +705,7 @@ "message": "Nevažeće informacije o veličini slike {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Pregledači mogu proaktivno da traže od korisnika da dodaju aplikaciju na početni ekran, što može da dovede do većeg angažovanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Pregledači mogu proaktivno da traže od korisnika da dodaju aplikaciju na početni ekran, što može da dovede do većeg angažovanja. [Saznajte više](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Manifest veb-aplikacije ne zadovoljava uslove za instaliranje" @@ -729,7 +729,7 @@ "message": "Koristi HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Brzo učitavanje stranice preko mobilne mreže obezbeđuje dobar doživljaj korisnicima mobilnih uređaja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Brzo učitavanje stranice preko mobilne mreže obezbeđuje dobar doživljaj korisnicima mobilnih uređaja. [Saznajte više](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktivno za {timeInMs, number, seconds} sek" @@ -750,7 +750,7 @@ "message": "Kategorija" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Razmislite o tome da smanjite vreme potrebno za raščlanjivanje, kompajliranje i izvršavanje JS datoteka. Prikazivanje manjih JS resursa će vam možda pomoći u tome." + "message": "Preporučujemo vam da smanjite vreme potrebno za raščlanjivanje, kompajliranje i izvršavanje JS datoteka. Prikazivanje manjih JS resursa će vam možda pomoći u tome. [Saznajte više](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Smanjite rad glavne niti" @@ -759,49 +759,49 @@ "message": "Smanjuje rad glavne niti" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Da bi imali što više korisnika, sajtovi treba da rade u svim značajnijim pregledačima. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Da bi imali što više korisnika, sajtovi treba da rade u svim značajnijim pregledačima. [Saznajte više](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Sajt radi u različitim veb-pregledačima" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Uverite se da do pojedinačnih stranica vode precizni linkovi preko URL-ova i da su URL-ovi jedinstveni u svrhu deljenja na društvenim medijima. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Uverite se da do pojedinačnih stranica vode precizni linkovi preko URL-ova i da su URL-ovi jedinstveni u svrhu deljenja na društvenim medijima. [Saznajte više](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Svaka stranica ima URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Korisnici treba da imaju utisak da su prelazi brzi dok dodiruju stavke, čak i na sporoj mreži, što je ključno za utisak koji će imati o učinku. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Korisnici treba da imaju utisak da su prelazi brzi dok dodiruju stavke, čak i na sporoj mreži. Ovaj doživljaj je ključan za utisak koji će korisnik imati o učinku. [Saznajte više](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Prelasci sa stranice na stranicu ne deluju kao da se blokiraju zbog mreže" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Procenjeno kašnjenje unosa je procena vremena koje je aplikaciji potrebno da odgovori na unos korisnika, u milisekundama, tokom najprometnijeg roka od 5 sekundi za učitavanje stranice. Ako je kašnjenje veće od 50 ms, korisnici će možda smatrati da aplikacija radi sporo. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Procenjeno kašnjenje unosa je procena vremena koje je aplikaciji potrebno da odgovori na unos korisnika, u milisekundama, tokom najprometnijeg roka od 5 sekundi za učitavanje stranice. Ako je kašnjenje veće od 50 ms, korisnici će možda smatrati da aplikacija radi sporo. [Saznajte više](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Procenjeno kašnjenje unosa" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Prvo prikazivanje sadržaja označava vreme kada se prikazuju prvi tekst ili slika. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Prvo prikazivanje sadržaja označava vreme kada se prikazuju prvi tekst ili slika. [Saznajte više](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Prvo prikazivanje sadržaja" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Vreme prvog neaktivnog procesora označava prvi trenutak u kome je glavna nit stranice dovoljno neaktivna da bi obradila unos. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Vreme prvog neaktivnog procesora označava prvi trenutak u kom je glavna nit stranice dovoljno neaktivna da bi obradila unos. [Saznajte više](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Vreme prvog neaktivnog procesora" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Prvo značajno prikazivanje označava vreme kada primarni sadržaj stranice postaje vidljiv. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Prvo značajno prikazivanje označava vreme kada primarni sadržaj stranice postaje vidljiv. [Saznajte više](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Prvo značajno prikazivanje" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Vreme do interakcije je količina vremena koja je potrebna da bi stranica postala potpuno interaktivna. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Vreme do interakcije je količina vremena koja je potrebna da bi stranica postala potpuno interaktivna. [Saznajte više](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Vreme početka interakcije" @@ -813,7 +813,7 @@ "message": "Maks. potencijalno kašnjenje prvog prikaza" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Indeks brzine prikazuje koliko brzo sadržaj stranice postaje vidljiv za korisnike. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Indeks brzine prikazuje koliko brzo sadržaj stranice postaje vidljiv za korisnike. [Saznajte više](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Indeks brzine" @@ -837,7 +837,7 @@ "message": "Pozadinska kašnjenja servera" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Serviser omogućava da veb-aplikacija bude pouzdana u nepredvidivim uslovima mreže. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Serviser omogućava da veb-aplikacija bude pouzdana u nepredvidivim uslovima mreže. [Saznajte više](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` ne odgovara kodom 200 kada je oflajn" @@ -861,7 +861,7 @@ "message": "Cilj za učinak" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Ako ste već podesili HTTPS, uverite se da preusmeravate sav HTTP saobraćaj na HTTPS da biste omogućili bezbedne veb-funkcije za sve korisnike. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Ako ste već podesili HTTPS, uverite se da preusmeravate sav HTTP saobraćaj na HTTPS da biste omogućili bezbedne veb-funkcije za sve korisnike. [Saznajte više](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Ne preusmerava HTTP saobraćaj na HTTPS" @@ -870,7 +870,7 @@ "message": "Preusmerava HTTP saobraćaj na HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Preusmeravanja dovode do dodatnih kašnjenja pre učitavanja stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Preusmeravanja dovode do dodatnih kašnjenja pre učitavanja stranice. [Saznajte više](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Izbegavajte višestruka preusmeravanja stranice" @@ -1035,7 +1035,7 @@ "message": "Ciljevi dodirivanja imaju odgovarajuću veličinu" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Serviser je tehnologija koja omogućava aplikaciji da koristi mnoge funkcije progresivnih veb-aplikacija, poput oflajn rada, dodavanja na početni ekran i iskačućih obaveštenja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Serviser je tehnologija koja omogućava aplikaciji da koristi mnoge funkcije progresivnih veb-aplikacija, poput oflajn rada, dodavanja na početni ekran i iskačućih obaveštenja. [Saznajte više](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Ovu stranicu kontroliše serviser, ali nije pronađen nijedan `start_url` jer nije uspelo raščlanjivanje manifesta kao važeće JSON datoteke" @@ -1056,7 +1056,7 @@ "message": "Registruje serviser koji kontroliše stranicu i `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Tematski uvodni ekran obezbeđuje kvalitetan doživljaj kada korisnici pokreću aplikaciju sa početnih ekrana. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Tematski uvodni ekran obezbeđuje kvalitetan doživljaj kada korisnici pokreću aplikaciju sa početnih ekrana. [Saznajte više](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Nije konfigurisano za prilagođeni uvodni ekran" @@ -1065,7 +1065,7 @@ "message": "Konfigurisano za prilagođeni uvodni ekran" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Traka za adresu pregledača može da ima temu koja odgovara sajtu. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Traka za adresu pregledača može da ima temu koja odgovara sajtu. [Saznajte više](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Ne podešava boju teme za traku za adresu." @@ -1092,7 +1092,7 @@ "message": "Nezavisna upotreba" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Vreme prvog odgovora određuje vreme u koje server šalje odgovor. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Vreme prvog odgovora određuje vreme u koje server šalje odgovor. [Saznajte više](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Osnovnom dokumentu je trebalo {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Tip" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Preporučujemo vam da opremite aplikaciju API-jem za vreme korisnika da biste izmerili učinak aplikacije u realnom svetu tokom ključnih korisničkih doživljaja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Preporučujemo vam da opremite aplikaciju API-jem za vreme korisnika da biste izmerili učinak aplikacije u realnom svetu tokom ključnih korisničkih doživljaja. [Saznajte više](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 vreme korisnika}one{# vreme korisnika}few{# vremena korisnika}other{# vremena korisnika}}" @@ -1125,7 +1125,7 @@ "message": "Povezivanje unapred <link> je pronađeno za „{securityOrigin}“, ali ga pregledač nije upotrebio. Proverite da li pravilno koristite atribut `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Razmislite o tome da dodate savete za resurse `preconnect` ili `dns-prefetch` kako biste uspostavili rane veze sa važnim izvorima trećih strana. [Saznajte više](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Razmislite o tome da dodate savete za resurse `preconnect` ili `dns-prefetch` kako biste uspostavili rane veze sa važnim izvorima trećih strana. [Saznajte više](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Povežite se unapred sa potrebnim izvorima" @@ -1134,13 +1134,13 @@ "message": "Predučitavanje <link> je pronađeno za „{preloadURL}“, ali ga pregledač nije upotrebio. Proverite da li pravilno koristite atribut `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Preporučujemo vam da koristite `<link rel=preload>` kako biste kasnije tokom učitavanja stranice dali prioritet preuzimanju resursa koji se trenutno traže. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Preporučujemo vam da koristite `<link rel=preload>` kako biste kasnije tokom učitavanja stranice dali prioritet preuzimanju resursa koji se trenutno traže. [Saznajte više](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Unapred učitajte najvažnije zahteve" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Dodajte oznaku `<meta name=\"viewport\">` da biste optimizovali aplikaciju za ekrane na mobilnim uređajima. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Dodajte oznaku `<meta name=\"viewport\">` da biste optimizovali aplikaciju za ekrane na mobilnim uređajima. [Saznajte više](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Nije pronađena oznaka `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Ima oznaku `<meta name=\"viewport\">` sa oznakom `width` ili `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Aplikacija treba da prikazuje neki sadržaj kada je JavaScript onemogućen, čak i ako je to samo upozorenje korisniku da je JavaScript obavezan za korišćenje aplikacije. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Aplikacija treba da prikazuje neki sadržaj kada je JavaScript onemogućen, čak i ako je to samo upozorenje korisniku da je JavaScript obavezan za korišćenje aplikacije. [Saznajte više](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Telo stranice treba da prikazuje neki sadržaj ako joj skripte nisu dostupne." @@ -1164,7 +1164,7 @@ "message": "Ima neki sadržaj kada JavaScript nije dostupan" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Ako pravite progresivnu veb-aplikaciju, razmislite o tome da koristite serviser kako bi aplikacija mogla da radi oflajn. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Ako pravite progresivnu veb-aplikaciju, razmislite o tome da koristite serviser kako bi aplikacija mogla da radi oflajn. [Saznajte više](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Aktuelna stranica ne odgovara kodom 200 kada je oflajn"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr.json index 37029ba..bf92ffa 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr.json
@@ -30,10 +30,10 @@ "message": "Поједине надређене ARIA улоге морају да обухватају одређене подређене улоге да би правилно обављале намењене функције приступачности. [Сазнајте више](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Недостају елементи са улогом `[role]` који захтевају одређену подређену улогу `[role]`." + "message": "Елементима са ARIA улогом `[role]` који захтевају да подређени елементи садрже конкретни елемент `[role]` недостају неки или сви ти потребни подређени елементи." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Присутни су елементи са улогом `[role]` који захтевају одређену подређену улогу `[role]`" + "message": "Елементи са ARIA улогом `[role]` који захтевају да подређени елементи садрже конкретни елемент `[role]` имају све потребне подређене елементе." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Поједине подређене ARIA улоге морају да буду обухваћене одређеним надређеним улогама да би правилно обављале намењене функције приступачности. [Сазнајте више](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Читачи екрана имају функције које олакшавају кретање кроз табеле. Ако се побринете да се ћелије `<td>` које користе атрибут `[headers]` односе само на друге ћелије у истој табели, можете да побољшате доживљај за кориснике читача екрана. [Сазнајте више](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Ћелије у елементу `<table>` које користе атрибут `[headers]` односе се на друге ћелије у тој истој табели." + "message": "Ћелије у елементу `<table>` које користе атрибут `[headers]` односе се на елемент `id` који се не налази у истој табели." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Ћелије у елементу `<table>` које користе атрибут `[headers]` односе се само на друге ћелије у тој истој табели." + "message": "Ћелије у елементу `<table>` које користе атрибут `[headers]` односе се на ћелије табеле у истој табели." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Читачи екрана имају функције које олакшавају кретање кроз табеле. Ако се побринете да се наслови табела увек односе на неку групу ћелија, можете да побољшате доживљај за кориснике читача екрана. [Сазнајте више](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Елементи `<video>` садрже елемент `<track>` са атрибутом `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Да би изглед на iOS-у био идеалан када корисници додају прогресивну веб-апликацију на почетни екран, дефинишите икону `apple-touch-icon`. Она мора да усмерава на нетранспарентни квадратни PNG од 192 пиксела (или 180 пиксела). [Сазнајте више](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Да би изглед на iOS-у био идеалан када корисници додају прогресивну веб-апликацију на почетни екран, дефинишите икону `apple-touch-icon`. Она мора да усмерава на нетранспарентни квадратни PNG од 192 пиксела (или 180 пиксела). [Сазнајте више](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Не пружа важећи атрибут `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Укупно CPU време" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Препоручујемо вам да смањите време потребно за рашчлањивање, компајлирање и извршавање JS датотека. Приказивање мањих JS ресурса ће вам можда помоћи у томе. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Препоручујемо вам да смањите време потребно за рашчлањивање, компајлирање и извршавање JS датотека. Приказивање мањих JS ресурса ће вам можда помоћи у томе. [Сазнајте више](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Смањите време извршавања JavaScript датотека" @@ -351,25 +351,25 @@ "message": "Време извршавања JavaScript-а" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Велики GIF-ови нису корисни за приказивање анимираног садржаја. Препоручујемо вам да уместо GIF-ова користите MPEG4/WebM видео снимке за анимације и PNG/WebP за статичне слике да бисте уштедели мрежне податке. [Сазнајте више](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Велики GIF-ови нису корисни за приказивање анимираног садржаја. Препоручујемо вам да уместо GIF-ова користите MPEG4/WebM видео снимке за анимације и PNG/WebP за статичне слике да бисте уштедели мрежне податке. [Сазнајте више](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Користите видео формате за анимирани садржај" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Препоручујемо вам да одложите учитавање слика ван екрана и скривених слика док се сви веома важни ресурси не учитају како бисте смањили време до почетка интеракције. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Препоручујемо вам да одложите учитавање слика ван екрана и скривених слика док се сви веома важни ресурси не учитају како бисте смањили време до почетка интеракције. [Сазнајте више](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Одложите слике ван екрана" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Ресурси блокирају прво приказивање странице. Препоручујемо вам да приказујете све важне JS/CSS датотеке у тексту и да одложите све JS датотеке/стилове који нису толико важни. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Ресурси блокирају прво приказивање странице. Препоручујемо вам да приказујете све важне JS/CSS датотеке у тексту и да одложите све JS датотеке/стилове који нису толико важни. [Сазнајте више](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Елиминишите ресурсе који блокирају приказивање" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Велике мрежне ресурсе корисници морају да плате стварним новцем и они су веома повезани са дугим временима учитавања. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Велике мрежне ресурсе корисници морају да плате стварним новцем и они су веома повезани са дугим временима учитавања. [Сазнајте више](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Укупна величина је била {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Избегава огромне мрежне ресурсе" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Умањивањем CSS датотека можете да смањите величине мрежних ресурса. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Умањивањем CSS датотека можете да смањите величине мрежних ресурса. [Сазнајте више](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Умањите CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Умањивање JavaScript датотека може да смањи величине ресурса и време рашчлањивања скрипта. [Сазнајте више](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Умањивање JavaScript датотека може да смањи величине ресурса и време рашчлањивања скрипта. [Сазнајте више](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Умањите JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Уклоните неактивна правила из описа стилова и одложите учитавање CSS-а који се не користи за садржај изнад прелома да бисте смањили непотребну потрошњу података током мрежних активности. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Уклоните неактивна правила из описа стилова и одложите учитавање CSS-а који се не користи за садржај изнад прелома да бисте смањили непотребну потрошњу података током мрежних активности. [Сазнајте више](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Уклоните некоришћени CSS" @@ -405,7 +405,7 @@ "message": "Уклоните некоришћени JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Дуго трајање кеша може да убрза поновне посете страници. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Дуго трајање кеша може да убрза поновне посете страници. [Сазнајте више](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Пронађен је 1 ресурс}one{Пронађен је # ресурс}few{Пронађена су # ресурса}other{Пронађено је # ресурса}}" @@ -417,31 +417,31 @@ "message": "Користи ефикасне смернице кеша на статичним елементима" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Оптимизоване слике се учитавају брже и троше мање мобилних података. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Оптимизоване слике се учитавају брже и троше мање мобилних података. [Сазнајте више](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Ефикасно кодирајте слике" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Приказујте слике одговарајуће величине да бисте уштедели мобилне податке и побољшали време учитавања. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Приказујте слике одговарајуће величине да бисте уштедели мобилне податке и побољшали време учитавања. [Сазнајте више](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Одредите одговарајућу величину слика" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Ресурсе засноване на тексту треба да приказујете у компримованом формату (gzip, deflate или brotli) да бисте смањили укупну количину потрошених мрежних података. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Ресурсе засноване на тексту треба да приказујете у компримованом формату (gzip, deflate или brotli) да бисте смањили укупну количину потрошених мрежних података. [Сазнајте више](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Омогућите компресију текста" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Формати слика као што су JPEG 2000, JPEG XR и WebP често пружају бољу компресију него PNG или JPEG, што подразумева бржа преузимања и мању потрошњу података. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Формати слика као што су JPEG 2000, JPEG XR и WebP често пружају бољу компресију него PNG или JPEG, што подразумева бржа преузимања и мању потрошњу података. [Сазнајте више](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Приказујте слике у форматима следеће генерације" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Ако се ширина садржаја апликације не подудара са ширином области приказа, апликација можда није оптимизована за екране на мобилним уређајима. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Ако се ширина садржаја апликације не подудара са ширином области приказа, апликација можда није оптимизована за екране на мобилним уређајима. [Сазнајте више](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Величина области приказа од {innerWidth} пиксела се не подудара са величином прозора од {outerWidth} пиксела." @@ -453,7 +453,7 @@ "message": "Садржај је одговарајуће величине за област приказа" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Ланци веома важних захтева у наставку вам приказују који ресурси се учитавају са високим приоритетом. Препоручујемо вам да смањите дужину ланаца, да смањите величину преузимања за ресурсе или да одложите преузимање ресурса који нису неопходни ради бржег учитавања странице. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Ланци веома важних захтева у наставку вам приказују који ресурси се учитавају са високим приоритетом. Препоручујемо вам да смањите дужину ланаца, да смањите величину преузимања за ресурсе или да одложите преузимање ресурса који нису неопходни ради бржег учитавања странице. [Сазнајте више](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Пронађен је 1 ланац}one{Пронађен је # ланац}few{Пронађена су # ланца}other{Пронађено је # ланаца}}" @@ -675,7 +675,7 @@ "message": "Ниједна грешка прегледача није евидентирана у конзоли" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Искористите CSS функцију за приказ фонтова да бисте били сигурни да корисник може да види текст док се веб-фонтови учитавају. [Сазнајте више](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Искористите CSS функцију за приказ фонтова да бисте били сигурни да корисник може да види текст док се веб-фонтови учитавају. [Сазнајте више](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Побрините се да текст остане видљив током учитавања веб-фонтова" @@ -705,7 +705,7 @@ "message": "Неважеће информације о величини слике {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Прегледачи могу проактивно да траже од корисника да додају апликацију на почетни екран, што може да доведе до већег ангажовања. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Прегледачи могу проактивно да траже од корисника да додају апликацију на почетни екран, што може да доведе до већег ангажовања. [Сазнајте више](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Манифест веб-апликације не задовољава услове за инсталирање" @@ -729,7 +729,7 @@ "message": "Користи HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Брзо учитавање странице преко мобилне мреже обезбеђује добар доживљај корисницима мобилних уређаја. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Брзо учитавање странице преко мобилне мреже обезбеђује добар доживљај корисницима мобилних уређаја. [Сазнајте више](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Интерактивно за {timeInMs, number, seconds} сек" @@ -750,7 +750,7 @@ "message": "Категорија" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Размислите о томе да смањите време потребно за рашчлањивање, компајлирање и извршавање JS датотека. Приказивање мањих JS ресурса ће вам можда помоћи у томе." + "message": "Препоручујемо вам да смањите време потребно за рашчлањивање, компајлирање и извршавање JS датотека. Приказивање мањих JS ресурса ће вам можда помоћи у томе. [Сазнајте више](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Смањите рад главне нити" @@ -759,49 +759,49 @@ "message": "Смањује рад главне нити" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Да би имали што више корисника, сајтови треба да раде у свим значајнијим прегледачима. [Сазнајте више](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Да би имали што више корисника, сајтови треба да раде у свим значајнијим прегледачима. [Сазнајте више](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Сајт ради у различитим веб-прегледачима" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Уверите се да до појединачних страница воде прецизни линкови преко URL-ова и да су URL-ови јединствени у сврху дељења на друштвеним медијима. [Сазнајте више](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Уверите се да до појединачних страница воде прецизни линкови преко URL-ова и да су URL-ови јединствени у сврху дељења на друштвеним медијима. [Сазнајте више](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Свака страница има URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Корисници треба да имају утисак да су прелази брзи док додирују ставке, чак и на спорој мрежи, што је кључно за утисак који ће имати о учинку. [Сазнајте више](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Корисници треба да имају утисак да су прелази брзи док додирују ставке, чак и на спорој мрежи. Овај доживљај је кључан за утисак који ће корисник имати о учинку. [Сазнајте више](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Преласци са странице на страницу не делују као да се блокирају због мреже" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Процењено кашњење уноса је процена времена које је апликацији потребно да одговори на унос корисника, у милисекундама, током најпрометнијег рока од 5 секунди за учитавање странице. Ако је кашњење веће од 50 ms, корисници ће можда сматрати да апликација ради споро. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Процењено кашњење уноса је процена времена које је апликацији потребно да одговори на унос корисника, у милисекундама, током најпрометнијег рока од 5 секунди за учитавање странице. Ако је кашњење веће од 50 ms, корисници ће можда сматрати да апликација ради споро. [Сазнајте више](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Процењено кашњење уноса" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Прво приказивање садржаја означава време када се приказују први текст или слика. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Прво приказивање садржаја означава време када се приказују први текст или слика. [Сазнајте више](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Прво приказивање садржаја" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Време првог неактивног процесора означава први тренутак у коме је главна нит странице довољно неактивна да би обрадила унос. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Време првог неактивног процесора означава први тренутак у ком је главна нит странице довољно неактивна да би обрадила унос. [Сазнајте више](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Време првог неактивног процесора" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Прво значајно приказивање означава време када примарни садржај странице постаје видљив. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Прво значајно приказивање означава време када примарни садржај странице постаје видљив. [Сазнајте више](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Прво значајно приказивање" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Време до интеракције је количина времена која је потребна да би страница постала потпуно интерактивна. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Време до интеракције је количина времена која је потребна да би страница постала потпуно интерактивна. [Сазнајте више](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Време почетка интеракције" @@ -813,7 +813,7 @@ "message": "Макс. потенцијално кашњење првог приказа" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Индекс брзине приказује колико брзо садржај странице постаје видљив за кориснике. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Индекс брзине приказује колико брзо садржај странице постаје видљив за кориснике. [Сазнајте више](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Индекс брзине" @@ -837,7 +837,7 @@ "message": "Позадинска кашњења сервера" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Сервисер омогућава да веб-апликација буде поуздана у непредвидивим условима мреже. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Сервисер омогућава да веб-апликација буде поуздана у непредвидивим условима мреже. [Сазнајте више](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` не одговара кодом 200 када је офлајн" @@ -861,7 +861,7 @@ "message": "Циљ за учинак" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Ако сте већ подесили HTTPS, уверите се да преусмеравате сав HTTP саобраћај на HTTPS да бисте омогућили безбедне веб-функције за све кориснике. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Ако сте већ подесили HTTPS, уверите се да преусмеравате сав HTTP саобраћај на HTTPS да бисте омогућили безбедне веб-функције за све кориснике. [Сазнајте више](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Не преусмерава HTTP саобраћај на HTTPS" @@ -870,7 +870,7 @@ "message": "Преусмерава HTTP саобраћај на HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Преусмеравања доводе до додатних кашњења пре учитавања странице. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Преусмеравања доводе до додатних кашњења пре учитавања странице. [Сазнајте више](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Избегавајте вишеструка преусмеравања странице" @@ -1035,7 +1035,7 @@ "message": "Циљеви додиривања имају одговарајућу величину" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Сервисер је технологија која омогућава апликацији да користи многе функције прогресивних веб-апликација, попут офлајн рада, додавања на почетни екран и искачућих обавештења. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Сервисер је технологија која омогућава апликацији да користи многе функције прогресивних веб-апликација, попут офлајн рада, додавања на почетни екран и искачућих обавештења. [Сазнајте више](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Ову страницу контролише сервисер, али није пронађен ниједан `start_url` јер није успело рашчлањивање манифеста као важеће JSON датотеке" @@ -1056,7 +1056,7 @@ "message": "Региструје сервисер који контролише страницу и `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Тематски уводни екран обезбеђује квалитетан доживљај када корисници покрећу апликацију са почетних екрана. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Тематски уводни екран обезбеђује квалитетан доживљај када корисници покрећу апликацију са почетних екрана. [Сазнајте више](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Није конфигурисано за прилагођени уводни екран" @@ -1065,7 +1065,7 @@ "message": "Конфигурисано за прилагођени уводни екран" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Трака за адресу прегледача може да има тему која одговара сајту. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Трака за адресу прегледача може да има тему која одговара сајту. [Сазнајте више](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Не подешава боју теме за траку за адресу." @@ -1092,7 +1092,7 @@ "message": "Независна употреба" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Време првог одговора одређује време у које сервер шаље одговор. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Време првог одговора одређује време у које сервер шаље одговор. [Сазнајте више](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Основном документу је требало {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Тип" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Препоручујемо вам да опремите апликацију API-јем за време корисника да бисте измерили учинак апликације у реалном свету током кључних корисничких доживљаја. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Препоручујемо вам да опремите апликацију API-јем за време корисника да бисте измерили учинак апликације у реалном свету током кључних корисничких доживљаја. [Сазнајте више](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 време корисника}one{# време корисника}few{# времена корисника}other{# времена корисника}}" @@ -1125,7 +1125,7 @@ "message": "Повезивање унапред <link> је пронађено за „{securityOrigin}“, али га прегледач није употребио. Проверите да ли правилно користите атрибут `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Размислите о томе да додате савете за ресурсе `preconnect` или `dns-prefetch` како бисте успоставили ране везе са важним изворима трећих страна. [Сазнајте више](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Размислите о томе да додате савете за ресурсе `preconnect` или `dns-prefetch` како бисте успоставили ране везе са важним изворима трећих страна. [Сазнајте више](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Повежите се унапред са потребним изворима" @@ -1134,13 +1134,13 @@ "message": "Предучитавање <link> је пронађено за „{preloadURL}“, али га прегледач није употребио. Проверите да ли правилно користите атрибут `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Препоручујемо вам да користите `<link rel=preload>` како бисте касније током учитавања странице дали приоритет преузимању ресурса који се тренутно траже. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Препоручујемо вам да користите `<link rel=preload>` како бисте касније током учитавања странице дали приоритет преузимању ресурса који се тренутно траже. [Сазнајте више](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Унапред учитајте најважније захтеве" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Додајте ознаку `<meta name=\"viewport\">` да бисте оптимизовали апликацију за екране на мобилним уређајима. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Додајте ознаку `<meta name=\"viewport\">` да бисте оптимизовали апликацију за екране на мобилним уређајима. [Сазнајте више](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Није пронађена ознака `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "Има ознаку `<meta name=\"viewport\">` са ознаком `width` или `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Апликација треба да приказује неки садржај када је JavaScript онемогућен, чак и ако је то само упозорење кориснику да је JavaScript обавезан за коришћење апликације. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Апликација треба да приказује неки садржај када је JavaScript онемогућен, чак и ако је то само упозорење кориснику да је JavaScript обавезан за коришћење апликације. [Сазнајте више](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Тело странице треба да приказује неки садржај ако јој скрипте нису доступне." @@ -1164,7 +1164,7 @@ "message": "Има неки садржај када JavaScript није доступан" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Ако правите прогресивну веб-апликацију, размислите о томе да користите сервисер како би апликација могла да ради офлајн. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Ако правите прогресивну веб-апликацију, размислите о томе да користите сервисер како би апликација могла да ради офлајн. [Сазнајте више](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Актуелна страница не одговара кодом 200 када је офлајн"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sv.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sv.json index 4859b83a..c9d8d6a 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sv.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sv.json
@@ -30,10 +30,10 @@ "message": "Vissa överordnade element med ARIA-attributet role måste ha vissa underordnade element med role för att hjälpmedlen ska fungera som avsett. [Läs mer](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Vissa obligatoriska underordnade element med `[role]` saknas för element med `[role]`" + "message": "Några eller alla obligatoriska underordnade element med `[role]` saknas för element med ARIA-rollen `[role]`." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Alla obligatoriska underordnade element med `[role]` används för element med `[role]`" + "message": "Alla obligatoriska underordnade element med `[role]` används för element med ARIA-rollen `[role]`." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Vissa underordnade element med ARIA-attributet role måste ha ett bestämt överordnat element med role för att hjälpmedlen ska fungera som avsett. [Läs mer](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Skärmläsare har funktioner som gör det enklare att navigera i tabeller. Sidan fungerar bättre för den som använder skärmläsare om attributet `[headers]` i `<td>`-celler bara refererar till andra celler i samma tabell. [Läs mer](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Det finns celler i ett `<table>`-element där attributet `[headers]` inte hänvisar till andra celler i samma tabell." + "message": "Det finns celler i ett `<table>`-element där attributet `[headers]` hänvisar till ett `id`-element som inte finns i samma tabell." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "I alla celler i ett `<table>`-element där attributet `[headers]` används hänvisar det till andra celler i samma tabell." + "message": "Det finns celler i ett `<table>`-element där attributet `[headers]` hänvisar till celler i samma tabell." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Skärmläsare har funktioner som gör det enklare att navigera i tabeller. Det fungerar bättre för den som använder skärmläsare om det inte finns några tabellrubriker som hänger i luften utan att referera till några dataceller. [Läs mer](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Alla `<video>`-element innehåller ett `<track>`-element med `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Definiera en `apple-touch-icon` för att få bästa möjliga utseende i iOS när användare lägger till en progressiv webbapp på startskärmen. Den måste peka på en icke-transparent, kvadratisk PNG med sidan 192 pixlar (eller 180 pixlar). [Läs mer](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Definiera en `apple-touch-icon` för att få bästa möjliga utseende i iOS när användare lägger till en progressiv webbapp på startskärmen. Den måste peka på en icke-transparent, kvadratisk PNG med sidan 192 pixlar (eller 180 pixlar). [Läs mer](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Anger inte ett giltigt `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Processortid totalt" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Minska tiden det tar att tolka, kompilera och köra JS-kod. Det brukar hjälpa att minska storleken på JS-resurserna som skickas. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Minska tiden det tar att tolka, kompilera och köra JS-kod. Det brukar hjälpa att minska storleken på JS-resurserna som skickas. [Läs mer](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Minska körningstiden för JavaScript" @@ -351,25 +351,25 @@ "message": "Körningstid för JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Stora GIF-filer är inte ett effektivt sätt att visa animerat innehåll. I stället för GIF kan du använda videor i MPEG4-/WebM-format för animationer och PNG-/WebP-format för statiska bilder. Då minskar antalet byte som skickas via nätverket. [Läs mer](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Stora GIF-filer är inte ett effektivt sätt att visa animerat innehåll. I stället för GIF kan du använda videor i MPEG4-/WebM-format för animationer och PNG-/WebP-format för statiska bilder. Då minskar antalet byte som skickas via nätverket. [Läs mer](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Använd videoformat för animationer" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Låt bilder utanför skärmen och dolda bilder läsas in med lat inläsning efter att alla viktiga resurser är inlästa så att tiden till interaktivt tillstånd minskar. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Låt bilder utanför skärmen och dolda bilder läsas in med lat inläsning efter att alla viktiga resurser är inlästa så att tiden till interaktivt tillstånd minskar. [Läs mer](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Skjut upp inläsningen av bilder som inte visas på skärmen" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Resurser blockerar sidans första rendering. Infoga nödvändig JS-/CSS-kod direkt på sidan och skjut upp inläsningen av JS-kod/formatmallar som är mindre viktiga. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Resurser blockerar sidans första rendering. Infoga nödvändig JS-/CSS-kod direkt på sidan och skjut upp inläsningen av JS-kod/formatmallar som är mindre viktiga. [Läs mer](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Ta bort resurser som blockerar renderingen" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Hög nätverksbelastning kostar användarna pengar och har ett starkt samband med lång inläsningstid. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Hög nätverksbelastning kostar användarna pengar och har ett starkt samband med lång inläsningstid. [Läs mer](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Storleken totalt var {totalBytes, number, bytes} kB" @@ -381,19 +381,19 @@ "message": "Undviker enorm nätverksbelastning" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Att minifiera CSS-filer kan minska nätverksbelastningen. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Att minifiera CSS-filer kan minska nätverksbelastningen. [Läs mer](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Minifiera CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Att minifiera JavaScript-filer kan minska nätverksbelastningen och tiden det tar att tolka skript. [Läs mer](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Att minifiera JavaScript-filer kan minska nätverksbelastningen och tiden det tar att tolka skript. [Läs mer](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Minifiera JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Ta bort regler som inte används från formatmallar och skjut upp inläsning av CSS som inte används för innehåll ovanför mitten för att minska onödig nätverksaktivitet. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Ta bort regler som inte används från formatmallar och skjut upp inläsning av CSS som inte används för innehåll ovanför mitten för att minska onödig nätverksaktivitet. [Läs mer](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Ta bort oanvänd CSS" @@ -405,7 +405,7 @@ "message": "Ta bort JavaScript som inte används" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Om filerna cachelagras under längre tid kan upprepade besök på sidan gå snabbare. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Om filerna cachelagras under längre tid kan upprepade besök på sidan gå snabbare. [Läs mer](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 resurs hittades}other{# resurser hittades}}" @@ -417,31 +417,31 @@ "message": "Använder en effektiv cachelagringspolicy för statiska tillgångar" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimerade bilder läses in snabbare och förbrukar mindre mobildata. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimerade bilder läses in snabbare och förbrukar mindre mobildata. [Läs mer](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Koda bilder effektivt" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Minska mobildataförbrukningen och förbättra inläsningstiden genom att skicka bilder i rätt storlek. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Minska mobildataförbrukningen och förbättra inläsningstiden genom att skicka bilder i rätt storlek. [Läs mer](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Använd bilder med rätt storlek" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Textresurser bör skickas komprimerade (gzip, deflate eller brotli) så att färre byte skickas via nätverket. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Textresurser bör skickas komprimerade (gzip, deflate eller brotli) så att färre byte skickas via nätverket. [Läs mer](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Aktivera textkomprimering" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Bildformat som JPEG 2000, JPEG XR och WebP ger ofta bättre komprimering än PNG eller JPEG. Det gör att nedladdningen går snabbare och ger minskad dataförbrukning. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Bildformat som JPEG 2000, JPEG XR och WebP ger ofta bättre komprimering än PNG eller JPEG. Det gör att nedladdningen går snabbare och ger minskad dataförbrukning. [Läs mer](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Skicka bilder i modernare bildformat" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Om bredden på appens innehåll inte stämmer överens med bredden på visningsområdet kanske inte appen är optimerad för mobilskärmar. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Om bredden på appens innehåll inte stämmer överens med bredden på visningsområdet kanske inte appen är optimerad för mobilskärmar. [Läs mer](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Visningsområdets storlek på {innerWidth} pixlar stämmer inte överens med fönsterstorleken på {outerWidth} pixlar." @@ -453,7 +453,7 @@ "message": "Innehållet har rätt storlek för visningsområdet" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Orderkedjorna nedan visar vilka resurser som läses in med hög prioritet. Se om du kan förbättra sidinläsningstiden genom att göra kedjorna kortare, minska storleken på resurser som laddas ned eller skjuta upp nedladdningen av onödiga resurser. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Orderkedjorna nedan visar vilka resurser som läses in med hög prioritet. Se om du kan förbättra sidinläsningstiden genom att göra kedjorna kortare, minska storleken på resurser som laddas ned eller skjuta upp nedladdningen av onödiga resurser. [Läs mer](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 kedja hittades}other{# kedjor hittades}}" @@ -675,7 +675,7 @@ "message": "Inga webbläsarfel loggades i konsolen" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Använd funktionen font-display i CSS så att texten är synlig för användaren medan webbteckensnitten läses in. [Läs mer](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Använd funktionen font-display i CSS så att texten är synlig för användaren medan webbteckensnitten läses in. [Läs mer](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Se till att all text förblir synlig medan webbteckensnitten läses in" @@ -705,7 +705,7 @@ "message": "Ogiltig information om bildstorlek {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Webbläsare kan i förväg uppmana användare att lägga till appen på startskärmen, vilket leder till att de använder den mer. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Webbläsare kan i förväg uppmana användare att lägga till appen på startskärmen, vilket leder till att de använder den mer. [Läs mer](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Webbappens manifest uppfyller inte kraven för installation" @@ -729,7 +729,7 @@ "message": "Använder HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Snabb sidinläsning i mobila nätverk ger en bra upplevelse för mobila användare. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Snabb sidinläsning i mobila nätverk ger en bra upplevelse för mobila användare. [Läs mer](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Interaktiv vid {timeInMs, number, seconds} s" @@ -750,7 +750,7 @@ "message": "Kategori" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Minska tiden det tar att tolka, kompilera och köra JS-kod. Det brukar hjälpa att minska storleken på JS-resurserna som skickas." + "message": "Minska tiden det tar att tolka, kompilera och köra JS-kod. Det brukar hjälpa att minska storleken på JS-resurserna som skickas. [Läs mer](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Minska arbetsbelastningen på modertråden" @@ -759,49 +759,49 @@ "message": "Minskar arbetsbelastningen på modertråden" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Webbplatser ska fungera i alla stora webbläsare för att nå så många användare som möjligt. [Läs mer](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Webbplatser ska fungera i alla stora webbläsare för att nå så många användare som möjligt. [Läs mer](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Webbläsaren fungerar i olika webbläsare" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Kontrollera att enskilda sidor går att djuplänka via en webbadress och att webbadresserna är unika för syftet att dela sidorna på sociala medier. [Läs mer](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Kontrollera att enskilda sidor går att djuplänka via en webbadress och att webbadresserna är unika för syftet att dela sidorna på sociala medier. [Läs mer](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Varje sida har en webbadress" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Övergångar ska gå snabbt när du trycker i appen, även på långsamma nätverk. Det är avgörande för vad användarna uppfattar som prestanda. [Läs mer](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Övergångar ska gå snabbt när du trycker i appen, även på långsamma nätverk. Det är avgörande för vad användarna uppfattar som prestanda. [Läs mer](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Det ska inte kännas som om övergångar mellan sidor blockeras på nätverket" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Uppskattad inmatningslatens är en uppskattning av hur lång tid (i millisekunder) det tar innan appen svarar på användarens inmatning under den mest aktiva femsekundersperioden av sidinläsningen. Om latensen är högre än 50 ms kan användarna uppfatta appen som seg. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Uppskattad inmatningslatens är en uppskattning av hur lång tid (i millisekunder) det tar innan appen svarar på användarens inmatning under den mest aktiva femsekundersperioden av sidinläsningen. Om latensen är högre än 50 ms kan användarna uppfatta appen som seg. [Läs mer](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Beräknad inmatningslatens" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Första innehållsrenderingen anger när den första texten eller bilden ritades upp. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Första innehållsrenderingen anger när den första texten eller bilden ritades upp. [Läs mer](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Första uppritningen av innehåll" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Första CPU-avbrottet anger när sidans modertråd först blev inaktiv nog att hantera indata. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Första CPU-avbrottet anger när sidans modertråd först blev inaktiv nog att hantera indata. [Läs mer](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Första CPU-inaktivitet" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Första användbara renderingen anger när sidans primära innehåll blev synligt. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Första användbara renderingen anger när sidans primära innehåll blev synligt. [Läs mer](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Första meningsfulla skärmuppritningen" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Tiden till interaktivitet är den tid det tar innan sidan är fullständigt interaktiv. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Tiden till interaktivitet är den tid det tar innan sidan är fullständigt interaktiv. [Läs mer](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Tid till interaktivt tillstånd" @@ -813,7 +813,7 @@ "message": "Högsta potentiella fördröjning till första inmatningen" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Hastighetsindexet visar hur snabbt en sida fylls med synligt innehåll. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Hastighetsindexet visar hur snabbt en sida fylls med synligt innehåll. [Läs mer](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Hastighetsindex" @@ -837,7 +837,7 @@ "message": "Serverlatens" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Med en tjänstefunktion kan appen användas under oförutsägbara nätverksförhållanden. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Med en tjänstefunktion kan appen användas under oförutsägbara nätverksförhållanden. [Läs mer](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "HTTP-statuskoden 200 visas inte när `start_url` är offline" @@ -861,7 +861,7 @@ "message": "Prestandabudget" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Om du redan har konfigurerat HTTPS ska du omdirigera all HTTP-trafik till HTTPS för att se till att webbfunktionerna är säkra för alla användare. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Om du redan har konfigurerat HTTPS ska du omdirigera all HTTP-trafik till HTTPS för att se till att webbfunktionerna är säkra för alla användare. [Läs mer](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Omdirigerar inte HTTP-trafik till HTTPS" @@ -870,7 +870,7 @@ "message": "Omdirigerar HTTP-trafik till HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Omdirigeringar medför en ytterligare fördröjning innan sidan kan läsas in. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Omdirigeringar medför en ytterligare fördröjning innan sidan kan läsas in. [Läs mer](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Undvik upprepade omdirigeringar" @@ -1035,7 +1035,7 @@ "message": "Tryckmål har lämplig storlek" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Tjänstefunktioner är en teknik som gör det möjligt att använda flera funktioner för progressiva webbappar i appen, till exempel offlineanvändning, pushmeddelanden och att lägga till den på startskärmen. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Tjänstefunktioner är en teknik som gör det möjligt att använda flera funktioner för progressiva webbappar i appen, till exempel offlineanvändning, pushmeddelanden och att lägga till den på startskärmen. [Läs mer](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Sidan styrs av en tjänstefunktion, men `start_url` hittades inte eftersom det inte gick att analysera manifestet som giltigt JSON-format." @@ -1056,7 +1056,7 @@ "message": "Registrerar en tjänstefunktion som styr sidan och `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Med hjälp av en välkomstskärm med ett tema som visas när användarna startar appen på startskärmen kan du se till att de får en bra upplevelse. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Med hjälp av en välkomstskärm med ett tema som visas när användarna startar appen på startskärmen kan du se till att de får en bra upplevelse. [Läs mer](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Har inte konfigurerats för en anpassad välkomstskärm" @@ -1065,7 +1065,7 @@ "message": "Konfigurerad för en anpassad välkomstskärm" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Det går att ändra temat för webbläsarens adressfält så att det matchar din webbplats. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Det går att ändra temat för webbläsarens adressfält så att det matchar din webbplats. [Läs mer](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Anger inte ett färgtema för adressfältet." @@ -1092,7 +1092,7 @@ "message": "Tredjepartsanvändning" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Mätvärdet Tid till första byte anger när servern svarade. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Mätvärdet Tid till första byte anger när servern svarade. [Läs mer](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Rotdokumentet tog {timeInMs, number, milliseconds} ms" @@ -1113,7 +1113,7 @@ "message": "Typ" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Om du bygger in User Timing API i appen kan du mäta appens prestanda i realtid i samband med viktiga användarupplevelser. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Om du bygger in User Timing API i appen kan du mäta appens prestanda i realtid i samband med viktiga användarupplevelser. [Läs mer](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 användartimer}other{# användartimer}}" @@ -1125,7 +1125,7 @@ "message": "Ett <link>-element för föranslutning till {securityOrigin} hittades men ignorerades av webbläsaren. Kontrollera att attributet `crossorigin` används korrekt." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Lägg till signaler för `preconnect` eller `dns-prefetch` så att viktiga anslutningar till tredje part upprättas tidigt. [Läs mer](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Lägg till signaler för `preconnect` eller `dns-prefetch` så att viktiga anslutningar till tredje part upprättas tidigt. [Läs mer](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Föranslut till obligatoriska källor" @@ -1134,13 +1134,13 @@ "message": "En <link> för förinläsning hittades för {preloadURL} men den användes inte av webbläsaren. Kontrollera att attributet `crossorigin` används korrekt." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Det kan vara bra att använda `<link rel=preload>` för att prioritera hämtning av resurser som kommer att begäras senare i sidinläsningen. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Det kan vara bra att använda `<link rel=preload>` för att prioritera hämtning av resurser som kommer att begäras senare i sidinläsningen. [Läs mer](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Läs in viktiga resurser i förväg" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Lägg till en `<meta name=\"viewport\">`-tagg för att optimera appen för mobilskärmar. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Lägg till en `<meta name=\"viewport\">`-tagg för att optimera appen för mobilskärmar. [Läs mer](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Ingen `<meta name=\"viewport\">`-tagg hittades" @@ -1152,7 +1152,7 @@ "message": "Har en `<meta name=\"viewport\">`-tagg med `width` eller `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Appen ska visa innehåll när JavaScript är inaktiverat, även om det bara är en varning till användaren om att JavaScript krävs för att använda appen. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Appen ska visa innehåll när JavaScript är inaktiverat, även om det bara är en varning till användaren om att JavaScript krävs för att använda appen. [Läs mer](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Någon form av innehåll ska renderas för sidans brödtext om dess skript inte är tillgängliga." @@ -1164,7 +1164,7 @@ "message": "Visar innehåll när JavaScript inte är tillgängligt" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Om du skapar en progressiv webbapp rekommenderar vi att du använder en tjänstefunktion så att appen kan användas offline. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Om du skapar en progressiv webbapp rekommenderar vi att du använder en tjänstefunktion så att appen kan användas offline. [Läs mer](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "HTTP-statuskoden 200 visas inte för den aktuella sidan när den är offline"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ta.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ta.json index e20bd6f..ba73afc 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ta.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ta.json
@@ -30,10 +30,10 @@ "message": "சில ARIA முதல்நிலைப் பங்களிப்புகள், அவற்றுக்கான அணுகல்தன்மை செயல்பாடுகளை செய்ய, குறிப்பிட்ட உபநிலைப் பங்களிப்புகளைக் கொண்டிருக்க வேண்டும். [மேலும் அறிக](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "குறிப்பிட்ட உபநிலை `[role]`கள் தேவைப்படுகின்ற `[role]` உறுப்புகள் விடுபட்டுள்ளன." + "message": "குறிப்பிட்ட `[role]` ஐக் கொண்டிருப்பதற்கு உபநிலைகள் தேவைப்படுகின்ற ARIA `[role]` ஐ உடைய உறுப்புகளில் தேவையான சில உபநிலைகளோ அனைத்துமோ காணப்படவில்லை." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "குறிப்பிட்ட உபநிலை `[role]`களுக்குத் தேவையான உறுப்புகளுடன் இருக்கும் `[role]`கள் இருக்கின்றன" + "message": "குறிப்பிட்ட `[role]` ஐக் கொண்டிருப்பதற்கு உபநிலைகள் தேவைப்படுகின்ற ARIA `[role]` ஐ உடைய உறுப்புகளில் தேவையான உபநிலைகள் உள்ளன." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "சில ARIA உபநிலைப் பங்களிப்புகள் அவற்றுக்கான அணுகல்தன்மை செயல்பாடுகளை சரியாக செய்ய, குறிப்பிட்ட முதல்நிலைப் பங்களிப்புகளில் இருக்க வேண்டும். [மேலும் அறிக](https://web.dev/aria-required-parent/)." @@ -276,13 +276,13 @@ "message": "அட்டவணைகளில் எளிதாகச் செல்வதற்கு ஸ்க்ரீன் ரீடர்களில் அம்சங்கள் உள்ளன. `[headers]` பண்புக்கூறைப் பயன்படுத்தும் `<td>` கலங்கள் அதே அட்டவணையில் உள்ள பிற கலங்களை மட்டும் குறிப்பிடுவதை உறுதிசெய்தால் அது ஸ்க்ரீன் ரீடர் பயனர்களின் அனுபவத்தை மேம்படுத்தக்கூடும். [மேலும் அறிக](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`<table>` பண்புக்கூறைப் பயன்படுத்தும் ஒரு `[headers]` உறுப்பிலுள்ள கலங்கள் அதே அட்டவணையின் பிற கலங்களைக் குறிப்பிடுகின்றன." + "message": "`[headers]` பண்புக்கூற்றைப் பயன்படுத்தும் `<table>` உறுப்பிலுள்ள கலங்கள் அதே அட்டவணையில் கண்டறியப்படாத `id` உறுப்பைக் குறிப்பிடுகின்றன." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "`[headers]` பண்புக்கூறைப் பயன்படுத்தும் `<table>` உறுப்பிலுள்ள கலங்கள் அதே அட்டவணையின் பிற கலங்களைக் குறிப்பிடுகின்றன." + "message": "`[headers]` பண்புக்கூற்றைப் பயன்படுத்தும் `<table>` உறுப்பிலுள்ள கலங்கள் அதே அட்டவணையிலுள்ள கலங்களைக் குறிப்பிடுகின்றன." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { - "message": "அட்டவணைகளில் எளிதாகச் செல்வதற்கு ஸ்க்ரீன் ரீடர்களில் அம்சங்கள் உள்ளன. டேபிள் தலைப்புகள் எப்போதும் சில கலங்களின் தொகுப்பைக் குறிப்பிடுமாறு அமைப்பது ஸ்க்ரீன் ரீடர் பயனர்களின் அனுபவத்தை மேம்படுத்தக்கூடும். [மேலும் அறிக](https://web.dev/th-has-data-cells/)." + "message": "அட்டவணைகளில் எளிதாகச் செல்வதற்கு ஸ்க்ரீன் ரீடர்களில் அம்சங்கள் உள்ளன. அட்டவணைத் தலைப்புகள் எப்போதும் சில கலங்களின் தொகுப்பைக் குறிப்பிடுமாறு அமைப்பது ஸ்க்ரீன் ரீடர் பயனர்களின் அனுபவத்தை மேம்படுத்தக்கூடும். [மேலும் அறிக](https://web.dev/th-has-data-cells/)." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": { "message": "`<th>` உறுப்புகளும் `[role=\"columnheader\"/\"rowheader\"]`ஐக் கொண்டுள்ள உறுப்புகளும் விவரிக்கும் தரவுக் கலங்கள் அவற்றுக்கு இல்லை." @@ -318,7 +318,7 @@ "message": "`<video>` உறுப்புகளில் `[kind=\"description\"]`ஐக் கொண்டுள்ள`<track>` உறுப்பு உள்ளது" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "முகப்புத் திரையில் நவீன இணைய ஆப்ஸை பயனர்கள் சேர்க்கும் போது iOSஸில் சிறப்பாகத் தோன்ற `apple-touch-icon` ஒன்றை வரையறுக்கவும். அது ஒளிபுகுத்தன்மையற்ற 192 பிகசல் (அல்லது 180 பிக்சல்) அளவுள்ள கட்ட வடிவத்திலான PNGயைக் காட்ட வேண்டும். [மேலும் அறிக](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "முகப்புத் திரையில் நவீன இணைய ஆப்ஸை பயனர்கள் சேர்க்கும் போது iOSஸில் சிறப்பாகத் தோன்ற `apple-touch-icon` ஒன்றை வரையறுக்கவும். அது ஒளிபுகுத்தன்மையற்ற 192 பிகசல் (அல்லது 180 பிக்சல்) அளவுள்ள கட்ட வடிவத்திலான PNGயைக் காட்ட வேண்டும். [மேலும் அறிக](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "செல்லுபடியாகும் `apple-touch-icon`ஐ வழங்கவில்லை" @@ -342,7 +342,7 @@ "message": "மொத்த CPU நேரம்" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "JSஸைப் பாகுபடுத்துதல், தொகுத்தல் மற்றும் இயக்குவதில் செலவழிக்கும் நேரத்தைக் குறைக்கவும். இதற்கு சிறிய அளவிலான JS ஆதாரங்களை வழங்குவது உதவக்கூடும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "JSஸைப் பாகுபடுத்துதல், தொகுத்தல் மற்றும் இயக்குவதில் செலவழிக்கும் நேரத்தைக் குறைக்கவும். இதற்கு சிறிய அளவிலான JS ஆதாரங்களை வழங்குவது உதவக்கூடும். [மேலும் அறிக](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "JavaScript செயல்பாட்டு நேரத்தைக் குறைக்கவும்" @@ -351,25 +351,25 @@ "message": "JavaScript செயல்பாட்டு நேரம்" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "அனிமேஷன் செய்தவற்றைக் காட்டுவதற்கு பெரிய அளவிலான GIFகள் பொருத்தமானவை அல்ல. நெட்வொர்க் பைட்களை சேமிக்க GIFக்குப் பதிலாக அனிமேஷன்களுக்கு MPEG4/WebM வீடியோக்களையும் நிலையான படங்களுக்கு PNG/WebP வடிவமைப்புகளையும் பயன்படுத்தவும். [மேலும் அறிக](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "அனிமேஷன் செய்தவற்றைக் காட்டுவதற்கு பெரிய அளவிலான GIFகள் பொருத்தமானவை அல்ல. நெட்வொர்க் பைட்களை சேமிக்க GIFக்குப் பதிலாக அனிமேஷன்களுக்கு MPEG4/WebM வீடியோக்களையும் நிலையான படங்களுக்கு PNG/WebP வடிவமைப்புகளையும் பயன்படுத்தவும். [மேலும் அறிக](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "அனிமேஷன் செய்யப்பட்ட உள்ளடக்கங்களுக்கு வீடியோ வடிவமைப்புகளைப் பயன்படுத்தவும்" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "எதிர்வினையாற்றும் நேரத்தைக் குறைக்க முக்கியமான அனைத்து ஆதாரங்களும் ஏற்றப்பட்ட பின்னர், திரைக்கு வெளியிலுள்ள மற்றும் மறைக்கப்பட்ட படங்களை மெதுவாக ஏற்றுமாறு அமைக்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "எதிர்வினையாற்றும் நேரத்தைக் குறைக்க முக்கியமான அனைத்து ஆதாரங்களும் ஏற்றப்பட்ட பின்னர், திரைக்கு வெளியிலுள்ள மற்றும் மறைக்கப்பட்ட படங்களை மெதுவாக ஏற்றுமாறு அமைக்கவும். [மேலும் அறிக](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "திரைக்கு வெளியிலுள்ள படங்களைத் தவிர்க்கவும்" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "ஆதாரங்கள் உங்கள் பக்கத்தின் முதல் தோற்றத்தைத் தடுக்கின்றன. முக்கிய JS/CSSஸை இன்லைனில் வழங்கவும். முக்கியமல்லாத அனைத்து JS/ஸ்டைல்களையும் தவிர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "ஆதாரங்கள் உங்கள் பக்கத்தின் முதல் தோற்றத்தைத் தடுக்கின்றன. முக்கிய JS/CSSஸை இன்லைனில் வழங்கவும். முக்கியமல்லாத அனைத்து JS/ஸ்டைல்களையும் தவிர்க்கவும். [மேலும் அறிக](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "ரென்டரிங்கைத் தடுக்கும் ஆதாரங்களை நீக்கவும்" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "அதிகளவிலான நெட்வொர்க் ஆதாரங்கள், பயனர்களுக்குப் பண இழப்பை ஏற்படுத்துவதோடு பக்கங்கள் ஏற்றப்பட நீண்ட நேரமாவதற்கும் காரணமாகின்றன. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "அதிகளவிலான நெட்வொர்க் ஆதாரங்கள், பயனர்களுக்குப் பண இழப்பை ஏற்படுத்துவதோடு பக்கங்கள் ஏற்றப்பட நீண்ட நேரமாவதற்கும் காரணமாகின்றன. [மேலும் அறிக](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "மொத்த அளவு: {totalBytes, number, bytes} கி.பை." @@ -381,19 +381,19 @@ "message": "அபரிமிதமான நெட்வொர்க் ஆதாரங்களைத் தவிர்க்கிறது" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "CSS கோப்புகளை சிறிதாக்கினால் நெட்வொர்க் ஆதாரங்களின் அளவுகள் குறையலாம். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "CSS கோப்புகளை சிறிதாக்கினால் நெட்வொர்க் ஆதாரங்களின் அளவுகள் குறையலாம். [மேலும் அறிக](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "CSSஸைச் சிறிதாக்கவும்" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "JavaScript கோப்புகளை சிறிதாக்கி ஆதாரங்களின் அளவுகளையும் ஸ்கிரிப்ட் பாகுபடுத்தப்படும் நேரத்தையும் குறைக்கலாம். [மேலும் அறிக](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "JavaScript கோப்புகளை சிறிதாக்கி ஆதாரங்களின் அளவுகளையும் ஸ்கிரிப்ட் பாகுபடுத்தப்படும் நேரத்தையும் குறைக்கலாம். [மேலும் அறிக](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "JavaScriptடைச் சிறிதாக்கவும்" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "நெட்வொர்க் செயல்பாட்டின்போது பயன்படுத்தப்படும் தேவையற்ற பைட்களைக் குறைக்க, ஸ்டைல்ஷீட்களிலிருந்து காலாவதியான விதிகளை அகற்றி, பக்கத்தின் மேல் பகுதியில் உள்ள உள்ளடக்கத்தை ஏற்றுவதற்குப் பயன்படுத்தப்படுத்தப்படாத CSSஸை ஏற்றுவதைத் தவிர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "நெட்வொர்க் செயல்பாட்டின்போது பயன்படுத்தப்படும் தேவையற்ற பைட்களைக் குறைக்க, ஸ்டைல்ஷீட்களிலிருந்து காலாவதியான விதிகளை அகற்றி, பக்கத்தின் மேல் பகுதியில் உள்ள உள்ளடக்கத்தை ஏற்றுவதற்குப் பயன்படுத்தப்படுத்தப்படாத CSSஸை ஏற்றுவதைத் தவிர்க்கவும். [மேலும் அறிக](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "பயன்படுத்தப்படாத CSSசை அகற்றவும்" @@ -405,7 +405,7 @@ "message": "பயன்படுத்தப்படாத JavaScriptடை அகற்றவும்" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "தற்காலிக நினைவகத்தின் ஆயுட்காலம் நீண்டதாக இருந்தால் அது மீண்டும் மீண்டும் திறக்கப்படும் உங்கள் இணையப் பக்கங்களை விரைவாக ஏற்றக்கூடும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "தற்காலிக நினைவகத்தின் ஆயுட்காலம் நீண்டதாக இருந்தால் அது மீண்டும் மீண்டும் திறக்கப்படும் உங்கள் இணையப் பக்கங்களை விரைவாக ஏற்றக்கூடும். [மேலும் அறிக](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 ஆதாரம் கண்டறியப்பட்டது}other{# ஆதாரங்கள் கண்டறியப்பட்டன}}" @@ -417,31 +417,31 @@ "message": "நிலையான உள்ளடக்கத்தில் திறனுள்ள தற்காலிக நினைவகக் கொள்கையைப் பயன்படுத்துகிறது" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "மேம்படுத்தப்பட்ட படங்கள் குறைவான மொபைல் டேட்டாவைப் பயன்படுத்தி விரைவாக ஏற்றும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "மேம்படுத்தப்பட்ட படங்கள் குறைவான மொபைல் டேட்டாவைப் பயன்படுத்தி விரைவாக ஏற்றும். [மேலும் அறிக](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "படங்களைத் திறம்பட என்கோடிங் செய்யவும்" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "மொபைல் டேட்டாவை சேமிக்கவும் பக்கத்தை விரைவாக ஏற்றவும் படங்களை சரியான அளவில் வழங்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "மொபைல் டேட்டாவை சேமிக்கவும் பக்கத்தை விரைவாக ஏற்றவும் படங்களை சரியான அளவில் வழங்கவும். [மேலும் அறிக](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "படங்களைச் சரியான அளவுக்கு மாற்றவும்" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "மொத்த நெட்வொர்க் பைட்களைக் குறைப்பதற்கு, உரை அடிப்படையிலான ஆதாரங்கள் சுருக்கப்பட்டு (gzip, deflate அல்லது brotli) வழங்கப்பட வேண்டும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "மொத்த நெட்வொர்க் பைட்களைக் குறைப்பதற்கு, உரை அடிப்படையிலான ஆதாரங்கள் சுருக்கப்பட்டு (gzip, deflate அல்லது brotli) வழங்கப்பட வேண்டும். [மேலும் அறிக](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "உரைச் சுருக்கத்தை இயக்கவும்" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000, JPEG XR, WebP போன்ற பட வடிவமைப்புகளானது PNG அல்லது JPEGயைக் காட்டிலும் சிறந்த அளவு சுருக்கத்தை வழங்குகின்றன, இதன் மூலம் பதிவிறக்கங்கள் வேகமாக நடைபெறுவதுடன் டேட்டா உபயோகமும் குறையும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "JPEG 2000, JPEG XR, WebP போன்ற பட வடிவமைப்புகளானது PNG அல்லது JPEGயைக் காட்டிலும் சிறந்த அளவு சுருக்கத்தை வழங்குகின்றன, இதன் மூலம் பதிவிறக்கங்கள் வேகமாக நடைபெறுவதுடன் டேட்டா உபயோகமும் குறையும். [மேலும் அறிக](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "படங்களை நவீன வடிவமைப்புகளில் வழங்கவும்" }, "lighthouse-core/audits/content-width.js | description": { - "message": "ஆப்ஸின் உள்ளடக்க அகலம் காட்சிப் பகுதியின் அகலத்துடன் பொருந்தவில்லை எனில் மொபைல் திரைகளுக்கு ஏற்ற வகையில் உங்கள் ஆப்ஸ் மேம்படுத்தப்படாமல் போகலாம். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "ஆப்ஸின் உள்ளடக்க அகலம் காட்சிப் பகுதியின் அகலத்துடன் பொருந்தவில்லை எனில் மொபைல் திரைகளுக்கு ஏற்ற வகையில் உங்கள் ஆப்ஸ் மேம்படுத்தப்படாமல் போகலாம். [மேலும் அறிக](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "{innerWidth} என்ற காட்சிப் பகுதி அளவு பிக்சலுடன் {outerWidth} என்ற சாளரத்தின் அளவு பிக்சல் பொருந்தவில்லை." @@ -453,7 +453,7 @@ "message": "காட்சிப் பகுதிக்கு ஏற்ற வகையில் உள்ளடக்கம் சரியாகப் பொருந்துகிறது" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "கீழே இருக்கும் 'முக்கியக் கோரிக்கை வரிசைகள்' எந்தெந்த ஆதாரங்கள் அதிக முன்னுரிமையுடன் ஏற்றப்பட்டன என்பதைக் காட்டுகின்றன. பக்கம் ஏற்றப்படுவதன் வேகத்தை அதிகரிக்க, வரிசைகளின் நீளத்தைக் குறைத்தல், ஆதாரங்களின் பதிவிறக்க அளவைக் குறைத்தல் அல்லது தேவையற்ற ஆதாரங்களைப் பதிவிறக்குவதைத் தவிர்த்தல் போன்றவற்றை முயற்சி செய்யவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "கீழே இருக்கும் 'முக்கியக் கோரிக்கை வரிசைகள்' எந்தெந்த ஆதாரங்கள் அதிக முன்னுரிமையுடன் ஏற்றப்பட்டன என்பதைக் காட்டுகின்றன. பக்கம் ஏற்றப்படுவதன் வேகத்தை அதிகரிக்க, வரிசைகளின் நீளத்தைக் குறைத்தல், ஆதாரங்களின் பதிவிறக்க அளவைக் குறைத்தல் அல்லது தேவையற்ற ஆதாரங்களைப் பதிவிறக்குவதைத் தவிர்த்தல் போன்றவற்றை முயற்சி செய்யவும். [மேலும் அறிக](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 வரிசை கண்டறியப்பட்டது}other{# வரிசைகள் கண்டறியப்பட்டன}}" @@ -675,7 +675,7 @@ "message": "கன்சோலில் உலாவியின் பிழைகள் எதுவும் பதிவு செய்யப்படவில்லை" }, "lighthouse-core/audits/font-display.js | description": { - "message": "இணைய எழுத்துருக்கள் ஏற்றப்படும்போது உரை எழுத்துகள் பயனருக்குத் தெரிவதை உறுதிசெய்ய எழுத்துருக் காட்சியின் CSS அம்சத்தை சேர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "இணைய எழுத்துருக்கள் ஏற்றப்படும்போது உரை எழுத்துகள் பயனருக்குத் தெரிவதை உறுதிசெய்ய எழுத்துருக் காட்சியின் CSS அம்சத்தை சேர்க்கவும். [மேலும் அறிக](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "இணைய எழுத்துரு ஏற்றப்படும்போது உரை எழுத்துகள் தெரிவதை உறுதிசெய்யவும்" @@ -705,7 +705,7 @@ "message": "பட அளவு குறித்த தகவல் செல்லாதது {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "முக்கியத்துவத்தின் காரணமாக ஆப்ஸை முகப்புத் திரையில் சேர்க்குமாறு முன்னெச்சரிக்கையாக உலாவிகள் பயனர்களுக்கு அறிவிக்கும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "முக்கியத்துவத்தின் காரணமாக ஆப்ஸை முகப்புத் திரையில் சேர்க்குமாறு முன்னெச்சரிக்கையாக உலாவிகள் பயனர்களுக்கு அறிவிக்கும். [மேலும் அறிக](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "இணைய ஆப்ஸ் மெனிஃபெஸ்ட் நிறுவுதலுக்கான தேவைகளைப் பூர்த்தி செய்யவில்லை" @@ -729,7 +729,7 @@ "message": "HTTPSஸைப் பயன்படுத்துகிறது" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "மொபைல் நெட்வொர்க்கில் பக்கம் வேகமாக ஏற்றப்பட்டால் அது மொபைல் பயனர்களுக்கு சிறந்த அனுபவத்தை வழங்கும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "மொபைல் நெட்வொர்க்கில் பக்கம் வேகமாக ஏற்றப்பட்டால் அது மொபைல் பயனர்களுக்கு சிறந்த அனுபவத்தை வழங்கும். [மேலும் அறிக](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "பக்கம் பதிலளிக்க எடுத்துக்கொண்ட நேரம்: {timeInMs, number, seconds} வி." @@ -750,7 +750,7 @@ "message": "வகை" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "JSஸைப் பாகுபடுத்துதல், தொகுத்தல் மற்றும் இயக்குவதில் செலவழிக்கும் நேரத்தைக் குறைக்க முயற்சி செய்யவும். இதற்கு, சிறிய அளவிலான JS ஆதாரங்களை வழங்குவது உதவக்கூடும்." + "message": "JSஸைப் பாகுபடுத்துதல், தொகுத்தல் மற்றும் இயக்குவதில் செலவழிக்கும் நேரத்தைக் குறைக்கவும். இதைச் செய்வதற்கு சிறிய அளவிலான JS ஆதாரங்களை வழங்கலாம். [மேலும் அறிக](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "முக்கியத் தொடரிழையின் பணியைக் குறைக்கவும்" @@ -759,49 +759,49 @@ "message": "முக்கியத் தொடரிழையின் பணியைக் குறைக்கிறது" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "அதிக அளவிலான பயனர்களைப் பெற பிரபலமான ஒவ்வொரு உலாவியிலும் தளங்கள் செயல்பட வேண்டும். [மேலும் அறிக](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "அதிக அளவிலான பயனர்களைப் பெற பிரபலமான ஒவ்வொரு உலாவியிலும் தளங்கள் செயல்பட வேண்டும். [மேலும் அறிக](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "வெவ்வேறு உலாவியிலும் தளம் செயல்படும்" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "URL மூலம் தனிப்பட்ட பக்கங்களை லிங்க் செய்யலாம் என்பதையும் சமூக வலைதளங்களில் பகிர்வதற்கு அந்த URLகள் தனித்துவமானவை என்பதையும் உறுதிப்படுத்தவும். [மேலும் அறிக](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "URL மூலம் தனிப்பட்ட பக்கங்களை லிங்க் செய்யலாம் என்பதையும் சமூக வலைதளங்களில் பகிர்வதற்கு அந்த URLகள் தனித்துவமானவை என்பதையும் உறுதிப்படுத்தவும். [மேலும் அறிக](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "ஒவ்வொரு பக்கத்திற்கும் URL உள்ளது" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "சிறந்த செயல்திறனுக்கான முக்கிய அம்சம் என்னவெனில் வேகம் குறைந்த நெட்வொர்க்காக இருந்தாலும் பக்கத்தை நீங்கள் தட்டும் போது 'பக்கத்தின் மாற்றங்கள்' அதனை வழங்குவதாகும். [மேலும் அறிக](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "வேகம் குறைந்த நெட்வொர்க்கிலும் பக்கத்தை நீங்கள் தட்டும்போது மாற்றங்கள் விரைவாக இருக்க வேண்டும். இது சிறந்த செயல்திறன் என பயனர் கருதும் முக்கிய அம்சமாகும். [மேலும் அறிக](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "பக்கத்தின் மாற்றங்கள் நெட்வொர்க்கில் தடுக்கப்பட்டவை போன்று தோன்றக்கூடாது" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "'தோராய உள்ளீட்டுத் தாமதம்' என்பது பக்கம் ஏற்றப்படும் பிஸியான 5 வினாடி காலஅளவின்போது பயனரின் உள்ளீட்டுக்கு பதிலளிக்க உங்கள் ஆப்ஸ் எவ்வளவு நேரம் எடுத்துக் கொள்கிறது என்பதற்கான தோராய மதிப்பாகும். பதிலளிக்க 50 மி.வி.க்கு மேல் தாமதமானால் உங்கள் ஆப்ஸ் மெதுவானது என்று பயனர்கள் கருதக்கூடும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "'தோராய உள்ளீட்டுத் தாமதம்' என்பது பக்கம் ஏற்றப்படும் பிஸியான 5 வினாடி காலஅளவின்போது பயனரின் உள்ளீட்டுக்கு பதிலளிக்க உங்கள் ஆப்ஸ் எவ்வளவு நேரம் எடுத்துக் கொள்கிறது என்பதற்கான தோராய மதிப்பாகும். பதிலளிக்க 50 மி.வி.க்கு மேல் தாமதமானால் உங்கள் ஆப்ஸ் மெதுவானது என்று பயனர்கள் கருதக்கூடும். [மேலும் அறிக](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "தோராயமான உள்ளீட்டுத் தாமதம்" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "'உள்ளடக்கமுள்ள முதல் தோற்றம்' என்பது முதல் உரையோ படமோ தோன்றும் நேரத்தைக் குறிக்கிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "'உள்ளடக்கமுள்ள முதல் தோற்றம்' என்பது முதல் உரையோ படமோ தோன்றும் நேரத்தைக் குறிக்கிறது. [மேலும் அறிக](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "உள்ளடக்கமுள்ள முதல் தோற்றம்" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "'CPU செயல்படாநிலையின் தொடக்க நேரம்' என்பது உள்ளீட்டை பக்கத்தின் முக்கியத் தொடரிழை கையாள்வதற்குத் தயாராக, செயல்படாநிலையில் இருக்கும் நேரத்தின் தொடக்கத்தைக் குறிக்கிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "'CPU செயல்படாநிலையின் தொடக்க நேரம்' என்பது உள்ளீட்டை பக்கத்தின் முக்கியத் தொடரிழை கையாள்வதற்குத் தயாராக செயல்படாநிலையில் இருக்கும் நேரத்தின் தொடக்கத்தைக் குறிக்கிறது. [மேலும் அறிக](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "CPU செயல்படாநிலையின் தொடக்க நேரம்" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "'பயனுள்ள முதல் தோற்றம்' என்பது பக்கத்தின் முதன்மை உள்ளடக்கம் எப்போது தெரிகிறது என்பதை அளவிடுகிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "'பயனுள்ள முதல் தோற்றம்' என்பது பக்கத்தின் முதன்மை உள்ளடக்கம் எப்போது தெரிகிறது என்பதை அளவிடுகிறது. [மேலும் அறிக](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "அர்த்தமுள்ள முதல் தோற்றம்" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "எதிர்வினை நேரம் என்பது பக்கம் முழுமையாக எதிர்வினையாற்றும் வகையில் ஏற்றப்படுவதற்கான கால அளவாகும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "எதிர்வினை நேரம் என்பது பக்கம் முழுமையாக எதிர்வினையாற்றும் வகையில் ஏற்றப்படுவதற்கான கால அளவாகும். [மேலும் அறிக](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "எதிர்வினை நேரம்" @@ -813,7 +813,7 @@ "message": "முதல் உள்ளீட்டிற்கு பதிலளிக்கக்கூடிய அதிகபட்ச நேரம்" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "பக்கத்திலுள்ள உள்ளடக்கங்கள் எவ்வளவு விரைவாகத் தெரிகின்றன என்பதை 'வேக அட்டவணை' காண்பிக்கிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "பக்கத்திலுள்ள உள்ளடக்கங்கள் எவ்வளவு விரைவாகத் தெரிகின்றன என்பதை 'வேக அட்டவணை' காண்பிக்கிறது. [மேலும் அறிக](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "வேக அட்டவணை" @@ -837,7 +837,7 @@ "message": "சேவையக பேக்எண்ட் தாமதங்கள்" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "கணிக்க முடியாத நெட்வொர்க் சூழல்களிலும் சேவைச் செயலாக்கி உங்கள் இணைய ஆப்ஸை நம்பகமானதாக மாற்றும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "கணிக்க முடியாத நெட்வொர்க் சூழல்களிலும் சேவைச் செயலாக்கி உங்கள் இணைய ஆப்ஸை நம்பகமானதாக மாற்றும். [மேலும் அறிக](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "ஆஃப்லைனில் உள்ள போது 200 என்ற HTTP நிலைக் குறியீட்டுடன் `start_url` விரைவாகப் பதிலளிக்கவில்லை" @@ -861,7 +861,7 @@ "message": "செயல்திறன் பட்ஜெட்" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "HTTPSஐ ஏற்கனவே நீங்கள் அமைத்திருந்தால் உங்களின் அனைத்துப் பயனர்களுக்கும் பாதுகாப்பான இணைய அம்சங்களைச் செயல்படுத்தும் வகையில் எல்லா HTTP ட்ராஃபிக்கையும் HTTPSக்குத் திசைதிருப்பவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "HTTPSஐ ஏற்கனவே நீங்கள் அமைத்திருந்தால் உங்களின் அனைத்துப் பயனர்களுக்கும் பாதுகாப்பான இணைய அம்சங்களைச் செயல்படுத்தும் வகையில் எல்லா HTTP ட்ராஃபிக்கையும் HTTPSக்குத் திசைதிருப்பவும். [மேலும் அறிக](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "HTTP ட்ராஃபிக் HTTPSக்குத் திசைதிருப்பப்படவில்லை" @@ -870,7 +870,7 @@ "message": "HTTPSக்கு HTTP ட்ராஃபிக்கைத் திசைதிருப்பும்" }, "lighthouse-core/audits/redirects.js | description": { - "message": "'திசைதிருப்புதல்கள்' பக்கம் ஏற்றப்படுவதற்கு முன்பு கூடுதல் தாமதங்களை ஏற்படுத்தலாம். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "'திசைதிருப்புதல்கள்' பக்கம் ஏற்றப்படுவதற்கு முன்பு கூடுதல் தாமதங்களை ஏற்படுத்தலாம். [மேலும் அறிக](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "பல பக்கங்களுக்குத் திசைதிருப்புவதைத் தவிர்க்கவும்" @@ -1035,7 +1035,7 @@ "message": "தட்டுவதற்கான இலக்குகள் சரியாக அளவிடப்பட்டுள்ளன" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "சேவைச் செயலாக்கி என்பது ஆஃப்லைனில் பணிபுரிவது, முகப்புத்திரையில் சேர்ப்பது, புஷ் அறிவிப்புகள் போன்ற நவீன இணைய ஆப்ஸின் பல்வேறு அம்சங்களை உங்கள் ஆப்ஸ் பயன்படுத்த அனுமதிக்கும் தொழில்நுட்பமாகும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "சேவைச் செயலாக்கி என்பது ஆஃப்லைனில் பணிபுரிவது, முகப்புத்திரையில் சேர்ப்பது, புஷ் அறிவிப்புகள் போன்ற நவீன இணைய ஆப்ஸின் பல்வேறு அம்சங்களை உங்கள் ஆப்ஸ் பயன்படுத்த அனுமதிக்கும் தொழில்நுட்பமாகும். [மேலும் அறிக](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "சேவைச் செயலாக்கி மூலம் இந்தப் பக்கம் கட்டுப்படுத்தப்படுகிறது, இருப்பினும் சரியான JSON ஆக மெனிஃபெஸ்ட்டைப் பாகுபடுத்த முடியாத காரணத்தால் `start_url` கண்டறியப்படவில்லை" @@ -1056,7 +1056,7 @@ "message": "பக்கம், `start_url` போன்றவற்றைக் கட்டுப்படுத்தும் சேவைச் செயலாக்கியைப் பதிவுசெய்யும்." }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "தங்களின் முகப்புத் திரைகளில் இருந்து உங்களின் ஆப்ஸைப் பயனர்கள் தொடங்கும் போது உயர்தர அனுபவத்தை அவர்கள் பெறுவதை தீம் வண்ணம் அமைக்கப்பட்ட ஸ்பிளாஷ் திரை உறுதிப்படுத்தும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "தங்களின் முகப்புத் திரைகளில் இருந்து உங்களின் ஆப்ஸைப் பயனர்கள் தொடங்கும் போது உயர்தர அனுபவத்தை அவர்கள் பெறுவதை தீம் வண்ணம் அமைக்கப்பட்ட ஸ்பிளாஷ் திரை உறுதிப்படுத்தும். [மேலும் அறிக](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "பிரத்யேக ஸ்பிளாஷ் திரைக்கு உள்ளமைக்கப்படவில்லை" @@ -1065,7 +1065,7 @@ "message": "பிரத்யேக ஸ்பிளாஷ் திரைக்கு உள்ளமைக்கப்பட்டது" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "உங்களின் தளத்திற்குப் பொருந்தும் வகையில் உலாவி முகவரிப் பட்டியை வண்ணமிட முடியும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "உங்களின் தளத்திற்குப் பொருந்தும் வகையில் உலாவி முகவரிப் பட்டியை வண்ணமிட முடியும். [மேலும் அறிக](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "முகவரிப் பட்டிக்கான தீம் வண்ணத்தை அமைக்க முடியவில்லை." @@ -1092,7 +1092,7 @@ "message": "மூன்றாம் தரப்பு உபயோகம்" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "'முதல் பைட்டின் நேரம்' என்பது உங்கள் சேவையகம் ஒரு பதிலை அனுப்பும் நேரத்தை சுட்டிக்காட்டுகிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "'முதல் பைட்டின் நேரம்' என்பது உங்கள் சேவையகம் ஒரு பதிலை அனுப்பும் நேரத்தை சுட்டிக்காட்டுகிறது. [மேலும் அறிக](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "மூல ஆவணம் எடுத்துக் கொண்ட நேரம்: {timeInMs, number, milliseconds} மி.வி." @@ -1113,7 +1113,7 @@ "message": "வகை" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "முக்கியமான பயனர் அனுபவங்களின்போது உங்கள் ஆப்ஸின் நிகழ்நேர செயல்திறனை அளவிட உங்கள் ஆப்ஸில் User Timing APIயைப் பயன்படுத்தவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "முக்கியமான பயனர் அனுபவங்களின்போது உங்கள் ஆப்ஸின் நிகழ்நேர செயல்திறனை அளவிட உங்கள் ஆப்ஸில் User Timing APIயைப் பயன்படுத்தவும். [மேலும் அறிக](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 பயனர் நேரம்}other{# பயனர் நேரங்கள்}}" @@ -1125,7 +1125,7 @@ "message": "{securityOrigin}க்கான <link> முன்னிணைப்பு கண்டறியப்பட்டது, ஆனால் அது உலாவியால் பயன்படுத்தப்படவில்லை. `crossorigin` பண்புக்கூறை முறையாகப் பயன்படுத்துகிறீர்களா என்று சரிபார்க்கவும்." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "முக்கிய மூன்றாம் தரப்பு டொமைன்களுடன் விரைவான இணைப்புகளை ஏற்படுத்த `preconnect` அல்லது `dns-prefetch` ஆதாரக் குறிப்புகளைச் சேர்க்கலாம். [மேலும் அறிக](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "முக்கிய மூன்றாம் தரப்பு டொமைன்களுடன் விரைவான இணைப்புகளை ஏற்படுத்த `preconnect` அல்லது `dns-prefetch` ஆதாரக் குறிப்புகளைச் சேர்க்கலாம். [மேலும் அறிக](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "தேவைப்படும் டொமைன் பெயர்களுக்கு முன்கூட்டியே இணைப்பு வழங்கவும்" @@ -1134,13 +1134,13 @@ "message": "\"{preloadURL}\"க்கான <link> முன்னிணைப்பு கண்டறியப்பட்டது, ஆனால் உலாவியால் அது பயன்படுத்தப்படவில்லை. `crossorigin` பண்புக்கூறை முறையாகப் பயன்படுத்துகிறீர்களா என்று சரிபார்க்கவும்." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "பக்கம் ஏற்றப்படும்போது தற்சமயம் பின்னர் கோரிக்கையளிக்கப்படும் ஆதாரங்களை முன்னுரிமை அளிக்க `<link rel=preload>`ஐப் பயன்படுத்தவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "பக்கம் ஏற்றப்படும்போது தற்சமயம் பின்னர் கோரிக்கையளிக்கப்படும் ஆதாரங்களை முன்னுரிமை அளிக்க `<link rel=preload>`ஐப் பயன்படுத்தவும். [மேலும் அறிக](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "முக்கியக் கோரிக்கைகளை முன்கூட்டியே ஏற்றவும்" }, "lighthouse-core/audits/viewport.js | description": { - "message": "மொபைல் திரைகளுக்கு ஏற்றவாறு உங்களின் ஆப்ஸை மேம்படுத்தும் வகையில் `<meta name=\"viewport\">` குறிச்சொல்லைச் சேர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "மொபைல் திரைகளுக்கு ஏற்றவாறு உங்களின் ஆப்ஸை மேம்படுத்தும் வகையில் `<meta name=\"viewport\">` குறிச்சொல்லைச் சேர்க்கவும். [மேலும் அறிக](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "`<meta name=\"viewport\">` குறிச்சொல் எதுவும் இல்லை" @@ -1152,7 +1152,7 @@ "message": "`width` அல்லது `initial-scale` உடன் `<meta name=\"viewport\">` குறிச்சொல் அமைக்கப்பட்டுள்ளது" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "JavaScript முடக்கத்தில் உள்ள போது சில உள்ளடக்கத்தை உங்கள் ஆப்ஸ் காட்ட வேண்டும். அது ஆப்ஸைப் பயன்படுத்த JavaScript தேவை என்ற எச்சரிக்கைச் செய்தியாக இருந்தாலும் பரவாயில்லை. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "JavaScript முடக்கத்தில் உள்ள போது சில உள்ளடக்கத்தை உங்கள் ஆப்ஸ் காட்ட வேண்டும். அது ஆப்ஸைப் பயன்படுத்த JavaScript தேவை என்ற எச்சரிக்கைச் செய்தியாக இருந்தாலும் பரவாயில்லை. [மேலும் அறிக](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "ஸ்கிரிப்ட்கள் இல்லாத போது பக்கம் சில உள்ளடக்கத்தை ரெண்டர் செய்ய வேண்டும்." @@ -1164,7 +1164,7 @@ "message": "JavaScript முடக்கத்தில் உள்ள போது சில உள்ளடக்கம் காட்டப்படும்" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "நவீன இணைய ஆப்ஸை உருவாக்குகிறீர்கள் எனில் ஆஃப்லைனில் உங்கள் ஆப்ஸ் செயல்படும் வகையில் சேவைச் செயலாக்கியைப் பயன்படுத்தும்படி பரிந்துரைக்கிறோம். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "நவீன இணைய ஆப்ஸை உருவாக்குகிறீர்கள் எனில் ஆஃப்லைனில் உங்கள் ஆப்ஸ் செயல்படும் வகையில் சேவைச் செயலாக்கியைப் பயன்படுத்தும்படி பரிந்துரைக்கிறோம். [மேலும் அறிக](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "ஆஃப்லைனில் உள்ள போது 200 என்ற HTTP நிலைக் குறியீட்டுடன் தற்போதைய பக்கம் விரைவாகப் பதிலளிக்கவில்லை"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/te.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/te.json index 16ed719..9dfa697f 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/te.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/te.json
@@ -30,10 +30,10 @@ "message": "కొన్ని ARIA మూలాధార పాత్రలు తప్పనిసరిగా నిర్దిష్ట ఉపాంశ పాత్రల కలయికతో వాటి ఉద్దేశిత యాక్సెసిబిలిటీ ఫంక్షన్లు సరిగ్గా అమలయ్యే విధంగా ఉండాలి. [మరింత తెలుసుకోండి](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "నిర్దిష్ట ఉపాంశ '`[role]`'లు అవసరమైన '`[role]`' గల మూలకాలు ఉన్నాయి." + "message": "ఉప మూలకాలు నిర్దిష్టమైన '`[role]`'ను కలిగి ఉండాల్సిన ARIA '`[role]`' మూలకాలలో కొన్నింటిని లేదా వేటినీ ఉప మూలకాలు కలిగి ఉండకపోవడంతో సమస్య ఏర్పడింది." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "నిర్దిష్ట ఉపాంశ '`[role]`'లు అవసరమైన '`[role]`' గల మూలకాలు ఉన్నాయి" + "message": "ఉప మూలకాలు నిర్దిష్టమైన '`[role]`'ను కలిగి ఉండటం అవసరమైన ARIA `[role]` గల మూలకాలు అవసరమైన అన్ని ఉప మూలకాలను కలిగి ఉన్నాయి." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "కొన్ని ARIA ఉపాంశ పాత్రలు తప్పనిసరిగా నిర్దిష్ట మూలధార పాత్రల కలయికతో వాటి ఉద్దేశిత యాక్సెసిబిలిటీ ఫంక్షన్లు సరిగ్గా అమలయ్యే విధంగా ఉండాలి. [మరింత తెలుసుకోండి](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "పట్టికలను నావిగేట్ చేయడం సులభతరం చేసే ఫీచర్లు స్క్రీన్ రీడర్లలో ఉంటాయి. '`[headers]`' లక్షణాన్ని ఉపయోగిస్తున్న '`<td>`' సెల్లు కేవలం అదే పట్టికలోని ఇతర సెల్లను సూచించడం స్క్రీన్ రీడర్ వినియోగదారుల అనుభవాన్ని మెరుగుపరచవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "'`<table>`' మూలకంలో '`[headers]`' లక్షణాన్ని ఉపయోగించే సెల్లు కేవలం అదే పట్టికలోని ఇతర సెల్లను సూచిస్తాయి." + "message": "'`<table>`' మూలకంలో '`[headers]`' లక్షణాన్ని ఉపయోగించే సెల్లు అదే పట్టికలో కనుగొనబడని '`id`' మూలకాన్ని సూచిస్తున్నాయి." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "'`<table>`' మూలకంలో '`[headers]`' లక్షణాన్ని వినియోగించే సెల్లు కేవలం అదే పట్టికలోని ఇతర సెల్లకు మాత్రమే సూచించబడతాయి." + "message": "'`<table>`' మూలకంలో '`[headers]`' లక్షణాన్ని ఉపయోగించే సెల్లు అదే పట్టికలోని పట్టిక సెల్లను సూచిస్తున్నాయి." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "పట్టికలను నావిగేట్ చేయడం సులభతరం చేసే ఫీచర్లు స్క్రీన్ రీడర్లలో ఉంటాయి. పట్టిక ముఖ్య శీర్షికలు ఎల్లప్పుడూ కొన్ని సెల్ల సెట్ను సూచించేలా నిర్ధారించుకోవడం ద్వారా స్క్రీన్ రీడర్ వినియోగదారుల అనుభవాన్ని మెరుగుపరచవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "'`<video>`' మూలకాలు '`[kind=\"description\"]`'తో '`<track>`' మూలకం కలిగి ఉన్నాయి" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "వినియోగదారులు హోమ్ స్క్రీన్కు ప్రోగ్రెసివ్ వెబ్ యాప్ను జోడించినప్పుడు, iOSలో ఉత్తమ ప్రదర్శన కోసం, '`apple-touch-icon`'ను నిర్వచించండి. అది తప్పనిసరిగా పారదర్శకం కాని 192px (లేదా 180px) చతురస్రాకార PNGని సూచించాలి. [మరింత తెలుసుకోండి](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "వినియోగదారులు హోమ్ స్క్రీన్కు ప్రోగ్రెసివ్ వెబ్ యాప్ను జోడించినప్పుడు, iOSలో ఉత్తమ ప్రదర్శన కోసం, '`apple-touch-icon`'ను నిర్వచించండి. అది తప్పనిసరిగా పారదర్శకం కాని 192px (లేదా 180px) చతురస్రాకార PNGని సూచించాలి. [మరింత తెలుసుకోండి](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "చెల్లుబాటయ్యే '`apple-touch-icon`' లేదు" @@ -342,7 +342,7 @@ "message": "మొత్తం CPU సమయం" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "JSను అన్వయించడం, సంకలనం చేయడం, అమలు చేయడం కోసం వెచ్చించే సమయాన్ని తగ్గించడాన్ని పరిశీలించండి. చిన్న JS పేలోడ్లను అందించడం ఈ విషయంలో మీకు సహాయపడవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "JSను అన్వయించడం, సంకలనం చేయడం, అమలు చేయడం కోసం వెచ్చించే సమయాన్ని తగ్గించడాన్ని పరిశీలించండి. చిన్న JS పేలోడ్లను అందించడం ఈ విషయంలో మీకు సహాయపడవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "JavaScript అమలు సమయాన్ని తగ్గించండి" @@ -351,25 +351,25 @@ "message": "JavaScript అమలు సమయం" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "యానిమేట్ చేయబడిన కంటెంట్ను అందించడంలో పెద్ద GIFలు సమర్థవంతంగా పని చేయవు. నెట్వర్క్ బైట్లను పొదుపు చేయడానికి, యానిమేషన్ల కోసం MPEG4/WebM వీడియోలను, GIFకి బదులుగా నిశ్చల చిత్రాల కోసం PNG/WebPను ఉపయోగించడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "యానిమేట్ చేయబడిన కంటెంట్ను అందించడంలో పెద్ద GIFలు సమర్థవంతంగా పని చేయవు. నెట్వర్క్ బైట్లను పొదుపు చేయడానికి, యానిమేషన్ల కోసం MPEG4/WebM వీడియోలను, GIFకి బదులుగా నిశ్చల చిత్రాల కోసం PNG/WebPను ఉపయోగించడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "యానిమేటెడ్ కంటెంట్ కోసం వీడియో ఫార్మాట్లను ఉపయోగించండి" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం తగ్గించడానికి అన్ని క్లిష్టమైన వనరులు లోడ్ అవ్వడం పూర్తయిన తర్వాతే ఆఫ్స్క్రీన్, దాగి ఉన్న చిత్రాలను నెమ్మదిగా లోడ్ చేయడాన్ని పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం తగ్గించడానికి అన్ని క్లిష్టమైన వనరులు లోడ్ అవ్వడం పూర్తయిన తర్వాతే ఆఫ్స్క్రీన్, దాగి ఉన్న చిత్రాలను నెమ్మదిగా లోడ్ చేయడాన్ని పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "ఆఫ్స్క్రీన్ చిత్రాలను వాయిదా వేయండి" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "వనరులు మీ పేజీలోని మొదటి పెయింట్ను బ్లాక్ చేస్తున్నాయి. ముఖ్యమైన JS/CSSలను ఇన్లైన్లో అందించడం, ముఖ్యం-కానటువంటి అన్ని JS/శైలులను తీసివేయడాన్ని పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "వనరులు మీ పేజీలోని మొదటి పెయింట్ను బ్లాక్ చేస్తున్నాయి. ముఖ్యమైన JS/CSSలను ఇన్లైన్లో అందించడం, ముఖ్యం-కానటువంటి అన్ని JS/శైలులను తీసివేయడాన్ని పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "రెండర్-బ్లాకింగ్ వనరులను నివారించండి" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "పెద్ద నెట్వర్క్ పేలోడ్లకు వినియోగదారులు నిజమైన డబ్బును చెల్లించాలి. అవి అధికంగా సుదీర్ఘ లోడ్ సమయాలతో ముడిపడి ఉంటాయి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "పెద్ద నెట్వర్క్ పేలోడ్లకు వినియోగదారులు నిజమైన డబ్బును చెల్లించాలి. అవి అధికంగా సుదీర్ఘ లోడ్ సమయాలతో ముడిపడి ఉంటాయి. [మరింత తెలుసుకోండి](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "మొత్త పరిమాణం {totalBytes, number, bytes} KBగా ఉండేది" @@ -381,19 +381,19 @@ "message": "అతి పెద్ద నెట్వర్క్ పేలోడ్లను నివారిస్తుంది" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "CSS ఫైల్లను చిన్నవిగా చేయడం వలన నెట్వర్క్ పేలోడ్ పరిమాణాలు తగ్గిపోగలవు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "CSS ఫైల్లను చిన్నవిగా చేయడం వలన నెట్వర్క్ పేలోడ్ పరిమాణాలు తగ్గిపోగలవు. [మరింత తెలుసుకోండి](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "CSSని చిన్నదిగా చేయండి" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "JavaScript ఫైల్లను చిన్నవిగా చేయడం పేలోడ్ పరిమాణాలను, స్క్రిప్ట్ను అన్వయించడానికి పట్టే సమయాన్ని తగ్గించగలదు. [మరింత తెలుసుకోండి](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "JavaScript ఫైల్లను చిన్నవిగా చేయడం పేలోడ్ పరిమాణాలను, స్క్రిప్ట్ను అన్వయించడానికి పట్టే సమయాన్ని తగ్గించగలదు. [మరింత తెలుసుకోండి](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "JavaScriptను చిన్నదిగా చేయండి" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "నెట్వర్క్ కార్యకలాపంలో ఉపయోగించబడే అనవసరమైన బైట్లను తగ్గించడం కోసం, స్టైల్షీట్ల నుండి గడువు ముగిసిన నియమాలను తీసివేయండి. అలాగే, మడత పైన ఉన్న కంటెంట్ కోసం ఉపయోగించని CSSను లోడ్ చేయకుండా ఆపివేయండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "నెట్వర్క్ కార్యకలాపంలో ఉపయోగించబడే అనవసరమైన బైట్లను తగ్గించడం కోసం, స్టైల్షీట్ల నుండి గడువు ముగిసిన నియమాలను తీసివేయండి. అలాగే, మడత పైన ఉన్న కంటెంట్ కోసం ఉపయోగించని CSSను లోడ్ చేయకుండా ఆపివేయండి. [మరింత తెలుసుకోండి](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "ఉపయోగించని CSS తీసివేయబడింది" @@ -405,7 +405,7 @@ "message": "ఉపయోగించని JavaScriptను తీసివేయండి" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "దీర్ఘమైన కాష్ జీవితకాలం మీ పేజీకి పునరావృత సందర్శనలను వేగవంతం చేయవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "దీర్ఘమైన కాష్ జీవితకాలం మీ పేజీకి పునరావృత సందర్శనలను వేగవంతం చేయవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 వనరు కనుగొనబడింది}other{ # వనరులు కనుగొనబడ్డాయి}}" @@ -417,31 +417,31 @@ "message": "నిశ్చలమైన ఆస్తులపై సమర్ధవంతమైన కాష్ విధానాన్ని ఉపయోగిస్తుంది" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "ఆప్టిమైజ్ చేసిన చిత్రాలు త్వరగా లోడ్ అవుతాయి, తక్కువ సెల్యులార్ డేటాను ఉపయోగిస్తాయి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "ఆప్టిమైజ్ చేసిన చిత్రాలు త్వరగా లోడ్ అవుతాయి, తక్కువ సెల్యులార్ డేటాను ఉపయోగిస్తాయి. [మరింత తెలుసుకోండి](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "చిత్రాలను సమర్థవంతంగా ఎన్కోడ్ చేయండి" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "సెల్యులార్ డేటాను పొదుపు చేయడానికి, లోడ్ సమయాన్ని మెరుగుపరచడానికి తగిన-పరిమాణానికి మార్చబడిన చిత్రాలను అందించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "సెల్యులార్ డేటాను పొదుపు చేయడానికి, లోడ్ సమయాన్ని మెరుగుపరచడానికి తగిన-పరిమాణానికి మార్చబడిన చిత్రాలను అందించండి. [మరింత తెలుసుకోండి](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "చిత్రాల పరిమాణాన్ని సరిగ్గా మార్చండి" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "మొత్తం నెట్వర్క్ బైట్లను తగ్గించడానికి వచనం-ఆధారిత వనరులు ఖచ్చితంగా కుదింపు (gzip, deflate లేదా brotli)తో అందించబడాలి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "మొత్తం నెట్వర్క్ బైట్లను తగ్గించడానికి వచనం-ఆధారిత వనరులు ఖచ్చితంగా కుదింపు (gzip, deflate లేదా brotli)తో అందించబడాలి. [మరింత తెలుసుకోండి](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "వచనం కుదింపును ప్రారంభించండి" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000, JPEG XR, WebP లాంటి చిత్రం ఫార్మాట్లు తరచుగా PNG లేదా JPEG కంటే మెరుగైన కుదింపును అందిస్తాయి. దీని వలన, డౌన్లోడ్లు మరింత వేగంగా ఉంటాయి, తక్కువ డేటా వినియోగం అవుతుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "JPEG 2000, JPEG XR, WebP లాంటి చిత్రం ఫార్మాట్లు తరచుగా PNG లేదా JPEG కంటే మెరుగైన కుదింపును అందిస్తాయి. దీని వలన, డౌన్లోడ్లు మరింత వేగంగా ఉంటాయి, తక్కువ డేటా వినియోగం అవుతుంది. [మరింత తెలుసుకోండి](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "చిత్రాలను తర్వాతి-తరం ఫార్మాట్లలో అందించండి" }, "lighthouse-core/audits/content-width.js | description": { - "message": "ఒకవేళ వీక్షణ పోర్ట్ వెడల్పుతో మీ యాప్ కంటెంట్ వెడల్పు సరిపోలకుంటే, మొబైల్ స్క్రీన్లకు అనుగుణంగా మీ యాప్ను ఆప్టిమైజ్ చేయడం సాధ్యపడకపోవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "ఒకవేళ వీక్షణ పోర్ట్ వెడల్పుతో మీ యాప్ కంటెంట్ వెడల్పు సరిపోలకుంటే, మొబైల్ స్క్రీన్లకు అనుగుణంగా మీ యాప్ను ఆప్టిమైజ్ చేయడం సాధ్యపడకపోవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "{outerWidth}px విండో సైజ్తో {innerWidth}px వీక్షణ పోర్ట్ సైజ్ సరిపోలలేదు." @@ -453,7 +453,7 @@ "message": "వీక్షణ పోర్ట్కు తగినట్లుగా కంటెంట్ సైజ్ సర్దుబాటు చేయబడింది" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "కింద పేర్కొన్న ముఖ్యమైన అభ్యర్ధన గొలుసులు ఏ వనరులు అధిక ప్రాధాన్యతతో లోడ్ అయ్యాయో చూపిస్తాయి. పేజీ లోడ్ను మెరుగుపరచడానికి గొలుసుల పొడవును తగ్గించడం, వనరుల డౌన్లోడ్ పరిమాణాన్ని తగ్గించడం, లేదా అనవసర వనరులను డౌన్లోడ్ చేయడాన్ని వాయిదా వేయడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "కింద పేర్కొన్న ముఖ్యమైన అభ్యర్ధన గొలుసులు ఏ వనరులు అధిక ప్రాధాన్యతతో లోడ్ అయ్యాయో చూపిస్తాయి. పేజీ లోడ్ను మెరుగుపరచడానికి గొలుసుల పొడవును తగ్గించడం, వనరుల డౌన్లోడ్ పరిమాణాన్ని తగ్గించడం, లేదా అనవసర వనరులను డౌన్లోడ్ చేయడాన్ని వాయిదా వేయడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 గొలుసు కనుగొనబడింది}other{# గొలుసులు కనుగొనబడ్డాయి}}" @@ -675,7 +675,7 @@ "message": "కన్సోల్లో లాగ్ చేయబడిన బ్రౌజర్ ఎర్రర్లు ఏవీ లేవు" }, "lighthouse-core/audits/font-display.js | description": { - "message": "వెబ్ ఫాంట్లు లోడ్ అవుతున్నప్పుడు వచనం వినియోగదారుకు కనిపించేలా ఉందని నిర్ధారించుకోవడానికి ఫాంట్-ప్రదర్శన CSS ఫీచర్ను శక్తివంతం చేయండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "వెబ్ ఫాంట్లు లోడ్ అవుతున్నప్పుడు వచనం వినియోగదారుకు కనిపించేలా ఉందని నిర్ధారించుకోవడానికి ఫాంట్-ప్రదర్శన CSS ఫీచర్ను శక్తివంతం చేయండి. [మరింత తెలుసుకోండి](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "వెబ్ ఫాంట్ లోడ్ సమయంలో వచనం కనిపించేటట్లు నిర్ధారించుకోండి" @@ -705,7 +705,7 @@ "message": "చెల్లుబాటు కాని చిత్ర పరిమాణ సమాచారం {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "మీ యాప్ను హోమ్ స్క్రీన్కు జోడించుకోవాల్సిందిగా బ్రౌజర్లు క్రియాశీలంగా వినియోగదారులను ప్రాంప్ట్ చేయగలవు, దీని వలన అధిక మంది జనాభాకు చేరువయ్యే అవకాశం పెరగవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "మీ యాప్ను హోమ్ స్క్రీన్కు జోడించుకోవాల్సిందిగా బ్రౌజర్లు క్రియాశీలంగా వినియోగదారులను ప్రాంప్ట్ చేయగలవు, దీని వలన అధిక మంది జనాభాకు చేరువయ్యే అవకాశం పెరగవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "ఇన్స్టాల్ సామర్థ్య అవసరాలకు అనుగుణంగా వెబ్ యాప్ మానిఫెస్ట్ లేదు" @@ -729,7 +729,7 @@ "message": "HTTPSను ఉపయోగిస్తుంది" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "పేజీ కనుక సెల్యులార్ నెట్వర్క్లో వేగంగా లోడ్ అయితే తప్పకుండా మంచి మొబైల్ వినియోగదారు అనుభవాన్ని అందిస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "పేజీ కనుక సెల్యులార్ నెట్వర్క్లో వేగంగా లోడ్ అయితే తప్పకుండా మంచి మొబైల్ వినియోగదారు అనుభవాన్ని అందిస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "ప్రభావశీలత సమయం {timeInMs, number, seconds} సెకన్లు" @@ -750,7 +750,7 @@ "message": "వర్గం" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "అన్వయించడం, సంగ్రహణ చేయడం మరియు JSను అమలు చేయడానికి వెచ్చించే సమయాన్ని తగ్గించడాన్ని పరిగణించండి. చిన్న JS పేలోడ్లను అందించడం ఈ విషయంలో మీకు సహాయకరంగా అనిపించవచ్చు." + "message": "JSను అన్వయించడం, సంకలనం చేయడం, అమలు చేయడం కోసం వెచ్చించే సమయాన్ని తగ్గించడానికి ప్రయత్నించండి. చిన్న JS పేలోడ్లను అందించడం ఈ విషయంలో మీకు సహాయపడవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "ప్రధాన థ్రెడ్ పనిని తగ్గించండి" @@ -759,49 +759,49 @@ "message": "ప్రధాన థ్రెడ్ పనిని తగ్గిస్తుంది" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "అత్యధిక మంది వినియోగదారులకు చేరువ కావడానికి, సైట్లు ప్రతి ప్రధాన బ్రౌజర్లో పని చేయాలి. [మరింత తెలుసుకోండి](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "అత్యధిక మంది వినియోగదారులకు చేరువ కావడానికి, సైట్లు ప్రతి ప్రధాన బ్రౌజర్లో పని చేయాలి. [మరింత తెలుసుకోండి](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "వివిధ రకాల బ్రౌజర్లలో సైట్ పని చేస్తుంది" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "విడివిడిగా ఉన్న పేజీలు URL ద్వారా లోతైన లింక్తో అనుబంధించబడేలా, ఆ URLలు సోషల్ మీడియాలో షేర్ చేసుకోవడానికి ప్రత్యేక రీతిలో ఉండేలా జాగ్రత్త వహించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "విడివిడిగా ఉన్న పేజీలు URL ద్వారా లోతైన లింక్తో అనుబంధించబడేలా, ఆ URLలు సోషల్ మీడియాలో షేర్ చేసుకోవడానికి ప్రత్యేక రీతిలో ఉండేలా జాగ్రత్త వహించండి. [మరింత తెలుసుకోండి](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "ప్రతి పేజీకి URL ఉంది" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "నెట్వర్క్ కనెక్షన్ నెమ్మదిగా ఉన్నప్పటికీ మీరు ఎక్కడైనా నొక్కినప్పుడు, 'పరివర్తనలు' వీక్షణకు భంగం కలిగించకుండా మృదువుగా మారాలి. నిర్వహణాపరమైన పనితీరుకు ఇది చాలా కీలకమైన అంశం. [మరింత తెలుసుకోండి](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "నెట్వర్క్ కనెక్షన్ నెమ్మదిగా ఉన్నప్పటికీ, మీరు స్క్రీన్పై ఎక్కడైనా నొక్కినప్పుడు పరివర్తనలు వీక్షణకు భంగం కలిగించకుండా మృదువుగా ఉండాలి. నిర్వహణాపరమైన పనితీరు దృష్ట్యా ఇలాంటి అనుభూతి అందించడం అత్యంత కీలకం. [మరింత తెలుసుకోండి](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "పేజీ పరివర్తనలు నెట్వర్క్లో లోడ్ అవుతున్నప్పుడు బ్లాక్ అవుతున్నట్లుగా కనిపించకూడదు" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "పేజీ లోడ్కు అత్యంత రద్దీ అయిన 5 సెకన్ల విండో సమయంలో, వినియోగదారు ఇన్పుట్కు ప్రతిస్పందించడానికి, మిల్లీ సెకన్లలో, మీ యాప్ తీసుకునే సమయం యొక్క అంచనాను 'అంచనా వేసిన ఇన్పుట్ ప్రతిస్పందన సమయం' అని అంటారు. మీ ప్రతిస్పందన సమయం 50 మిల్లీ సెకన్ల కన్నా ఎక్కువ అయితే, మీ యాప్ వేగవంతంగా పని చేయట్లేదని వినియోగదారులు భావించవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "పేజీ లోడ్కు అత్యంత రద్దీ అయిన 5 సెకన్ల విండో సమయంలో, వినియోగదారు ఇన్పుట్కు ప్రతిస్పందించడానికి, మిల్లీ సెకన్లలో, మీ యాప్ తీసుకునే సమయం యొక్క అంచనాను 'అంచనా వేసిన ఇన్పుట్ ప్రతిస్పందన సమయం' అని అంటారు. మీ ప్రతిస్పందన సమయం 50 మిల్లీ సెకన్ల కన్నా ఎక్కువ అయితే, మీ యాప్ వేగవంతంగా పని చేయట్లేదని వినియోగదారులు భావించవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "అంచనా వేయబడిన ఇన్పుట్ ప్రతిస్పందన సమయం" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "మొదటి కంటెంట్ సహిత పెయింట్ ఏదైనా వచనం లేదా చిత్రం మొదటిసారి పెయింట్ చేయబడిన సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "మొదటి కంటెంట్ సహిత పెయింట్ ఏదైనా వచనం లేదా చిత్రం మొదటిసారి పెయింట్ చేయబడిన సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "మొదటి కంటెంట్ సహిత పెయింట్" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "'మొదటి CPU ఖాళీ సమయం' కొలమానం, మొదటి సారి పేజీ యొక్క ప్రధాన థ్రెడ్ ఇన్పుట్ను నిర్వహించడానికి తీసుకున్న సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "'మొదటి CPU ఖాళీ సమయం' కొలమానం, మొదటి సారి పేజీ యొక్క ప్రధాన థ్రెడ్ ఇన్పుట్ను నిర్వహించడానికి తీసుకున్న సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "CPU మొదటి ఖాళీ సమయం" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "ఒక పేజీ ప్రాథమిక కంటెంట్ ఎప్పుడు కనిపించింది అనేదానికి, మొదటి అర్ధవంతమైన పెయింట్ ఒక కొలమానం. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "ఒక పేజీ ప్రాథమిక కంటెంట్ ఎప్పుడు కనిపించింది అనేదానికి, మొదటి అర్ధవంతమైన పెయింట్ ఒక కొలమానం. [మరింత తెలుసుకోండి](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "మొదటి అర్థవంతమైన పెయింట్" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "పరస్పర చర్య చేయడానికి పేజీ పూర్తిగా సిద్ధం అయ్యేందుకు పట్టే సమయాన్ని 'పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం' అంటారు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "పరస్పర చర్య చేయడానికి పేజీ పూర్తిగా సిద్ధం అయ్యేందుకు పట్టే సమయాన్ని 'పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం' అంటారు. [మరింత తెలుసుకోండి](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం" @@ -813,7 +813,7 @@ "message": "మొదటి ఇన్పుట్ ఆలస్య గరిష్ఠ వ్యవధి" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "వేగం సూచిక అనేది, ఒక పేజీలోని కంటెంట్లు ఎంత వేగంగా ప్రత్యక్షంగా చూపించబడతాయో తెలియజేస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "వేగం సూచిక అనేది, ఒక పేజీలోని కంటెంట్లు ఎంత వేగంగా ప్రత్యక్షంగా చూపించబడతాయో తెలియజేస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "వేగం సూచిక" @@ -837,7 +837,7 @@ "message": "సర్వర్ బ్యాక్ఎండ్ ప్రతిస్పందన సమయాలు" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "సర్వీస్ వర్కర్ సహాయంతో, మీ వెబ్ యాప్ ఇబ్బందికరమైన నెట్వర్క్ పరిస్థితులలో కూడా విశ్వసనీయత కోల్పోకుండా పని చేయగలుగుతుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "సర్వీస్ వర్కర్ సహాయంతో, మీ వెబ్ యాప్ ఇబ్బందికరమైన నెట్వర్క్ పరిస్థితులలో కూడా విశ్వసనీయత కోల్పోకుండా పని చేయగలుగుతుంది. [మరింత తెలుసుకోండి](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "ఆఫ్లైన్లో ఉన్నప్పుడు `start_url` అన్నది '200' కోడ్తో స్పందించలేదు" @@ -861,7 +861,7 @@ "message": "పనితీరు బడ్జెట్" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "మీరు ఇప్పటికే 'HTTPS' సెటప్ చేసుకుని ఉంటే, మొత్తం 'HTTP' ట్రాఫిక్ను 'HTTPS'కు మళ్లించేలా జాగ్రత్త తీసుకోవడం ద్వారా మీ వినియోగదారులందరికీ సురక్షితమైన వెబ్ ఫీచర్లను అందించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "మీరు ఇప్పటికే 'HTTPS' సెటప్ చేసుకుని ఉంటే, మొత్తం 'HTTP' ట్రాఫిక్ను 'HTTPS'కు మళ్లించేలా జాగ్రత్త తీసుకోవడం ద్వారా మీ వినియోగదారులందరికీ సురక్షితమైన వెబ్ ఫీచర్లను అందించండి. [మరింత తెలుసుకోండి](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "'HTTP' ట్రాఫిక్ను 'HTTPS'కు మళ్లించదు" @@ -870,7 +870,7 @@ "message": "'HTTP' ట్రాఫిక్ను 'HTTPS'కు మళ్లిస్తుంది" }, "lighthouse-core/audits/redirects.js | description": { - "message": "మళ్లింపులు పేజీ లోడ్ అవ్వడానికి ముందు అదనపు ఆలస్యాలను కలుగజేస్తాయి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "మళ్లింపులు పేజీ లోడ్ అవ్వడానికి ముందు అదనపు ఆలస్యాలను కలుగజేస్తాయి. [మరింత తెలుసుకోండి](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "అనేక పేజీ మళ్లింపులను నివారించండి" @@ -1035,7 +1035,7 @@ "message": "ట్యాప్టార్గెట్ల పరిమాణం సముచితంగా ఉంది" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "'సర్వీస్ వర్కర్' సాంకేతిక పరిజ్ఞానం సహాయంతో మీ యాప్ - 'ఆఫ్లైన్ వినియోగం', 'హోమ్ స్క్రీన్కు జోడింపు', 'పుష్ నోటిఫికేషన్లు' లాంటి అనేక ప్రోగ్రెసివ్ వెబ్ యాప్ ఫీచర్లను ఉపయోగించగలుగుతుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "'సర్వీస్ వర్కర్' సాంకేతిక పరిజ్ఞానం సహాయంతో మీ యాప్ - 'ఆఫ్లైన్ వినియోగం', 'హోమ్ స్క్రీన్కు జోడింపు', 'పుష్ నోటిఫికేషన్లు' లాంటి అనేక ప్రోగ్రెసివ్ వెబ్ యాప్ ఫీచర్లను ఉపయోగించగలుగుతుంది. [మరింత తెలుసుకోండి](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "ఈ పేజీ ఒక సర్వీస్ వర్కర్ ద్వారా నియంత్రించబడినప్పటికీ, చెల్లుబాటయ్యే JSON ఫార్మాట్లో అన్వయించడంలో మానిఫెస్ట్ విఫలమైనందున '`start_url`' ఏదీ కనుగొనబడలేదు" @@ -1056,7 +1056,7 @@ "message": "పేజీని, '`start_url`'ను నియంత్రించే సర్వీస్ వర్కర్ నమోదు చేయబడింది" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "ఒక థీమ్తో కూడిన స్ప్లాష్ స్క్రీన్ వలన వినియోగదారులు వారి హోమ్ స్క్రీన్ల నుండి మీ యాప్ను ప్రారంభించినప్పుడు అధిక నాణ్యత గల అనుభవం అందించబడుతుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "ఒక థీమ్తో కూడిన స్ప్లాష్ స్క్రీన్ వలన వినియోగదారులు వారి హోమ్ స్క్రీన్ల నుండి మీ యాప్ను ప్రారంభించినప్పుడు అధిక నాణ్యత గల అనుభవం అందించబడుతుంది. [మరింత తెలుసుకోండి](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "అనుకూలమైన స్ప్లాష్ స్క్రీన్ కోసం కాన్ఫిగర్ చేయలేదు" @@ -1065,7 +1065,7 @@ "message": "అనుకూలమైన స్ప్లాష్ స్క్రీన్ కోసం కాన్ఫిగర్ చేయబడింది" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "బ్రౌజర్ చిరునామా బార్ను మీ సైట్తో సరిపోలే థీమ్లోకి మార్చుకోవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "బ్రౌజర్ చిరునామా బార్ను మీ సైట్తో సరిపోలే థీమ్లోకి మార్చుకోవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "చిరునామా బార్ కోసం థీమ్ రంగును సెట్ చేయలేదు." @@ -1092,7 +1092,7 @@ "message": "మూడవ పక్షం వినియోగం" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "మొదటి బైట్ సమయం మీ సర్వర్ ప్రతిస్పందనను పంపించిన సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "మొదటి బైట్ సమయం మీ సర్వర్ ప్రతిస్పందనను పంపించిన సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "రూట్ పత్రం {timeInMs, number, milliseconds} మి.సె తీసుకుంది" @@ -1113,7 +1113,7 @@ "message": "రకం" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "కీలక వినియోగదారు అనుభవాల సమయంలో మీ యాప్ వాస్తవ ప్రపంచ పనితీరును అంచనా వేయడానికి, మీ యాప్ కోసం వినియోగదారు సమయానుకూల APIని కొలమానంగా చేసుకుని పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "కీలక వినియోగదారు అనుభవాల సమయంలో మీ యాప్ వాస్తవ ప్రపంచ పనితీరును అంచనా వేయడానికి, మీ యాప్ కోసం వినియోగదారు సమయానుకూల APIని కొలమానంగా చేసుకుని పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 వినియోగదారు సమయం}other{# వినియోగదారు సమయాలు}}" @@ -1125,7 +1125,7 @@ "message": "\"{securityOrigin}\" కోసం ముందస్తు కనెక్షన్ <link> కనుగొనబడింది, కానీ బ్రౌజర్ ద్వారా ఉపయోగించబడలేదు. మీరు ``crossorigin`` లక్షణాన్ని సక్రమంగా ఉపయోగిస్తున్నారో లేదో తనిఖీ చేయండి." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "ముఖ్యమైన మూడవ పక్ష మూలాలకు ముందస్తు కనెక్షన్లను ఏర్పాటు చేయడానికి '`preconnect`' లేదా '`dns-prefetch`' వనరు సూచనలను జోడించడాన్ని పరిగణనలోకి తీసుకోండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "ముఖ్యమైన మూడవ పక్ష మూలాలకు ముందస్తు కనెక్షన్లను ఏర్పాటు చేయడానికి '`preconnect`' లేదా '`dns-prefetch`' వనరు సూచనలను జోడించడాన్ని పరిగణనలోకి తీసుకోండి. [మరింత తెలుసుకోండి](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "అవసరమైన మూలాలకు ముందుగా కనెక్ట్ చేయండి" @@ -1134,13 +1134,13 @@ "message": "'{preloadURL}' కోసం ముందే లోడ్ చేసిన ఒక <link> కనుగొనబడింది. కానీ దానిని బ్రౌజర్ ఉపయోగించలేదు. మీరు ``crossorigin`` లక్షణాన్ని సక్రమంగా ఉపయోగిస్తున్నారో లేదో తనిఖీ చేయండి." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "ప్రస్తుతం పేజీ లోడ్లో తర్వాత అభ్యర్ధించబడిన వనరులను పొందడాన్ని ప్రాధాన్యపరచడానికి '`<link rel=preload>`'ను ఉపయోగించడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "ప్రస్తుతం పేజీ లోడ్లో తర్వాత అభ్యర్ధించబడిన వనరులను పొందడాన్ని ప్రాధాన్యపరచడానికి '`<link rel=preload>`'ను ఉపయోగించడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "కీలక అభ్యర్ధనలను ముందుగా లోడ్ చేయండి" }, "lighthouse-core/audits/viewport.js | description": { - "message": "మీ యాప్ను మొబైల్ స్క్రీన్ల కోసం ఆప్టిమైజ్ చేయడానికి '`<meta name=\"viewport\">`' ట్యాగ్ను జోడించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "మీ యాప్ను మొబైల్ స్క్రీన్ల కోసం ఆప్టిమైజ్ చేయడానికి '`<meta name=\"viewport\">`' ట్యాగ్ను జోడించండి. [మరింత తెలుసుకోండి](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "'`<meta name=\"viewport\">`' ట్యాగ్ ఏదీ కనుగొనబడలేదు" @@ -1152,7 +1152,7 @@ "message": "'`width`' లేదా '`initial-scale`'తో '`<meta name=\"viewport\">`' ట్యాగ్ను కలిగి ఉంది" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "'JavaScript' నిలిపివేయబడినప్పుడు, దాని గురించి తెలియజేసే ఏదైనా సమాచారం, అంటే యాప్ను ఉపయోగించాలంటే 'JavaScript' కలిగి ఉండాలని వినియోగదారుకు తెలియజేసే హెచ్చరిక లాంటి ఏదొక కంటెంట్ మీ యాప్లో ప్రదర్శించబడాలి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "'JavaScript' నిలిపివేయబడినప్పుడు, దాని గురించి తెలియజేసే ఏదైనా సమాచారం, అంటే యాప్ను ఉపయోగించాలంటే 'JavaScript' కలిగి ఉండాలని వినియోగదారుకు తెలియజేసే హెచ్చరిక లాంటి ఏదొక కంటెంట్ మీ యాప్లో ప్రదర్శించబడాలి. [మరింత తెలుసుకోండి](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "పేజీ విషయాంశంలో స్క్రిప్ట్లు ఏవైనా అందుబాటులో లేనప్పుడు, కొంత కంటెంట్ను రెండర్ చేయాలి." @@ -1164,7 +1164,7 @@ "message": "JavaScript అందుబాటులో లేనప్పుడు, దాని గురించి తెలియజేసే కొంత కంటెంట్ను కలిగి ఉంది" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "మీరు ప్రోగ్రెసివ్ వెబ్ యాప్ను రూపొందిస్తున్నట్లయితే, సర్వీస్ వర్కర్ను ఉపయోగించడం పరిగణనలోకి తీసుకోండి. దీని వలన ఆఫ్లైన్లో కూడా మీ యాప్ పని చేయగలదు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "మీరు ప్రోగ్రెసివ్ వెబ్ యాప్ను రూపొందిస్తున్నట్లయితే, సర్వీస్ వర్కర్ను ఉపయోగించడం పరిగణనలోకి తీసుకోండి. దీని వలన ఆఫ్లైన్లో కూడా మీ యాప్ పని చేయగలదు. [మరింత తెలుసుకోండి](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "ఆఫ్లైన్లో ఉన్నప్పుడు, ప్రస్తుత పేజీ '200' కోడ్తో స్పందించలేదు"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/th.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/th.json index a0ce750..d75623e 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/th.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/th.json
@@ -30,10 +30,10 @@ "message": "บทบาท ARIA ระดับบนสุดบางบทบาทต้องมีบทบาทย่อยที่เจาะจงเพื่อใช้ฟังก์ชันการช่วยเหลือพิเศษตามวัตถุประสงค์ [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-required-children/)" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "ไม่มีองค์ประกอบที่มี `[role]` ซึ่งกำหนดให้มี `[role]` ย่อยที่เจาะจง" + "message": "องค์ประกอบที่มี ARIA `[role]` ที่กำหนดให้องค์ประกอบย่อยต้องมี `[role]` ที่เฉพาะเจาะจงขาดองค์ประกอบย่อยที่จำเป็นดังกล่าวบางส่วนหรือทั้งหมด" }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "มีองค์ประกอบที่มี `[role]` ซึ่งกำหนดให้มี `[role]` ย่อยที่เจาะจง" + "message": "องค์ประกอบที่มี ARIA `[role]` ที่กำหนดให้องค์ประกอบย่อยต้องมี `[role]` ที่เฉพาะเจาะจงนั้นมีองค์ประกอบย่อยที่จำเป็นทั้งหมด" }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "บทบาท ARIA ย่อยบางบทบาทต้องอยู่ในบทบาทระดับบนสุดที่เจาะจงเพื่อให้ใช้ฟังก์ชันการช่วยเหลือพิเศษตามวัตถุประสงค์ได้อย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-required-parent/)" @@ -276,10 +276,10 @@ "message": "โปรแกรมอ่านหน้าจอมีฟีเจอร์ที่ช่วยให้ไปยังส่วนต่างๆ ของตารางได้ง่ายขึ้น การดูแลให้เซลล์ `<td>` ที่ใช้แอตทริบิวต์ `[headers]` อ้างอิงถึงเซลล์อื่นๆ ในตารางเดียวกันเท่านั้นอาจช่วยปรับปรุงประสบการณ์สำหรับผู้ใช้โปรแกรมอ่านหน้าจอ [ดูข้อมูลเพิ่มเติม](https://web.dev/td-headers-attr/)" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "เซลล์ในองค์ประกอบ `<table>` ที่ใช้แอตทริบิวต์ `[headers]` อ้างอิงถึงเซลล์อื่นๆ ของตารางเดียวกันเท่านั้น" + "message": "เซลล์ในองค์ประกอบ `<table>` ที่ใช้แอตทริบิวต์ `[headers]` อ้างอิงถึง `id` ขององค์ประกอบที่ไม่พบในตารางเดียวกันนี้" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "เซลล์ในองค์ประกอบ `<table>` ที่ใช้แอตทริบิวต์ `[headers]` อ้างอิงถึงเซลล์อื่นๆ ของตารางเดียวกันเท่านั้น" + "message": "เซลล์ในองค์ประกอบ `<table>` ที่ใช้แอตทริบิวต์ `[headers]` อ้างอิงถึงเซลล์ของตารางภายในตารางเดียวกัน" }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "โปรแกรมอ่านหน้าจอมีฟีเจอร์ที่ช่วยให้ไปยังส่วนต่างๆ ของตารางได้ง่ายขึ้น การดูแลให้ส่วนหัวของตารางอ้างอิงถึงชุดเซลล์บางชุดอยู่เสมออาจช่วยปรับปรุงประสบการณ์สำหรับผู้ใช้โปรแกรมอ่านหน้าจอ [ดูข้อมูลเพิ่มเติม](https://web.dev/th-has-data-cells/)" @@ -318,7 +318,7 @@ "message": "องค์ประกอบ `<video>` มีองค์ประกอบ `<track>` ที่มี `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "ให้ระบุ `apple-touch-icon` เพื่อให้ปรากฏใน iOS ได้อย่างดีที่สุดเมื่อผู้ใช้เพิ่ม Progressive Web App ลงในหน้าจอหลัก โดยต้องชี้ไปที่สี่เหลี่ยมจตุรัสแบบไม่โปร่งใสขนาด 192 พิกเซล (หรือ 180 พิกเซล) รูปแบบ PNG [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "ให้ระบุ `apple-touch-icon` เพื่อให้ปรากฏใน iOS ได้อย่างดีที่สุดเมื่อผู้ใช้เพิ่ม Progressive Web App ลงในหน้าจอหลัก โดยต้องชี้ไปที่สี่เหลี่ยมจตุรัสแบบไม่โปร่งใสขนาด 192 พิกเซล (หรือ 180 พิกเซล) รูปแบบ PNG [ดูข้อมูลเพิ่มเติม](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "ไม่ได้ให้ `apple-touch-icon` ที่ถูกต้อง" @@ -342,7 +342,7 @@ "message": "เวลา CPU รวม" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "พิจารณาลดเวลาที่ใช้ในการแยกวิเคราะห์ แปลโปรแกรม และดำเนินการกับ JS การส่งเปย์โหลด JS ปริมาณน้อยอาจช่วยในเรื่องนี้ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/bootup)" + "message": "พิจารณาลดเวลาที่ใช้ในการแยกวิเคราะห์ แปลโปรแกรม และดำเนินการกับ JS การส่งเปย์โหลด JS ปริมาณน้อยอาจช่วยในเรื่องนี้ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/bootup-time)" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "ลดเวลาในการดำเนินการกับ JavaScript" @@ -351,25 +351,25 @@ "message": "เวลาในการดำเนินการกับ JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "GIF ขนาดใหญ่ไม่มีประสิทธิภาพในการแสดงเนื้อหาภาพเคลื่อนไหว พิจารณาใช้วิดีโอ MPEG4/WebM สำหรับภาพเคลื่อนไหวและใช้ PNG/WebP สำหรับภาพนิ่งแทน GIF เพื่อประหยัดไบต์ของเครือข่าย [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "GIF ขนาดใหญ่ไม่มีประสิทธิภาพในการแสดงเนื้อหาภาพเคลื่อนไหว พิจารณาใช้วิดีโอ MPEG4/WebM สำหรับภาพเคลื่อนไหวและใช้ PNG/WebP สำหรับภาพนิ่งแทน GIF เพื่อประหยัดไบต์ของเครือข่าย [ดูข้อมูลเพิ่มเติม](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "ใช้รูปแบบวิดีโอสำหรับเนื้อหาภาพเคลื่อนไหว" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "พิจารณาโหลดรูปภาพนอกหน้าจอและรูปภาพที่ซ่อนไว้แบบ Lazy Loading หลังจากที่ทรัพยากรที่สำคัญทั้งหมดโหลดเสร็จแล้วเพื่อลดเวลาในการโต้ตอบ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)" + "message": "พิจารณาโหลดรูปภาพนอกหน้าจอและรูปภาพที่ซ่อนไว้แบบ Lazy Loading หลังจากที่ทรัพยากรที่สำคัญทั้งหมดโหลดเสร็จแล้วเพื่อลดเวลาในการโต้ตอบ [ดูข้อมูลเพิ่มเติม](https://web.dev/offscreen-images)" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "เลื่อนเวลาโหลดรูปภาพนอกจอภาพ" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "ทรัพยากรบล็อก First Paint ของหน้าเว็บอยู่ พิจารณาแสดง JS/CSS ที่สำคัญในหน้าและเลื่อนเวลาแสดง JS/สไตล์ที่ไม่สำคัญทั้งหมดออกไป [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)" + "message": "ทรัพยากรบล็อก First Paint ของหน้าเว็บอยู่ พิจารณาแสดง JS/CSS ที่สำคัญในหน้าและเลื่อนเวลาแสดง JS/สไตล์ที่ไม่สำคัญทั้งหมดออกไป [ดูข้อมูลเพิ่มเติม](https://web.dev/render-blocking-resources)" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "กำจัดทรัพยากรที่บล็อกการแสดงผล" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "เปย์โหลดปริมาณมากของเครือข่ายทำให้ผู้ใช้เสียค่าใช้จ่ายสูงและสัมพันธ์กับเวลาการโหลดนานเป็นอย่างมาก [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)" + "message": "เปย์โหลดปริมาณมากของเครือข่ายทำให้ผู้ใช้เสียค่าใช้จ่ายสูงและสัมพันธ์กับเวลาการโหลดนานเป็นอย่างมาก [ดูข้อมูลเพิ่มเติม](https://web.dev/total-byte-weight)" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "ขนาดรวมเดิมคือ {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "หลีกเลี่ยงเปย์โหลดเครือข่ายปริมาณมาก" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "การลดขนาดไฟล์ CSS ช่วยลดขนาดเปย์โหลดของเครือข่ายได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/minify-css)" + "message": "การลดขนาดไฟล์ CSS ช่วยลดขนาดเปย์โหลดของเครือข่ายได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/unminified-css)" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "ลดขนาด CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "การลดขนาดไฟล์ JavaScript ช่วยลดขนาดเปย์โหลดและเวลาในการแยกวิเคราะห์สคริปต์ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/speed/docs/insights/MinifyResources)" + "message": "การลดขนาดไฟล์ JavaScript ช่วยลดขนาดเปย์โหลดและเวลาในการแยกวิเคราะห์สคริปต์ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/unminified-javascript)" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "ลดขนาด JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "นำกฎที่ไม่มีผลแล้วออกจากสไตล์ชีตและเลื่อนเวลาการโหลด CSS ที่ไม่ได้ใช้สำหรับเนื้อหาครึ่งหน้าบนเพื่อลดจำนวนไบต์ที่ไม่จำเป็นที่กิจกรรมเครือข่ายใช้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/unused-css)" + "message": "นำกฎที่ไม่มีผลแล้วออกจากสไตล์ชีตและเลื่อนเวลาการโหลด CSS ที่ไม่ได้ใช้สำหรับเนื้อหาครึ่งหน้าบนเพื่อลดจำนวนไบต์ที่ไม่จำเป็นที่กิจกรรมเครือข่ายใช้ [ดูข้อมูลเพิ่มเติม](https://web.dev/unused-css-rules)" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "นำ CSS ที่ไม่ได้ใช้ออก" @@ -405,7 +405,7 @@ "message": "นำ JavaScript ที่ไม่ได้ใช้ออก" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "อายุการใช้งานแคชที่ยาวนานช่วยเพิ่มการเข้าชมหน้าเว็บซ้ำได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)" + "message": "อายุการใช้งานแคชที่ยาวนานช่วยเพิ่มการเข้าชมหน้าเว็บซ้ำได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-long-cache-ttl)" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{พบทรัพยากร 1 รายการ}other{พบทรัพยากร # รายการ}}" @@ -417,31 +417,31 @@ "message": "ใช้นโยบายแคชที่มีประสิทธิภาพกับเนื้อหาคงที่" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "รูปภาพที่ได้รับการเพิ่มประสิทธิภาพจะโหลดได้เร็วขึ้นและใช้อินเทอร์เน็ตมือถือน้อยลง [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)" + "message": "รูปภาพที่ได้รับการเพิ่มประสิทธิภาพจะโหลดได้เร็วขึ้นและใช้อินเทอร์เน็ตมือถือน้อยลง [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-optimized-images)" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "เข้ารหัสรูปภาพอย่างมีประสิทธิภาพ" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "แสดงรูปภาพที่มีขนาดที่เหมาะสมเพื่อประหยัดอินเทอร์เน็ตมือถือและปรับปรุงเวลาในการโหลด [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)" + "message": "แสดงรูปภาพที่มีขนาดที่เหมาะสมเพื่อประหยัดอินเทอร์เน็ตมือถือและปรับปรุงเวลาในการโหลด [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-responsive-images)" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "ปรับขนาดรูปภาพให้เหมาะสม" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "ทรัพยากรแบบข้อความควรแสดงผลโดยมีการบีบอัด (Gzip, Deflate หรือ Brotli) เพื่อลดจำนวนไบต์เครือข่ายทั้งหมด [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/text-compression)" + "message": "ทรัพยากรแบบข้อความควรแสดงผลโดยมีการบีบอัด (Gzip, Deflate หรือ Brotli) เพื่อลดจำนวนไบต์เครือข่ายทั้งหมด [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-text-compression)" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "เปิดใช้การบีบอัดข้อความ" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "รูปแบบรูปภาพอย่างเช่น JPEG 2000, JPEG XR และ WebP มักบีบอัดได้ดีกว่า PNG หรือ JPEG ซึ่งหมายความว่าจะดาวน์โหลดได้เร็วขึ้นและใช้อินเทอร์เน็ตน้อยลง [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/webp)" + "message": "รูปแบบรูปภาพอย่างเช่น JPEG 2000, JPEG XR และ WebP มักบีบอัดได้ดีกว่า PNG หรือ JPEG ซึ่งหมายความว่าจะดาวน์โหลดได้เร็วขึ้นและใช้อินเทอร์เน็ตน้อยลง [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-webp-images)" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "แสดงรูปภาพในรูปแบบสมัยใหม่" }, "lighthouse-core/audits/content-width.js | description": { - "message": "หากความกว้างของเนื้อหาในแอปไม่ตรงกับความกว้างของวิวพอร์ต แอปอาจไม่ได้รับการเพิ่มประสิทธิภาพสำหรับหน้าจออุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "หากความกว้างของเนื้อหาในแอปไม่ตรงกับความกว้างของวิวพอร์ต แอปอาจไม่ได้รับการเพิ่มประสิทธิภาพสำหรับหน้าจออุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "ขนาดวิวพอร์ต {innerWidth} พิกเซลไม่ตรงกับขนาดหน้าต่าง {outerWidth} พิกเซล" @@ -453,7 +453,7 @@ "message": "มีการปรับขนาดเนื้อหาอย่างถูกต้องสำหรับวิวพอร์ต" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "ห่วงโซ่คำขอที่สำคัญด้านล่างแสดงให้เห็นทรัพยากรที่โหลดโดยมีลำดับความสำคัญสูง พิจารณาลดความยาวของห่วงโซ่ ลดขนาดการดาวน์โหลดของทรัพยากร หรือเลื่อนเวลาการดาวน์โหลดทรัพยากรที่ไม่จำเป็นเพื่อปรับปรุงการโหลดหน้าเว็บ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)" + "message": "ห่วงโซ่คำขอที่สำคัญด้านล่างแสดงให้เห็นทรัพยากรที่โหลดโดยมีลำดับความสำคัญสูง พิจารณาลดความยาวของห่วงโซ่ ลดขนาดการดาวน์โหลดของทรัพยากร หรือเลื่อนเวลาการดาวน์โหลดทรัพยากรที่ไม่จำเป็นเพื่อปรับปรุงการโหลดหน้าเว็บ [ดูข้อมูลเพิ่มเติม](https://web.dev/critical-request-chains)" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{พบห่วงโซ่ 1 รายการ}other{พบห่วงโซ่ # รายการ}}" @@ -675,7 +675,7 @@ "message": "ไม่มีข้อผิดพลาดเบราว์เซอร์บันทึกลงในคอนโซล" }, "lighthouse-core/audits/font-display.js | description": { - "message": "ใช้ประโยชน์จากฟีเจอร์ CSS สำหรับแสดงแบบอักษรเพื่อให้ผู้ใช้มองเห็นข้อความได้ในขณะที่กำลังโหลดเว็บฟอนต์ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/updates/2016/02/font-display)" + "message": "ใช้ประโยชน์จากฟีเจอร์ CSS สำหรับแสดงแบบอักษรเพื่อให้ผู้ใช้มองเห็นข้อความได้ในขณะที่กำลังโหลดเว็บฟอนต์ [ดูข้อมูลเพิ่มเติม](https://web.dev/font-display)" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "ตรวจสอบว่าข้อความจะยังมองเห็นได้ในระหว่างการโหลดเว็บฟอนต์" @@ -705,7 +705,7 @@ "message": "ข้อมูลขนาดรูปภาพไมู่กต้อง {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "เบราว์เซอร์แจ้งผู้ใช้อย่างชัดแจ้งให้เพิ่มแอปของคุณในหน้าจอหลัก ซึ่งจะทำให้ผู้ใช้มีส่วนร่วมเพิ่มขึ้นได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "เบราว์เซอร์แจ้งผู้ใช้อย่างชัดแจ้งให้เพิ่มแอปของคุณในหน้าจอหลัก ซึ่งจะทำให้ผู้ใช้มีส่วนร่วมเพิ่มขึ้นได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "ไฟล์ Manifest ของเว็บแอปไม่ตรงตามข้อกำหนดด้านความสามารถในการติดตั้ง" @@ -729,7 +729,7 @@ "message": "ใช้ HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "การโหลดหน้าเว็บที่รวดเร็วผ่านเครือข่ายมือถือช่วยให้มั่นใจว่าผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีในอุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)" + "message": "การโหลดหน้าเว็บที่รวดเร็วผ่านเครือข่ายมือถือช่วยให้มั่นใจว่าผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีในอุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://web.dev/load-fast-enough-for-pwa)" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "โต้ตอบที่ {timeInMs, number, seconds} วินาที" @@ -750,7 +750,7 @@ "message": "หมวดหมู่" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "พิจารณาลดเวลาที่ใช้ในการแยกวิเคราะห์ แปลโปรแกรม และดำเนินการกับ JS การส่งเปย์โหลด JS ปริมาณน้อยอาจช่วยในเรื่องนี้ได้" + "message": "พิจารณาลดเวลาที่ใช้ในการแยกวิเคราะห์ แปลโปรแกรม และดำเนินการกับ JS การส่งเพย์โหลด JS ปริมาณน้อยลงอาจช่วยในเรื่องนี้ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "ลดการทำงานของเธรดหลัก" @@ -759,49 +759,49 @@ "message": "ลดการทำงานของเธรดหลัก" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "เว็บไซต์ควรทำงานในเบราว์เซอร์หลักๆ ทั้งหมดได้เพื่อให้เข้าถึงผู้ใช้จำนวนมากที่สุด [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "เว็บไซต์ควรทำงานในเบราว์เซอร์หลักๆ ทั้งหมดได้เพื่อให้เข้าถึงผู้ใช้จำนวนมากที่สุด [ดูข้อมูลเพิ่มเติม](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "เว็บไซต์ทำงานในเบราว์เซอร์ต่างๆ ได้" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "ตรวจดูว่าแต่ละหน้าทำ Deep Link ผ่าน URL ได้และ URL ต่างๆ ไม่ซ้ำกันเพื่อให้แชร์ได้ในโซเชียลมีเดีย [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "ตรวจดูว่าแต่ละหน้าทำ Deep Link ผ่าน URL ได้และ URL ต่างๆ ไม่ซ้ำกันเพื่อให้แชร์ได้ในโซเชียลมีเดีย [ดูข้อมูลเพิ่มเติม](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "แต่ละหน้ามี URL ที่ไม่ซ้ำกัน" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "การเปลี่ยนควรจะดำเนินไปอย่างรวดเร็วขณะที่คุณแตะไปรอบๆ แม้ในเครือข่ายที่ช้า ซึ่งเป็นสิ่งสำคัญที่นำไปสู่ประสิทธิภาพที่รับรู้ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "การเปลี่ยนควรจะดำเนินไปอย่างรวดเร็วขณะที่คุณแตะไปรอบๆ แม้ในเครือข่ายที่ช้า ซึ่งเป็นสิ่งสำคัญที่ทำให้ผู้ใช้รับรู้ได้ถึงประสิทธิภาพ [ดูข้อมูลเพิ่มเติม](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "เปลี่ยนหน้าได้รวดเร็วแม้ว่าเครือข่ายจะช้า" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "เวลาตอบสนองต่ออินพุตโดยประมาณเป็นระยะเวลาโดยประมาณที่แอปใช้เพื่อตอบสนองอินพุตของผู้ใช้ระหว่างการโหลดหน้าเว็บในกรอบเวลา 5 วินาทีที่ทำงานหนักที่สุด มีหน่วยเป็นมิลลิวินาที หากเวลาในการตอบสนองนานกว่า 50 มิลลิวินาที ผู้ใช้อาจรู้สึกว่าแอปช้า [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)" + "message": "เวลาตอบสนองต่ออินพุตโดยประมาณเป็นระยะเวลาโดยประมาณที่แอปใช้เพื่อตอบสนองอินพุตของผู้ใช้ระหว่างการโหลดหน้าเว็บในกรอบเวลา 5 วินาทีที่ทำงานหนักที่สุด มีหน่วยเป็นมิลลิวินาที หากเวลาในการตอบสนองนานกว่า 50 มิลลิวินาที ผู้ใช้อาจรู้สึกว่าแอปช้า [ดูข้อมูลเพิ่มเติม](https://web.dev/estimated-input-latency)" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "เวลาในการตอบสนองต่ออินพุตโดยประมาณ" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "First Contentful Paint ระบุเวลาที่มีการแสดงผลข้อความหรือรูปภาพครั้งแรก [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)" + "message": "First Contentful Paint ระบุเวลาที่มีการแสดงผลข้อความหรือรูปภาพครั้งแรก [ดูข้อมูลเพิ่มเติม](https://web.dev/first-contentful-paint)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "การแสดงผลที่มีเนื้อหาเต็มครั้งแรก" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "First CPU Idle ระบุครั้งแรกที่เธรดหลักของหน้าเว็บว่างพอที่จะจัดการกับอินพุต [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)" + "message": "First CPU Idle ระบุครั้งแรกที่เทรดหลักของหน้าเว็บว่างพอที่จะจัดการกับอินพุต [ดูข้อมูลเพิ่มเติม](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "CPU ไม่ได้ใช้งานครั้งแรก" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "การแสดงผลที่มีความหมายครั้งแรกวัดเมื่อเนื้อหาหลักของหน้าเว็บปรากฏ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)" + "message": "การแสดงผลที่มีความหมายครั้งแรกวัดเมื่อเนื้อหาหลักของหน้าเว็บปรากฏ [ดูข้อมูลเพิ่มเติม](https://web.dev/first-meaningful-paint)" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "การแสดงผลที่มีความหมายครั้งแรก" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "เวลาในการตอบสนองคือระยะเวลาที่หน้าเว็บใช้ในการตอบสนองอย่างสมบูรณ์ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)" + "message": "เวลาในการตอบสนองคือระยะเวลาที่หน้าเว็บใช้ในการตอบสนองอย่างสมบูรณ์ [ดูข้อมูลเพิ่มเติม](https://web.dev/interactive)" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "เวลาในการโต้ตอบ" @@ -813,7 +813,7 @@ "message": "First Input Delay สูงสุดที่อาจเกิดขึ้น" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "ดัชนีความเร็วแสดงให้เห็นความเร็วที่เนื้อหาของหน้าปรากฏจนดูสมบูรณ์ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/speed-index)" + "message": "ดัชนีความเร็วแสดงให้เห็นความเร็วที่เนื้อหาของหน้าปรากฏจนดูสมบูรณ์ [ดูข้อมูลเพิ่มเติม](https://web.dev/speed-index)" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "ดัชนีความเร็ว" @@ -837,7 +837,7 @@ "message": "เวลาในการตอบสนองจากแบ็กเอนด์ของเซิร์ฟเวอร์" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Service Worker ช่วยให้เว็บแอปของคุณเชื่อถือได้ในสภาวะของเครือข่ายที่คาดการณ์ไม่ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Service Worker ช่วยให้เว็บแอปของคุณเชื่อถือได้ในสภาวะของเครือข่ายที่คาดการณ์ไม่ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` ไม่ตอบสนองด้วยรหัส 200 เมื่อออฟไลน์" @@ -861,7 +861,7 @@ "message": "งบประมาณประสิทธิภาพ" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "หากคุณตั้งค่า HTTPS ไว้แล้ว ให้ตรวจสอบว่าได้เปลี่ยนเส้นทางการเข้าชมผ่าน HTTP ทั้งหมดไปยัง HTTPS เพื่อให้ผู้ใช้ทุกคนใช้ฟีเจอร์เว็บที่ปลอดภัยได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "หากคุณตั้งค่า HTTPS ไว้แล้ว ให้ตรวจสอบว่าได้เปลี่ยนเส้นทางการเข้าชมผ่าน HTTP ทั้งหมดไปยัง HTTPS เพื่อให้ผู้ใช้ทุกคนใช้ฟีเจอร์เว็บที่ปลอดภัยได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "ไม่ได้เปลี่ยนเส้นทางการเข้าชมผ่าน HTTP ไปยัง HTTPS" @@ -870,7 +870,7 @@ "message": "เปลี่ยนเส้นทางการเข้าชมผ่าน HTTP ไปยัง HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "การเปลี่ยนเส้นทางทำให้เกิดความล่าช้ามากขึ้นก่อนที่หน้าเว็บจะโหลดได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/redirects)" + "message": "การเปลี่ยนเส้นทางทำให้เกิดความล่าช้ามากขึ้นก่อนที่หน้าเว็บจะโหลดได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/redirects)" }, "lighthouse-core/audits/redirects.js | title": { "message": "หลีกเลี่ยงการเปลี่ยนเส้นทางหลายหน้า" @@ -1035,7 +1035,7 @@ "message": "เป้าหมายการแตะมีขนาดที่เหมาะสม" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service Worker เป็นเทคโนโลยีที่ช่วยให้แอปของคุณใช้ฟีเจอร์ของ Progressive Web App ได้หลายฟีเจอร์ เช่น ออฟไลน์ เพิ่มไปยังหน้าจอหลัก และข้อความ Push [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Service Worker เป็นเทคโนโลยีที่ช่วยให้แอปของคุณใช้ฟีเจอร์ของ Progressive Web App ได้หลายฟีเจอร์ เช่น ออฟไลน์ เพิ่มไปยังหน้าจอหลัก และข้อความ Push [ดูข้อมูลเพิ่มเติม](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "หน้านี้ควบคุมโดย Service Worker แต่ไม่พบ `start_url` เนื่องจากไฟล์ Manifest แยกวิเคราะห์เป็น JSON ที่ถูกต้องไม่ได้" @@ -1056,7 +1056,7 @@ "message": "ลงทะเบียน Service Worker ที่ควบคุมหน้าเว็บและ `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "หน้าจอแนะนำที่มีธีมช่วยให้ผู้ใช้ได้รับประสบการณ์ที่มีคุณภาพสูงเมื่อเปิดแอปของคุณจากหน้าจอหลัก [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "หน้าจอแนะนำที่มีธีมช่วยให้ผู้ใช้ได้รับประสบการณ์ที่มีคุณภาพสูงเมื่อเปิดแอปของคุณจากหน้าจอหลัก [ดูข้อมูลเพิ่มเติม](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "ไม่ได้กำหนดค่าให้ใช้หน้าจอแนะนำที่กำหนดเอง" @@ -1065,7 +1065,7 @@ "message": "มีการกำหนดค่าให้ใช้หน้าจอแนะนำที่กำหนดเอง" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "คุณกำหนดธีมของแถบที่อยู่เบราว์เซอร์ให้เข้ากับเว็บไซต์ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "คุณกำหนดธีมของแถบที่อยู่เบราว์เซอร์ให้เข้ากับเว็บไซต์ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "ไม่ได้กำหนดสีธีมสำหรับแถบที่อยู่" @@ -1092,7 +1092,7 @@ "message": "การใช้บุคคลที่สาม" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Time To First Byte ระบุเวลาที่เซิร์ฟเวอร์ส่งการตอบกลับ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/ttfb)" + "message": "Time To First Byte ระบุเวลาที่เซิร์ฟเวอร์ส่งการตอบกลับ [ดูข้อมูลเพิ่มเติม](https://web.dev/time-to-first-byte)" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "เอกสารรากใช้เวลา {timeInMs, number, milliseconds} มิลลิวินาที" @@ -1113,7 +1113,7 @@ "message": "ประเภท" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "พิจารณาติดตั้ง User Timing API ในแอปเพื่อวัดประสิทธิภาพในระหว่างประสบการณ์สำคัญของผู้ใช้ในชีวิตจริงได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/user-timing)" + "message": "พิจารณาติดตั้ง User Timing API ในแอปเพื่อวัดประสิทธิภาพในระหว่างประสบการณ์สำคัญของผู้ใช้ในชีวิตจริงได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/user-timings)" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{ระยะเวลาของผู้ใช้ 1 รายการ}other{ระยะเวลาของผู้ใช้ # รายการ}}" @@ -1125,7 +1125,7 @@ "message": "พบ <link> ที่เชื่อมต่อล่วงหน้าสำหรับ \"{securityOrigin}\" แต่เบราว์เซอร์ไม่ได้นำไปใช้งาน โปรดตรวจสอบว่าคุณใช้แอตทริบิวต์ `crossorigin` อย่างถูกต้องแล้ว" }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "พิจารณาเพิ่ม `preconnect` หรือ `dns-prefetch` ซึ่งบอกถึงทรัพยากรเพื่อสร้างการเชื่อมต่อกับต้นทางที่สำคัญของบุคคลที่สามตั้งแต่เนิ่นๆ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "พิจารณาเพิ่ม `preconnect` หรือ `dns-prefetch` ซึ่งบอกถึงทรัพยากรเพื่อสร้างการเชื่อมต่อกับต้นทางที่สำคัญของบุคคลที่สามตั้งแต่เนิ่นๆ [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "เชื่อมต่อกับต้นทางที่จำเป็นล่วงหน้า" @@ -1134,13 +1134,13 @@ "message": "พบ <link> ที่โหลดล่วงหน้าสำหรับ \"{preloadURL}\" แต่เบราว์เซอร์ไม่ได้นำไปใช้งาน โปรดตรวจสอบว่าคุณใช้แอตทริบิวต์ `crossorigin` อย่างถูกต้องแล้ว" }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "พิจารณาใช้ `<link rel=preload>` เพื่อจัดลำดับความสำคัญในการเรียกทรัพยากรที่มีการขอให้โหลดหน้าเว็บภายหลัง [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/preload)" + "message": "พิจารณาใช้ `<link rel=preload>` เพื่อจัดลำดับความสำคัญในการเรียกทรัพยากรที่มีการขอให้โหลดหน้าเว็บภายหลัง [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-rel-preload)" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "โหลดคำขอสำคัญล่วงหน้า" }, "lighthouse-core/audits/viewport.js | description": { - "message": "เพิ่มแท็ก `<meta name=\"viewport\">` เพื่อเพิ่มประสิทธิภาพแอปสำหรับหน้าจออุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "เพิ่มแท็ก `<meta name=\"viewport\">` เพื่อเพิ่มประสิทธิภาพแอปสำหรับหน้าจออุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "ไม่พบแท็ก `<meta name=\"viewport\">`" @@ -1152,7 +1152,7 @@ "message": "มีแท็ก `<meta name=\"viewport\">` ที่มี `width` หรือ `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "แอปควรแสดงเนื้อหาบางอย่างเมื่อมีการปิดใช้ JavaScript แม้จะเป็นเพียงการเตือนผู้ใช้ว่าการใช้แอปจำเป็นต้องใช้ JavaScript [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/no-js)" + "message": "แอปควรแสดงเนื้อหาบางอย่างเมื่อมีการปิดใช้ JavaScript แม้จะเป็นเพียงการเตือนผู้ใช้ว่าการใช้แอปจำเป็นต้องใช้ JavaScript [ดูข้อมูลเพิ่มเติม](https://web.dev/without-javascript)" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "ส่วนเนื้อหาในหน้าควรแสดงเนื้อหาบางอย่างถ้าสคริปต์ในหน้าไม่พร้อมใช้งาน" @@ -1164,7 +1164,7 @@ "message": "มีเนื้อหาบางอย่างแสดงขึ้นเมื่อ JavaScript ไม่พร้อมใช้งาน" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "หากคุณกำลังสร้าง Progressive Web App ให้พิจารณาใช้ Service Worker เพื่อให้แอปทำงานแบบออฟไลน์ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "หากคุณกำลังสร้าง Progressive Web App ให้พิจารณาใช้ Service Worker เพื่อให้แอปทำงานแบบออฟไลน์ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "หน้าปัจจุบันไม่ตอบสนองด้วยรหัส 200 เมื่อออฟไลน์"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/tr.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/tr.json index 47168cd5..00ef37b 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/tr.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/tr.json
@@ -30,10 +30,10 @@ "message": "Bazı ARIA üst rollerinin amaçlanan erişilebilirlik işlevlerini gerçekleştirebilmek için belirli alt rolleri içermesi gerekir. [Daha fazla bilgi](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Belirli alt `[role]`rolleri gerektiren,`[role]` rolüne sahip öğeler eksik." + "message": "ARIA `[role]` sahibi olup alt öğelerin belirli bir `[role]` içermesini gerektiren öğelerde bu gerekli alt öğelerin bazıları veya hiçbiri bulunmuyor." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Belirli alt `[role]` rolleri gerektiren,`[role]` rolüne sahip öğeler mevcut" + "message": "ARIA `[role]` sahibi olup alt öğelerin belirli bir `[role]` içermesini gerektiren öğelerde gerekli alt öğelerin hepsi bulunuyor." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Bazı ARIA alt rollerinin amaçlanan erişilebilirlik işlevlerini gerektiği gibi gerçekleştirebilmesi için belirli üst rollerin içinde bulunması gerekir. [Daha fazla bilgi](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Ekran okuyucuların tablolarda daha kolay gezinmeyi sağlayan özellikleri vardır. `[headers]` özelliğini kullanan`<td>` hücrelerinin yalnızca aynı tablodaki diğer hücrelere atıfta bulunmasını sağlamak, ekran okuyucu kullanıcılarına daha iyi bir deneyim sunabilir. [Daha fazla bilgi](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`<table>` öğesinde olup `[headers]` özelliğini kullanan hücreler, aynı tablodaki diğer hücrelere atıfta bulunuyor." + "message": "`<table>` öğesinde olup `[headers]` özelliğini kullanan hücrelerin atıfta bulunduğu öğe `id` aynı tabloda yer almıyor." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "`<table>` öğesinde olup `[headers]` özelliğini kullanan hücreler yalnızca aynı tablodaki diğer hücrelere atıfta bulunuyor." + "message": "`<table>` öğesinde olup `[headers]` özelliğini kullanan hücreler, aynı tablodaki tablo hücrelerine atıfta bulunuyor." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Ekran okuyucuların tablolarda daha kolay gezinmeyi sağlayan özellikleri vardır. Tablo başlıklarının her zaman bazı hücre kümelerine atıfta bulunmasını sağlamak, ekran okuyucu kullanıcılarına daha iyi bir deneyim sunabilir. [Daha fazla bilgi](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "`<video>` öğelerinde `[kind=\"description\"]`içeren bir `<track>` öğesi bulunuyor" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Kullanıcılar ana ekranlarına progresif web uygulaması eklerinde iOS'ta ideal görünüm için bir `apple-touch-icon` öğesi tanımlayın. Tanım, saydam olmayan bir 192 piksel (veya 180 piksel) kare PNG'ye götürmelidir. [Daha Fazla Bilgi](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Kullanıcılar ana ekranlarına progresif web uygulaması eklerinde iOS'ta ideal görünüm için bir `apple-touch-icon` öğesi tanımlayın. Tanım, saydam olmayan bir 192 piksel (veya 180 piksel) kare PNG'ye götürmelidir. [Daha Fazla Bilgi](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Geçerli bir `apple-touch-icon` öğesi içermiyor" @@ -342,7 +342,7 @@ "message": "Toplam CPU Süresi" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "JS'yi ayrıştırma, derleme ve yürütme için harcanan zamanı kısaltmayı düşünün. Daha küçük JS yüklerinin sağlanması bu konuda yardımcı olabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "JS'yi ayrıştırma, derleme ve yürütme için harcanan zamanı kısaltmayı düşünün. Daha küçük JS yüklerinin sağlanması bu konuda yardımcı olabilir. [Daha fazla bilgi](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "JavaScript yürütme süresini azaltın" @@ -351,25 +351,25 @@ "message": "JavaScript yürütme süresi" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Büyük GIF'ler, animasyonlu içeriğin sunulmasında verimli olmaz. Ağ veri miktarından tasarruf etmek üzere animasyonlar için MPEG4/WebM videoları ve statik resimler için GIF yerine PNG/WebP kullanma seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Büyük GIF'ler, animasyonlu içeriğin sunulmasında verimli olmaz. Ağ veri miktarından tasarruf etmek üzere animasyonlar için MPEG4/WebM videoları ve statik resimler için GIF yerine PNG/WebP kullanma seçeneğini değerlendirin. [Daha fazla bilgi](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Animasyonlu içerik için video biçimleri kullanın" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Etkileşim için hazır olma süresini kısaltmak için ekran dışı ve gizli resimleri, tüm kritik kaynakların yüklenmesi bittikten sonra gecikmeli olarak yükleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Etkileşim için hazır olma süresini kısaltmak için ekran dışı ve gizli resimleri, tüm kritik kaynakların yüklenmesi bittikten sonra gecikmeli olarak yükleme seçeneğini değerlendirin. [Daha fazla bilgi](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Ekran dışındaki resimleri ertele" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Kaynaklar, sayfanızda ilk boyamayı engelliyor. Kritik JS/CSS'yi satır içinde yayınlama ve kritik olmayan tüm JS/stilleri erteleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Kaynaklar, sayfanızda ilk boyamayı engelliyor. Kritik JS/CSS'yi satır içinde yayınlama ve kritik olmayan tüm JS/stilleri erteleme seçeneğini değerlendirin. [Daha fazla bilgi](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Oluşturmayı engelleyen kaynakları ortadan kaldırın" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Büyük ağ yükleri kullanıcılar için parasal maliyet anlamına gelir ve yükleme sürelerinin uzamasında yüksek bir etkiye sahiptir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Büyük ağ yükleri kullanıcılar için parasal maliyet anlamına gelir ve yükleme sürelerinin uzamasında yüksek bir etkiye sahiptir. [Daha fazla bilgi](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Toplam boyut {totalBytes, number, bytes} KB'tı" @@ -381,19 +381,19 @@ "message": "Çok büyük ağ yüklerini önler" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "CSS dosyalarının küçültülmesi ağ yükü boyutlarını azaltabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "CSS dosyalarının küçültülmesi ağ yükü boyutlarını azaltabilir. [Daha fazla bilgi](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "CSS'yi küçültün" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "JavaScript dosyalarının küçültülmesi yük boyutlarını azaltabilir ve komut dosyası ayrıştırma süresini kısaltabilir. [Daha fazla bilgi](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "JavaScript dosyalarının küçültülmesi yük boyutlarını azaltabilir ve komut dosyası ayrıştırma süresini kısaltabilir. [Daha fazla bilgi](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "JavaScript'i küçült" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Ağ etkinliğinin gereksiz yere kullandığı bayt sayısını azaltmak için, kullanılmayan kuralları stil sayfalarından kaldırın ve ekranın üst kısmında içerik için kullanılmayan CSS'nin yüklenmesini erteleyin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Ağ etkinliğinin gereksiz yere kullandığı bayt sayısını azaltmak için, kullanılmayan kuralları stil sayfalarından kaldırın ve ekranın üst kısmında içerik için kullanılmayan CSS'nin yüklenmesini erteleyin. [Daha fazla bilgi](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Kullanılmayan CSS'yi kaldırın" @@ -405,7 +405,7 @@ "message": "Kullanılmayan JavaScript'i kaldırın" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Uzun önbellek ömrü, sayfanızın tekrar ziyaret edilmesi sürecini hızlandırabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Uzun önbellek ömrü, sayfanızın tekrar ziyaret edilmesi sürecini hızlandırabilir. [Daha fazla bilgi](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{1 kaynak bulundu}other{# kaynak bulundu}}" @@ -417,31 +417,31 @@ "message": "Statik öğelerde verimli önbellek politikası kullanır" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Optimize edilmiş resimler daha hızlı yüklenir ve daha az hücresel veri kullanır. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Optimize edilmiş resimler daha hızlı yüklenir ve daha az hücresel veri kullanır. [Daha fazla bilgi](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Resimleri verimli bir şekilde kodlayın" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Hücresel veriden tasarruf etmek ve yükleme süresini kısaltmak için uygun boyutlu resimler sunun. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Hücresel veriden tasarruf etmek ve yükleme süresini kısaltmak için uygun boyutlu resimler sunun. [Daha fazla bilgi](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Doğru boyuta sahip resimler" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Metne dayalı kaynaklar, toplam ağ baytı sayısını en aza indirmek için sıkıştırılarak (gizp, deflate veya brotli) yayınlanmalıdır. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Metne dayalı kaynaklar, toplam ağ baytı sayısını en aza indirmek için sıkıştırılarak (gizp, deflate veya brotli) yayınlanmalıdır. [Daha fazla bilgi](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Metin sıkıştırmayı etkinleştirin" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000, JPEG XR ve WebP gibi resim biçimleri genellikle PNG veya JPEG'den daha iyi sıkıştırma sağlar. Böylece indirme işlemleri daha hızlı tamamlanır ve veri tüketimi daha az olur. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "JPEG 2000, JPEG XR ve WebP gibi resim biçimleri genellikle PNG veya JPEG'den daha iyi sıkıştırma sağlar. Böylece indirme işlemleri daha hızlı tamamlanır ve veri tüketimi daha az olur. [Daha fazla bilgi](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Resimleri yeni nesil biçimlerde yayınlayın" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Uygulamanızın içeriğinin genişliği, görüntü alanının genişliğiyle eşleşmiyorsa uygulamanız mobil ekranlar için optimize edilmemiş olabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Uygulamanızın içeriğinin genişliği, görüntü alanının genişliğiyle eşleşmiyorsa uygulamanız mobil ekranlar için optimize edilmemiş olabilir. [Daha fazla bilgi](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "{innerWidth} piksel görüntü alanı boyutu, {outerWidth} piksel pencere boyutuyla eşleşmiyor." @@ -453,7 +453,7 @@ "message": "İçerik görüntü alanı için doğru boyutlandırıldı" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Aşağıdaki Kritik İstek Zincirleri, hangi kaynakların yüksek öncelikle yüklendiğini göstermektedir. Sayfa yüklemesini iyileştirmek için zincir uzunluğunu azaltma, kaynakların indirme boyutunu küçültme veya gereksiz kaynakların indirilmesini erteleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Aşağıdaki Kritik İstek Zincirleri, hangi kaynakların yüksek öncelikle yüklendiğini göstermektedir. Sayfa yüklemesini iyileştirmek için zincir uzunluğunu azaltma, kaynakların indirme boyutunu küçültme veya gereksiz kaynakların indirilmesini erteleme seçeneğini değerlendirin. [Daha fazla bilgi](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{1 zincir bulundu}other{# zincir bulundu}}" @@ -675,7 +675,7 @@ "message": "Konsola tarayıcı hatası kaydedilmedi" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Web yazı tipleri yüklenirken kullanıcının metni görebilmesini sağlamak için yazı tipi görüntüleme CSS özelliğinden yararlanın. [Daha fazla bilgi](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Web yazı tipleri yüklenirken kullanıcının metni görebilmesini sağlamak için yazı tipi görüntüleme CSS özelliğinden yararlanın. [Daha fazla bilgi](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Web yazı tipi yüklemesi sırasında metnin görünür halde kalmasını sağlayın" @@ -705,7 +705,7 @@ "message": "Geçersiz resim boyutlandırma bilgileri {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Tarayıcılar proaktif olarak kullanıcılardan uygulamanızı ana ekranlarına eklemelerini isteyebilirler ve bu da daha yüksek etkileşim sağlayabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Tarayıcılar proaktif olarak kullanıcılardan uygulamanızı ana ekranlarına eklemelerini isteyebilirler ve bu da daha yüksek etkileşim sağlayabilir. [Daha fazla bilgi](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Web uygulaması manifest dosyası yüklenebilir olma gerekliliklerini karşılamıyor" @@ -729,7 +729,7 @@ "message": "HTTPS kullanıyor" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Sayfaların hücresel ağ üzerinden hızlı bir şekilde yüklenmesi, mobil cihaz kullanıcılarının iyi bir deneyim yaşamalarını sağlar. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Sayfaların hücresel ağ üzerinden hızlı bir şekilde yüklenmesi, mobil cihaz kullanıcılarının iyi bir deneyim yaşamalarını sağlar. [Daha fazla bilgi](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Etkileşimli hale gelme süresi: {timeInMs, number, seconds} sn." @@ -750,7 +750,7 @@ "message": "Kategori" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "JS'yi ayrıştırma, derleme ve yürütme için harcanan zamanı kısaltma seçeneğini değerlendirin. Daha küçük JS yüklerinin sağlanması bu konuda yardımcı olabilir." + "message": "JS'yi ayrıştırma, derleme ve yürütme için harcanan zamanı kısaltmayı düşünün. Daha küçük JS yüklerinin sağlanması bu konuda yardımcı olabilir. [Daha fazla bilgi](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Ana iş parçacığı çalışmasını en aza indir" @@ -759,49 +759,49 @@ "message": "Ana iş parçacığının çalışmasını en aza indirir" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Mümkün olduğunca fazla sayıda kullanıcıya ulaşmak için sitelerin belli başlı her tarayıcıda çalışması gerekir. [Daha fazla bilgi](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Mümkün olduğunca fazla sayıda kullanıcıya ulaşmak için sitelerin belli başlı her tarayıcıda çalışması gerekir. [Daha fazla bilgi](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Site farklı tarayıcılarda çalışıyor" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Her bir sayfaya URL aracılığıyla derin bağlantı verilebildiğinden ve URL'lerin sosyal medyada paylaşılabilmesi için benzersiz olduğundan emin olun. [Daha fazla bilgi](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Her bir sayfaya URL aracılığıyla derin bağlantı verilebildiğinden ve URL'lerin sosyal medyada paylaşılabilmesi için benzersiz olduğundan emin olun. [Daha fazla bilgi](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Her sayfa bir URL'ye sahip" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Yavaş ağlarda bile sağa sola dokundukça geçişlerin hızlı gerçekleştiği hissedilmelidir. Bu, algılanan performansın temel unsurlarındandır. [Daha fazla bilgi](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Yavaş ağlarda bile sağa sola dokundukça geçişlerin hızlı gerçekleştiği hissedilmelidir. Bu deneyim, kullanıcının performans algısının temelinde yatar. [Daha fazla bilgi](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Sayfa geçişleri ağda takılıyorlarmış gibi hissedilmiyor" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Tahmini Giriş Gecikmesi, sayfa yüklemesinin en yoğun olduğu 5 saniyelik zaman aralığında uygulamanızın kullanıcı girişine kaç milisaniye içinde yanıt vereceğine dair bir tahmindir. Gecikmeniz 50 ms.nin üzerinde olursa kullanıcılar uygulamanızın durakladığını düşünebilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Tahmini Giriş Gecikmesi, sayfa yüklemesinin en yoğun olduğu 5 saniyelik zaman aralığında uygulamanızın kullanıcı girişine kaç milisaniye içinde yanıt vereceğine dair bir tahmindir. Gecikmeniz 50 ms.nin üzerinde olursa kullanıcılar uygulamanızın durakladığını düşünebilir. [Daha fazla bilgi](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Tahmini Giriş Gecikmesi" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "İlk Zengin İçerikli Boyama, ilk metnin veya resmin boyandığı zamanı işaret eder. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "İlk Zengin İçerikli Boyama, ilk metnin veya resmin boyandığı zamanı işaret eder. [Daha fazla bilgi](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "İlk Zengin İçerikli Boya" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "İlk CPU Boşta metriği, sayfanın ana iş parçacığının girişi işlemek için yeterli olduğu ilk anı işaret eder. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "İlk CPU Boşta metriği, sayfanın ana iş parçacığının girişi işlemek için yeterli olduğu ilk anı işaret eder. [Daha fazla bilgi](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "İlk CPU Boşta" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "İlk Anlamlı Boyama, bir sayfanın ana içeriğinin ne zaman görünür hale geldiğini ölçer. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "İlk Anlamlı Boyama, bir sayfanın ana içeriğinin ne zaman görünür hale geldiğini ölçer. [Daha fazla bilgi](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "İlk Anlamlı Boya" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Etkileşime hazır olma süresi, sayfanın tamamen etkileşime hazır hale gelmesi için geçmesi gereken süreyi ifade eder. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Etkileşime hazır olma süresi, sayfanın tamamen etkileşime hazır hale gelmesi için geçmesi gereken süreyi ifade eder. [Daha fazla bilgi](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Etkileşim Süresi" @@ -813,7 +813,7 @@ "message": "Maksimum Olası İlk Giriş Gecikmesi" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Hız Endeksi, bir sayfa içeriğinin görsel olarak ne kadar hızlı doldurulabildiğini gösterir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Hız Endeksi, bir sayfa içeriğinin görsel olarak ne kadar hızlı doldurulabildiğini gösterir. [Daha fazla bilgi](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Hız İndeksi" @@ -837,7 +837,7 @@ "message": "Sunucunun Arka Uç Gecikmeleri" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Hizmet çalışanı web uygulamanızın öngörülemeyen ağ koşullarında güvenilir olmasını sağlar. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Hizmet çalışanı web uygulamanızın öngörülemeyen ağ koşullarında güvenilir olmasını sağlar. [Daha fazla bilgi](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` çevrimdışıyken 200 koduyla yanıt vermiyor" @@ -861,7 +861,7 @@ "message": "Performans bütçesi" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Zaten HTTPS kurduysanız kullanıcılarınıza güvenli web özellikleri sağlayabilmek için tüm HTTP trafiğini HTTPS'ye yönlendirdiğinizden emin olun. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Zaten HTTPS kurduysanız kullanıcılarınıza güvenli web özellikleri sağlayabilmek için tüm HTTP trafiğini HTTPS'ye yönlendirdiğinizden emin olun. [Daha fazla bilgi](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "HTTP trafiğini HTTPS'ye yönlendirmiyor" @@ -870,7 +870,7 @@ "message": "HTTP trafiğini HTTPS'ye yönlendiriyor" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Yönlendirmeler, sayfanın yüklenmesinden önce ek gecikmelere neden olur. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Yönlendirmeler, sayfanın yüklenmesinden önce ek gecikmelere neden olur. [Daha fazla bilgi](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Birden çok sayfa yönlendirmesini önleyin" @@ -1035,7 +1035,7 @@ "message": "Dokunma hedefleri uygun boyutta" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Servis çalışanı, uygulamanızın çevrimdışı çalışma, ana ekrana ekleme ve push bildirimleri gibi pek çok Progresif Web Uygulaması özelliğini kullanmasını sağlayan teknolojidir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Servis çalışanı, uygulamanızın çevrimdışı çalışma, ana ekrana ekleme ve push bildirimleri gibi pek çok Progresif Web Uygulaması özelliğini kullanmasını sağlayan teknolojidir. [Daha fazla bilgi](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Sayfa bir hizmet çalışanı tarafından kontrol ediliyor ancak manifest dosyası geçerli JSON olarak ayrışmadığından `start_url` bulunamadı" @@ -1056,7 +1056,7 @@ "message": "Sayfayı kontrol eden bir hizmet çalışanı ve `start_url` öğesi kaydediliyor" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Temalı başlangıç ekranı, kullanıcılar uygulamanızı ana ekranlarında başlattığında yüksek kaliteli bir deneyim sağlar. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Temalı başlangıç ekranı, kullanıcılar uygulamanızı ana ekranlarında başlattığında yüksek kaliteli bir deneyim sağlar. [Daha fazla bilgi](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Özel başlangıç ekranı için yapılandırılmadı" @@ -1065,7 +1065,7 @@ "message": "Özel başlangıç ekranı için yapılandırıldı" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Sitenizle eşleşmesi için tarayıcı adres çubuğu temalı yapılabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Sitenizle eşleşmesi için tarayıcı adres çubuğu temalı yapılabilir. [Daha fazla bilgi](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Adres çubuğu için tema rengi ayarlamıyor." @@ -1092,7 +1092,7 @@ "message": "Üçüncü Taraf Kullanımı" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "İlk Bayt Zamanı, sunucunuzun yanıt gönderme zamanını tanımlar. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "İlk Bayt Zamanı, sunucunuzun yanıt gönderme zamanını tanımlar. [Daha fazla bilgi](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Root doküman {timeInMs, number, milliseconds} ms. sürdü" @@ -1113,7 +1113,7 @@ "message": "Tür" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Önemli kullanıcı deneyimleri esnasında uygulamanızın gerçek dünya performansını ölçmek için uygulamanıza User Timing API'si ekleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Önemli kullanıcı deneyimleri esnasında uygulamanızın gerçek dünya performansını ölçmek için uygulamanıza User Timing API'si ekleme seçeneğini değerlendirin. [Daha fazla bilgi](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 kullanıcı zamanlaması}other{# kullanıcı zamanlaması}}" @@ -1125,7 +1125,7 @@ "message": "\"{securityOrigin}\" için bir önceden bağlanma <link> öğesi bulundu ancak tarayıcı tarafından kullanılmadı. `crossorigin` özelliğini gerektiği gibi kullandığınızdan emin olun." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Önemli üçüncü taraf kaynaklarına erken bağlantılar oluşturmak için `preconnect` veya `dns-prefetch` kaynak ipuçları ekleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Önemli üçüncü taraf kaynaklarına erken bağlantılar oluşturmak için `preconnect` veya `dns-prefetch` kaynak ipuçları ekleme seçeneğini değerlendirin. [Daha fazla bilgi](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Gerekli kaynaklara önceden bağlan" @@ -1134,13 +1134,13 @@ "message": "\"{preloadURL}\" için bir önceden yükleme <link> bulundu ancak tarayıcı tarafından kullanılmadı. `crossorigin` özelliğini gerektiği gibi kullandığınızdan emin olun." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Mevcut durumda sayfa yüklemesinden sonra istenen kaynakları daha önce getirmek için `<link rel=preload>` kullanmayı düşünün. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Mevcut durumda sayfa yüklemesinden sonra istenen kaynakları daha önce getirmek için `<link rel=preload>` kullanmayı düşünün. [Daha fazla bilgi](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Önemli istekleri önceden yükleyin" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Uygulamanızı mobil ekranlar için optimize etmek üzere `<meta name=\"viewport\">` etiketi ekleyin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Uygulamanızı mobil ekranlar için optimize etmek üzere `<meta name=\"viewport\">` etiketi ekleyin. [Daha fazla bilgi](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "`<meta name=\"viewport\">` etiketi bulunamadı" @@ -1152,7 +1152,7 @@ "message": "`width` veya `initial-scale` değerleri olan bir `<meta name=\"viewport\">` etiketi var" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Uygulamanız, JavaScript devre dışı bırakıldığında bazı içerikler görüntülemelidir. Bu içerik, kullanıcıya uygulamayı kullanmak için JavaScript gerektiğini belirten bir uyarı bile olabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Uygulamanız, JavaScript devre dışı bırakıldığında bazı içerikler görüntülemelidir. Bu içerik, kullanıcıya uygulamayı kullanmak için JavaScript gerektiğini belirten bir uyarı bile olabilir. [Daha fazla bilgi](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Komut dosyaları kullanılamıyorsa sayfa gövdesi bazı içerikler oluşturmalıdır." @@ -1164,7 +1164,7 @@ "message": "JavaScript kullanılamadığında bazı içerikler bulundurur" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Progresif Web Uygulaması oluşturuyorsanız uygulamanızın çevrimdışı da çalışabilmesi için hizmet çalışanı kullanmayı düşünün. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Progresif Web Uygulaması oluşturuyorsanız uygulamanızın çevrimdışı da çalışabilmesi için hizmet çalışanı kullanmayı düşünün. [Daha fazla bilgi](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Geçerli sayfa çevrimdışıyken 200 koduyla yanıt vermiyor"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/uk.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/uk.json index 36c05185..28499fa 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/uk.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/uk.json
@@ -30,10 +30,10 @@ "message": "Щоб виконувати потрібні функції спеціальних можливостей, деякі батьківські ролі ARIA повинні містити відповідні дочірні ролі. [Докладніше](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Відсутні елементи з роллю `[role]`, які вимагають наявності конкретних дочірніх ролей `[role]`." + "message": "В елементах з ARIA `[role]`, які вимагають дочірні елементи з певним атрибутом `[role]`, немає кількох або всіх дочірніх елементів." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Присутні елементи з роллю `[role]`, які вимагають наявності конкретних дочірніх ролей `[role]`" + "message": "Елементи з ARIA `[role]`, які вимагають дочірні елементи з певним атрибутом `[role]`, мають усі необхідні дочірні елементи." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Щоб належно виконувати потрібні функції спеціальних можливостей, відповідні батьківські ролі повинні містити деякі дочірні ролі ARIA. [Докладніше](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Програми зчитування з екрана мають функції, які полегшують навігацію в таблицях. Якщо клітинки `<td>`, які використовують атрибут `[headers]`, посилаються лише на інші клітинки в тій самій таблиці, це може покращити взаємодію для користувачів програми зчитування з екрана. [Докладніше](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Клітинки в елементі `<table>`, які використовують атрибут `[headers]`, посилаються на інші клітинки тієї ж таблиці." + "message": "Клітинки в елементі `<table>`, які використовують атрибут `[headers]`, посилаються на елемент `id`, відсутній в тій самій таблиці." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Клітинки в елементі `<table>`, які використовують атрибут `[headers]`, посилаються лише на інші клітинки в тій самій таблиці." + "message": "Клітинки в елементі `<table>`, які використовують атрибут `[headers]`, посилаються на клітинки тієї ж таблиці." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Програми зчитування з екрана мають функції, які полегшують навігацію в таблицях. Якщо заголовки таблиці завжди посилаються на певні набори клітинок, це може покращити взаємодію для користувачів програм зчитування з екрана. [Докладніше](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Елементи `<video>` містять елемент `<track>` з атрибутом `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Налаштуйте параметр `apple-touch-icon` для ідеального вигляду на пристроях iOS, коли користувачі додають прогресивний веб-додаток на головний екран. Цей параметр має вказувати на непрозоре квадратне зображення PNG розміром 192 пікс. (або 180 пікс.). [Докладніше](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)." + "message": "Налаштуйте параметр `apple-touch-icon` для ідеального вигляду на пристроях iOS, коли користувачі додають прогресивний веб-додаток на головний екран. Цей параметр має вказувати на непрозоре квадратне зображення PNG розміром 192 пікс. (або 180 пікс.). [Докладніше](https://web.dev/apple-touch-icon/)." }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Не містить дійсного значка `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "Загальний процесорний час" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Зменште час виконання синтаксичного аналізу, компілювання й запуску сценаріїв JavaScript. Для цього корисно завантажувати менші обсяги даних JavaScript. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Зменште час виконання синтаксичного аналізу, компілювання й запуску сценаріїв JavaScript. Для цього корисно завантажувати менші обсяги даних JavaScript. [Докладніше](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Зменште час виконання JavaScript" @@ -351,25 +351,25 @@ "message": "Час виконання JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Великі файли GIF неефективні для передавання анімованого вмісту. Щоб заощадити мережевий трафік даних, радимо замість формату GIF використовувати MPEG4 або WebM для анімацій і PNG чи WebP для статичних зображень. [Докладніше](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Великі файли GIF неефективні для передавання анімованого вмісту. Щоб заощадити мережевий трафік даних, радимо замість формату GIF використовувати MPEG4 або WebM для анімацій і PNG чи WebP для статичних зображень. [Докладніше](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Використовуйте формати відео для анімованого вмісту" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Щоб зменшити час до повного завантаження, використовуйте закадрові й приховані зображення, коли завантажаться всі важливі ресурси. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Щоб зменшити час до повного завантаження, використовуйте закадрові й приховані зображення, коли завантажаться всі важливі ресурси. [Докладніше](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Відкладіть закадрові зображення" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Ресурси блокують першу візуалізацію сторінки. Надсилайте спершу важливі фрагменти JavaScript або таблиці CSS і відкладайте всі некритичні елементи. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Ресурси блокують першу візуалізацію сторінки. Надсилайте спершу важливі фрагменти JavaScript або таблиці CSS і відкладайте всі некритичні елементи. [Докладніше](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Вилучіть ресурси, які блокують відображення" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Великі обсяги мережевих даних використовують багато коштовного трафіку відвідувачів і довго завантажуються. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Великі обсяги мережевих даних використовують багато коштовного трафіку відвідувачів і довго завантажуються. [Докладніше](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Загальний розмір – {totalBytes, number, bytes} КБ" @@ -381,19 +381,19 @@ "message": "Уникається великий обсяг даних мережі" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Стиснення файлів CSS може зменшити обсяг даних у мережі. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Стиснення файлів CSS може зменшити обсяг даних у мережі. [Докладніше](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Зменште СSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Стиснення файлів JavaScript може зменшити обсяг даних і час синтаксичного аналізу сценарію. [Докладніше](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Стиснення файлів JavaScript може зменшити обсяг даних і час синтаксичного аналізу сценарію. [Докладніше](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Зменште файл JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Щоб зменшити трафік даних у мережі, видаліть непотрібні правила з таблиць стилів і відкладіть завантаження таблиць CSS, що не використовуються для вмісту у верхній частині сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Щоб зменшити трафік даних у мережі, видаліть непотрібні правила з таблиць стилів і відкладіть завантаження таблиць CSS, що не використовуються для вмісту у верхній частині сторінки. [Докладніше](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Видаліть вміст CSS, який не використовується" @@ -405,7 +405,7 @@ "message": "Вилучіть файли JavaScript, які ви не використовуєте" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Якщо зберігати кеш за тривалий період часу, сторінки можуть завантажуватися швидше під час повторних відвідувань. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Якщо зберігати кеш за тривалий період часу, сторінки можуть завантажуватися швидше під час повторних відвідувань. [Докладніше](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Знайдено 1 ресурс}one{Знайдено # ресурс}few{Знайдено # ресурси}many{Знайдено # ресурсів}other{Знайдено # ресурсу}}" @@ -417,31 +417,31 @@ "message": "Використовуються ефективні правила кешування статичних об’єктів" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Оптимізовані зображення завантажуються швидше й використовують менше мобільного трафіку. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Оптимізовані зображення завантажуються швидше й використовують менше мобільного трафіку. [Докладніше](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Ефективно кодуйте зображення" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Показуйте зображення правильного розміру, щоб заощадити мобільний трафік і покращити час завантаження. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Показуйте зображення правильного розміру, щоб заощадити мобільний трафік і покращити час завантаження. [Докладніше](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Правильно виберіть розмір зображень" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Текстові ресурси потрібно відображати зі стисненням (Gzip, Deflate чи Brotli), щоб мінімізувати загальний трафік мережі. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Текстові ресурси потрібно відображати зі стисненням (Gzip, Deflate чи Brotli), щоб мінімізувати загальний трафік мережі. [Докладніше](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Увімкніть стиснення тексту" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Формати зображень JPEG 2000, JPEG XR і WebP часто стискаються краще, ніж PNG чи JPEG. Тому вони швидше завантажуються й використовують менше даних. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Формати зображень JPEG 2000, JPEG XR і WebP часто стискаються краще, ніж PNG чи JPEG. Тому вони швидше завантажуються й використовують менше даних. [Докладніше](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Показуйте зображення в нових форматах" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Якщо ширина контенту додатка не збігається з шириною області перегляду, можливо, додаток не вдасться оптимізувати для екранів мобільних пристроїв. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)." + "message": "Якщо ширина контенту додатка не збігається з шириною області перегляду, можливо, додаток не вдасться оптимізувати для екранів мобільних пристроїв. [Докладніше](https://web.dev/content-width)." }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Розмір області перегляду ({innerWidth} пікс.) не збігається з розміром вікна ({outerWidth} пікс.)." @@ -453,7 +453,7 @@ "message": "Розмір контенту відповідає області перегляду" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Ланцюжки важливих запитів нижче показують, які ресурси мають високий пріоритет. Щоб пришвидшити завантаження сторінки, зменште довжину ланцюжків і розмір завантажень або відкладіть завантаження непотрібних ресурсів. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Ланцюжки важливих запитів нижче показують, які ресурси мають високий пріоритет. Щоб пришвидшити завантаження сторінки, зменште довжину ланцюжків і розмір завантажень або відкладіть завантаження непотрібних ресурсів. [Докладніше](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Знайдено 1 ланцюжок}one{Знайдено # ланцюжок}few{Знайдено # ланцюжки}many{Знайдено # ланцюжків}other{Знайдено # ланцюжка}}" @@ -675,7 +675,7 @@ "message": "Помилки веб-переглядача не записано в журнал консолі" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Використовуйте функцію відображення шрифтів CSS, щоб текст було видно під час завантаження веб-шрифтів. [Докладніше](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Використовуйте функцію відображення шрифтів CSS, щоб текст було видно під час завантаження веб-шрифтів. [Докладніше](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Переконайтеся, що текст залишається видимим під час завантаження веб-шрифту" @@ -705,7 +705,7 @@ "message": "Недійсна інформація про розмір зображення {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Веб-переглядачі можуть активно заохочувати користувачів установити ваш додаток на головний екран, що сприятиме кращій взаємодії. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)." + "message": "Веб-переглядачі можуть активно заохочувати користувачів установити ваш додаток на головний екран, що сприятиме кращій взаємодії. [Докладніше](https://web.dev/installable-manifest)." }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Маніфест веб-додатка не відповідає умовам для встановлення" @@ -729,7 +729,7 @@ "message": "Використовує протокол HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Якщо сторінка швидко завантажується в мобільній мережі, це покращує враження користувачів мобільних пристроїв. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Якщо сторінка швидко завантажується в мобільній мережі, це покращує враження користувачів мобільних пристроїв. [Докладніше](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Стає інтерактивною через {timeInMs, number, seconds} с" @@ -750,7 +750,7 @@ "message": "Категорія" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Зменште час виконання синтаксичного аналізу, компілювання й запуску сценаріїв JavaScript. Завантажувати менші обсяги даних JavaScript може бути корисно." + "message": "Зменште час виконання синтаксичного аналізу, компілювання й запуску сценаріїв JavaScript. Для цього корисно завантажувати менші обсяги даних JavaScript. [Докладніше](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Мінімізуйте роботу основного потоку" @@ -759,49 +759,49 @@ "message": "Мінімізується робота основного потоку" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Щоб охопити якомога більше користувачів, сайти мають працювати в усіх відомих веб-переглядачах. [Докладніше](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)." + "message": "Щоб охопити якомога більше користувачів, сайти мають працювати в усіх відомих веб-переглядачах. [Докладніше](https://web.dev/pwa-cross-browser)." }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Сайт працює у різних веб-переглядачах" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Переконайтеся, що окремі сторінки можна відкрити за допомогою прямого посилання, а URL-адреси унікальні, щоб ними можна було ділитися в соціальних мережах. [Докладніше](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)." + "message": "Переконайтеся, що окремі сторінки можна відкрити за допомогою прямого посилання, а URL-адреси унікальні, щоб ними можна було ділитися в соціальних мережах. [Докладніше](https://web.dev/pwa-each-page-has-url)." }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Кожна сторінка має URL-адресу" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Додаток має швидко реагувати на дії користувача, навіть якщо мережа працює повільно, тоді користувач високо оцінить роботу вашого додатка. [Докладніше](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)." + "message": "Додаток має швидко реагувати на дії користувача, навіть якщо мережа повільна. Це суттєво впливає на оцінку роботи вашого додатка користувачем. [Докладніше](https://web.dev/pwa-page-transitions)." }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "Схоже, перехід між сторінками не блокує мережу" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Приблизна затримка введення показує, скільки часу в мілісекундах додаток відповідає на ввід користувача під час п'ятисекундного періоду завантаження сторінки. Якщо затримка перевищує 50 мс, користувачі можуть вважати ваш додаток повільним. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Приблизна затримка введення показує, скільки часу в мілісекундах додаток відповідає на ввід користувача під час п'ятисекундного періоду завантаження сторінки. Якщо затримка перевищує 50 мс, користувачі можуть вважати ваш додаток повільним. [Докладніше](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Приблизна затримка введення" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Перша візуалізація вмісту показує, коли з'являється текст чи зображення. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Перша візуалізація вмісту показує, коли з'являється текст чи зображення. [Докладніше](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Перше відображення всього вмісту" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Перший простій ЦП вказує, коли основний ланцюжок сторінки вперше може обробити введення. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Перший простій ЦП вказує, коли основний ланцюжок сторінки вперше може обробити введення. [Докладніше](https://web.dev/first-cpu-idle)." }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "Перший простій ЦП" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Час початку візуалізації вказує, коли видно основний вміст сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Час початку візуалізації вказує, коли видно основний вміст сторінки. [Докладніше](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Перше значне відображення" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Час до повного завантаження – це період часу, через який сторінка стане повністю інтерактивною. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Час до повного завантаження – це період часу, через який сторінка стане повністю інтерактивною. [Докладніше](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Час до повної взаємодії" @@ -813,7 +813,7 @@ "message": "Максимальна потенційна затримка відповіді на першу дію" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Індекс швидкості показує, через скільки часу відображається вміст сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Індекс швидкості показує, через скільки часу відображається вміст сторінки. [Докладніше](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Індекс швидкості" @@ -837,7 +837,7 @@ "message": "Затримка сервера" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Синтаксис Service Worker забезпечує надійність вашого веб-додатка в разі непередбачуваних умов у мережі. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Синтаксис Service Worker забезпечує надійність вашого веб-додатка в разі непередбачуваних умов у мережі. [Докладніше](https://web.dev/offline-start-url)." }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` не надсилає код 200 у режимі офлайн" @@ -861,7 +861,7 @@ "message": "Бюджет ефективності" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Якщо ви вже налаштували HTTPS, переконайтеся, що весь трафік HTTP переспрямовується на HTTPS, щоб увімкнути безпечні веб-функції для всіх користувачів. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)." + "message": "Якщо ви вже налаштували HTTPS, переконайтеся, що весь трафік HTTP переспрямовується на HTTPS, щоб увімкнути безпечні веб-функції для всіх користувачів. [Докладніше](https://web.dev/redirects-http)." }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Трафік HTTP не перепрямовується на HTTPS" @@ -870,7 +870,7 @@ "message": "Трафік HTTP переспрямовується на HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Переспрямування викликають додаткові затримки під час завантаження сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Переспрямування викликають додаткові затримки під час завантаження сторінки. [Докладніше](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Уникайте переспрямувань кількох сторінок" @@ -1035,7 +1035,7 @@ "message": "Елементи для натискання мають правильний розмір" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Синтаксис Service Worker – це технологія, яка дає змогу додатку використовувати багато функцій прогресивного веб-додатка, як-от режим офлайн, додавання на головний екран і push-сповіщення. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)." + "message": "Синтаксис Service Worker – це технологія, яка дає змогу додатку використовувати багато функцій прогресивного веб-додатка, як-от режим офлайн, додавання на головний екран і push-сповіщення. [Докладніше](https://web.dev/service-worker)." }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Цією сторінкою керує синтаксис Service Worker, однак `start_url` не знайдено, оскільки не вдалося виконати синтаксичний аналіз маніфесту як дійсного файлу JSON" @@ -1056,7 +1056,7 @@ "message": "Наявний синтаксис Service Worker, який керує сторінкою та `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Тематична заставка покращує взаємодію з користувачами під час запуску додатка з головного екрана. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)." + "message": "Тематична заставка покращує взаємодію з користувачами під час запуску додатка з головного екрана. [Докладніше](https://web.dev/splash-screen)." }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Власну заставку не налаштовано" @@ -1065,7 +1065,7 @@ "message": "Налаштовано власну заставку" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Для адресного рядка веб-переглядача можна створити тему, яка відповідатиме вашому сайту [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/address-bar)." + "message": "Для адресного рядка веб-переглядача можна створити тему, яка відповідатиме вашому сайту [Докладніше](https://web.dev/themed-omnibox)." }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "Не змінює колір адресного рядка відповідно до теми." @@ -1092,7 +1092,7 @@ "message": "Використання стороннього коду" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Час до першого байта визначає швидкість реакції сервера. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Час до першого байта визначає швидкість реакції сервера. [Докладніше](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Кореневий документ відповів через {timeInMs, number, milliseconds} мс" @@ -1113,7 +1113,7 @@ "message": "Тип" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Використовуйте в додатку User Timing API, щоб отримувати показники ефективності додатка під час взаємодії з користувачами. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Використовуйте в додатку User Timing API, щоб отримувати показники ефективності додатка під час взаємодії з користувачами. [Докладніше](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 позначка часу користувача}one{# позначка часу користувача}few{# позначки часу користувача}many{# позначок часу користувача}other{# позначки часу користувача}}" @@ -1125,7 +1125,7 @@ "message": "Для {securityOrigin} знайдено посилання для попереднього з'єднання <link>, але веб-переглядач його не використав. Переконайтеся, що ви правильно використовуєте атрибут `crossorigin`." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Додайте в ресурси корективи `preconnect` чи `dns-prefetch`, щоб заздалегідь встановлювати з'єднання з важливими сторонніми джерелами. [Докладніше](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)." + "message": "Додайте в ресурси корективи `preconnect` чи `dns-prefetch`, щоб заздалегідь встановлювати з'єднання з важливими сторонніми джерелами. [Докладніше](https://web.dev/uses-rel-preconnect)." }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Попередньо під’єднуйтеся до потрібних джерел" @@ -1134,13 +1134,13 @@ "message": "Для {preloadURL} знайдено посилання для попереднього завантаження <link>, але веб-переглядач його не використав. Переконайтеся, що ви правильно використовуєте атрибут `crossorigin`." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Використовуйте `<link rel=preload>`, щоб указати пріоритетність завантаження ресурсів, які наразі отримуються пізніше під час завантаження сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Використовуйте `<link rel=preload>`, щоб указати пріоритетність завантаження ресурсів, які наразі отримуються пізніше під час завантаження сторінки. [Докладніше](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Попередньо завантажуйте основні запити" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Додайте тег `<meta name=\"viewport\">`, щоб оптимізувати додаток для екранів мобільних пристроїв. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)." + "message": "Додайте тег `<meta name=\"viewport\">`, щоб оптимізувати додаток для екранів мобільних пристроїв. [Докладніше](https://web.dev/viewport)." }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Тег `<meta name=\"viewport\">` не знайдено" @@ -1152,7 +1152,7 @@ "message": "Має тег `<meta name=\"viewport\">` з атрибутами `width` або `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Ваш додаток має відображати певний контент, коли JavaScript вимкнено, навіть якщо це просто сповіщення для користувачів про те, що для використання додатка потрібно ввімкнути JavaScript. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Ваш додаток має відображати певний контент, коли JavaScript вимкнено, навіть якщо це просто сповіщення для користувачів про те, що для використання додатка потрібно ввімкнути JavaScript. [Докладніше](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "Сторінка має відображати контент, навіть якщо її сценарії недоступні." @@ -1164,7 +1164,7 @@ "message": "Певний контент відображається, коли JavaScript вимкнено" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Якщо ви створюєте прогресивний веб-додаток, можете скористатися синтаксисом Service Worker, щоб додаток працював офлайн. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)." + "message": "Якщо ви створюєте прогресивний веб-додаток, можете скористатися синтаксисом Service Worker, щоб додаток працював офлайн. [Докладніше](https://web.dev/works-offline)." }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "Поточна сторінка не надсилає код 200 у режимі офлайн"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/vi.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/vi.json index 8c75577..d6f1f91 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/vi.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/vi.json
@@ -30,10 +30,10 @@ "message": "Một số vai trò mẹ của Ứng dụng Internet phong phú dễ dùng (ARIA) phải chứa vai trò con cụ thể để thực hiện các chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm](https://web.dev/aria-required-children/)." }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "Thiếu các phần tử có `[role]` yêu cầu phải có vai trò con `[role]` cụ thể." + "message": "Các phần tử có `[role]` ARIA yêu cầu phần tử con phải chứa một `[role]` cụ thể hiện đang thiếu một số hoặc tất cả các phần tử con bắt buộc đó." }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "Các phần tử có `[role]` yêu cầu phải có phần tử con `[role]` cụ thể đang hiện diện" + "message": "Các phần tử có `[role]` ARIA yêu cầu phần tử con phải chứa một `[role]` cụ thể có tất cả các phần tử con bắt buộc." }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "Các vai trò mẹ cụ thể phải chứa một số vai trò con của Ứng dụng Internet phong phú dễ dùng (ARIA) để thực hiện đúng cách các chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm](https://web.dev/aria-required-parent/)." @@ -276,10 +276,10 @@ "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ sử dụng bảng hơn. Việc đảm bảo các ô `<td>` sử dụng thuộc tính `[headers]` chỉ tham chiếu các ô khác trong cùng bảng có thể cải thiện trải nghiệm của người dùng trình đọc màn hình. [Tìm hiểu thêm](https://web.dev/td-headers-attr/)." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "Các ô trong một phần tử `<table>` sử dụng thuộc tính `[headers]` tham chiếu các ô khác trong chính bảng đó." + "message": "Các ô trong phần tử `<table>` sử dụng thuộc tính `[headers]` tham chiếu đến một phần tử `id` không tìm thấy trong cùng một bảng." }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "Các ô trong phần tử `<table>` dùng thuộc tính `[headers]` chỉ tham chiếu các ô khác trong chính bảng đó." + "message": "Các ô trong phần tử `<table>` sử dụng thuộc tính `[headers]` tham chiếu đến các ô trong cùng một bảng." }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ sử dụng bảng hơn. Việc đảm bảo tiêu đề bảng luôn tham chiếu đến một nhóm ô nào đó có thể cải thiện trải nghiệm của người dùng trình đọc màn hình. [Tìm hiểu thêm](https://web.dev/th-has-data-cells/)." @@ -318,7 +318,7 @@ "message": "Các phần tử `<video>` chứa phần tử `<track>` có `[kind=\"description\"]`" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "Hãy xác định `apple-touch-icon` để hiển thị đúng cách trên iOS khi người dùng thêm một ứng dụng web tiến bộ vào màn hình chính. Thuộc tính này phải trỏ đến ảnh PNG vuông có kích thước 192px (hoặc 180px) ở dạng không trong suốt. [Tìm hiểu thêm](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)" + "message": "Hãy xác định `apple-touch-icon` để khi người dùng thêm một ứng dụng web tiến bộ vào màn hình chính trên iOS, biểu tượng ứng dụng sẽ hiển thị chính xác. Thuộc tính này phải trỏ đến ảnh PNG vuông có kích thước 192px (hoặc 180px) ở dạng không trong suốt. [Tìm hiểu thêm](https://web.dev/apple-touch-icon/)" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "Chưa cung cấp `apple-touch-icon` hợp lệ" @@ -342,7 +342,7 @@ "message": "Tổng thời gian của CPU" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "Hãy cân nhắc giảm thời gian dùng để phân tích cú pháp, biên soạn và thực thi JS. Bạn có thể giải quyết vấn đề này bằng cách phân phối các tải trọng JS nhỏ hơn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/bootup)." + "message": "Hãy cân nhắc giảm thời gian dùng để phân tích cú pháp, biên soạn và thực thi JS. Bạn có thể giải quyết vấn đề này bằng cách phân phối các tải trọng JS nhỏ hơn. [Tìm hiểu thêm](https://web.dev/bootup-time)." }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "Giảm thời gian thực thi JavaScript" @@ -351,25 +351,25 @@ "message": "Thời gian thực thi JavaScript" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "Ảnh GIF lớn không có hiệu quả trong việc phân phối nội dung động. Hãy cân nhắc sử dụng video MPEG4/WebM cho ảnh động và PNG/WebP cho ảnh tĩnh thay vì ảnh GIF để tiết kiệm dữ liệu mạng. [Tìm hiểu thêm](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "Ảnh GIF lớn không có hiệu quả trong việc phân phối nội dung động. Hãy cân nhắc sử dụng video MPEG4/WebM cho ảnh động và PNG/WebP cho ảnh tĩnh thay vì ảnh GIF để tiết kiệm dữ liệu mạng. [Tìm hiểu thêm](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "Sử dụng các định dạng video cho nội dung động" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "Hãy cân nhắc tải từng phần các hình ảnh ẩn và nằm ngoài màn hình sau khi tải xong tất cả tài nguyên quan trọng nhằm giảm thời gian tương tác. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)." + "message": "Hãy cân nhắc tải từng phần các hình ảnh ẩn và nằm ngoài màn hình sau khi tải xong tất cả tài nguyên quan trọng nhằm giảm thời gian tương tác. [Tìm hiểu thêm](https://web.dev/offscreen-images)." }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "Trì hoãn tải các hình ảnh ngoài màn hình" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "Các tài nguyên đang chặn lần hiển thị đầu tiên của trang. Hãy cân nhắc phân phối nội dòng JS/Biểu định kiểu xếp chồng (CSS) quan trọng và trì hoãn mọi JS/kiểu không quan trọng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)." + "message": "Các tài nguyên đang chặn lần hiển thị đầu tiên của trang. Hãy cân nhắc phân phối nội dòng JS/Biểu định kiểu xếp chồng (CSS) quan trọng và trì hoãn mọi JS/kiểu không quan trọng. [Tìm hiểu thêm](https://web.dev/render-blocking-resources)." }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "Loại bỏ các tài nguyên chặn hiển thị" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "Tải trọng mạng lớn gây tốn kém cho người dùng và thường khiến thời gian tải lâu. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)." + "message": "Tải trọng mạng lớn gây tốn kém cho người dùng và thường khiến thời gian tải lâu. [Tìm hiểu thêm](https://web.dev/total-byte-weight)." }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "Tổng kích thước là {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "Tránh tài nguyên lớn trên mạng" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "Việc giảm kích thước tệp Biểu định kiểu xếp chồng (CSS) có thể giảm kích thước tải trọng mạng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/minify-css)." + "message": "Việc giảm kích thước tệp Biểu định kiểu xếp chồng (CSS) có thể giảm kích thước tải trọng mạng. [Tìm hiểu thêm](https://web.dev/unminified-css)." }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "Rút gọn CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "Việc giảm kích thước tệp JavaScript có thể giảm kích thước tải trọng và thời gian phân tích cú pháp tập lệnh. [Tìm hiểu thêm](https://developers.google.com/speed/docs/insights/MinifyResources)." + "message": "Việc giảm kích thước tệp JavaScript có thể giảm kích thước tải trọng và thời gian phân tích cú pháp tập lệnh. [Tìm hiểu thêm](https://web.dev/unminified-javascript)." }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "Rút gọn JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "Hãy xóa các quy tắc vô hiệu khỏi biểu định kiểu và trì hoãn tải Biểu định kiểu xếp chồng (CSS) không dùng cho nội dung trong màn hình đầu tiên để giảm số byte không cần thiết mà hoạt động mạng sử dụng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/unused-css)." + "message": "Hãy xóa các quy tắc vô hiệu khỏi biểu định kiểu và trì hoãn tải Biểu định kiểu xếp chồng (CSS) không dùng cho nội dung trong màn hình đầu tiên để giảm số byte không cần thiết mà hoạt động mạng sử dụng. [Tìm hiểu thêm](https://web.dev/unused-css-rules)." }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "Xóa biểu định kiểu xếp chồng (CSS) không dùng" @@ -405,7 +405,7 @@ "message": "Xóa JavaScript không dùng" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "Bộ nhớ đệm có thời gian hữu dụng dài có thể giúp tăng tốc số lượt truy cập lặp lại vào trang của bạn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)." + "message": "Bộ nhớ đệm có thời gian hữu dụng dài có thể giúp tăng tốc số lượt truy cập lặp lại vào trang của bạn. [Tìm hiểu thêm](https://web.dev/uses-long-cache-ttl)." }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{Đã tìm thấy 1 tài nguyên}other{Đã tìm thấy # tài nguyên}}" @@ -417,31 +417,31 @@ "message": "Sử dụng chính sách bộ nhớ đệm hiệu quả cho các nội dung tĩnh" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "Hình ảnh được tối ưu hóa sẽ tải nhanh hơn và tiêu tốn ít dữ liệu di động hơn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)." + "message": "Hình ảnh được tối ưu hóa sẽ tải nhanh hơn và tiêu tốn ít dữ liệu di động hơn. [Tìm hiểu thêm](https://web.dev/uses-optimized-images)." }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "Mã hóa hình ảnh hiệu quả" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "Phân phát hình ảnh có kích thước phù hợp để tiết kiệm dữ liệu di động và cải thiện thời gian tải. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)." + "message": "Phân phát hình ảnh có kích thước phù hợp để tiết kiệm dữ liệu di động và cải thiện thời gian tải. [Tìm hiểu thêm](https://web.dev/uses-responsive-images)." }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "Thay đổi kích thước hình ảnh cho phù hợp" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "Phải phân phát các tài nguyên dựa trên văn bản ở định dạng nén (gzip, deflate hoặc brotli) để giảm thiểu tổng số byte mạng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/text-compression)." + "message": "Phải phân phát các tài nguyên dựa trên văn bản ở định dạng nén (gzip, deflate hoặc brotli) để giảm thiểu tổng số byte mạng. [Tìm hiểu thêm](https://web.dev/uses-text-compression)." }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "Bật tính năng nén văn bản" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "Các định dạng hình ảnh như JPEG 2000, JPEG XR và WebP thường nén tốt hơn PNG hoặc JPEG, tức là tải xuống nhanh hơn và tiêu tốn ít dữ liệu hơn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/webp)." + "message": "Các định dạng hình ảnh như JPEG 2000, JPEG XR và WebP thường nén tốt hơn PNG hoặc JPEG, tức là tải xuống nhanh hơn và tiêu tốn ít dữ liệu hơn. [Tìm hiểu thêm](https://web.dev/uses-webp-images)." }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "Phân phối hình ảnh ở định dạng mới và hiệu quả hơn" }, "lighthouse-core/audits/content-width.js | description": { - "message": "Nếu chiều rộng của nội dung trong ứng dụng không khớp với chiều rộng của khung nhìn, thì ứng dụng có thể không được tối ưu hóa cho màn hình thiết bị di động. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)" + "message": "Nếu chiều rộng của nội dung trong ứng dụng không khớp với chiều rộng của khung nhìn, thì ứng dụng có thể không được tối ưu hóa cho màn hình thiết bị di động. [Tìm hiểu thêm](https://web.dev/content-width)" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "Kích thước khung nhìn {innerWidth}px không khớp với kích thước cửa sổ {outerWidth}px." @@ -453,7 +453,7 @@ "message": "Kích thước của nội dung phù hợp với khung nhìn" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "Các Chuỗi yêu cầu quan trọng dưới đây cho bạn biết những tài nguyên có mức độ ưu tiên cao sẽ được tải. Hãy cân nhắc giảm độ dài chuỗi, giảm kích thước tài nguyên tải xuống hoặc trì hoãn tải xuống các tài nguyên không cần thiết để cải thiện tốc độ tải trang. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)." + "message": "Các Chuỗi yêu cầu quan trọng dưới đây cho bạn biết những tài nguyên có mức độ ưu tiên cao sẽ được tải. Hãy cân nhắc giảm độ dài chuỗi, giảm kích thước tài nguyên tải xuống hoặc trì hoãn tải xuống các tài nguyên không cần thiết để cải thiện tốc độ tải trang. [Tìm hiểu thêm](https://web.dev/critical-request-chains)." }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{Đã tìm thấy 1 chuỗi}other{Đã tìm thấy # chuỗi}}" @@ -573,7 +573,7 @@ "message": "Phiên bản" }, "lighthouse-core/audits/dobetterweb/js-libraries.js | description": { - "message": "Phát hiện tất cả thư viện giao diện người dùng JavaScript trên trang này. [Tìm hiểu thêm](https://web.dev/js-libraries)" + "message": "Phát hiện tất cả thư viện JavaScript ở phía giao diện người dùng trên trang này. [Tìm hiểu thêm](https://web.dev/js-libraries)" }, "lighthouse-core/audits/dobetterweb/js-libraries.js | title": { "message": "Thư viện JavaScript phát hiện được" @@ -675,7 +675,7 @@ "message": "Chưa ghi lỗi nào của trình duyệt vào bảng điều khiển" }, "lighthouse-core/audits/font-display.js | description": { - "message": "Sử dụng tính năng Biểu định kiểu xếp chồng (CSS) hiển thị phông chữ để đảm bảo văn bản hiển thị với người dùng khi phông chữ web đang tải. [Tìm hiểu thêm](https://developers.google.com/web/updates/2016/02/font-display)." + "message": "Sử dụng tính năng Biểu định kiểu xếp chồng (CSS) hiển thị phông chữ để đảm bảo văn bản hiển thị với người dùng khi phông chữ web đang tải. [Tìm hiểu thêm](https://web.dev/font-display)." }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "Đảm bảo văn bản vẫn hiển thị trong khi tải phông chữ web" @@ -705,7 +705,7 @@ "message": "Thông tin kích thước hình ảnh không hợp lệ {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "Các trình duyệt có thể chủ động nhắc người dùng thêm ứng dụng của bạn vào màn hình chính để tăng mức độ tương tác. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)" + "message": "Các trình duyệt có thể chủ động nhắc người dùng thêm ứng dụng của bạn vào màn hình chính để tăng mức độ tương tác. [Tìm hiểu thêm](https://web.dev/installable-manifest)" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Tệp kê khai ứng dụng web không đáp ứng các yêu cầu về khả năng cài đặt" @@ -729,7 +729,7 @@ "message": "Sử dụng HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "Tốc độ tải trang nhanh trên mạng di động giúp mang đến trải nghiệm tích cực cho người dùng thiết bị di động. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)." + "message": "Tốc độ tải trang nhanh trên mạng di động giúp mang đến trải nghiệm tích cực cho người dùng thiết bị di động. [Tìm hiểu thêm](https://web.dev/load-fast-enough-for-pwa)." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "Tương tác ở giây thứ {timeInMs, number, seconds}" @@ -738,7 +738,7 @@ "message": "Tương tác trên mạng di động mô phỏng ở giây thứ {timeInMs, number, seconds}" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": { - "message": "Trang của bạn tải quá chậm và không tương tác trong vòng 10 giây. Hãy xem các cơ hội và thông tin chẩn đoán trong phần \"Hiệu suất\" để tìm hiểu cách cải thiện." + "message": "Trang của bạn tải quá chậm và không tương tác trong vòng 10 giây. Hãy xem các lựa chọn tối ưu hóa và thông tin chẩn đoán trong phần \"Hiệu suất\" để tìm hiểu cách cải thiện." }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": { "message": "Tốc độ tải trang không đủ nhanh trên mạng di động" @@ -750,7 +750,7 @@ "message": "Danh mục" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "Hãy xem xét giảm thời gian dùng để phân tích cú pháp, biên soạn và thực thi JS. Bạn có thể giải quyết vấn đề này bằng cách phân phối các tải trọng JS nhỏ hơn." + "message": "Hãy cân nhắc giảm thời gian dùng để phân tích cú pháp, biên soạn và thực thi JS. Bạn có thể giải quyết vấn đề này bằng cách phân phối các tải trọng JS nhỏ hơn. [Tìm hiểu thêm](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "Giảm thiểu công việc theo chuỗi chính" @@ -759,49 +759,49 @@ "message": "Giảm thiểu công việc theo chuỗi chính" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "Để tiếp cận nhiều người dùng nhất, các trang web phải hoạt động trên mọi trình duyệt chính. [Tìm hiểu thêm](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)" + "message": "Để tiếp cận nhiều người dùng nhất, các trang web phải hoạt động trên mọi trình duyệt chính. [Tìm hiểu thêm](https://web.dev/pwa-cross-browser)" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "Trang web hoạt động trên nhiều trình duyệt" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "Đảm bảo từng trang có thể liên kết sâu qua URL và URL là duy nhất, có như vậy thì mới chia sẻ được trên mạng xã hội. [Tìm hiểu thêm](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)" + "message": "Đảm bảo từng trang có thể liên kết sâu qua URL và URL là duy nhất để có thể chia sẻ trên mạng xã hội. [Tìm hiểu thêm](https://web.dev/pwa-each-page-has-url)" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "Mỗi trang có một URL" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "Quá trình chuyển tiếp phải diễn ra ngay khi bạn nhấn vào, kể cả khi mạng chậm, một yếu tố then chốt để tăng hiệu suất cảm nhận. [Tìm hiểu thêm](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)" + "message": "Quá trình chuyển tiếp phải diễn ra ngay khi bạn nhấn vào, kể cả khi mạng chậm. Trải nghiệm này là một yếu tố quan trọng quyết định cảm nhận của người dùng về hiệu suất. [Tìm hiểu thêm](https://web.dev/pwa-page-transitions)" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { - "message": "Quá trình chuyển tiếp trang không bị chậm trễ do mạng" + "message": "Người dùng không cảm thấy mạng chậm khi chuyển trang" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "Thời gian chờ nhập thông tin theo ước tính là thời gian ước tính mà ứng dụng cần để phản hồi thông tin do người dùng nhập (tính bằng mili giây) trong khoảng thời gian 5 giây tải nhiều trang nhất. Nếu người dùng phải chờ quá 50 mili giây, thì ứng dụng của bạn bị coi là chạy chậm. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)." + "message": "Thời gian chờ nhập thông tin theo ước tính là thời gian ước tính mà ứng dụng cần để phản hồi thông tin do người dùng nhập (tính bằng mili giây) trong khoảng thời gian 5 giây tải nhiều trang nhất. Nếu người dùng phải chờ quá 50 mili giây, thì ứng dụng của bạn bị coi là chạy chậm. [Tìm hiểu thêm](https://web.dev/estimated-input-latency)." }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "Thời gian chờ nhập thông tin theo ước tính" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "Chỉ số Hiển thị nội dung đầu tiên đánh dấu thời điểm hiển thị văn bản hoặc hình ảnh đầu tiên. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)." + "message": "Chỉ số Hiển thị nội dung đầu tiên đánh dấu thời điểm hiển thị văn bản hoặc hình ảnh đầu tiên. [Tìm hiểu thêm](https://web.dev/first-contentful-paint)." }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "Hình ảnh có nội dung đầu tiên" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "Chỉ số CPU nhàn rỗi đầu tiên đánh dấu thời điểm đầu tiên chuỗi chính của trang không phải xử lý quá nhiều thông tin nhập vào. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)." + "message": "Chỉ số CPU nhàn rỗi đầu tiên đánh dấu thời điểm đầu tiên chuỗi chính của trang không phải xử lý quá nhiều thông tin nhập vào. [Tìm hiểu thêm](https://web.dev/first-cpu-idle)" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "CPU nhàn rỗi đầu tiên" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "Chỉ số Hiển thị nội dung đầu tiên đo lường thời điểm hiển thị nội dung chính của trang. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)." + "message": "Chỉ số Hiển thị nội dung đầu tiên đo lường thời điểm hiển thị nội dung chính của trang. [Tìm hiểu thêm](https://web.dev/first-meaningful-paint)." }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "Hình ảnh có ý nghĩa đầu tiên" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "Thời điểm tương tác là khoảng thời gian mà trang cần để trở nên hoàn toàn tương tác. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)." + "message": "Thời điểm tương tác là khoảng thời gian mà trang cần để trở nên hoàn toàn tương tác. [Tìm hiểu thêm](https://web.dev/interactive)." }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "Thời điểm tương tác" @@ -813,7 +813,7 @@ "message": "Thời gian phản hồi lần tương tác đầu tiên tối đa có thể" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "Chỉ số tốc độ cho biết nội dung của một trang hiển thị nhanh chóng đến mức nào. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/speed-index)." + "message": "Chỉ số tốc độ cho biết nội dung của một trang hiển thị nhanh chóng đến mức nào. [Tìm hiểu thêm](https://web.dev/speed-index)." }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "Chỉ số tốc độ" @@ -837,13 +837,13 @@ "message": "Thời gian dưới nền của máy chủ" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Trình chạy dịch vụ giúp ứng dụng web của bạn hoạt động ổn định trong điều kiện mạng chập chờn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Trình chạy dịch vụ giúp ứng dụng web của bạn hoạt động ổn định trong điều kiện mạng chập chờn. [Tìm hiểu thêm](https://web.dev/offline-start-url)" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { - "message": "`start_url` không phản hồi kèm mã trạng thái 200 khi không có mạng" + "message": "`start_url` không trả về mã trạng thái 200 khi không có mạng" }, "lighthouse-core/audits/offline-start-url.js | title": { - "message": "`start_url` phản hồi kèm mã trạng thái 200 khi không có mạng" + "message": "`start_url` trả về mã trạng thái 200 khi không có mạng" }, "lighthouse-core/audits/offline-start-url.js | warningCantStart": { "message": "Lighthouse không đọc được `start_url` trong tệp kê khai. Do đó, `start_url` được giả định là URL của tài liệu. Thông báo lỗi: '{manifestWarning}'." @@ -861,7 +861,7 @@ "message": "Ngân sách hiệu suất" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "Nếu bạn thiết lập HTTPS từ trước, hãy nhớ chuyển hướng toàn bộ lưu lượng truy cập HTTP tới HTTPS để bật các tính năng web an toàn cho tất cả người dùng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)" + "message": "Nếu bạn thiết lập HTTPS từ trước, hãy nhớ chuyển hướng toàn bộ lưu lượng truy cập HTTP tới HTTPS để bật các tính năng web an toàn cho tất cả người dùng. [Tìm hiểu thêm](https://web.dev/redirects-http)" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "Không chuyển hướng lưu lượng truy cập HTTP tới HTTPS" @@ -870,7 +870,7 @@ "message": "Chuyển hướng lưu lượng truy cập HTTP tới HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "Các lần chuyển hướng sẽ làm giảm tốc độ tải trang. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/redirects)." + "message": "Các lần chuyển hướng sẽ làm giảm tốc độ tải trang. [Tìm hiểu thêm](https://web.dev/redirects)." }, "lighthouse-core/audits/redirects.js | title": { "message": "Tránh chuyển hướng trang nhiều lần" @@ -996,7 +996,7 @@ "message": "Tài liệu tránh sử dụng plugin" }, "lighthouse-core/audits/seo/robots-txt.js | description": { - "message": "Nếu định dạng của tệp robots.txt không đúng, thì trình thu thập thông tin có thể không hiểu được cách bạn muốn thu thập thông tin hoặc lập chỉ mục trang web. [Tìm hiểu thêm](https://web.dev/robots-txt)" + "message": "Nếu định dạng của tệp robots.txt không đúng, thì trình thu thập thông tin có thể không hiểu được cách bạn muốn thu thập thông tin hoặc lập chỉ mục trang web của mình. [Tìm hiểu thêm](https://web.dev/robots-txt)" }, "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": { "message": "Yêu cầu robots.txt trả về trạng thái HTTP: {statusCode}" @@ -1035,19 +1035,19 @@ "message": "Mục tiêu nhấn có kích thước phù hợp" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Trình chạy dịch vụ là công nghệ cho phép ứng dụng của bạn dùng nhiều tính năng của Ứng dụng web tiến bộ, chẳng hạn như thêm vào màn hình chính khi không có mạng và thông báo đẩy. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)" + "message": "Trình chạy dịch vụ là công nghệ cho phép ứng dụng của bạn dùng nhiều tính năng của Ứng dụng web tiến bộ, chẳng hạn như hoạt động khi không có mạng, thêm vào màn hình chính, và thông báo đẩy. [Tìm hiểu thêm](https://web.dev/service-worker)" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "Trang này do một trình chạy dịch vụ kiểm soát. Tuy nhiên, không tìm thấy `start_url` vì tệp kê khai không thể phân tích cú pháp thành tệp JSON hợp lệ" }, "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": { - "message": "Trang này do một trình chạy dịch vụ kiểm soát. Tuy nhiên, `start_url` ({startUrl}) không thuộc phạm vi kiểm soát của trình chạy này ({scopeUrl})" + "message": "Trang này do một trình chạy dịch vụ kiểm soát. Tuy nhiên, `start_url` ({startUrl}) không thuộc phạm vi của trình chạy dịch vụ này ({scopeUrl})" }, "lighthouse-core/audits/service-worker.js | explanationNoManifest": { "message": "Trang này do một trình chạy dịch vụ kiểm soát. Tuy nhiên, không tìm thấy `start_url` vì không tìm nạp được tệp kê khai." }, "lighthouse-core/audits/service-worker.js | explanationOutOfScope": { - "message": "Nguồn gốc này có tối thiểu một trình chạy dịch vụ. Tuy nhiên, trang ({pageUrl}) không thuộc phạm vi kiểm soát của các trình chạy này." + "message": "Nguồn gốc này có một hoặc nhiều trình chạy dịch vụ. Tuy nhiên, trang ({pageUrl}) không thuộc phạm vi của các trình chạy dịch vụ này." }, "lighthouse-core/audits/service-worker.js | failureTitle": { "message": "Không đăng ký một trình chạy dịch vụ kiểm soát trang và `start_url`" @@ -1056,7 +1056,7 @@ "message": "Đăng ký một trình chạy dịch vụ kiểm soát trang và `start_url`" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "Màn hình chờ theo chủ đề giúp đảm bảo người dùng có trải nghiệm chất lượng cao khi chạy ứng dụng từ màn hình chính. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)" + "message": "Màn hình chờ có giao diện giúp đảm bảo người dùng có trải nghiệm chất lượng cao khi chạy ứng dụng từ màn hình chính. [Tìm hiểu thêm](https://web.dev/splash-screen)" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "Chưa được định cấu hình cho màn hình chờ tùy chỉnh" @@ -1065,13 +1065,13 @@ "message": "Đã định cấu hình cho màn hình chờ tùy chỉnh" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "Bạn có thể đặt màu chủ đề cho thanh địa chỉ trên trình duyệt để phù hợp với trang web của mình. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/address-bar)" + "message": "Bạn có thể đặt giao diện cho thanh địa chỉ trên trình duyệt để phù hợp với trang web của mình. [Tìm hiểu thêm](https://web.dev/themed-omnibox)" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { - "message": "Không đặt màu chủ đề cho thanh địa chỉ." + "message": "Không đặt màu giao diện cho thanh địa chỉ." }, "lighthouse-core/audits/themed-omnibox.js | title": { - "message": "Đặt màu chủ đề cho thanh địa chỉ." + "message": "Đặt màu giao diện cho thanh địa chỉ." }, "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": { "message": "Thời gian chặn chuỗi chính" @@ -1092,7 +1092,7 @@ "message": "Việc sử dụng mã của bên thứ ba" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "Chỉ số Thời gian cho byte đầu tiên xác định thời gian máy chủ của bạn gửi phản hồi. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/ttfb)." + "message": "Chỉ số Thời gian cho byte đầu tiên xác định thời gian máy chủ của bạn gửi phản hồi. [Tìm hiểu thêm](https://web.dev/time-to-first-byte)." }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "Tài liệu gốc mất {timeInMs, number, milliseconds} mili giây" @@ -1113,7 +1113,7 @@ "message": "Loại" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "Hãy cân nhắc trang bị API Thời gian người dùng cho ứng dụng để đo lường hiệu suất thực tế của ứng dụng trong trải nghiệm người dùng chính. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/user-timing)." + "message": "Hãy cân nhắc trang bị API Thời gian người dùng cho ứng dụng để đo lường hiệu suất thực tế của ứng dụng trong trải nghiệm người dùng chính. [Tìm hiểu thêm](https://web.dev/user-timings)." }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 dấu thời gian người dùng}other{# dấu thời gian người dùng}}" @@ -1125,7 +1125,7 @@ "message": "Tìm thấy <link> kết nối trước cho \"{securityOrigin}\" nhưng trình duyệt không sử dụng phần tử liên kết này. Hãy kiểm tra để đảm bảo rằng bạn đang sử dụng thuộc tính `crossorigin` đúng cách." }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "Hãy cân nhắc thêm các gợi ý về tài nguyên `preconnect` hoặc `dns-prefetch` để thiết lập kết nối sớm tới những nguồn gốc quan trọng của bên thứ ba. [Tìm hiểu thêm](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)" + "message": "Hãy cân nhắc thêm các gợi ý về tài nguyên `preconnect` hoặc `dns-prefetch` để thiết lập kết nối sớm tới những nguồn gốc quan trọng của bên thứ ba. [Tìm hiểu thêm](https://web.dev/uses-rel-preconnect)" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "Kết nối trước với các tên miền bắt buộc" @@ -1134,13 +1134,13 @@ "message": "Tìm thấy <link> tải trước cho \"{preloadURL}\" nhưng trình duyệt không sử dụng phần tử liên kết này. Hãy kiểm tra để đảm bảo rằng bạn đang sử dụng thuộc tính `crossorigin` đúng cách." }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "Hãy cân nhắc sử dụng `<link rel=preload>` để ưu tiên tìm nạp các tài nguyên đang được yêu cầu vào một thời điểm khác trong quá trình tải trang. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/preload)." + "message": "Hãy cân nhắc sử dụng `<link rel=preload>` để ưu tiên tìm nạp các tài nguyên đang được yêu cầu vào một thời điểm khác trong quá trình tải trang. [Tìm hiểu thêm](https://web.dev/uses-rel-preload)." }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "Tải trước các yêu cầu chính" }, "lighthouse-core/audits/viewport.js | description": { - "message": "Thêm thẻ `<meta name=\"viewport\">` để tối ưu hóa ứng dụng của bạn cho màn hình thiết bị di động. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)" + "message": "Thêm thẻ `<meta name=\"viewport\">` để tối ưu hóa ứng dụng của bạn cho màn hình thiết bị di động. [Tìm hiểu thêm](https://web.dev/viewport)" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "Không tìm thấy thẻ `<meta name=\"viewport\">`" @@ -1152,25 +1152,25 @@ "message": "Có thẻ `<meta name=\"viewport\">` có `width` hoặc `initial-scale`" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "Ứng dụng của bạn phải hiển thị nội dung nào đó khi JavaScript bị tắt, ngay cả khi đó chỉ là cảnh báo cho người dùng biết phải có JavaScript mới dùng được ứng dụng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/no-js)." + "message": "Ứng dụng của bạn phải hiển thị một số nội dung khi JavaScript bị tắt, ngay cả khi đó chỉ là một cảnh báo cho người dùng biết phải có JavaScript mới dùng được ứng dụng. [Tìm hiểu thêm](https://web.dev/without-javascript)." }, "lighthouse-core/audits/without-javascript.js | explanation": { - "message": "Phần nội dung trang phải hiển thị nội dung nào đó ngay cả khi không tải được tập lệnh" + "message": "Phần nội dung trang phải hiển thị một số nội dung nếu không có sẵn tập lệnh." }, "lighthouse-core/audits/without-javascript.js | failureTitle": { - "message": "Không cung cấp nội dung dự phòng khi JavaScript không hoạt động" + "message": "Không cung cấp nội dung dự phòng khi JavaScript không có sẵn" }, "lighthouse-core/audits/without-javascript.js | title": { - "message": "Chứa nội dung nào đó khi JavaScript không hoạt động" + "message": "Chứa một số nội dung khi JavaScript không có sẵn" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "Nếu bạn đang tạo một Ứng dụng web tiến bộ, hãy cân nhắc dùng trình chạy dịch vụ để ứng dụng có thể hoạt động khi không có mạng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)" + "message": "Nếu bạn đang tạo một Ứng dụng web tiến bộ, hãy cân nhắc dùng trình chạy dịch vụ để ứng dụng có thể hoạt động khi không có mạng. [Tìm hiểu thêm](https://web.dev/works-offline)" }, "lighthouse-core/audits/works-offline.js | failureTitle": { - "message": "Trang hiện tại không phản hồi kèm mã trạng thái 200 khi không có mạng" + "message": "Trang hiện tại không trả về mã trạng thái 200 khi không có mạng" }, "lighthouse-core/audits/works-offline.js | title": { - "message": "Trang hiện tại phản hồi kèm mã trạng thái 200 khi không có mạng" + "message": "Trang hiện tại trả về mã trạng thái 200 khi không có mạng" }, "lighthouse-core/audits/works-offline.js | warningNoLoad": { "message": "Trang này có thể không tải được khi không có mạng vì URL kiểm tra ({requested}) đã được chuyển hướng tới \"{final}\". Hãy thử kiểm tra trực tiếp URL thứ hai." @@ -1275,7 +1275,7 @@ "message": "Những hoạt động kiểm tra này sẽ xác thực các khía cạnh của một Ứng dụng web tiến bộ. [Tìm hiểu thêm](https://developers.google.com/web/progressive-web-apps/checklist)." }, "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": { - "message": "Bạn phải tiến hành những hoạt động kiểm tra mà Lighthouse không tự động thực hiện trong [Danh sách kiểm tra ứng dụng web tiến bộ (PWA)](https://developers.google.com/web/progressive-web-apps/checklist). Các hoạt động kiểm tra này không ảnh hưởng đến điểm số của bạn, nhưng bạn phải xác minh theo cách thủ công." + "message": "Đây là những hoạt động kiểm tra được chỉ định trong [Danh sách kiểm tra ứng dụng web tiến bộ (PWA)](https://developers.google.com/web/progressive-web-apps/checklist) cơ bản, nhưng Lighthouse không tự động kiểm tra các mục này. Các hoạt động kiểm tra này không ảnh hưởng đến điểm số của bạn, nhưng bạn nên xác minh theo cách thủ công." }, "lighthouse-core/config/default-config.js | pwaCategoryTitle": { "message": "Ứng dụng web tiến bộ"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-HK.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-HK.json index 788fa82f..98e16bf0 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-HK.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-HK.json
@@ -30,10 +30,10 @@ "message": "部分 ARIA 父角色必須包含特定的子角色,才能正確執行無障礙功能。[瞭解詳情](https://web.dev/aria-required-children/)。" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "設有 `[role]` 的元素缺少必需的特定子元素 `[role]`。" + "message": "包含 ARIA `[role]` 且要求子元素包含特定 `[role]` 的元素缺少部分或全部的必要子元素。" }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "`[role]` 的元素具備必需的特定子元素 `[role]`。" + "message": "包含 ARIA `[role]` 且要求子元素包含特定 `[role]` 的元素具有全部必要的子元素。" }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "部分 ARIA 子角色必須包括在特定的父角色中,才能正確執行無障礙功能。[瞭解詳情](https://web.dev/aria-required-parent/)。" @@ -276,10 +276,10 @@ "message": "螢幕閱讀器的功能可讓使用者更輕鬆瀏覽表格。如能確保採用 `[headers]` 屬性的 `<td>` 儲存格只參照同一表格中的其他儲存格,或許能改善螢幕閱讀器的使用體驗。[瞭解詳情](https://web.dev/td-headers-attr/)。" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`<table>` 元素中採用 `[headers]` 屬性的儲存格,參照了同一表格中的其他儲存格。" + "message": "`<table>` 元素中採用 `[headers]` 屬性的儲存格參照了 `id`,無法在同一表格中找到此元素。" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "`[headers]` 元素中採用 `<table>` 屬性的儲存格,只參照了同一表格中的其他儲存格。" + "message": "`<table>` 元素中採用 `[headers]` 屬性的儲存格,參照了同一表格中的其他儲存格。" }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "螢幕閱讀器的功能可讓使用者更輕鬆瀏覽表格。如能確保表格標題一律參照特定一組儲存格,或許能有助改善螢幕閱讀器使用者的體驗。[瞭解詳情](https://web.dev/th-has-data-cells/)。" @@ -318,7 +318,7 @@ "message": "`<video>` 元素包含帶有 `[kind=\"description\"]` 的`<track>` 元素" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "請定義 `apple-touch-icon`。這樣,當 iOS 使用者將漸進式網絡應用程式新增到主畫面時,系統才會顯示正確圖示。apple-touch-icon 必須指向大小為 192 像素 (或 180 像素) 的不透明正方形 PNG。[瞭解詳情](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)。" + "message": "請定義 `apple-touch-icon`。這樣,當 iOS 使用者將漸進式網絡應用程式新增到主畫面時,系統才會顯示正確圖示。apple-touch-icon 必須指向大小為 192 像素 (或 180 像素) 的不透明正方形 PNG。[瞭解詳情](https://web.dev/apple-touch-icon/)。" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "未提供有效的 `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "CPU 總執行時間" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "建議減少剖析、編譯和執行 JS 所用的時間。傳送較小的 JS 負載可能有所幫助。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/bootup)。" + "message": "建議減少剖析、編譯和執行 JS 所用的時間。傳送較小的 JS 負載可能有所幫助。[瞭解詳情](https://web.dev/bootup-time)。" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "縮短 JavaScript 執行時間" @@ -351,25 +351,25 @@ "message": "JavaScript 執行時間" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "大型 GIF 放送動畫內容效率往往不佳。建議改用 MPEG4/WebM 格式的動畫影片和 PNG/WebP 格式的靜態圖片,以節省網絡位元組。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "大型 GIF 放送動畫內容效率往往不佳。建議改用 MPEG4/WebM 格式的動畫影片和 PNG/WebP 格式的靜態圖片,以節省網絡位元組。[瞭解詳情](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "使用影片格式的動畫內容" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "建議延遲載入螢幕外的項目並隱藏圖片,直到重要資源全部載入後再開始操作,以縮短可互動時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)。" + "message": "建議延遲載入螢幕外的項目並隱藏圖片,直到重要資源全部載入後再開始操作,以縮短可互動時間。[瞭解詳情](https://web.dev/offscreen-images)。" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "延遲載入螢幕外圖片" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "過多資源往往會阻止系統首次繪製頁面。建議內嵌重要的 JS/CSS,延遲所有不重要的 JS/樣式。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)。" + "message": "過多資源往往會阻止系統首次繪製頁面。建議內嵌重要的 JS/CSS,延遲所有不重要的 JS/樣式。[瞭解詳情](https://web.dev/render-blocking-resources)。" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "排除阻止呈現的資源" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "網絡負載過大會造成使用者的費用負擔,且往往與過長載入時間息息相關。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)。" + "message": "網絡負載過大會造成使用者的費用負擔,且往往與過長載入時間息息相關。[瞭解詳情](https://web.dev/total-byte-weight)。" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "總大小為 {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "避免網絡負載過大" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "壓縮 CSS 檔案可減少網絡負載大小。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/minify-css)。" + "message": "壓縮 CSS 檔案可減少網絡負載大小。[瞭解詳情](https://web.dev/unminified-css)。" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "壓縮 CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "壓縮 JavaScript 檔案可減少負載大小和指令碼剖析時間。[瞭解詳情](https://developers.google.com/speed/docs/insights/MinifyResources)。" + "message": "壓縮 JavaScript 檔案可減少負載大小和指令碼剖析時間。[瞭解詳情](https://web.dev/unminified-javascript)。" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "壓縮 Javascript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "從樣式表中移除無用的規則,並延遲載在毋需捲動的當眼位置內容中未使用的 CSS,減少網絡活動耗用不必要的位元組。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/unused-css)。" + "message": "從樣式表中移除無用的規則,並延遲載在毋需捲動的當眼位置內容中未使用的 CSS,減少網絡活動耗用不必要的位元組。[瞭解詳情](https://web.dev/unused-css-rules)。" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "移除未使用的 CSS" @@ -405,7 +405,7 @@ "message": "移除未使用的 JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "延長快取期限可加快重覆瀏覽頁面的速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)。" + "message": "延長快取期限可加快重覆瀏覽頁面的速度。[瞭解詳情](https://web.dev/uses-long-cache-ttl)。" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{已找到 1 項資源}other{已找到 # 項資源}}" @@ -417,31 +417,31 @@ "message": "使用有效的快取政策處理靜態資產" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "優化圖片以加快載入速度,減少流動數據用量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)。" + "message": "優化圖片以加快載入速度,減少流動數據用量。[瞭解詳情](https://web.dev/uses-optimized-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "有效地進行圖片編碼" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "提供適當大小的圖片有助節省流動數據用量,並縮短載入時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)。" + "message": "提供適當大小的圖片有助節省流動數據用量,並縮短載入時間。[瞭解詳情](https://web.dev/uses-responsive-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "適當調整圖片大小" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "文字資源應經過 (gzip、deflate 或 brotli) 壓縮,以將網絡位元總數減至最少。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。" + "message": "文字資源應經過 (gzip、deflate 或 brotli) 壓縮,以將網絡位元總數減至最少。[瞭解詳情](https://web.dev/uses-text-compression)。" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "啟用文字壓縮" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000、JPEG XR 和 WebP 等圖片格式通常比 PNG 或 JPEG 有更好的壓縮效果,能夠更快完成下載及減少數據用量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/webp)。" + "message": "JPEG 2000、JPEG XR 和 WebP 等圖片格式通常比 PNG 或 JPEG 有更好的壓縮效果,能夠更快完成下載及減少數據用量。[瞭解詳情](https://web.dev/uses-webp-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "提供 next-gen 格式的圖片" }, "lighthouse-core/audits/content-width.js | description": { - "message": "如果應用程式內容寬度與檢視區的寬度不相符,應用程式可能無法在流動裝置螢幕上呈現優化效果。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)。" + "message": "如果應用程式內容寬度與檢視區的寬度不相符,應用程式可能無法在流動裝置螢幕上呈現優化效果。[瞭解詳情](https://web.dev/content-width)。" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "檢視區大小 ({innerWidth} 像素) 與視窗大小 ({outerWidth} 像素) 不相符。" @@ -453,7 +453,7 @@ "message": "已將檢視區正確調整內容大小" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "下方的「關鍵要求鏈結」顯示以高優先次序發佈的資源。為了提高頁面載入速度,建議您縮短鏈結長度,縮減下載資源的大小,或延遲下載不必要資源。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)。" + "message": "下方的「關鍵要求鏈結」顯示以高優先次序發佈的資源。為了提高頁面載入速度,建議您縮短鏈結長度,縮減下載資源的大小,或延遲下載不必要資源。[瞭解詳情](https://web.dev/critical-request-chains)。" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{已找到 1 個鏈結}other{已找到 # 個鏈結}}" @@ -675,7 +675,7 @@ "message": "系統未在管理中心記錄瀏覽器發生的錯誤" }, "lighthouse-core/audits/font-display.js | description": { - "message": "運用顯示字型的 CSS 功能,確保使用者可在網頁字型載入時看到文字。[瞭解詳情](https://developers.google.com/web/updates/2016/02/font-display)。" + "message": "運用顯示字型的 CSS 功能,確保使用者可在網頁字型載入時看到文字。[瞭解詳情](https://web.dev/font-display)。" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "確保文字在網頁字型載入時仍然顯示" @@ -705,7 +705,7 @@ "message": "圖片大小資料無效 {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "瀏覽器可主動提示使用者,建議他們將您的應用程式新增至主畫面,藉此提高參與度[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)。" + "message": "瀏覽器可主動提示使用者,建議他們將您的應用程式新增至主畫面,藉此提高參與度[瞭解詳情](https://web.dev/installable-manifest)。" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "網絡應用程式資訊清單不符合可安裝性要求" @@ -729,7 +729,7 @@ "message": "使用 HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "如果網頁在流動網絡中能快速載入,可為流動裝置使用者提供良好的使用體驗。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)。" + "message": "如果網頁在流動網絡中能快速載入,可為流動裝置使用者提供良好的使用體驗。[瞭解詳情](https://web.dev/load-fast-enough-for-pwa)。" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "在 {timeInMs, number, seconds} 秒開始互動" @@ -750,7 +750,7 @@ "message": "類別" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "建議減少剖析、編譯和執行 JS 所用的時間。傳送較小的 JS 負載可能有所幫助。" + "message": "建議減少剖析、編譯和執行 JS 所用的時間。傳送較小的 JS 負載可能有所幫助。[瞭解詳情](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "將主要執行緒的工作減至最少" @@ -759,49 +759,49 @@ "message": "將主要執行緒的工作減至最少" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "為盡量觸及最多使用者,網站應能在每個主要瀏覽器上暢順運作。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)。" + "message": "為盡量觸及最多使用者,網站應能在每個主要瀏覽器上暢順運作。[瞭解詳情](https://web.dev/pwa-cross-browser)。" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "網站可以在不同瀏覽器上運作" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "確保每個網頁都可透過網址進行深層連結,且具有專屬網址,方便您在社交媒體上分享。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)。" + "message": "確保每個網頁都可透過網址進行深層連結,且具有專屬網址,方便您在社交媒體上分享。[瞭解詳情](https://web.dev/pwa-each-page-has-url)。" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "每個網頁都有一個網址" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "即使網絡速度緩慢,只要使用者瀏覽不同網頁也能營造流暢切換的感覺,這就是高效感觀的關鍵。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)。" + "message": "即使網絡速度緩慢,只要使用者瀏覽不同網頁也能營造流暢切換的感覺。這就是為使用者帶來高效感觀的關鍵。[瞭解詳情](https://web.dev/pwa-page-transitions)。" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "使用者在切換頁面時不會覺得網絡速度緩慢" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "預計輸入延遲時間是在頁面載入視窗最忙碌的 5 秒期間,您的應用程式對使用者輸入動作的預計回應時間 (以毫秒為單位)。如果延遲超過 50 毫秒,使用者可能會認為應用程式的速度緩慢。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)。" + "message": "預計輸入延遲時間是在頁面載入視窗最忙碌的 5 秒期間,您的應用程式對使用者輸入動作的預計回應時間 (以毫秒為單位)。如果延遲超過 50 毫秒,使用者可能會認為應用程式的速度緩慢。[瞭解詳情](https://web.dev/estimated-input-latency)。" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "預計輸入延遲時間" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "「首次內容繪製時間」標示繪製首個文字/首張圖片的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)。" + "message": "「首次內容繪製時間」標示繪製首個文字/首張圖片的時間。[瞭解詳情](https://web.dev/first-contentful-paint)。" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "首次內容繪製時間" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "「首次 CPU 閒置時間」標示頁面的主要執行緒首次有空處理輸入的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)。" + "message": "「首次 CPU 閒置時間」標示頁面的主要執行緒首次有空處理輸入的時間。[瞭解詳情](https://web.dev/first-cpu-idle)。" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "首次 CPU 閒置時間" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "「首次有效繪製時間」評估頁面主要內容顯示的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)。" + "message": "「首次有效繪製時間」評估頁面主要內容顯示的時間。[瞭解詳情](https://web.dev/first-meaningful-paint)。" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "首次有效繪製時間" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "互動準備時間是網頁進入完整互動狀態前所花的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)。" + "message": "互動準備時間是網頁進入完整互動狀態前所花的時間。[瞭解詳情](https://web.dev/interactive)。" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "可互動所需時間" @@ -813,7 +813,7 @@ "message": "首次輸入延遲時間最長預計值" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "「速度指數」會顯示頁面內容的展現速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/speed-index)。" + "message": "「速度指數」會顯示頁面內容的展現速度。[瞭解詳情](https://web.dev/speed-index)。" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "速度指數" @@ -837,7 +837,7 @@ "message": "伺服器後端延遲時間" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Service Worker 可確保您的網絡應用程式運作可靠,即使網絡連線不穩定亦然。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。" + "message": "Service Worker 可確保您的網絡應用程式運作可靠,即使網絡連線不穩定亦然。[瞭解詳情](https://web.dev/offline-start-url)。" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` 在離線時不會傳回狀態碼 200 的回應" @@ -861,7 +861,7 @@ "message": "效能預算" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "如果您已設定 HTTPS,請確認是否已將所有 HTTP 流量重新導向至 HTTPS,以便為所有使用者提供安全的網絡功能。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)。" + "message": "如果您已設定 HTTPS,請確認是否已將所有 HTTP 流量重新導向至 HTTPS,以便為所有使用者提供安全的網絡功能。[瞭解詳情](https://web.dev/redirects-http)。" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "尚未將 HTTP 流量重新導向至 HTTPS" @@ -870,7 +870,7 @@ "message": "將 HTTP 流量重新導向至 HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "重新導向會導致頁面延遲載入。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。" + "message": "重新導向會導致頁面延遲載入。[瞭解詳情](https://web.dev/redirects)。" }, "lighthouse-core/audits/redirects.js | title": { "message": "避免多次頁面重新導向" @@ -1035,7 +1035,7 @@ "message": "輕按目標已設定成適當大小" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service Worker 技術可讓您的應用程式使用多項漸進式網絡應用程式的功能,例如離線存取、新增到主畫面和推送通知。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)。" + "message": "Service Worker 技術可讓您的應用程式使用多項漸進式網絡應用程式的功能,例如離線存取、新增到主畫面和推送通知。[瞭解詳情](https://web.dev/service-worker)。" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "此網頁由 Service Worker 控制,但系統無法將資訊清單剖析為有效的 JSON,因此找不到任何 `start_url`" @@ -1056,7 +1056,7 @@ "message": "已註冊可控制網頁和 `start_url` 的 Service Worker" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "透過設定啟動畫面的主題,可確保使用者從主畫面啟動您的應用程式時享有優質體驗。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)。" + "message": "透過設定啟動畫面的主題,可確保使用者從主畫面啟動您的應用程式時享有優質體驗。[瞭解詳情](https://web.dev/splash-screen)。" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "未設定自訂啟動畫面" @@ -1065,7 +1065,7 @@ "message": "設有自訂啟動畫面" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "您可以將瀏覽器網址列的主題設定為與網站相符。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/address-bar)。" + "message": "您可以將瀏覽器網址列的主題設定為與網站相符。[瞭解詳情](https://web.dev/themed-omnibox)。" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "未設定網址列的主題顏色。" @@ -1092,7 +1092,7 @@ "message": "第三方程式碼使用情況" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "「首個字節時間」會指出您的伺服器傳送回應的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/ttfb)。" + "message": "「首個字節時間」會指出您的伺服器傳送回應的時間。[瞭解詳情](https://web.dev/time-to-first-byte)。" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "根文件回應時間為 {timeInMs, number, milliseconds} 毫秒" @@ -1113,7 +1113,7 @@ "message": "類別" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "建議使用「用戶使用時間」檢測您的應用程式,評估其在關鍵使用者體驗期間的實際成效。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/user-timing)。" + "message": "建議使用「用戶使用時間」檢測您的應用程式,評估其在關鍵使用者體驗期間的實際成效。[瞭解詳情](https://web.dev/user-timings)。" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 個用戶使用時間標記}other{# 個用戶使用時間標記}}" @@ -1125,7 +1125,7 @@ "message": "「{securityOrigin}」有預先連線的 <link>,但瀏覽器沒有使用。請檢查您使用 `crossorigin` 屬性的方式是否正確。" }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "建議您新增 `preconnect` 或 `dns-prefetch` 資源提示,及早連線至重要的第三方來源。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)。" + "message": "建議您新增 `preconnect` 或 `dns-prefetch` 資源提示,及早連線至重要的第三方來源。[瞭解詳情](https://web.dev/uses-rel-preconnect)。" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "預先連接至必要來源" @@ -1134,13 +1134,13 @@ "message": "{preloadURL} 有預先載入的 <link>,但瀏覽器沒有使用。請檢查您使用 `crossorigin` 屬性的方式是否正確。" }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "建議使用 `<link rel=preload>` 來指定優先需要的網絡要求,並預先擷取資源。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/preload)。" + "message": "建議使用 `<link rel=preload>` 來指定優先需要的網絡要求,並預先擷取資源。[瞭解詳情](https://web.dev/uses-rel-preload)。" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "預先載入關鍵要求" }, "lighthouse-core/audits/viewport.js | description": { - "message": "新增 `<meta name=\"viewport\">` 標籤以對流動裝置螢幕優化您的應用程式。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)。" + "message": "新增 `<meta name=\"viewport\">` 標籤以對流動裝置螢幕優化您的應用程式。[瞭解詳情](https://web.dev/viewport)。" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "找不到任何 `<meta name=\"viewport\">` 標籤" @@ -1152,7 +1152,7 @@ "message": "具備包括 `<meta name=\"viewport\">` 或 `width` 的 `initial-scale` 標籤" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "當 JavaScript 停用時,您的應用程式應該要顯示一些內容,即使只是向使用者顯示「必須啟用 JavaScript 才能使用此應用程式」這類警告訊息亦可。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/no-js)。" + "message": "當 JavaScript 停用時,您的應用程式應該要顯示一些內容,即使只是向使用者顯示「必須啟用 JavaScript 才能使用此應用程式」這類警告訊息亦可。[瞭解詳情](https://web.dev/without-javascript)。" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "即使網頁的指令碼無法使用,網頁內文仍應顯示一些內容。" @@ -1164,7 +1164,7 @@ "message": "當 JavaScript 無法使用時包含一些內容" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "如果您正在建立漸進式網絡應用程式,請考慮使用 Service Worker,以便您的應用程式離線運作。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。" + "message": "如果您正在建立漸進式網絡應用程式,請考慮使用 Service Worker,以便您的應用程式離線運作。[瞭解詳情](https://web.dev/works-offline)。" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "目前的網頁在離線時不會傳回狀態碼 200 的回應"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-TW.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-TW.json index d69e31c0..695c0d8 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-TW.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-TW.json
@@ -30,10 +30,10 @@ "message": "部分 ARIA 父項角色必須包含特定的子項角色,才能正確執行無障礙功能。[瞭解詳情](https://web.dev/aria-required-children/)。" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "設有 `[role]` 的元素缺少必備的特定子項 `[role]`。" + "message": "有些元素具備 ARIA `[role]` 且要求子項包含特定 `[role]`,這些元素缺少部分或全部的必要子項。" }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "設有 `[role]` 的元素具有必備的特定子項 `[role]`" + "message": "具備 ARIA `[role]` 且要求子項包含特定 `[role]` 的元素具有全部的必要子項。" }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "部分 ARIA 子項角色必須包含在特定的父項角色中,才能正確執行其無障礙功能。[瞭解詳情](https://web.dev/aria-required-parent/)。" @@ -276,10 +276,10 @@ "message": "螢幕閱讀器的功能可讓使用者輕鬆瀏覽表格。請確保使用 `[headers]` 屬性的 `<td>` 儲存格只參照同一表格中的其他儲存格,這樣可改善螢幕閱讀器的使用體驗。[瞭解詳情](https://web.dev/td-headers-attr/)。" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`<table>` 元素中採用 `[headers]` 屬性的儲存格,參照了同一表格中的其他儲存格。" + "message": "在 `<table>` 元素中使用 `[headers]` 屬性的儲存格參照了元素 `id`,系統無法在相同表格中找到這個元素。" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "在 `<table>` 元素中使用 `[headers]` 屬性的儲存格只參照同一表格中的其他儲存格。" + "message": "在 `<table>` 元素中使用 `[headers]` 屬性的儲存格參照了同一表格中的表格儲存格。" }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "螢幕閱讀器的功能可讓使用者輕鬆瀏覽表格。如果能確保表格標題一律參照特定一組儲存格,或許能讓螢幕閱讀器的使用體驗更上一層樓。[瞭解詳情](https://web.dev/th-has-data-cells/)。" @@ -318,7 +318,7 @@ "message": "`<video>` 元素包含帶有 `[kind=\"description\"]` 的 `<track>` 元素" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "請定義「`apple-touch-icon`」,這樣一來,當 iOS 使用者將漸進式網頁應用程式新增到主螢幕時,系統才會顯示正確圖示。apple-touch-icon 必須指向大小為 192 像素 (或 180 像素) 的不透明正方形 PNG。[瞭解詳情](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)。" + "message": "請定義「`apple-touch-icon`」,這樣一來,當 iOS 使用者將漸進式網頁應用程式新增到主螢幕時,系統才會顯示正確圖示。apple-touch-icon 必須指向大小為 192 像素 (或 180 像素) 的不透明正方形 PNG。[瞭解詳情](https://web.dev/apple-touch-icon/)。" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "未提供有效的 `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "CPU 總執行時間" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "建議你縮短剖析、編譯及執行 JavaScript 所耗費的時間。提供較小的 JavaScript 酬載可能會有幫助。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/bootup)。" + "message": "建議你縮短剖析、編譯及執行 JavaScript 所耗費的時間。提供較小的 JavaScript 酬載可能會有幫助。[瞭解詳情](https://web.dev/bootup-time)。" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "減少 JavaScript 執行時間" @@ -351,25 +351,25 @@ "message": "JavaScript 執行時間" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "使用大型 GIF 檔案呈現動畫內容會降低網路傳輸效率。建議你改用 MPEG4/WebM 影片格式呈現動畫內容,或是使用 PNG/WebP 格式顯示靜態圖片,以減少網路傳輸的資料量。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "使用大型 GIF 檔案呈現動畫內容會降低網路傳輸效率。建議你改用 MPEG4/WebM 影片格式呈現動畫內容,或是使用 PNG/WebP 格式顯示靜態圖片,以減少網路傳輸的資料量。[瞭解詳情](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "使用影片格式的動畫內容" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "建議在所有重要資源載入完成之前,延遲載入畫面外圖片和隱藏項目,以縮短互動準備時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)。" + "message": "建議在所有重要資源載入完成之前,延遲載入畫面外圖片和隱藏項目,以縮短互動準備時間。[瞭解詳情](https://web.dev/offscreen-images)。" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "延後載入畫面外圖片" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "網頁的資源過多,因此妨礙了首次顯示畫面的時間。建議你先載入重要的內嵌 JavaScript/CSS,並延後載入不重要的 JavaScript/樣式。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)。" + "message": "網頁的資源過多,因此妨礙了首次顯示畫面的時間。建議你先載入重要的內嵌 JavaScript/CSS,並延後載入不重要的 JavaScript/樣式。[瞭解詳情](https://web.dev/render-blocking-resources)。" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "排除禁止轉譯的資源" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "大量的網路酬載會增加使用者的費用負擔,而且往往會延長網頁載入時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)。" + "message": "大量的網路酬載會增加使用者的費用負擔,而且往往會延長網頁載入時間。[瞭解詳情](https://web.dev/total-byte-weight)。" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "總大小為 {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "避免耗用大量網路資源" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "壓縮 CSS 檔案能減少網路酬載大小。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/minify-css)。" + "message": "壓縮 CSS 檔案能減少網路酬載大小。[瞭解詳情](https://web.dev/unminified-css)。" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "壓縮 CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "壓縮 JavaScript 檔案能減少酬載大小,並縮短剖析指令碼的時間。[瞭解詳情](https://developers.google.com/speed/docs/insights/MinifyResources)。" + "message": "壓縮 JavaScript 檔案能減少酬載大小,並縮短剖析指令碼的時間。[瞭解詳情](https://web.dev/unminified-javascript)。" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "壓縮 JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "移除樣式表中的無用規則,並延遲載入在不需捲動位置內容中未使用的 CSS,儘量避免網路活動消耗不必要的流量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/unused-css)。" + "message": "移除樣式表中的無用規則,並延遲載入在不需捲動位置內容中未使用的 CSS,儘量避免網路活動消耗不必要的流量。[瞭解詳情](https://web.dev/unused-css-rules)。" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "移除未使用的 CSS" @@ -405,7 +405,7 @@ "message": "移除未使用的 JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "延長快取生命週期可以加快使用者再次造訪網頁的速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)。" + "message": "延長快取生命週期可以加快使用者再次造訪網頁的速度。[瞭解詳情](https://web.dev/uses-long-cache-ttl)。" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{找到 1 項資源}other{找到 # 項資源}}" @@ -417,31 +417,31 @@ "message": "使用有效的快取政策處理靜態資產" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "經過最佳化的圖片載入速度較快,且能節省使用者的行動數據用量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)。" + "message": "經過最佳化的圖片載入速度較快,且能節省使用者的行動數據用量。[瞭解詳情](https://web.dev/uses-optimized-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "圖片編碼有效率" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "使用大小合適的圖片有助於節省行動數據用量並縮短載入時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)。" + "message": "使用大小合適的圖片有助於節省行動數據用量並縮短載入時間。[瞭解詳情](https://web.dev/uses-responsive-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "使用合適的圖片大小" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "提供的文字資源應經過 (gzip、deflate 或 brotli) 壓縮,將網路傳輸的資料量降至最低。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。" + "message": "提供的文字資源應經過 (gzip、deflate 或 brotli) 壓縮,將網路傳輸的資料量降至最低。[瞭解詳情](https://web.dev/uses-text-compression)。" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "啟用文字壓縮" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000、JPEG XR 和 WebP 等圖片格式的壓縮效果通常優於 PNG 或 JPEG,因此能提高下載速度並節省使用者的數據用量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/webp)。" + "message": "JPEG 2000、JPEG XR 和 WebP 等圖片格式的壓縮效果通常優於 PNG 或 JPEG,因此能提高下載速度並節省使用者的數據用量。[瞭解詳情](https://web.dev/uses-webp-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "提供 next-gen 格式的圖片" }, "lighthouse-core/audits/content-width.js | description": { - "message": "如果你的應用程式內容寬度與可視區域的寬度不相符,應用程式可能無法在行動裝置螢幕上呈現最佳效果。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)。" + "message": "如果你的應用程式內容寬度與可視區域的寬度不相符,應用程式可能無法在行動裝置螢幕上呈現最佳效果。[瞭解詳情](https://web.dev/content-width)。" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "可視區域大小 ({innerWidth} 像素) 與視窗大小 ({outerWidth} 像素) 不相符。" @@ -453,7 +453,7 @@ "message": "已針對可視區域正確調整內容大小" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "下方的「關鍵要求鏈結」顯示優先載入的資源。建議你縮短鏈結長度、降低下載資源的大小,或是將非必要資源延後載入,以提高網頁載入速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)。" + "message": "下方的「關鍵要求鏈結」顯示優先載入的資源。建議你縮短鏈結長度、降低下載資源的大小,或是將非必要資源延後載入,以提高網頁載入速度。[瞭解詳情](https://web.dev/critical-request-chains)。" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{找到 1 個鏈結}other{找到 # 個鏈結}}" @@ -675,7 +675,7 @@ "message": "系統未在主控台中記錄瀏覽器發生的錯誤" }, "lighthouse-core/audits/font-display.js | description": { - "message": "運用顯示字型的 CSS 功能,確保使用者可以在網站字型載入期間看到文字。[瞭解詳情](https://developers.google.com/web/updates/2016/02/font-display)。" + "message": "運用顯示字型的 CSS 功能,確保使用者可以在網站字型載入期間看到文字。[瞭解詳情](https://web.dev/font-display)。" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "確認載入網站字型時文字不會消失" @@ -705,7 +705,7 @@ "message": "圖片大小資訊無效 ({url})" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "瀏覽器可以主動提示使用者,建議他們將你的應用程式新增到主螢幕,藉此提高參與度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)。" + "message": "瀏覽器可以主動提示使用者,建議他們將你的應用程式新增到主螢幕,藉此提高參與度。[瞭解詳情](https://web.dev/installable-manifest)。" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "網頁應用程式資訊清單不符合安裝規定" @@ -729,7 +729,7 @@ "message": "使用 HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "如果網頁能透過行動網路快速載入,就可確保行動裝置使用者獲得良好的使用體驗。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)。" + "message": "如果網頁能透過行動網路快速載入,就可確保行動裝置使用者獲得良好的使用體驗。[瞭解詳情](https://web.dev/load-fast-enough-for-pwa)。" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "在 {timeInMs, number, seconds} 秒開始互動" @@ -750,7 +750,7 @@ "message": "類別" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "建議減少剖析、編譯和執行 JS 所耗費的時間。提供較小的 JS 酬載可能會有幫助。" + "message": "建議你縮短剖析、編譯及執行 JavaScript 所耗費的時間。提供較小的 JavaScript 酬載可能會有幫助。[瞭解詳情](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "將主要執行緒的工作降到最低" @@ -759,49 +759,49 @@ "message": "將主要執行緒的工作降到最低" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "為觸及大多數使用者,網站應在每個主要瀏覽器上運作。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)。" + "message": "為觸及大多數使用者,網站應在每個主要瀏覽器上運作。[瞭解詳情](https://web.dev/pwa-cross-browser)。" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "網站可以在不同瀏覽器上運作" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "可確保每個網頁都能透過網址進行深層連結,而且具有專屬網址,方便你在社交媒體上分享。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)。" + "message": "可確保每個網頁都能透過網址進行深層連結,而且具有專屬網址,方便你在社交媒體上分享。[瞭解詳情](https://web.dev/pwa-each-page-has-url)。" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "每個網頁都有一個網址" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "即使網路速度緩慢,當使用者輕觸不同網頁也應該要能流暢切換,這是展現效能的重要關鍵。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)。" + "message": "即使網路速度緩慢,當使用者輕觸不同網頁也應該要能流暢切換,這是展現效能的重要關鍵。[瞭解詳情](https://web.dev/pwa-page-transitions)。" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "使用者在切換頁面時不會覺得網路速度緩慢" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "預估輸入延遲時間是指在頁面載入作業最忙碌的 5 秒中,應用程式對於使用者輸入動作的預估回應時間 (以毫秒為單位)。如果延遲時間超過 50 毫秒,使用者可能會覺得應用程式的速度很慢。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)。" + "message": "預估輸入延遲時間是指在頁面載入作業最忙碌的 5 秒中,應用程式對於使用者輸入動作的預估回應時間 (以毫秒為單位)。如果延遲時間超過 50 毫秒,使用者可能會覺得應用程式的速度很慢。[瞭解詳情](https://web.dev/estimated-input-latency)。" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "預估輸入延遲" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "首次顯示內容所需時間是指瀏覽器首次顯示文字或圖片的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)。" + "message": "首次顯示內容所需時間是指瀏覽器首次顯示文字或圖片的時間。[瞭解詳情](https://web.dev/first-contentful-paint)。" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "首次內容繪製" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "首次 CPU 閒置時間是指網頁的主要執行緒已不再忙碌,且有能力處理輸入內容的最早時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)。" + "message": "首次 CPU 閒置時間是指網頁的主要執行緒已不再忙碌,且有能力處理輸入內容的最早時間。[瞭解詳情](https://web.dev/first-cpu-idle)。" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "首次 CPU 閒置" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "畫面首次有效顯示所需時間是指網頁顯示主要內容的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)。" + "message": "畫面首次有效顯示所需時間是指網頁顯示主要內容的時間。[瞭解詳情](https://web.dev/first-meaningful-paint)。" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "首次有效繪製" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "互動準備時間是網頁進入完整互動狀態前花費的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)。" + "message": "互動準備時間是網頁進入完整互動狀態前花費的時間。[瞭解詳情](https://web.dev/interactive)。" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "可互動時間" @@ -813,7 +813,7 @@ "message": "首次輸入延遲時間最長預估值" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "速度指數會顯示網頁可見內容的填入速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/speed-index)。" + "message": "速度指數會顯示網頁可見內容的填入速度。[瞭解詳情](https://web.dev/speed-index)。" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "速度指數" @@ -837,7 +837,7 @@ "message": "伺服器後端延遲時間" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Service Worker 可讓你的網路應用程式即使在連線不穩定時依然維持正常運作。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。" + "message": "Service Worker 可讓你的網路應用程式即使在連線不穩定時依然維持正常運作。[瞭解詳情](https://web.dev/offline-start-url)。" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` 在離線時不會傳回狀態碼 200 的回應" @@ -861,7 +861,7 @@ "message": "效能預算" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "如果你已設定 HTTPS,請確認是否已將所有 HTTP 流量都重新導向至 HTTPS,以便為所有使用者提供安全的網路功能。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)。" + "message": "如果你已設定 HTTPS,請確認是否已將所有 HTTP 流量都重新導向至 HTTPS,以便為所有使用者提供安全的網路功能。[瞭解詳情](https://web.dev/redirects-http)。" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "未將 HTTP 流量重新導向至 HTTPS" @@ -870,7 +870,7 @@ "message": "將 HTTP 流量重新導向至 HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "重新導向會導致頁面延遲載入。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。" + "message": "重新導向會導致頁面延遲載入。[瞭解詳情](https://web.dev/redirects)。" }, "lighthouse-core/audits/redirects.js | title": { "message": "避免進行多次頁面重新導向" @@ -1035,7 +1035,7 @@ "message": "輕觸目標已設定成適當大小" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service Worker 技術可讓你的應用程式使用許多漸進式網頁應用程式的功能,例如離線存取、新增到主螢幕,以及推播通知。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)。" + "message": "Service Worker 技術可讓你的應用程式使用許多漸進式網頁應用程式的功能,例如離線存取、新增到主螢幕,以及推播通知。[瞭解詳情](https://web.dev/service-worker)。" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "此網頁由 Service Worker 所控管,但系統無法將資訊清單剖析為有效的 JSON,因此找不到任何 `start_url`" @@ -1056,7 +1056,7 @@ "message": "已註冊可控管網頁和 `start_url` 的 Service Worker" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "透過設定啟動畫面的主題,可確保使用者從主螢幕啟動你的應用程式時享有優質體驗。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)。" + "message": "透過設定啟動畫面的主題,可確保使用者從主螢幕啟動你的應用程式時享有優質體驗。[瞭解詳情](https://web.dev/splash-screen)。" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "未設定自訂啟動畫面" @@ -1065,7 +1065,7 @@ "message": "設有自訂啟動畫面" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "你可以將瀏覽器網址列的主題設定為與網站相符。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/address-bar)。" + "message": "你可以將瀏覽器網址列的主題設定為與網站相符。[瞭解詳情](https://web.dev/themed-omnibox)。" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "尚未設定網址列的主題顏色。" @@ -1092,7 +1092,7 @@ "message": "第三方程式碼使用情形" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "第一個位元組時間會指出你的伺服器傳送回應的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/ttfb)。" + "message": "第一個位元組時間會指出你的伺服器傳送回應的時間。[瞭解詳情](https://web.dev/time-to-first-byte)。" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "根文件回應時間為 {timeInMs, number, milliseconds} 毫秒" @@ -1113,7 +1113,7 @@ "message": "類型" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "建議你使用 User Timing API 評估應用程式在關鍵使用者體驗期間的實際效能。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/user-timing)。" + "message": "建議你使用 User Timing API 評估應用程式在關鍵使用者體驗期間的實際效能。[瞭解詳情](https://web.dev/user-timings)。" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 個 User Timing 標記}other{# 個 User Timing 標記}}" @@ -1125,7 +1125,7 @@ "message": "「{securityOrigin}」有預先連線的 <link>,但未獲瀏覽器使用。請檢查你使用 `crossorigin` 屬性的方式是否正確。" }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "建議你新增 `preconnect` 或 `dns-prefetch` 資源提示,及早連線至重要的第三方來源。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)。" + "message": "建議你新增 `preconnect` 或 `dns-prefetch` 資源提示,及早連線至重要的第三方來源。[瞭解詳情](https://web.dev/uses-rel-preconnect)。" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "預先連上必要來源" @@ -1134,13 +1134,13 @@ "message": "「{preloadURL}」有預先載入的 <link>,但未獲瀏覽器使用。請檢查你使用 `crossorigin` 屬性的方式是否正確。" }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "建議使用 `<link rel=preload>` 優先擷取目前在網頁載入時較晚要求的資源。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/preload)。" + "message": "建議使用 `<link rel=preload>` 優先擷取目前在網頁載入時較晚要求的資源。[瞭解詳情](https://web.dev/uses-rel-preload)。" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "預先載入重要要求" }, "lighthouse-core/audits/viewport.js | description": { - "message": "如要配合行動裝置螢幕將你的應用程式進行最佳化調整,請新增 `<meta name=\"viewport\">` 標記。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)。" + "message": "如要配合行動裝置螢幕將你的應用程式進行最佳化調整,請新增 `<meta name=\"viewport\">` 標記。[瞭解詳情](https://web.dev/viewport)。" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "找不到任何 `<meta name=\"viewport\">` 標記" @@ -1152,7 +1152,7 @@ "message": "具備包含 `width` 或 `initial-scale` 的 `<meta name=\"viewport\">` 標記" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "當 JavaScript 停用時,你的應用程式應該要顯示一些內容,即使只是向使用者顯示「必須啟用 JavaScript 才能使用此應用程式」這類警告訊息也可以。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/no-js)。" + "message": "當 JavaScript 停用時,你的應用程式應該要顯示一些內容,即使只是向使用者顯示「必須啟用 JavaScript 才能使用此應用程式」這類警告訊息也可以。[瞭解詳情](https://web.dev/without-javascript)。" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "即使網頁的指令碼無法使用,網頁內文仍應顯示一些內容。" @@ -1164,7 +1164,7 @@ "message": "當 JavaScript 無法使用時包含一些內容" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "如果你正在建構漸進式網頁應用程式,請考慮使用 Service Worker,讓你的應用程式可以離線運作。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。" + "message": "如果你正在建構漸進式網頁應用程式,請考慮使用 Service Worker,讓你的應用程式可以離線運作。[瞭解詳情](https://web.dev/works-offline)。" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "目前的網頁在離線時不會傳回狀態碼 200 的回應"
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh.json index 61b341d..2070a9e5 100644 --- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh.json +++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh.json
@@ -30,10 +30,10 @@ "message": "一些 ARIA 父角色必须包含特定子角色,才能执行它们的预期无障碍功能。[了解详情](https://web.dev/aria-required-children/)。" }, "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": { - "message": "角色为 `[role]` 的元素缺少必需的特定子元素 `[role]`。" + "message": "具有 ARIA `[role]`且要求子元素必须包含特定`[role]`的元素缺少部分或全部必需子元素。" }, "lighthouse-core/audits/accessibility/aria-required-children.js | title": { - "message": "角色为 `[role]` 的元素缺少必需的特定子元素 `[role]`" + "message": "具有 ARIA `[role]`且要求子元素必须包含特定`[role]`的元素包含全部必需子元素。" }, "lighthouse-core/audits/accessibility/aria-required-parent.js | description": { "message": "一些 ARIA 子角色必须包含在特定的父角色中,才能正确执行它们的预期无障碍功能。[了解详情](https://web.dev/aria-required-parent/)。" @@ -276,10 +276,10 @@ "message": "屏幕阅读器提供了更便于用户浏览表格内容的功能。请确保那些使用 `[headers]` 属性的 `<td>` 单元格仅引用同一个表格中的其他单元格,这样做可提升屏幕阅读器用户的体验。[了解详情](https://web.dev/td-headers-attr/)。" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": { - "message": "`<table>` 元素中使用 `[headers]` 属性的单元格仅会引用同一个表格中的其他单元格。" + "message": "`<table>` 元素中使用 `[headers]` 属性的单元格引用了在同一表格中找不到的元素 `id`。" }, "lighthouse-core/audits/accessibility/td-headers-attr.js | title": { - "message": "`<table>` 元素中使用 `[headers]` 属性的单元格仅会引用同一个表格中的其他单元格。" + "message": "`<table>` 元素中使用 `[headers]` 属性的单元格引用的是同一表格中的单元格。" }, "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": { "message": "屏幕阅读器提供了更便于用户浏览表格内容的功能。确保表格标头始终引用特定一组单元格可以提升屏幕阅读器用户的体验。[了解详情](https://web.dev/th-has-data-cells/)。" @@ -318,7 +318,7 @@ "message": "`<video>` 元素包含带 `[kind=\"description\"]` 的 `<track>` 元素" }, "lighthouse-core/audits/apple-touch-icon.js | description": { - "message": "请定义一个 `apple-touch-icon`,以在 iOS 用户向主屏幕添加渐进式 Web 应用时获得理想的外观。它必须指向一张不透明的 192px(或 180px)方形 PNG 图片。[了解详情](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)。" + "message": "请定义一个 `apple-touch-icon`,以在 iOS 用户向主屏幕添加渐进式 Web 应用时获得理想的外观。它必须指向一张不透明的 192px(或 180px)方形 PNG 图片。[了解详情](https://web.dev/apple-touch-icon/)。" }, "lighthouse-core/audits/apple-touch-icon.js | failureTitle": { "message": "未提供有效的 `apple-touch-icon`" @@ -342,7 +342,7 @@ "message": "总 CPU 时间" }, "lighthouse-core/audits/bootup-time.js | description": { - "message": "建议您减少为解析、编译和执行 JS 而花费的时间。您可能会发现,提供较小的 JS 负载有助于实现此目标。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/bootup)。" + "message": "建议您减少为解析、编译和执行 JS 而花费的时间。您可能会发现,提供较小的 JS 负载有助于实现此目标。[了解详情](https://web.dev/bootup-time)。" }, "lighthouse-core/audits/bootup-time.js | failureTitle": { "message": "缩短 JavaScript 执行用时" @@ -351,25 +351,25 @@ "message": "JavaScript 执行用时" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": { - "message": "使用大型 GIF 提供动画内容会导致效率低下。建议您改用 MPEG4/WebM 视频(来提供动画)和 PNG/WebP(来提供静态图片)以减少网络活动消耗的字节数。[了解详情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)" + "message": "使用大型 GIF 提供动画内容会导致效率低下。建议您改用 MPEG4/WebM 视频(来提供动画)和 PNG/WebP(来提供静态图片)以减少网络活动消耗的字节数。[了解详情](https://web.dev/efficient-animated-content)" }, "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": { "message": "使用视频格式提供动画内容" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": { - "message": "建议您在所有关键资源加载完毕后推迟加载屏幕外图片和处于隐藏状态的图片,从而缩短可交互前的耗时。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)。" + "message": "建议您在所有关键资源加载完毕后推迟加载屏幕外图片和处于隐藏状态的图片,从而缩短可交互前的耗时。[了解详情](https://web.dev/offscreen-images)。" }, "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": { "message": "推迟加载屏幕外图片" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": { - "message": "资源阻止了系统对您网页的首次渲染。建议以内嵌方式提供关键的 JS/CSS,并推迟提供所有非关键的 JS/样式。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)。" + "message": "资源阻止了系统对您网页的首次渲染。建议以内嵌方式提供关键的 JS/CSS,并推迟提供所有非关键的 JS/样式。[了解详情](https://web.dev/render-blocking-resources)。" }, "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": { "message": "移除阻塞渲染的资源" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": { - "message": "网络负载过大不仅会让用户付出真金白银,还极有可能会延长加载用时。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)。" + "message": "网络负载过大不仅会让用户付出真金白银,还极有可能会延长加载用时。[了解详情](https://web.dev/total-byte-weight)。" }, "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": { "message": "总大小为 {totalBytes, number, bytes} KB" @@ -381,19 +381,19 @@ "message": "避免网络负载过大" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": { - "message": "缩减 CSS 文件大小可缩减网络负载规模。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/minify-css)。" + "message": "缩减 CSS 文件大小可缩减网络负载规模。[了解详情](https://web.dev/unminified-css)。" }, "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": { "message": "缩减 CSS" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": { - "message": "如果缩减 JavaScript 文件大小,则既能缩减负载规模,又能缩短脚本解析用时。[了解详情](https://developers.google.com/speed/docs/insights/MinifyResources)。" + "message": "如果缩减 JavaScript 文件大小,则既能缩减负载规模,又能缩短脚本解析用时。[了解详情](https://web.dev/unminified-javascript)。" }, "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": { "message": "缩减 JavaScript" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": { - "message": "从样式表中移除无效规则并延迟加载首屏内容未使用的 CSS 可减少网络活动的无谓消耗。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/unused-css)。" + "message": "从样式表中移除无效规则并延迟加载首屏内容未使用的 CSS 可减少网络活动的无谓消耗。[了解详情](https://web.dev/unused-css-rules)。" }, "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": { "message": "移除未使用的 CSS" @@ -405,7 +405,7 @@ "message": "移除未使用的 JavaScript" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": { - "message": "延长缓存期限可加快重访您网页的速度。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)。" + "message": "延长缓存期限可加快重访您网页的速度。[了解详情](https://web.dev/uses-long-cache-ttl)。" }, "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": { "message": "{itemCount,plural, =1{找到了 1 项资源}other{找到了 # 项资源}}" @@ -417,31 +417,31 @@ "message": "针对静态资源使用高效的缓存策略" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": { - "message": "如果图片经过了优化,则加载速度会更快,且消耗的移动数据网络流量会更少。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)。" + "message": "如果图片经过了优化,则加载速度会更快,且消耗的移动数据网络流量会更少。[了解详情](https://web.dev/uses-optimized-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": { "message": "对图片进行高效编码" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": { - "message": "提供大小合适的图片可节省移动数据网络流量并缩短加载用时。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)。" + "message": "提供大小合适的图片可节省移动数据网络流量并缩短加载用时。[了解详情](https://web.dev/uses-responsive-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": { "message": "适当调整图片大小" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": { - "message": "对于文本资源,应先压缩(gzip、deflate 或 brotli),然后再提供,以最大限度地减少网络活动消耗的字节总数。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。" + "message": "对于文本资源,应先压缩(gzip、deflate 或 brotli),然后再提供,以最大限度地减少网络活动消耗的字节总数。[了解详情](https://web.dev/uses-text-compression)。" }, "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": { "message": "启用文本压缩" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": { - "message": "JPEG 2000、JPEG XR 和 WebP 等图片格式的压缩效果通常比 PNG 或 JPEG 好,因此下载速度更快,消耗的数据流量更少。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/webp)。" + "message": "JPEG 2000、JPEG XR 和 WebP 等图片格式的压缩效果通常比 PNG 或 JPEG 好,因此下载速度更快,消耗的数据流量更少。[了解详情](https://web.dev/uses-webp-images)。" }, "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": { "message": "采用新一代格式提供图片" }, "lighthouse-core/audits/content-width.js | description": { - "message": "如果应用内容的宽度与视口的宽度不一致,该应用可能不会针对移动设备屏幕进行优化。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)。" + "message": "如果应用内容的宽度与视口的宽度不一致,该应用可能不会针对移动设备屏幕进行优化。[了解详情](https://web.dev/content-width)。" }, "lighthouse-core/audits/content-width.js | explanation": { "message": "视口大小({innerWidth} 像素)与窗口大小({outerWidth} 像素)不一致。" @@ -453,7 +453,7 @@ "message": "已根据视口正确设置内容尺寸" }, "lighthouse-core/audits/critical-request-chains.js | description": { - "message": "下面的关键请求链显示了以高优先级加载的资源。请考虑缩短链长、缩减资源的下载文件大小,或者推迟下载不必要的资源,从而提高网页加载速度。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)。" + "message": "下面的关键请求链显示了以高优先级加载的资源。请考虑缩短链长、缩减资源的下载文件大小,或者推迟下载不必要的资源,从而提高网页加载速度。[了解详情](https://web.dev/critical-request-chains)。" }, "lighthouse-core/audits/critical-request-chains.js | displayValue": { "message": "{itemCount,plural, =1{找到了 1 条请求链}other{找到了 # 条请求链}}" @@ -675,7 +675,7 @@ "message": "控制台日志中未记录浏览器错误" }, "lighthouse-core/audits/font-display.js | description": { - "message": "利用 font-display 这项 CSS 功能,确保文本在网页字体加载期间始终对用户可见。[了解详情](https://developers.google.com/web/updates/2016/02/font-display)。" + "message": "利用 font-display 这项 CSS 功能,确保文本在网页字体加载期间始终对用户可见。[了解详情](https://web.dev/font-display)。" }, "lighthouse-core/audits/font-display.js | failureTitle": { "message": "确保文本在网页字体加载期间保持可见状态" @@ -705,7 +705,7 @@ "message": "无效的图片大小信息 {url}" }, "lighthouse-core/audits/installable-manifest.js | description": { - "message": "浏览器可主动提示用户向其主屏幕中添加您的应用,这有助于提高互动度。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)。" + "message": "浏览器可主动提示用户向其主屏幕中添加您的应用,这有助于提高互动度。[了解详情](https://web.dev/installable-manifest)。" }, "lighthouse-core/audits/installable-manifest.js | failureTitle": { "message": "Web 应用清单不符合可安装性要求" @@ -729,7 +729,7 @@ "message": "使用 HTTPS" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": { - "message": "如果网页在移动网络中的加载速度较快,则可确保良好的移动用户体验。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)。" + "message": "如果网页在移动网络中的加载速度较快,则可确保良好的移动用户体验。[了解详情](https://web.dev/load-fast-enough-for-pwa)。" }, "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": { "message": "页面交互需要 {timeInMs, number, seconds} 秒" @@ -750,7 +750,7 @@ "message": "类别" }, "lighthouse-core/audits/mainthread-work-breakdown.js | description": { - "message": "考虑减少为解析、编译和执行 JS 而花费的时间。您可能会发现,提供较小的 JS 负载有助于实现此目标。" + "message": "建议您减少为解析、编译和执行 JS 而花费的时间。您可能会发现,提供较小的 JS 负载有助于实现此目标。[了解详情](https://web.dev/mainthread-work-breakdown)" }, "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": { "message": "最大限度地减少主线程工作" @@ -759,49 +759,49 @@ "message": "最大限度地减少主线程工作" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | description": { - "message": "网站应该能在所有主流浏览器中正常显示,以便覆盖数量最多的用户。[了解详情](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)。" + "message": "网站应该能在所有主流浏览器中正常显示,以便覆盖数量最多的用户。[了解详情](https://web.dev/pwa-cross-browser)。" }, "lighthouse-core/audits/manual/pwa-cross-browser.js | title": { "message": "网站能在各种浏览器中正常显示" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": { - "message": "确保各个网页可通过网址建立深层链接,并且这些网址是独一无二的,可以在社交媒体上共享。[了解详情](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)。" + "message": "确保各个网页可通过网址建立深层链接,并且这些网址是独一无二的,可以在社交媒体上共享。[了解详情](https://web.dev/pwa-each-page-has-url)。" }, "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": { "message": "每个网页都有一个网址" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | description": { - "message": "在您点按某个网页后,系统应该快速跳转到另一个网页(即使网速缓慢也是如此),这是衡量网页加载速度的关键指标。[了解详情](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)。" + "message": "无论点按哪个链接,都应能快速跳转到相应页面,即使网速缓慢也应如此。若想让用户感知到出色的网页加载速度,这种体验至关重要。[了解详情](https://web.dev/pwa-page-transitions)。" }, "lighthouse-core/audits/manual/pwa-page-transitions.js | title": { "message": "在不同网页之间跳转时,用户感觉不到网页加载缓慢" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | description": { - "message": "预计输入延迟是估算值,表示您的应用在网页加载最繁忙的 5 秒期间大概需要花费多长时间(以毫秒为单位)才能对用户输入做出响应。如果您的延迟时间超过了 50 毫秒,用户可能会感觉您的应用运行迟缓。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)。" + "message": "预计输入延迟是估算值,表示您的应用在网页加载最繁忙的 5 秒期间大概需要花费多长时间(以毫秒为单位)才能对用户输入做出响应。如果您的延迟时间超过了 50 毫秒,用户可能会感觉您的应用运行迟缓。[了解详情](https://web.dev/estimated-input-latency)。" }, "lighthouse-core/audits/metrics/estimated-input-latency.js | title": { "message": "输入延迟(估算值)" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | description": { - "message": "首次内容渲染时间标记了渲染出首个文本或首张图片的时间。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)。" + "message": "首次内容渲染时间标记了渲染出首个文本或首张图片的时间。[了解详情](https://web.dev/first-contentful-paint)。" }, "lighthouse-core/audits/metrics/first-contentful-paint.js | title": { "message": "首次内容绘制时间" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | description": { - "message": "首次 CPU 闲置时间标记了网页的主线程首次有空处理输入操作的时间。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)。" + "message": "首次 CPU 闲置时间标记了网页的主线程首次有空处理输入操作的时间。[了解详情](https://web.dev/first-cpu-idle)。" }, "lighthouse-core/audits/metrics/first-cpu-idle.js | title": { "message": "首次 CPU 闲置时间" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": { - "message": "首次有效渲染时间测量了网页主要内容开始对用户显示的时间。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)。" + "message": "首次有效渲染时间测量了网页主要内容开始对用户显示的时间。[了解详情](https://web.dev/first-meaningful-paint)。" }, "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": { "message": "首次有效绘制时间" }, "lighthouse-core/audits/metrics/interactive.js | description": { - "message": "可交互时间是指网页需要多长时间才能提供完整交互功能。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)。" + "message": "可交互时间是指网页需要多长时间才能提供完整交互功能。[了解详情](https://web.dev/interactive)。" }, "lighthouse-core/audits/metrics/interactive.js | title": { "message": "可交互前的耗时" @@ -813,7 +813,7 @@ "message": "首次输入延迟最长预估值" }, "lighthouse-core/audits/metrics/speed-index.js | description": { - "message": "速度指数表明了网页内容的可见填充速度。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/speed-index)。" + "message": "速度指数表明了网页内容的可见填充速度。[了解详情](https://web.dev/speed-index)。" }, "lighthouse-core/audits/metrics/speed-index.js | title": { "message": "速度指数" @@ -837,7 +837,7 @@ "message": "服务器后端延迟" }, "lighthouse-core/audits/offline-start-url.js | description": { - "message": "Service Worker 可让您的 Web 应用在无法预测的网络状况下正常运行。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。" + "message": "Service Worker 可让您的 Web 应用在无法预测的网络状况下正常运行。[了解详情](https://web.dev/offline-start-url)。" }, "lighthouse-core/audits/offline-start-url.js | failureTitle": { "message": "`start_url` 在离线时没有响应,并返回 200" @@ -861,7 +861,7 @@ "message": "性能预算" }, "lighthouse-core/audits/redirects-http.js | description": { - "message": "如果您已设置 HTTPS,请确保将所有 HTTP 流量重定向到 HTTPS,以便让所有用户都能使用安全的网络功能。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)。" + "message": "如果您已设置 HTTPS,请确保将所有 HTTP 流量重定向到 HTTPS,以便让所有用户都能使用安全的网络功能。[了解详情](https://web.dev/redirects-http)。" }, "lighthouse-core/audits/redirects-http.js | failureTitle": { "message": "未将 HTTP 流量重定向到 HTTPS" @@ -870,7 +870,7 @@ "message": "将 HTTP 流量重定向到 HTTPS" }, "lighthouse-core/audits/redirects.js | description": { - "message": "重定向会在网页可加载前引入更多延迟。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。" + "message": "重定向会在网页可加载前引入更多延迟。[了解详情](https://web.dev/redirects)。" }, "lighthouse-core/audits/redirects.js | title": { "message": "避免多次网页重定向" @@ -1035,7 +1035,7 @@ "message": "点按目标的大小合适" }, "lighthouse-core/audits/service-worker.js | description": { - "message": "Service Worker 是一项技术,可让您的应用使用很多渐进式 Web 应用功能,例如离线、添加到主屏幕和推送通知。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)。" + "message": "Service Worker 是一项技术,可让您的应用使用很多渐进式 Web 应用功能,例如离线、添加到主屏幕和推送通知。[了解详情](https://web.dev/service-worker)。" }, "lighthouse-core/audits/service-worker.js | explanationBadManifest": { "message": "此网页由 Service Worker 控制,但由于清单未能解析为有效的 JSON,因此未找到 `start_url`" @@ -1056,7 +1056,7 @@ "message": "注册用于控制网页和 `start_url` 的 Service Worker" }, "lighthouse-core/audits/splash-screen.js | description": { - "message": "选定主题的启动画面可确保用户在从主屏幕中启动您应用时获得优质体验。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)。" + "message": "选定主题的启动画面可确保用户在从主屏幕中启动您应用时获得优质体验。[了解详情](https://web.dev/splash-screen)。" }, "lighthouse-core/audits/splash-screen.js | failureTitle": { "message": "未针对自定义启动画面进行配置" @@ -1065,7 +1065,7 @@ "message": "已针对自定义启动画面进行配置" }, "lighthouse-core/audits/themed-omnibox.js | description": { - "message": "可以为浏览器地址栏设置与您的网站相契合的主题背景。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/address-bar)。" + "message": "可以为浏览器地址栏设置与您的网站相契合的主题背景。[了解详情](https://web.dev/themed-omnibox)。" }, "lighthouse-core/audits/themed-omnibox.js | failureTitle": { "message": "没有为地址栏设置主题背景颜色。" @@ -1092,7 +1092,7 @@ "message": "第三方使用" }, "lighthouse-core/audits/time-to-first-byte.js | description": { - "message": "首字节显示前的耗时表明了服务器发出响应的时间。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/ttfb)。" + "message": "首字节显示前的耗时表明了服务器发出响应的时间。[了解详情](https://web.dev/time-to-first-byte)。" }, "lighthouse-core/audits/time-to-first-byte.js | displayValue": { "message": "根文档花费了 {timeInMs, number, milliseconds} 毫秒" @@ -1113,7 +1113,7 @@ "message": "类型" }, "lighthouse-core/audits/user-timings.js | description": { - "message": "建议使用 User Timing API 检测您的应用,从而衡量应用在关键用户体验中的实际性能。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/user-timing)。" + "message": "建议使用 User Timing API 检测您的应用,从而衡量应用在关键用户体验中的实际性能。[了解详情](https://web.dev/user-timings)。" }, "lighthouse-core/audits/user-timings.js | displayValue": { "message": "{itemCount,plural, =1{1 项 User Timing 结果}other{# 项 User Timing 结果}}" @@ -1125,7 +1125,7 @@ "message": "发现了“{securityOrigin}”的预连接 <link>,但浏览器未使用该连接。请检查并确保您正确地使用了 `crossorigin` 属性。" }, "lighthouse-core/audits/uses-rel-preconnect.js | description": { - "message": "建议添加 `preconnect` 或 `dns-prefetch` 资源提示,以尽早与重要的第三方来源建立连接。[了解详情](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)。" + "message": "建议添加 `preconnect` 或 `dns-prefetch` 资源提示,以尽早与重要的第三方来源建立连接。[了解详情](https://web.dev/uses-rel-preconnect)。" }, "lighthouse-core/audits/uses-rel-preconnect.js | title": { "message": "预先连接到必要的来源" @@ -1134,13 +1134,13 @@ "message": "发现了“{preloadURL}”的预加载 <link>,但浏览器未使用该链接。请检查并确保您正确地使用了 `crossorigin` 属性。" }, "lighthouse-core/audits/uses-rel-preload.js | description": { - "message": "建议使用 `<link rel=preload>` 来优先提取当前在网页加载后期请求的资源。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/preload)。" + "message": "建议使用 `<link rel=preload>` 来优先提取当前在网页加载后期请求的资源。[了解详情](https://web.dev/uses-rel-preload)。" }, "lighthouse-core/audits/uses-rel-preload.js | title": { "message": "预加载关键请求" }, "lighthouse-core/audits/viewport.js | description": { - "message": "添加 `<meta name=\"viewport\">` 标记以针对移动设备屏幕优化您的应用。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)。" + "message": "添加 `<meta name=\"viewport\">` 标记以针对移动设备屏幕优化您的应用。[了解详情](https://web.dev/viewport)。" }, "lighthouse-core/audits/viewport.js | explanationNoTag": { "message": "未找到任何 `<meta name=\"viewport\">` 标记" @@ -1152,7 +1152,7 @@ "message": "具有包含 `width` 或 `initial-scale` 的 `<meta name=\"viewport\">` 标记" }, "lighthouse-core/audits/without-javascript.js | description": { - "message": "您的应用应该在 JavaScript 被禁用时显示一些内容,哪怕只是向用户显示一则警告(告知其必须启用 JavaScript 才能使用该应用)。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/no-js)。" + "message": "您的应用应该在 JavaScript 被禁用时显示一些内容,哪怕只是向用户显示一则警告(告知其必须启用 JavaScript 才能使用该应用)。[了解详情](https://web.dev/without-javascript)。" }, "lighthouse-core/audits/without-javascript.js | explanation": { "message": "网页正文应该能在其脚本不可用时呈现一些内容。" @@ -1164,7 +1164,7 @@ "message": "包含一些 JavaScript 未启用时显示的内容" }, "lighthouse-core/audits/works-offline.js | description": { - "message": "如果您想构建渐进式 Web 应用,不妨考虑使用 Service Worker,以确保您的应用可离线工作。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。" + "message": "如果您想构建渐进式 Web 应用,不妨考虑使用 Service Worker,以确保您的应用可离线工作。[了解详情](https://web.dev/works-offline)。" }, "lighthouse-core/audits/works-offline.js | failureTitle": { "message": "当前网页在离线时没有响应,并返回 200"
diff --git a/third_party/blink/renderer/devtools/front_end/console_counters/WarningErrorCounter.js b/third_party/blink/renderer/devtools/front_end/console_counters/WarningErrorCounter.js index f515742..5e99ea56 100644 --- a/third_party/blink/renderer/devtools/front_end/console_counters/WarningErrorCounter.js +++ b/third_party/blink/renderer/devtools/front_end/console_counters/WarningErrorCounter.js
@@ -57,6 +57,7 @@ */ _createItem(shadowRoot, iconType) { const item = createElementWithClass('span', 'counter-item'); + UI.ARIAUtils.markAsHidden(item); const icon = item.createChild('span', '', 'dt-icon-label'); icon.type = iconType; const text = icon.createChild('span'); @@ -132,7 +133,9 @@ this._violationCounter.title = violationCountTitle; } - this._counter.title = this._titles.join(', '); + const titles = this._titles.join(', '); + this._counter.title = titles; + UI.ARIAUtils.setAccessibleName(this._counter, titles); UI.inspectorView.toolbarItemResized(); this._updatingForTest = false; this._updatedForTest();
diff --git a/third_party/blink/renderer/devtools/front_end/emulation/SensorsView.js b/third_party/blink/renderer/devtools/front_end/emulation/SensorsView.js index 15f9dd7..a974b4a 100644 --- a/third_party/blink/renderer/devtools/front_end/emulation/SensorsView.js +++ b/third_party/blink/renderer/devtools/front_end/emulation/SensorsView.js
@@ -339,6 +339,11 @@ this._deviceOrientation = deviceOrientation; this._applyDeviceOrientation(); + + UI.ARIAUtils.alert( + ls`Device orientation set to alpha: ${deviceOrientation.alpha}, beta: ${deviceOrientation.beta}, gamma: ${ + deviceOrientation.gamma}`, + this._orientationSelectElement); } /**
diff --git a/third_party/blink/renderer/devtools/front_end/emulation/emulation_strings.grdp b/third_party/blink/renderer/devtools/front_end/emulation/emulation_strings.grdp index c73adc5c..b8ae1f63 100644 --- a/third_party/blink/renderer/devtools/front_end/emulation/emulation_strings.grdp +++ b/third_party/blink/renderer/devtools/front_end/emulation/emulation_strings.grdp
@@ -147,6 +147,9 @@ <message name="IDS_DEVTOOLS_673a7b89eb57bf2bf891306c98cbecc3" desc="Error message in the Geolocations settings pane that declares that the value for the latitude input must be a number"> Latitude must be a number </message> + <message name="IDS_DEVTOOLS_6bdb3457630d1a73c9cdc3a7db7062b9" desc="Message in the Sensors tool that is alerted (for screen readers) when the device orientation setting is changed"> + Device orientation set to alpha: <ph name="DEVICEORIENTATION_ALPHA">$1s<ex>180</ex></ph>, beta: <ph name="DEVICEORIENTATION_BETA">$2s<ex>-90</ex></ph>, gamma: <ph name="DEVICEORIENTATION_GAMMA">$3s<ex>0</ex></ph> + </message> <message name="IDS_DEVTOOLS_6e641146898080ed83f3007cd712f58f" desc="Error message in the Devices settings pane that declares the maximum value for the device pixel ratio input"> Device pixel ratio must be less than or equal to <ph name="EMULATION_DEVICEMODEMODEL_MAXDEVICESCALEFACTOR">$1s<ex>10</ex></ph>. </message>
diff --git a/third_party/blink/renderer/devtools/front_end/protocol/InspectorBackend.js b/third_party/blink/renderer/devtools/front_end/protocol/InspectorBackend.js index 943fc161..e3cc3a6 100644 --- a/third_party/blink/renderer/devtools/front_end/protocol/InspectorBackend.js +++ b/third_party/blink/renderer/devtools/front_end/protocol/InspectorBackend.js
@@ -312,6 +312,17 @@ * @param {?Connection} proxyConnection */ registerSession(target, sessionId, proxyConnection) { + // Only the Audits panel uses proxy connections. If it is ever possible to have multiple active at the + // same time, it should be tested thoroughly. + if (proxyConnection) { + for (const session of this._sessions.values()) { + if (session.proxyConnection) { + console.error('Multiple simultaneous proxy connections are currently unsupported'); + break; + } + } + } + this._sessions.set(sessionId, {target, callbacks: new Map(), proxyConnection}); } @@ -414,32 +425,26 @@ const messageObject = /** @type {!Object} */ ((typeof message === 'string') ? JSON.parse(message) : message); // Send all messages to proxy connections. - let proxyConnectionIsActive = false; + let suppressUnknownMessageErrors = false; for (const session of this._sessions.values()) { if (!session.proxyConnection) { continue; } - // Only the Audits panel has use proxy connections. If it is ever possible to have multiple active at the - // same time, it should be test thoroughly. - if (proxyConnectionIsActive) { - Protocol.InspectorBackend.reportProtocolError( - 'Protocol Error: multiple proxy connections are not explicitly supported right now', messageObject); - } - - if (session.proxyConnection._onMessage) { - session.proxyConnection._onMessage(messageObject); - proxyConnectionIsActive = true; - } else { + if (!session.proxyConnection._onMessage) { Protocol.InspectorBackend.reportProtocolError( 'Protocol Error: the session has a proxyConnection with no _onMessage', messageObject); + continue; } + + session.proxyConnection._onMessage(messageObject); + suppressUnknownMessageErrors = true; } const sessionId = messageObject.sessionId || ''; const session = this._sessions.get(sessionId); if (!session) { - if (!proxyConnectionIsActive) { + if (!suppressUnknownMessageErrors) { Protocol.InspectorBackend.reportProtocolError( 'Protocol Error: the message with wrong session id', messageObject); } @@ -459,7 +464,7 @@ const callback = session.callbacks.get(messageObject.id); session.callbacks.delete(messageObject.id); if (!callback) { - if (!proxyConnectionIsActive) { + if (!suppressUnknownMessageErrors) { Protocol.InspectorBackend.reportProtocolError('Protocol Error: the message with wrong id', messageObject); } return;
diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc index 3585a84..adb0c2f 100644 --- a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc +++ b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc
@@ -424,10 +424,9 @@ } void CookieStore::OnCookieChange( - const WebCanonicalCookie& backend_cookie, - network::mojom::blink::CookieChangeCause change_cause) { + network::mojom::blink::CookieChangeInfoPtr change) { HeapVector<Member<CookieListItem>> changed, deleted; - CookieChangeEvent::ToEventInfo(backend_cookie, change_cause, changed, + CookieChangeEvent::ToEventInfo(change->cookie, change->cause, changed, deleted); if (changed.IsEmpty() && deleted.IsEmpty()) { // The backend only reported OVERWRITE events, which are dropped.
diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.h b/third_party/blink/renderer/modules/cookie_store/cookie_store.h index 692c084..031eeda8 100644 --- a/third_party/blink/renderer/modules/cookie_store/cookie_store.h +++ b/third_party/blink/renderer/modules/cookie_store/cookie_store.h
@@ -86,8 +86,8 @@ void RemoveAllEventListeners() override; // RestrictedCookieChangeListener - void OnCookieChange(const WebCanonicalCookie&, - network::mojom::blink::CookieChangeCause) override; + void OnCookieChange( + network::mojom::blink::CookieChangeInfoPtr change) override; protected: // EventTarget overrides.
diff --git a/third_party/blink/renderer/modules/permissions/permissions.cc b/third_party/blink/renderer/modules/permissions/permissions.cc index b4e475b..60b68156 100644 --- a/third_party/blink/renderer/modules/permissions/permissions.cc +++ b/third_party/blink/renderer/modules/permissions/permissions.cc
@@ -158,6 +158,8 @@ NativeValueTraits<WakeLockPermissionDescriptor>::NativeValue( script_state->GetIsolate(), raw_permission.V8Value(), exception_state); + if (exception_state.HadException()) + return nullptr; const String& type = wake_lock_permission->type(); if (type == "screen") { return CreateWakeLockPermissionDescriptor(
diff --git a/third_party/blink/renderer/modules/permissions/wake_lock_permission_descriptor.idl b/third_party/blink/renderer/modules/permissions/wake_lock_permission_descriptor.idl index 9aee7dc..e108c8e 100644 --- a/third_party/blink/renderer/modules/permissions/wake_lock_permission_descriptor.idl +++ b/third_party/blink/renderer/modules/permissions/wake_lock_permission_descriptor.idl
@@ -4,5 +4,5 @@ // https://w3c.github.io/wake-lock/#the-wakelockpermissiondescriptor-dictionary dictionary WakeLockPermissionDescriptor : PermissionDescriptor { - WakeLockType type; + required WakeLockType type; };
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc index a5da035..395ec6c1 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc
@@ -1956,8 +1956,7 @@ } void ServiceWorkerGlobalScope::DispatchCookieChangeEvent( - const WebCanonicalCookie& cookie, - ::network::mojom::CookieChangeCause change_cause, + network::mojom::blink::CookieChangeInfoPtr change, DispatchCookieChangeEventCallback callback) { DCHECK(IsContextThread()); int event_id = timeout_timer_->StartEvent( @@ -1974,7 +1973,8 @@ HeapVector<Member<CookieListItem>> changed; HeapVector<Member<CookieListItem>> deleted; - CookieChangeEvent::ToEventInfo(cookie, change_cause, changed, deleted); + CookieChangeEvent::ToEventInfo(change->cookie, change->cause, changed, + deleted); Event* event = ExtendableCookieChangeEvent::Create( event_type_names::kCookiechange, std::move(changed), std::move(deleted), observer);
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h index 3a3b110..a31bb47b 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h +++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
@@ -447,8 +447,7 @@ response_callback, DispatchPaymentRequestEventCallback callback) override; void DispatchCookieChangeEvent( - const WebCanonicalCookie& cookie, - ::network::mojom::blink::CookieChangeCause cause, + network::mojom::blink::CookieChangeInfoPtr change, DispatchCookieChangeEventCallback callback) override; void DispatchContentDeleteEvent( const String& id,
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn index a3f1ea1..1f06f078 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -843,6 +843,8 @@ "graphics/compositing/chunk_to_layer_mapper.h", "graphics/compositing/content_layer_client_impl.cc", "graphics/compositing/content_layer_client_impl.h", + "graphics/compositing/layers_as_json.cc", + "graphics/compositing/layers_as_json.h", "graphics/compositing/paint_artifact_compositor.cc", "graphics/compositing/paint_artifact_compositor.h", "graphics/compositing/paint_chunks_to_cc_layer.cc",
diff --git a/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc b/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc index 4a47aa8a..e177227c2 100644 --- a/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc +++ b/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc
@@ -89,37 +89,44 @@ float* delay_times = delay_times_.Data(); CalculateSampleAccurateValues(delay_times, frames_to_process); + int w_index = write_index_; + for (unsigned i = 0; i < frames_to_process; ++i) { double delay_time = delay_times[i]; + // TODO(crbug.com/1013345): Don't need this if that bug is fixed if (std::isnan(delay_time)) delay_time = max_time; - else - delay_time = clampTo(delay_time, 0.0, max_time); double desired_delay_frames = delay_time * sample_rate; - double read_position = - write_index_ + buffer_length - desired_delay_frames; + double read_position = w_index + buffer_length - desired_delay_frames; if (read_position >= buffer_length) read_position -= buffer_length; // Linearly interpolate in-between delay times. int read_index1 = static_cast<int>(read_position); - int read_index2 = (read_index1 + 1) % buffer_length; + int read_index2 = read_index1 + 1; + if (read_index2 >= static_cast<int>(buffer_length)) + read_index2 -= buffer_length; + double interpolation_factor = read_position - read_index1; - double input = static_cast<float>(*source++); - buffer[write_index_] = static_cast<float>(input); - write_index_ = (write_index_ + 1) % buffer_length; + buffer[w_index] = *source++; - double sample1 = buffer[read_index1]; - double sample2 = buffer[read_index2]; + ++w_index; + if (w_index >= static_cast<int>(buffer_length)) + w_index -= buffer_length; - double output = (1.0 - interpolation_factor) * sample1 + - interpolation_factor * sample2; + float sample1 = buffer[read_index1]; + float sample2 = buffer[read_index2]; + + double output = + (1 - interpolation_factor) * sample1 + interpolation_factor * sample2; *destination++ = static_cast<float>(output); } + + write_index_ = w_index; } else { // This is basically the same as above, but optimized for the case where the // delay time is constant for the current render.
diff --git a/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.cc b/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.cc index 9889add4..d77aba1 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.cc
@@ -35,113 +35,26 @@ cc_picture_layer_->ClearClient(); } -static int GetTransformId(const TransformPaintPropertyNode* transform, - ContentLayerClientImpl::LayerAsJSONContext& context) { - if (!transform) - return 0; - - auto transform_lookup_result = context.transform_id_map.find(transform); - if (transform_lookup_result != context.transform_id_map.end()) - return transform_lookup_result->value; - - int parent_id = GetTransformId(transform->Parent(), context); - if (transform->IsIdentity() && !transform->RenderingContextId()) { - context.transform_id_map.Set(transform, parent_id); - return parent_id; - } - - int transform_id = context.next_transform_id++; - context.transform_id_map.Set(transform, transform_id); - - auto json = std::make_unique<JSONObject>(); - json->SetInteger("id", transform_id); - if (parent_id) - json->SetInteger("parent", parent_id); - - if (!transform->IsIdentity()) - json->SetArray("transform", TransformAsJSONArray(transform->SlowMatrix())); - - if (!transform->IsIdentityOr2DTranslation() && - !transform->Matrix().IsIdentityOrTranslation()) - json->SetArray("origin", PointAsJSONArray(transform->Origin())); - - if (!transform->FlattensInheritedTransform()) - json->SetBoolean("flattenInheritedTransform", false); - - if (auto rendering_context = transform->RenderingContextId()) { - auto context_lookup_result = - context.rendering_context_map.find(rendering_context); - int rendering_id = context.rendering_context_map.size() + 1; - if (context_lookup_result == context.rendering_context_map.end()) - context.rendering_context_map.Set(rendering_context, rendering_id); - else - rendering_id = context_lookup_result->value; - - json->SetInteger("renderingContext", rendering_id); - } - - if (!context.transforms_json) - context.transforms_json = std::make_unique<JSONArray>(); - context.transforms_json->PushObject(std::move(json)); - - return transform_id; -} - -// This is the CAP version of GraphicsLayer::LayerAsJSONInternal(). -std::unique_ptr<JSONObject> ContentLayerClientImpl::LayerAsJSON( - LayerAsJSONContext& context) const { - auto json = std::make_unique<JSONObject>(); - json->SetString("name", debug_name_); - - if (context.flags & kLayerTreeIncludesDebugInfo) - json->SetString("this", String::Format("%p", cc_picture_layer_.get())); - - FloatPoint position(cc_picture_layer_->offset_to_transform_parent().x(), - cc_picture_layer_->offset_to_transform_parent().y()); - if (position != FloatPoint()) - json->SetArray("position", PointAsJSONArray(position)); - - IntSize bounds(cc_picture_layer_->bounds().width(), - cc_picture_layer_->bounds().height()); - if (!bounds.IsEmpty()) - json->SetArray("bounds", SizeAsJSONArray(bounds)); - - if (cc_picture_layer_->contents_opaque()) - json->SetBoolean("contentsOpaque", true); - - if (!cc_picture_layer_->DrawsContent()) - json->SetBoolean("drawsContent", false); - - if (!cc_picture_layer_->double_sided()) - json->SetString("backfaceVisibility", "hidden"); - - Color background_color(cc_picture_layer_->background_color()); - if (background_color.Alpha()) { - json->SetString("backgroundColor", - background_color.NameForLayoutTreeAsText()); - } - +void ContentLayerClientImpl::AppendAdditionalInfoAsJSON( + LayerTreeFlags flags, + const cc::Layer& layer, + JSONObject& json) const { #if DCHECK_IS_ON() - if (context.flags & kLayerTreeIncludesDebugInfo) - json->SetValue("paintChunkContents", paint_chunk_debug_data_->Clone()); + if (flags & kLayerTreeIncludesDebugInfo) + json.SetValue("paintChunkContents", paint_chunk_debug_data_->Clone()); #endif - if ((context.flags & kLayerTreeIncludesPaintInvalidations) && + if ((flags & kLayerTreeIncludesPaintInvalidations) && raster_invalidator_.GetTracking()) - raster_invalidator_.GetTracking()->AsJSON(json.get()); - - if (int transform_id = GetTransformId(&layer_state_.Transform(), context)) - json->SetInteger("transform", transform_id); + raster_invalidator_.GetTracking()->AsJSON(&json); #if DCHECK_IS_ON() - if (context.flags & kLayerTreeIncludesPaintRecords) { + if (flags & kLayerTreeIncludesPaintRecords) { LoggingCanvas canvas; cc_display_item_list_->Raster(&canvas); - json->SetValue("paintRecord", canvas.Log()); + json.SetValue("paintRecord", canvas.Log()); } #endif - - return json; } std::unique_ptr<base::trace_event::TracedValue>
diff --git a/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h b/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h index 03d76178..81005e0 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h +++ b/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h
@@ -9,6 +9,7 @@ #include "cc/layers/content_layer_client.h" #include "cc/layers/layer_client.h" #include "cc/layers/picture_layer.h" +#include "third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h" #include "third_party/blink/renderer/platform/graphics/graphics_layer_client.h" #include "third_party/blink/renderer/platform/graphics/paint/raster_invalidator.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -23,7 +24,8 @@ class PaintChunkSubset; class PLATFORM_EXPORT ContentLayerClientImpl : public cc::ContentLayerClient, - public cc::LayerClient { + public cc::LayerClient, + public LayerAsJSONClient { USING_FAST_MALLOC(ContentLayerClientImpl); public: @@ -50,21 +52,18 @@ std::string LayerDebugName(const cc::Layer*) const override; void DidChangeScrollbarsHiddenIfOverlay(bool) override {} + // LayerAsJSONClient implementation + void AppendAdditionalInfoAsJSON(LayerTreeFlags, + const cc::Layer&, + JSONObject&) const override; + + const cc::Layer& Layer() const { return *cc_picture_layer_.get(); } + const PropertyTreeState& State() const { return layer_state_; } + bool Matches(const PaintChunk& paint_chunk) const { return id_ && paint_chunk.Matches(*id_); } - struct LayerAsJSONContext { - LayerAsJSONContext(LayerTreeFlags flags) : flags(flags) {} - - const LayerTreeFlags flags; - int next_transform_id = 1; - std::unique_ptr<JSONArray> transforms_json; - HashMap<const TransformPaintPropertyNode*, int> transform_id_map; - HashMap<int, int> rendering_context_map; - }; - std::unique_ptr<JSONObject> LayerAsJSON(LayerAsJSONContext&) const; - scoped_refptr<cc::PictureLayer> UpdateCcPictureLayer( scoped_refptr<const PaintArtifact>, const PaintChunkSubset&,
diff --git a/third_party/blink/renderer/platform/graphics/compositing/layers_as_json.cc b/third_party/blink/renderer/platform/graphics/compositing/layers_as_json.cc new file mode 100644 index 0000000..9391cf304 --- /dev/null +++ b/third_party/blink/renderer/platform/graphics/compositing/layers_as_json.cc
@@ -0,0 +1,164 @@ +// 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 "third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h" + +#include "cc/layers/layer.h" +#include "cc/layers/layer_client.h" + +#include "third_party/blink/renderer/platform/geometry/float_point.h" +#include "third_party/blink/renderer/platform/geometry/geometry_as_json.h" +#include "third_party/blink/renderer/platform/graphics/color.h" +#include "third_party/blink/renderer/platform/graphics/graphics_types.h" +#include "third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h" +#include "third_party/blink/renderer/platform/wtf/text/text_stream.h" + +namespace blink { + +namespace { + +String PointerAsString(const void* ptr) { + WTF::TextStream ts; + ts << ptr; + return ts.Release(); +} + +} // namespace + +// Create a JSON version of the specified |layer|. +std::unique_ptr<JSONObject> CCLayerAsJSON(const cc::Layer* layer, + LayerTreeFlags flags, + const FloatPoint& position) { + auto json = std::make_unique<JSONObject>(); + + if (flags & kLayerTreeIncludesDebugInfo) { + json->SetString("this", PointerAsString(layer)); + json->SetInteger("ccLayerId", layer->id()); + } + + json->SetString( + "name", + String(layer->GetLayerClientForTesting()->LayerDebugName(layer).c_str())); + + if (position != FloatPoint()) + json->SetArray("position", PointAsJSONArray(position)); + + // This is testing against gfx::Size(), *not* whether the size is empty. + if (layer->bounds() != gfx::Size()) + json->SetArray("bounds", SizeAsJSONArray(IntSize(layer->bounds()))); + + if (layer->contents_opaque()) + json->SetBoolean("contentsOpaque", true); + + if (!layer->DrawsContent()) + json->SetBoolean("drawsContent", false); + + if (!layer->double_sided()) + json->SetString("backfaceVisibility", "hidden"); + + if (flags & kLayerTreeIncludesDebugInfo) { + json->SetString("client", + PointerAsString(layer->GetLayerClientForTesting())); + } + + if (Color(layer->background_color()).Alpha()) { + json->SetString("backgroundColor", + Color(layer->background_color()).NameForLayoutTreeAsText()); + } + + if (flags & + (kLayerTreeIncludesDebugInfo | kLayerTreeIncludesCompositingReasons)) { + bool debug = flags & kLayerTreeIncludesDebugInfo; + { + auto compositing_reasons_json = std::make_unique<JSONArray>(); + CompositingReasons compositing_reasons = layer->compositing_reasons(); + auto names = debug ? CompositingReason::Descriptions(compositing_reasons) + : CompositingReason::ShortNames(compositing_reasons); + for (const char* name : names) + compositing_reasons_json->PushString(name); + json->SetArray("compositingReasons", std::move(compositing_reasons_json)); + } + } + + return json; +} + +LayersAsJSON::LayersAsJSON(LayerTreeFlags flags) + : flags_(flags), + next_transform_id_(1), + layers_json_(std::make_unique<JSONArray>()), + transforms_json_(std::make_unique<JSONArray>()) {} + +int LayersAsJSON::AddTransformJSON( + const TransformPaintPropertyNode& transform) { + auto it = transform_id_map_.find(&transform); + if (it != transform_id_map_.end()) + return it->value; + + int parent_id = 0; + if (transform.Parent()) + parent_id = AddTransformJSON(*transform.Parent()); + if (transform.IsIdentity() && !transform.RenderingContextId()) { + transform_id_map_.Set(&transform, parent_id); + return parent_id; + } + + auto transform_json = std::make_unique<JSONObject>(); + int transform_id = next_transform_id_++; + transform_id_map_.Set(&transform, transform_id); + transform_json->SetInteger("id", transform_id); + if (parent_id) + transform_json->SetInteger("parent", parent_id); + + if (!transform.IsIdentity()) { + transform_json->SetArray("transform", + TransformAsJSONArray(transform.SlowMatrix())); + } + + if (!transform.IsIdentityOr2DTranslation() && + !transform.Matrix().IsIdentityOrTranslation()) + transform_json->SetArray("origin", PointAsJSONArray(transform.Origin())); + + if (!transform.FlattensInheritedTransform()) + transform_json->SetBoolean("flattenInheritedTransform", false); + + if (auto rendering_context = transform.RenderingContextId()) { + auto context_lookup_result = rendering_context_map_.find(rendering_context); + int rendering_id = rendering_context_map_.size() + 1; + if (context_lookup_result == rendering_context_map_.end()) + rendering_context_map_.Set(rendering_context, rendering_id); + else + rendering_id = context_lookup_result->value; + + transform_json->SetInteger("renderingContext", rendering_id); + } + + transforms_json_->PushObject(std::move(transform_json)); + return transform_id; +} + +void LayersAsJSON::AddLayer(const cc::Layer& layer, + const FloatPoint& offset, + const TransformPaintPropertyNode& transform, + const LayerAsJSONClient* json_client) { + auto layer_json = CCLayerAsJSON(&layer, Flags(), offset); + if (json_client) { + json_client->AppendAdditionalInfoAsJSON(Flags(), layer, + *(layer_json.get())); + } + int transform_id = AddTransformJSON(transform); + if (transform_id) + layer_json->SetInteger("transform", transform_id); + layers_json_->PushObject(std::move(layer_json)); +} + +std::unique_ptr<JSONObject> LayersAsJSON::Finalize() { + auto json = std::make_unique<JSONObject>(); + json->SetArray("layers", std::move(layers_json_)); + if (transforms_json_->size()) + json->SetArray("transforms", std::move(transforms_json_)); + return json; +} + +} // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h b/third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h new file mode 100644 index 0000000..7248475 --- /dev/null +++ b/third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h
@@ -0,0 +1,79 @@ +// 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 THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_LAYERS_AS_JSON_H_ +#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_LAYERS_AS_JSON_H_ + +#include <memory> + +#include "third_party/blink/renderer/platform/platform_export.h" +#include "third_party/blink/renderer/platform/wtf/hash_map.h" + +namespace cc { +class Layer; +} + +namespace blink { + +class FloatPoint; +class JSONArray; +class JSONObject; +class TransformPaintPropertyNode; + +// These values need to be kept consistent with the layer tree flags in +// core/testing/Internals.idl. +enum { + kLayerTreeNormal = 0, + // Dump extra debugging info like layer addresses. + kLayerTreeIncludesDebugInfo = 1 << 0, + kLayerTreeIncludesPaintInvalidations = 1 << 1, + kLayerTreeIncludesPaintingPhases = 1 << 2, + kLayerTreeIncludesRootLayer = 1 << 3, + kLayerTreeIncludesCompositingReasons = 1 << 5, + kLayerTreeIncludesPaintRecords = 1 << 6, + // Outputs all layers as a layer tree. The default is output children + // (excluding the root) as a layer list, in paint (preorder) order. + kOutputAsLayerTree = 0x4000, +}; +typedef unsigned LayerTreeFlags; + +class PLATFORM_EXPORT LayerAsJSONClient { + public: + virtual void AppendAdditionalInfoAsJSON(LayerTreeFlags, + const cc::Layer&, + JSONObject&) const = 0; +}; + +class PLATFORM_EXPORT LayersAsJSON { + public: + LayersAsJSON(LayerTreeFlags); + + LayerTreeFlags Flags() const { return flags_; } + + void AddLayer(const cc::Layer& layer, + const FloatPoint& offset, + const TransformPaintPropertyNode& transform, + const LayerAsJSONClient* json_client); + + std::unique_ptr<JSONObject> Finalize(); + + private: + int AddTransformJSON(const TransformPaintPropertyNode&); + + LayerTreeFlags flags_; + int next_transform_id_; + std::unique_ptr<JSONArray> layers_json_; + HashMap<const TransformPaintPropertyNode*, int> transform_id_map_; + std::unique_ptr<JSONArray> transforms_json_; + HashMap<int, int> rendering_context_map_; +}; + +PLATFORM_EXPORT std::unique_ptr<JSONObject> CCLayerAsJSON( + const cc::Layer* layer, + LayerTreeFlags flags, + const FloatPoint& position); + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_LAYERS_AS_JSON_H_
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc index f34488cb..2e40b1b6 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc
@@ -76,20 +76,40 @@ } } -std::unique_ptr<JSONObject> PaintArtifactCompositor::LayersAsJSON( - LayerTreeFlags flags) const { - if (!tracks_raster_invalidations_) - flags &= ~kLayerTreeIncludesPaintInvalidations; - ContentLayerClientImpl::LayerAsJSONContext context(flags); - auto layers_json = std::make_unique<JSONArray>(); - for (const auto& client : content_layer_clients_) { - layers_json->PushObject(client->LayerAsJSON(context)); +// Get a JSON representation of what layers exist for this PAC. Note that +// |paint_artifact| is only needed for pre-CAP mode. +std::unique_ptr<JSONObject> PaintArtifactCompositor::GetLayersAsJSON( + LayerTreeFlags flags, + const PaintArtifact* paint_artifact) const { + DCHECK(RuntimeEnabledFeatures::CompositeAfterPaintEnabled() || + paint_artifact); + LayersAsJSON layers_as_json(flags); + if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) { + if (!tracks_raster_invalidations_) + flags &= ~kLayerTreeIncludesPaintInvalidations; + for (const auto& client : content_layer_clients_) { + layers_as_json.AddLayer( + client->Layer(), + FloatPoint(client->Layer().offset_to_transform_parent()), + client->State().Transform(), client.get()); + } + } else { + for (const auto& paint_chunk : paint_artifact->PaintChunks()) { + const auto& display_item = + paint_artifact->GetDisplayItemList()[paint_chunk.begin_index]; + DCHECK(display_item.IsForeignLayer()); + const auto& foreign_layer_display_item = + static_cast<const ForeignLayerDisplayItem&>(display_item); + cc::Layer* layer = foreign_layer_display_item.GetLayer(); + if ((layer->DrawsContent()) || (flags & kLayerTreeIncludesRootLayer)) { + layers_as_json.AddLayer( + *layer, foreign_layer_display_item.Offset(), + paint_chunk.properties.Transform(), + foreign_layer_display_item.GetLayerAsJSONClient()); + } + } } - auto json = std::make_unique<JSONObject>(); - json->SetArray("layers", std::move(layers_json)); - if (context.transforms_json) - json->SetArray("transforms", std::move(context.transforms_json)); - return json; + return layers_as_json.Finalize(); } static scoped_refptr<cc::Layer> ForeignLayerForPaintChunk( @@ -104,11 +124,11 @@ if (!display_item.IsForeignLayer()) return nullptr; - // When a foreign layer's offset_to_transform_parent() changes, we don't call - // PaintArtifaceCompositor::SetNeedsUpdate() because the update won't change - // anything but cause unnecessary commit. Though UpdateTouchActionRects() - // depends on offset_to_transform_parent(), a foreign layer chunk doesn't have - // hit_test_data. + // When a foreign layer's offset_to_transform_parent() changes, we don't + // call PaintArtifaceCompositor::SetNeedsUpdate() because the update won't + // change anything but cause unnecessary commit. Though + // UpdateTouchActionRects() depends on offset_to_transform_parent(), a + // foreign layer chunk doesn't have hit_test_data. DCHECK(!paint_chunk.hit_test_data); const auto& foreign_layer_display_item = @@ -190,7 +210,8 @@ // |scroll_hit_test->scroll_container_bounds|. auto bounds = scroll_node.ContainerRect().Size(); // Mark the layer as scrollable. - // TODO(pdr): When CAP launches this parameter for bounds will not be needed. + // TODO(pdr): When CAP launches this parameter for bounds will not be + // needed. scroll_layer->SetScrollable(static_cast<gfx::Size>(bounds)); // Set the layer's bounds equal to the container because the scroll layer // does not scroll. @@ -316,9 +337,10 @@ if (!hit_test_data || !hit_test_data->scroll_hit_test) continue; - // Skip the scroll hit test rect if it is for scrolling this cc::Layer. This - // is only needed for CompositeAfterPaint because pre-CompositeAfterPaint - // does not paint scroll hit test data for composited scrollers. + // Skip the scroll hit test rect if it is for scrolling this cc::Layer. + // This is only needed for CompositeAfterPaint because + // pre-CompositeAfterPaint does not paint scroll hit test data for + // composited scrollers. if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) { if (layer->scrollable()) { const auto* scroll_offset = @@ -444,14 +466,15 @@ // Determines whether drawings based on the 'guest' state can be painted into // a layer with the 'home' state. A number of criteria need to be met: // 1. The guest effect must be a descendant of the home effect. However this -// check is enforced by the layerization recursion. Here we assume the guest -// has already been upcasted to the same effect. +// check is enforced by the layerization recursion. Here we assume the +// guest has already been upcasted to the same effect. // 2. The guest transform and the home transform have compatible backface // visibility. // 3. The guest clip must be a descendant of the home clip. // 4. The local space of each clip and effect node on the ancestor chain must // be within compositing boundary of the home transform space. -// 5. The guest transform space must be within compositing boundary of the home +// 5. The guest transform space must be within compositing boundary of the +// home // transform space. static bool CanUpcastTo(const PropertyTreeState& guest, const PropertyTreeState& home) { @@ -566,9 +589,9 @@ const EffectPaintPropertyNode& unaliased_group, Vector<PaintChunk>::const_iterator& chunk_it) { // In pre-CompositeAfterPaint, existence of composited layers is decided - // during compositing update before paint. Each chunk contains a foreign layer - // corresponding a composited layer. We should not skip any of them to ensure - // correct composited hit testing and animation. + // during compositing update before paint. Each chunk contains a foreign + // layer corresponding a composited layer. We should not skip any of them to + // ensure correct composited hit testing and animation. if (!RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) return false; @@ -615,17 +638,17 @@ // for overlapping. // d = (sum of) the depth of property trees. // The analysis as follows: - // Every paint chunk will be visited by the main loop below for exactly once, - // except for chunks that enter or exit groups (case B & C below). - // For normal chunk visit (case A), the only cost is determining squash, - // which costs O(qd), where d came from "canUpcastTo" and geometry mapping. + // Every paint chunk will be visited by the main loop below for exactly + // once, except for chunks that enter or exit groups (case B & C below). For + // normal chunk visit (case A), the only cost is determining squash, which + // costs O(qd), where d came from "canUpcastTo" and geometry mapping. // Subtotal: O(pqd) // For group entering and exiting, it could cost O(d) for each group, for // searching the shallowest subgroup (strictChildOfAlongPath), thus O(d^2) // in total. // Also when exiting group, the group may be decomposited and squashed to a - // previous layer. Again finding the host costs O(qd). Merging would cost O(p) - // due to copying the chunk list. Subtotal: O((qd + p)d) = O(qd^2 + pd) + // previous layer. Again finding the host costs O(qd). Merging would cost + // O(p) due to copying the chunk list. Subtotal: O((qd + p)d) = O(qd^2 + pd) // Assuming p > d, the total complexity would be O(pqd + qd^2 + pd) = O(pqd) while (chunk_it != paint_artifact.PaintChunks().end()) { // Look at the effect node of the next chunk. There are 3 possible cases: @@ -662,10 +685,10 @@ wtf_size_t first_layer_in_subgroup = pending_layers_.size(); LayerizeGroup(paint_artifact, settings, *unaliased_subgroup, chunk_it); // The above LayerizeGroup generated new layers in pending_layers_ - // [first_layer_in_subgroup .. pending_layers.size() - 1]. If it generated - // 2 or more layer that we already know can't be merged together, we - // should not decomposite and try to merge any of them into the previous - // layers. + // [first_layer_in_subgroup .. pending_layers.size() - 1]. If it + // generated 2 or more layer that we already know can't be merged + // together, we should not decomposite and try to merge any of them into + // the previous layers. if (first_layer_in_subgroup != pending_layers_.size() - 1) continue; if (!DecompositeEffect(unaliased_group, first_layer_in_current_group, @@ -859,10 +882,10 @@ for (const auto& pending_layer : pending_layers_) { const auto& property_state = pending_layer.property_tree_state; - // Lambda to handle marking a transform node false, and walking up all true - // parents and marking them false as well. This also handles inserting - // transform_node if it isn't in the map, and keeps track of clips or - // effects. + // Lambda to handle marking a transform node false, and walking up all + // true parents and marking them false as well. This also handles + // inserting transform_node if it isn't in the map, and keeps track of + // clips or effects. auto mark_not_decompositable = [&can_be_decomposited]( const TransformPaintPropertyNode* transform_node) { @@ -973,8 +996,8 @@ new_content_layer_clients.ReserveCapacity(pending_layers_.size()); Vector<scoped_refptr<cc::Layer>> new_scroll_hit_test_layers; - // Maps from cc effect id to blink effects. Containing only the effects having - // composited layers. + // Maps from cc effect id to blink effects. Containing only the effects + // having composited layers. Vector<const EffectPaintPropertyNode*> blink_effects; for (auto& entry : synthesized_clip_cache_) @@ -989,8 +1012,8 @@ const auto& clip = property_state.Clip(); if (&clip.LocalTransformSpace() == &transform) { - // Limit layer bounds to hide the areas that will be never visible because - // of the clip. + // Limit layer bounds to hide the areas that will be never visible + // because of the clip. pending_layer.bounds.Intersect(clip.ClipRect().Rect()); } else if (const auto* scroll = transform.ScrollNode()) { // Limit layer bounds to the scroll range to hide the areas that will @@ -1047,11 +1070,11 @@ pending_layer.FirstPaintChunk(*paint_artifact).id.client.OwnerNodeId()); // TODO(wangxianzhu): cc_picture_layer_->set_compositing_reasons(...); - // If the property tree state has changed between the layer and the root, we - // need to inform the compositor so damage can be calculated. - // Calling |PropertyTreeStateChanged| for every pending layer is - // O(|property nodes|^2) and could be optimized by caching the lookup of - // nodes known to be changed/unchanged. + // If the property tree state has changed between the layer and the root, + // we need to inform the compositor so damage can be calculated. Calling + // |PropertyTreeStateChanged| for every pending layer is O(|property + // nodes|^2) and could be optimized by caching the lookup of nodes known + // to be changed/unchanged. if (layer->subtree_property_changed() || PropertyTreeStateChanged(property_state)) { layer->SetSubtreePropertyChanged(); @@ -1098,7 +1121,8 @@ if (VLOG_IS_ON(2)) { static String s_previous_output; LayerTreeFlags flags = VLOG_IS_ON(3) ? 0xffffffff : 0; - String new_output = LayersAsJSON(flags)->ToPrettyJSONString(); + String new_output = + GetLayersAsJSON(flags, paint_artifact.get())->ToPrettyJSONString(); if (new_output != s_previous_output) { LOG(ERROR) << "PaintArtifactCompositor::Update() done\n" << "Composited layers:\n" @@ -1110,9 +1134,9 @@ } cc::PropertyTrees* PaintArtifactCompositor::GetPropertyTreesForDirectUpdate() { - // Don't try to retrieve property trees if we need an update. The full update - // will update all of the nodes, so a direct update doesn't need to do - // anything. + // Don't try to retrieve property trees if we need an update. The full + // update will update all of the nodes, so a direct update doesn't need to + // do anything. if (needs_update_) return nullptr; @@ -1184,10 +1208,11 @@ return cc::RenderSurfaceReason::kNone; } -// Every effect is supposed to have render surface enabled for grouping, but we -// can omit one if the effect is opacity- or blend-mode-only, render surface is -// not forced, and the effect has only one compositing child. This is both for -// optimization and not introducing sub-pixel differences in web tests. +// Every effect is supposed to have render surface enabled for grouping, but +// we can omit one if the effect is opacity- or blend-mode-only, render +// surface is not forced, and the effect has only one compositing child. This +// is both for optimization and not introducing sub-pixel differences in web +// tests. // TODO(crbug.com/504464): There is ongoing work in cc to delay render surface // decision until later phase of the pipeline. Remove premature optimization // here once the work is ready. @@ -1195,8 +1220,8 @@ cc::EffectTree& effect_tree, const cc::LayerList& layers, const Vector<const EffectPaintPropertyNode*>& blink_effects) { - // This vector is indexed by effect node id. The value is the number of layers - // and sub-render-surfaces controlled by this effect. + // This vector is indexed by effect node id. The value is the number of + // layers and sub-render-surfaces controlled by this effect. Vector<int> effect_layer_counts(effect_tree.size()); // Initialize the vector to count directly controlled layers. for (const auto& layer : layers) { @@ -1255,8 +1280,8 @@ #if DCHECK_IS_ON() void PaintArtifactCompositor::ShowDebugData() { - LOG(ERROR) << LayersAsJSON(kLayerTreeIncludesDebugInfo | - kLayerTreeIncludesPaintInvalidations) + LOG(ERROR) << GetLayersAsJSON(kLayerTreeIncludesDebugInfo | + kLayerTreeIncludesPaintInvalidations) ->ToPrettyJSONString() .Utf8(); }
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h index 8d2beeb..efc5261 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h
@@ -14,6 +14,7 @@ #include "cc/layers/content_layer_client.h" #include "cc/layers/layer_collections.h" #include "cc/layers/picture_layer.h" +#include "third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h" #include "third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h" #include "third_party/blink/renderer/platform/graphics/graphics_layer_client.h" #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h" @@ -168,7 +169,9 @@ // going to be removed from its frame. void WillBeRemovedFromFrame(); - std::unique_ptr<JSONObject> LayersAsJSON(LayerTreeFlags) const; + std::unique_ptr<JSONObject> GetLayersAsJSON( + LayerTreeFlags, + const PaintArtifact* = nullptr) const; #if DCHECK_IS_ON() void ShowDebugData();
diff --git a/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc b/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc index 6141df1..221eec74 100644 --- a/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc +++ b/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc
@@ -396,11 +396,18 @@ if (!metadata_decoder_ || !metadata_decoder_->IsSizeAvailable()) return; + if (!image_metadata_) + image_metadata_ = metadata_decoder_->MakeMetadataForDecodeAcceleration(); + ActivateLazyDecoding(); const size_t previous_size = frame_data_.size(); frame_data_.resize(metadata_decoder_->FrameCount()); + // The decoder may be invalidated during a FrameCount(). Simply bail if so. + if (metadata_decoder_->Failed()) + return; + // We have encountered a broken image file. Simply bail. if (frame_data_.size() < previous_size) return; @@ -423,9 +430,6 @@ metadata_decoder_->CanDecodeToYUV() && all_data_received_ && !frame_generator_->IsMultiFrame(); - if (!image_metadata_) - image_metadata_ = metadata_decoder_->MakeMetadataForDecodeAcceleration(); - // If we've received all of the data, then we can reset the metadata decoder, // since everything we care about should now be stored in |frame_data_|. if (all_data_received_) {
diff --git a/third_party/blink/renderer/platform/graphics/graphics_layer.cc b/third_party/blink/renderer/platform/graphics/graphics_layer.cc index 211e3db..31d1472f 100644 --- a/third_party/blink/renderer/platform/graphics/graphics_layer.cc +++ b/third_party/blink/renderer/platform/graphics/graphics_layer.cc
@@ -42,6 +42,7 @@ #include "third_party/blink/public/platform/web_point.h" #include "third_party/blink/public/platform/web_size.h" #include "third_party/blink/renderer/platform/geometry/float_rect.h" +#include "third_party/blink/renderer/platform/geometry/geometry_as_json.h" #include "third_party/blink/renderer/platform/geometry/layout_rect.h" #include "third_party/blink/renderer/platform/geometry/region.h" #include "third_party/blink/renderer/platform/graphics/bitmap_image.h" @@ -117,6 +118,64 @@ return IntRect(layer_state_->offset, IntSize(Size())); } +void GraphicsLayer::AppendAdditionalInfoAsJSON(LayerTreeFlags flags, + const cc::Layer& layer, + JSONObject& json) const { + // Only the primary layer associated with GraphicsLayer adds additional + // information. Other layer state, such as raster invalidations, don't + // disambiguate between specific layers. + if (&layer != layer_.get()) + return; + + if ((flags & kLayerTreeIncludesPaintInvalidations) && + Client().IsTrackingRasterInvalidations() && + GetRasterInvalidationTracking()) { + GetRasterInvalidationTracking()->AsJSON(&json); + } + + GraphicsLayerPaintingPhase painting_phase = PaintingPhase(); + if ((flags & kLayerTreeIncludesPaintingPhases) && painting_phase) { + auto painting_phases_json = std::make_unique<JSONArray>(); + if (painting_phase & kGraphicsLayerPaintBackground) + painting_phases_json->PushString("GraphicsLayerPaintBackground"); + if (painting_phase & kGraphicsLayerPaintForeground) + painting_phases_json->PushString("GraphicsLayerPaintForeground"); + if (painting_phase & kGraphicsLayerPaintMask) + painting_phases_json->PushString("GraphicsLayerPaintMask"); + if (painting_phase & kGraphicsLayerPaintOverflowContents) + painting_phases_json->PushString("GraphicsLayerPaintOverflowContents"); + if (painting_phase & kGraphicsLayerPaintCompositedScroll) + painting_phases_json->PushString("GraphicsLayerPaintCompositedScroll"); + if (painting_phase & kGraphicsLayerPaintDecoration) + painting_phases_json->PushString("GraphicsLayerPaintDecoration"); + json.SetArray("paintingPhases", std::move(painting_phases_json)); + } + + if (flags & + (kLayerTreeIncludesDebugInfo | kLayerTreeIncludesCompositingReasons)) { + bool debug = flags & kLayerTreeIncludesDebugInfo; + { + auto squashing_disallowed_reasons_json = std::make_unique<JSONArray>(); + SquashingDisallowedReasons squashing_disallowed_reasons = + GetSquashingDisallowedReasons(); + auto names = debug ? SquashingDisallowedReason::Descriptions( + squashing_disallowed_reasons) + : SquashingDisallowedReason::ShortNames( + squashing_disallowed_reasons); + for (const char* name : names) + squashing_disallowed_reasons_json->PushString(name); + json.SetArray("squashingDisallowedReasons", + std::move(squashing_disallowed_reasons_json)); + } + } + +#if DCHECK_IS_ON() + if (HasLayerState() && DrawsContent() && + (flags & kLayerTreeIncludesPaintRecords)) + json.SetValue("paintRecord", RecordAsJSON(*CapturePaintRecord())); +#endif +} + void GraphicsLayer::SetHasWillChangeTransformHint( bool has_will_change_transform) { CcLayer()->SetHasWillChangeTransformHint(has_will_change_transform);
diff --git a/third_party/blink/renderer/platform/graphics/graphics_layer.h b/third_party/blink/renderer/platform/graphics/graphics_layer.h index 9016968c..904eddbd 100644 --- a/third_party/blink/renderer/platform/graphics/graphics_layer.h +++ b/third_party/blink/renderer/platform/graphics/graphics_layer.h
@@ -40,6 +40,7 @@ #include "third_party/blink/renderer/platform/geometry/float_size.h" #include "third_party/blink/renderer/platform/geometry/int_rect.h" #include "third_party/blink/renderer/platform/graphics/color.h" +#include "third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h" #include "third_party/blink/renderer/platform/graphics/compositing_reasons.h" #include "third_party/blink/renderer/platform/graphics/compositor_element_id.h" #include "third_party/blink/renderer/platform/graphics/graphics_context.h" @@ -75,6 +76,7 @@ // which may have associated transformation and animations. class PLATFORM_EXPORT GraphicsLayer : public cc::LayerClient, public DisplayItemClient, + public LayerAsJSONClient, private cc::ContentLayerClient { USING_FAST_MALLOC(GraphicsLayer); @@ -229,6 +231,11 @@ String DebugName() const final { return client_.DebugName(this); } IntRect VisualRect() const override; + // LayerAsJSONClient implementation. + void AppendAdditionalInfoAsJSON(LayerTreeFlags, + const cc::Layer&, + JSONObject&) const override; + void SetHasWillChangeTransformHint(bool); bool HasLayerState() const { return layer_state_.get(); }
diff --git a/third_party/blink/renderer/platform/graphics/graphics_layer_client.h b/third_party/blink/renderer/platform/graphics/graphics_layer_client.h index 65645d0..db93f28 100644 --- a/third_party/blink/renderer/platform/graphics/graphics_layer_client.h +++ b/third_party/blink/renderer/platform/graphics/graphics_layer_client.h
@@ -50,23 +50,6 @@ }; typedef unsigned GraphicsLayerPaintingPhase; -// These values need to be kept consistent with the layer tree flags in -// core/testing/Internals.idl. -enum { - kLayerTreeNormal = 0, - // Dump extra debugging info like layer addresses. - kLayerTreeIncludesDebugInfo = 1 << 0, - kLayerTreeIncludesPaintInvalidations = 1 << 1, - kLayerTreeIncludesPaintingPhases = 1 << 2, - kLayerTreeIncludesRootLayer = 1 << 3, - kLayerTreeIncludesCompositingReasons = 1 << 5, - kLayerTreeIncludesPaintRecords = 1 << 6, - // Outputs all layers as a layer tree. The default is output children - // (excluding the root) as a layer list, in paint (preorder) order. - kOutputAsLayerTree = 0x4000, -}; -typedef unsigned LayerTreeFlags; - enum class DisplayLockContextLifecycleTarget { kSelf, kChildren }; class PLATFORM_EXPORT GraphicsLayerClient {
diff --git a/third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.cc b/third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.cc index aedb6cac..2e1af0dc 100644 --- a/third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.cc +++ b/third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.cc
@@ -7,7 +7,10 @@ #include <utility> #include "cc/layers/layer.h" +#include "cc/layers/picture_layer.h" +#include "third_party/blink/renderer/platform/graphics/compositing/layers_as_json.h" #include "third_party/blink/renderer/platform/graphics/graphics_context.h" +#include "third_party/blink/renderer/platform/graphics/graphics_layer.h" #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h" #include "third_party/blink/renderer/platform/wtf/assertions.h" @@ -48,13 +51,16 @@ } // anonymous namespace -ForeignLayerDisplayItem::ForeignLayerDisplayItem(Type type, - scoped_refptr<cc::Layer> layer, - const FloatPoint& offset) +ForeignLayerDisplayItem::ForeignLayerDisplayItem( + Type type, + scoped_refptr<cc::Layer> layer, + const FloatPoint& offset, + const LayerAsJSONClient* json_client) : DisplayItem(*new ForeignLayerDisplayItemClient(std::move(layer), offset), type, sizeof(*this)), - offset_(offset) { + offset_(offset), + json_client_(json_client) { DCHECK(IsForeignLayerType(type)); DCHECK(GetLayer()); DCHECK(!IsCacheable()); @@ -71,6 +77,10 @@ return static_cast<const ForeignLayerDisplayItemClient&>(Client()).GetLayer(); } +const LayerAsJSONClient* ForeignLayerDisplayItem::GetLayerAsJSONClient() const { + return json_client_; +} + bool ForeignLayerDisplayItem::Equals(const DisplayItem& other) const { return GetType() == other.GetType() && GetLayer() == @@ -86,11 +96,13 @@ } #endif -void RecordForeignLayer(GraphicsContext& context, - DisplayItem::Type type, - scoped_refptr<cc::Layer> layer, - const FloatPoint& offset, - const base::Optional<PropertyTreeState>& properties) { +void RecordForeignLayerInternal( + GraphicsContext& context, + DisplayItem::Type type, + scoped_refptr<cc::Layer> layer, + const FloatPoint& offset, + const LayerAsJSONClient* json_client, + const base::Optional<PropertyTreeState>& properties) { PaintController& paint_controller = context.GetPaintController(); if (paint_controller.DisplayItemConstructionIsDisabled()) return; @@ -104,11 +116,28 @@ *properties); } paint_controller.CreateAndAppend<ForeignLayerDisplayItem>( - type, std::move(layer), offset); + type, std::move(layer), offset, json_client); if (properties) { paint_controller.UpdateCurrentPaintChunkProperties(base::nullopt, *previous_properties); } } +void RecordForeignLayer(GraphicsContext& context, + DisplayItem::Type type, + scoped_refptr<cc::Layer> layer, + const FloatPoint& offset, + const base::Optional<PropertyTreeState>& properties) { + RecordForeignLayerInternal(context, type, layer, offset, nullptr, properties); +} + +void RecordGraphicsLayerAsForeignLayer(GraphicsContext& context, + DisplayItem::Type type, + const GraphicsLayer& graphics_layer) { + RecordForeignLayerInternal( + context, type, graphics_layer.CcLayer(), + FloatPoint(graphics_layer.GetOffsetFromTransformNode()), &graphics_layer, + graphics_layer.GetPropertyTreeState()); +} + } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.h b/third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.h index a877ae9..eae2cc8 100644 --- a/third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.h +++ b/third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.h
@@ -13,6 +13,8 @@ namespace blink { class GraphicsContext; +class GraphicsLayer; +class LayerAsJSONClient; // Represents foreign content (produced outside Blink) which draws to a layer. // A client supplies a layer which can be unwrapped and inserted into the full @@ -24,11 +26,14 @@ public: ForeignLayerDisplayItem(Type, scoped_refptr<cc::Layer>, - const FloatPoint& offset); + const FloatPoint& offset, + const LayerAsJSONClient*); ~ForeignLayerDisplayItem() override; cc::Layer* GetLayer() const; + const LayerAsJSONClient* GetLayerAsJSONClient() const; + // DisplayItem bool Equals(const DisplayItem&) const override; #if DCHECK_IS_ON() @@ -39,17 +44,24 @@ private: FloatPoint offset_; + const LayerAsJSONClient* json_client_; }; // Records a foreign layer into a GraphicsContext. // Use this where you would use a recorder class. PLATFORM_EXPORT void RecordForeignLayer( - GraphicsContext&, - DisplayItem::Type, - scoped_refptr<cc::Layer>, + GraphicsContext& context, + DisplayItem::Type type, + scoped_refptr<cc::Layer> layer, const FloatPoint& offset, const base::Optional<PropertyTreeState>& = base::nullopt); +// Records a graphics layer into a GraphicsContext. +PLATFORM_EXPORT void RecordGraphicsLayerAsForeignLayer( + GraphicsContext& context, + DisplayItem::Type type, + const GraphicsLayer& graphics_layer); + } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_FOREIGN_LAYER_DISPLAY_ITEM_H_
diff --git a/third_party/blink/renderer/platform/testing/test_paint_artifact.cc b/third_party/blink/renderer/platform/testing/test_paint_artifact.cc index a52c83f..7a603787 100644 --- a/third_party/blink/renderer/platform/testing/test_paint_artifact.cc +++ b/third_party/blink/renderer/platform/testing/test_paint_artifact.cc
@@ -97,7 +97,7 @@ scoped_refptr<cc::Layer> layer, const FloatPoint& offset) { display_item_list_.AllocateAndConstruct<ForeignLayerDisplayItem>( - DisplayItem::kForeignLayerFirst, std::move(layer), offset); + DisplayItem::kForeignLayerFirst, std::move(layer), offset, nullptr); return *this; }
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/base.py b/third_party/blink/tools/blinkpy/web_tests/port/base.py index 3f28ee31..6479f86 100644 --- a/third_party/blink/tools/blinkpy/web_tests/port/base.py +++ b/third_party/blink/tools/blinkpy/web_tests/port/base.py
@@ -182,6 +182,9 @@ # The following is used for concetenating WebDriver test names. WEBDRIVER_SUBTEST_SEPARATOR = '>>' + # The following is used for concetenating WebDriver test names in pytest format. + WEBDRIVER_SUBTEST_PYTEST_SEPARATOR = '::' + # The following two constants must match. When adding a new WPT root, also # remember to add an alias rule to third_party/wpt/wpt.config.json. # WPT_DIRS maps WPT roots on the file system to URL prefixes on wptserve. @@ -1814,6 +1817,9 @@ return test_name + Port.WEBDRIVER_SUBTEST_SEPARATOR + subtest_name return test_name + def add_webdriver_subtest_pytest_suffix(self, test_name, subtest_name): + return test_name + self.WEBDRIVER_SUBTEST_PYTEST_SEPARATOR + subtest_name + class VirtualTestSuite(object):
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/base_unittest.py b/third_party/blink/tools/blinkpy/web_tests/port/base_unittest.py index 08819eeb..94612e9 100644 --- a/third_party/blink/tools/blinkpy/web_tests/port/base_unittest.py +++ b/third_party/blink/tools/blinkpy/web_tests/port/base_unittest.py
@@ -983,14 +983,15 @@ self.assertEqual( Port.add_webdriver_subtest_suffix("abd", None), "abd") - def test_add_webdriver_subtest_suffix(self): + def test_add_webdriver_subtest_pytest_suffix(self): port = self.make_port() wb_test_name = "abd" sub_test_name = "bar" - full_webdriver_name = port.add_webdriver_subtest_suffix(wb_test_name, sub_test_name) + full_webdriver_name = port.add_webdriver_subtest_pytest_suffix( + wb_test_name, sub_test_name) - self.assertEqual(full_webdriver_name, "abd>>bar") + self.assertEqual(full_webdriver_name, "abd::bar") class NaturalCompareTest(unittest.TestCase):
diff --git a/third_party/blink/tools/blinkpy/web_tests/run_web_tests_unittest.py b/third_party/blink/tools/blinkpy/web_tests/run_web_tests_unittest.py index 90df72d..00e380d7 100644 --- a/third_party/blink/tools/blinkpy/web_tests/run_web_tests_unittest.py +++ b/third_party/blink/tools/blinkpy/web_tests/run_web_tests_unittest.py
@@ -538,6 +538,7 @@ ['--order', 'natural', 'failures/unexpected/reftest-mismatch-with-text-mismatch-with-stderr.html',], tests_included=True, host=host)) + @unittest.skip('Need to make subprocesses use mock filesystem') def test_crash_log_is_saved_after_delay_using_multiple_jobs(self): # TODO(rmhasan): When web_test_runner.run() spawns multiple jobs it uses # the non mock file system. We should figure out how to make all subprocesses @@ -572,6 +573,7 @@ 'failures/unexpected/crash-with-sample-sample.txt', 'retry_1/failures/unexpected/crash-with-sample-sample.txt']) + @unittest.skip('Need to make subprocesses use mock filesystem') def test_crash_sample_file_is_saved_multiple_jobs(self): host = MockHost() self.assertTrue(logging_run(
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNGFragmentItem b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNGFragmentItem index 40b7994..644d3dce 100644 --- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNGFragmentItem +++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNGFragmentItem
@@ -112,7 +112,6 @@ crbug.com/982194 css1/classification/list_style.html [ Failure ] crbug.com/982194 css1/classification/list_style_image.html [ Failure ] crbug.com/982194 css1/classification/list_style_position.html [ Failure ] -crbug.com/982194 css1/classification/list_style_type.html [ Failure ] crbug.com/982194 css1/formatting_model/floating_elements.html [ Failure ] crbug.com/982194 css1/formatting_model/inline_elements.html [ Failure ] crbug.com/982194 css1/pseudo/anchor.html [ Failure ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 5e093f7..c761c11b 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -1369,6 +1369,10 @@ ### virtual/layout_ng_experimental/css3/flexbox/ crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/auto-height-column-with-border-and-padding.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/box-sizing-min-max-sizes.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/columns-center-with-margins-and-wrap.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/columns-center-with-margins.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-align-baseline.html [ Skip ] +crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-align-column.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-align-end.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-align-vertical-writing-mode.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flex-align.html [ Failure ] @@ -1387,16 +1391,19 @@ crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/flexbox-overflow-auto.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/inline-flexbox-wrap-vertically-width-calculation.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/minimum-size-image.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/multiline-align-content-horizontal-column.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/multiline-align-self.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/multiline-justify-content.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/multiline-min-max.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/multiline-reverse-wrap-baseline.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/multiline-reverse-wrap-overflow.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/multiline.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/negative-overflow.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/order-painting.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/overflow-auto-resizes-correctly.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/percentage-height-replaced-element.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/position-absolute-child.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/relayout-align-items.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/relpos-with-percentage-top.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/style-change.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/css3/flexbox/true-centering.html [ Failure ] @@ -1407,19 +1414,32 @@ ### virtual/layout_ng_experimental/external/wpt/css/css-flexbox/ crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/Flexible-order.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/align-items-001.htm [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/align-items-003.htm [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/align-items-004.htm [ Failure ] -crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/align-items-baseline-overflow-non-visible.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/align-self-002.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/align-self-003.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/align-self-008.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/align-self-009.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/anonymous-flex-item-001.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/anonymous-flex-item-003.html [ Failure ] crbug.com/807497 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/anonymous-flex-item-005.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/css-flexbox-column-reverse-wrap-reverse.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/css-flexbox-column-reverse-wrap.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/css-flexbox-column-reverse.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/css-flexbox-column-wrap-reverse.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/css-flexbox-row-reverse-wrap-reverse.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/css-flexbox-row-wrap-reverse.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-align-items-center.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-basis-010.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-direction-row-vertical.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-flow-003.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-flow-006.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-flow-009.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-flow-010.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-flow-011.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-flow-012.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-items-flexibility.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-004.xht [ Failure ] crbug.com/249112 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-005.xht [ Failure ] crbug.com/467127 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-006.xht [ Failure ] @@ -1432,19 +1452,34 @@ crbug.com/249112 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-width-flex-items-007.xht [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-order.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox-flex-direction-column-reverse.htm [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox-flex-wrap-wrap-reverse.htm [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-items-baseline.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-items-center-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-items-center.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-items-flexend-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-items-flexend.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-self-auto.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-self-baseline.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-self-center.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-self-flexend.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-self-flexstart.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_align-self-stretch.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_direction-column-reverse.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_flow-column-reverse-wrap-reverse.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_flow-column-reverse-wrap.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_flow-column-wrap-reverse.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_flow-row-wrap-reverse.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_inline.html [ Failure ] crbug.com/467127 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_justifycontent-center-overflow.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_order-box.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_order.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_quirks_body.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_rtl-direction.html [ Skip ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_rtl-flow-reverse.html [ Skip ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_rtl-order.html [ Skip ] crbug.com/336604 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_visibility-collapse-line-wrapping.html [ Failure ] crbug.com/336604 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_visibility-collapse.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flexbox_wrap-reverse.html [ Failure ] crbug.com/467127 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/negative-margins-001.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/order_value.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/overflow-top-left.html [ Failure ] @@ -1459,11 +1494,13 @@ crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/ttwf-reftest-flex-direction-column-reverse.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/ttwf-reftest-flex-inline.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/ttwf-reftest-flex-order.html [ Failure ] +crbug.com/467127 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/ttwf-reftest-flex-wrap-reverse.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/hittest-overlapping-margin.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/hittest-overlapping-order.html [ Failure ] ### virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-lines/ crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-lines/multi-line-wrap-reverse-column-reverse.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-lines/multi-line-wrap-reverse-row-reverse.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-lines/multi-line-wrap-with-column-reverse.html [ Failure ] ### virtual/layout_ng_experimental/external/wpt/css/css-flexbox/getcomputedstyle/ @@ -5276,7 +5313,6 @@ # Sheriff 2019-04-17 crbug.com/953534 [ Mac ] virtual/layout_ng_experimental/external/wpt/css/css-flexbox/ttwf-reftest-flex-wrap.html [ Failure ] -crbug.com/953534 [ Mac ] virtual/layout_ng_experimental/external/wpt/css/css-flexbox/ttwf-reftest-flex-wrap-reverse.html [ Failure ] crbug.com/953591 [ Win ] css3/masking/mask-repeat-space-padding.html [ Pass Failure ] crbug.com/953591 [ Win ] fast/forms/datalist/input-appearance-range-with-transform.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/compositing/absolute-inside-out-of-view-fixed-expected.txt b/third_party/blink/web_tests/compositing/absolute-inside-out-of-view-fixed-expected.txt index e49f564..2c479bb 100644 --- a/third_party/blink/web_tests/compositing/absolute-inside-out-of-view-fixed-expected.txt +++ b/third_party/blink/web_tests/compositing/absolute-inside-out-of-view-fixed-expected.txt
@@ -11,6 +11,12 @@ "name": "LayoutNGBlockFlow (positioned) DIV class='fixed'", "bounds": [100, 100], "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/composite-scrollable-fixed-position-when-descendants-composite.html b/third_party/blink/web_tests/compositing/composite-scrollable-fixed-position-when-descendants-composite.html index 7963b01..38329b2 100644 --- a/third_party/blink/web_tests/compositing/composite-scrollable-fixed-position-when-descendants-composite.html +++ b/third_party/blink/web_tests/compositing/composite-scrollable-fixed-position-when-descendants-composite.html
@@ -15,6 +15,6 @@ assert_not_equals(window.internals, null, 'This test requires window.internals'); var layers_text = internals.layerTreeAsText(document); var layers = JSON.parse(layers_text); - assert_equals(layers['layers'].length, 3); + assert_equals(layers['layers'].length, 4); }, 'Having a composited child should be a position:fixed compositing trigger and should result in the fixed element getting a layer.'); </script>
diff --git a/third_party/blink/web_tests/compositing/draws-content/canvas-background-layer-expected.txt b/third_party/blink/web_tests/compositing/draws-content/canvas-background-layer-expected.txt index a5b0786..a4edba5 100644 --- a/third_party/blink/web_tests/compositing/draws-content/canvas-background-layer-expected.txt +++ b/third_party/blink/web_tests/compositing/draws-content/canvas-background-layer-expected.txt
@@ -14,30 +14,60 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-simple'", + "bounds": [50, 50], + "contentsOpaque": true, + "backgroundColor": "#008000", + "transform": 1 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-transparent-background'", "bounds": [50, 50], "backgroundColor": "#00FF0080", "transform": 2 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-transparent-background'", + "bounds": [50, 50], + "backgroundColor": "#00FF0080", + "transform": 2 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-padding'", "bounds": [60, 60], "backgroundColor": "#008000", "transform": 3 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-padding'", + "position": [5, 5], + "bounds": [50, 50], + "transform": 3 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-border'", "bounds": [60, 60], "backgroundColor": "#008000", "transform": 4 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-border'", + "position": [5, 5], + "bounds": [50, 50], + "transform": 4 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-image'", "bounds": [50, 50], "backgroundColor": "#008000", "transform": 5 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-image'", + "bounds": [50, 50], + "transform": 5 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-opaque'", "bounds": [50, 50], "contentsOpaque": true, @@ -45,16 +75,34 @@ "transform": 6 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-opaque'", + "bounds": [50, 50], + "contentsOpaque": true, + "backgroundColor": "#008000", + "transform": 6 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-opaque-border'", "bounds": [60, 60], "backgroundColor": "#008000", "transform": 7 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-opaque-border'", + "position": [5, 5], + "bounds": [50, 50], + "transform": 7 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-opaque-box-shadow'", "bounds": [60, 60], "backgroundColor": "#008000", "transform": 8 + }, + { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-opaque-box-shadow'", + "bounds": [50, 50], + "transform": 8 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/draws-content/webgl-background-layer-expected.txt b/third_party/blink/web_tests/compositing/draws-content/webgl-background-layer-expected.txt index 7aaab88..621cdb15 100644 --- a/third_party/blink/web_tests/compositing/draws-content/webgl-background-layer-expected.txt +++ b/third_party/blink/web_tests/compositing/draws-content/webgl-background-layer-expected.txt
@@ -14,28 +14,58 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-simple'", + "bounds": [50, 50], + "contentsOpaque": true, + "backgroundColor": "#008000", + "transform": 1 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-padding'", "bounds": [60, 60], "backgroundColor": "#008000", "transform": 2 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-padding'", + "position": [5, 5], + "bounds": [50, 50], + "transform": 2 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-border'", "bounds": [60, 60], "backgroundColor": "#008000", "transform": 3 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-border'", + "position": [5, 5], + "bounds": [50, 50], + "transform": 3 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-image'", "bounds": [50, 50], "backgroundColor": "#008000", "transform": 4 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-image'", + "bounds": [50, 50], + "transform": 4 + }, + { "name": "LayoutHTMLCanvas CANVAS id='canvas-transparent-background'", "bounds": [50, 50], "backgroundColor": "#00FF0080", "transform": 5 + }, + { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='canvas-transparent-background'", + "bounds": [50, 50], + "backgroundColor": "#00FF0080", + "transform": 5 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/fixed-body-background-positioned-expected.txt b/third_party/blink/web_tests/compositing/fixed-body-background-positioned-expected.txt index 58ee645..cc964be9 100644 --- a/third_party/blink/web_tests/compositing/fixed-body-background-positioned-expected.txt +++ b/third_party/blink/web_tests/compositing/fixed-body-background-positioned-expected.txt
@@ -1,10 +1,6 @@ { "layers": [ { - "name": "Root Transform Layer", - "drawsContent": false - }, - { "name": "Inner Viewport Scroll Layer", "bounds": [800, 600], "drawsContent": false @@ -16,27 +12,16 @@ "backgroundColor": "#FFFFFF" }, { - "name": "Scrolling Layer", - "bounds": [785, 600], - "drawsContent": false - }, - { "name": "Scrolling Contents Layer", "bounds": [785, 3700], "backgroundColor": "#FFFFFF", "transform": 1 }, { - "name": "Overflow Controls Host Layer", - "bounds": [800, 600], - "drawsContent": false - }, - { - "name": "Vertical Scrollbar Layer", + "name": "ContentsLayer for Vertical Scrollbar Layer", "position": [785, 0], "bounds": [15, 600], - "contentsOpaque": true, - "drawsContent": false + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt b/third_party/blink/web_tests/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt index 9d84137..57fb961 100644 --- a/third_party/blink/web_tests/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt +++ b/third_party/blink/web_tests/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt
@@ -17,6 +17,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 135], + "bounds": [135, 15], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [135, 0], + "bounds": [15, 135], + "transform": 2 + }, + { "name": "Scroll Corner Layer", "position": [135, 135], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt b/third_party/blink/web_tests/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt index 8e99de8..4d386ec 100644 --- a/third_party/blink/web_tests/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt +++ b/third_party/blink/web_tests/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt
@@ -17,6 +17,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 135], + "bounds": [135, 15], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [135, 0], + "bounds": [15, 135], + "transform": 2 + }, + { "name": "Scroll Corner Layer", "position": [135, 135], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/compositing/geometry/bounds-ignores-hidden-expected.txt b/third_party/blink/web_tests/compositing/geometry/bounds-ignores-hidden-expected.txt index db9da0d..ce4fafe 100644 --- a/third_party/blink/web_tests/compositing/geometry/bounds-ignores-hidden-expected.txt +++ b/third_party/blink/web_tests/compositing/geometry/bounds-ignores-hidden-expected.txt
@@ -11,6 +11,23 @@ "position": [10, 10], "bounds": [50, 50], "contentsOpaque": true + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
diff --git a/third_party/blink/web_tests/compositing/iframes/become-composited-nested-iframes-expected.txt b/third_party/blink/web_tests/compositing/iframes/become-composited-nested-iframes-expected.txt index 97d88524..b5d4661 100644 --- a/third_party/blink/web_tests/compositing/iframes/become-composited-nested-iframes-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/become-composited-nested-iframes-expected.txt
@@ -67,6 +67,12 @@ "bounds": [100, 100], "contentsOpaque": true, "backgroundColor": "#0000FF" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/iframes/become-overlapped-iframe-expected.txt b/third_party/blink/web_tests/compositing/iframes/become-overlapped-iframe-expected.txt index a4ffe973..179b4ff 100644 --- a/third_party/blink/web_tests/compositing/iframes/become-overlapped-iframe-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/become-overlapped-iframe-expected.txt
@@ -25,6 +25,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [305, 0], + "bounds": [15, 170], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV id='overlay'", "bounds": [150, 150], "backgroundColor": "#00000099",
diff --git a/third_party/blink/web_tests/compositing/iframes/composited-parent-iframe-expected.txt b/third_party/blink/web_tests/compositing/iframes/composited-parent-iframe-expected.txt index d97ca4b..7406b4a 100644 --- a/third_party/blink/web_tests/compositing/iframes/composited-parent-iframe-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/composited-parent-iframe-expected.txt
@@ -24,6 +24,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe-delayed-expected.txt b/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe-delayed-expected.txt index 69bc9767c..95b0269 100644 --- a/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe-delayed-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
@@ -28,6 +28,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow DIV id='box' class='composited'", "bounds": [100, 100], "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe-expected.txt b/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe-expected.txt index 48e1275..e1a2030 100644 --- a/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe2-expected.txt b/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe2-expected.txt index f87afaa..4c2173ce 100644 --- a/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe2-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe2-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe3-expected.txt b/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe3-expected.txt index 987b5db0..02b6bc8 100644 --- a/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe3-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/connect-compositing-iframe3-expected.txt
@@ -24,6 +24,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/iframes/enter-compositing-iframe-expected.txt b/third_party/blink/web_tests/compositing/iframes/enter-compositing-iframe-expected.txt index 48e1275..e1a2030 100644 --- a/third_party/blink/web_tests/compositing/iframes/enter-compositing-iframe-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/enter-compositing-iframe-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/compositing/iframes/iframe-resize-expected.txt b/third_party/blink/web_tests/compositing/iframes/iframe-resize-expected.txt index d713991..9d7cdb9 100644 --- a/third_party/blink/web_tests/compositing/iframes/iframe-resize-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/iframe-resize-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 120], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/compositing/iframes/iframe-size-from-zero-expected.txt b/third_party/blink/web_tests/compositing/iframes/iframe-size-from-zero-expected.txt index 4595f03..93b1364 100644 --- a/third_party/blink/web_tests/compositing/iframes/iframe-size-from-zero-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/iframe-size-from-zero-expected.txt
@@ -25,6 +25,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/compositing/iframes/overlapped-iframe-expected.txt b/third_party/blink/web_tests/compositing/iframes/overlapped-iframe-expected.txt index b3692c48..a80fed3 100644 --- a/third_party/blink/web_tests/compositing/iframes/overlapped-iframe-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/overlapped-iframe-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/compositing/iframes/overlapped-nested-iframes-expected.txt b/third_party/blink/web_tests/compositing/iframes/overlapped-nested-iframes-expected.txt index 4d79b07..d4f2564 100644 --- a/third_party/blink/web_tests/compositing/iframes/overlapped-nested-iframes-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/overlapped-nested-iframes-expected.txt
@@ -67,6 +67,12 @@ "name": "LayoutNGBlockFlow (positioned) DIV id='banner'", "bounds": [785, 120], "backgroundColor": "#00000080" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/iframes/resizer-expected.txt b/third_party/blink/web_tests/compositing/iframes/resizer-expected.txt index 6b38a2f..6f876793 100644 --- a/third_party/blink/web_tests/compositing/iframes/resizer-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/resizer-expected.txt
@@ -25,6 +25,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "Scroll Corner Layer", "position": [287, 137], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/compositing/iframes/scrolling-iframe-expected.txt b/third_party/blink/web_tests/compositing/iframes/scrolling-iframe-expected.txt index d03eddd..6203322c 100644 --- a/third_party/blink/web_tests/compositing/iframes/scrolling-iframe-expected.txt +++ b/third_party/blink/web_tests/compositing/iframes/scrolling-iframe-expected.txt
@@ -26,6 +26,18 @@ "transform": 4 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 135], + "bounds": [285, 15], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 135], + "transform": 2 + }, + { "name": "Scroll Corner Layer", "position": [285, 135], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/compositing/images/direct-image-dynamic-border-draws-content-expected.txt b/third_party/blink/web_tests/compositing/images/direct-image-dynamic-border-draws-content-expected.txt index 47305e2..83ca065e 100644 --- a/third_party/blink/web_tests/compositing/images/direct-image-dynamic-border-draws-content-expected.txt +++ b/third_party/blink/web_tests/compositing/images/direct-image-dynamic-border-draws-content-expected.txt
@@ -7,6 +7,22 @@ "bounds": [800, 600], "contentsOpaque": true, "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='composited'", + "bounds": [256, 256], + "transform": 1 + } + ], + "transforms": [ + { + "id": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [8, 8, 0, 1] + ] } ] }
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-and-transform-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-and-transform-expected.txt index 6116c4d..016cd4c 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-and-transform-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-and-transform-expected.txt
@@ -19,6 +19,12 @@ "bounds": [500, 500], "contentsOpaque": true, "backgroundColor": "#008000" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt index f69d130..3bc22df 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt
@@ -13,6 +13,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -50,6 +56,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -89,6 +101,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt index 98cf1ab9..295a7c5 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt
@@ -22,6 +22,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFF00", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-no-content-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-no-content-expected.txt index c3f1ef76..bbd50e9 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-no-content-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-no-content-expected.txt
@@ -12,6 +12,12 @@ "contentsOpaque": true, "backgroundColor": "#808080", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt index d0c88c5..0a495a1 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt
@@ -23,6 +23,12 @@ "name": "LayoutIFrame (positioned) IFRAME id='iframe3'", "bounds": [154, 154], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-expected.txt index 8c551a0..9736ea93 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-expected.txt
@@ -34,6 +34,12 @@ { "name": "LayoutNGBlockFlow HTML (foreground) Layer", "bounds": [785, 1021] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt index 3a632cad..16dd7647 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt
@@ -19,6 +19,23 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [ @@ -60,6 +77,23 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 3 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt index fe2a5c46..2faedba 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt
@@ -42,6 +42,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [ @@ -143,6 +153,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [ @@ -244,6 +264,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt index d7f82d0..57451274 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt
@@ -42,6 +42,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [ @@ -153,6 +163,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [ @@ -264,6 +284,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt index ee1ad4ca..e62fda7 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt
@@ -26,6 +26,12 @@ { "name": "LayoutNGBlockFlow HTML (foreground) Layer", "bounds": [785, 1021] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-under-transform-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-under-transform-expected.txt index 7b6ebce..e234fb0d 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/fixed-position-under-transform-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/fixed-position-under-transform-expected.txt
@@ -18,6 +18,12 @@ "bounds": [500, 500], "contentsOpaque": true, "backgroundColor": "#008000" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/overlap-animation-clipping-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/overlap-animation-clipping-expected.txt index f5b1992..87610c1 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/overlap-animation-clipping-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/overlap-animation-clipping-expected.txt
@@ -47,6 +47,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFF00", "transform": 9 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/overlap-animation-container-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/overlap-animation-container-expected.txt index 43a82e18..e2ca5dd 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/overlap-animation-container-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/overlap-animation-container-expected.txt
@@ -33,6 +33,12 @@ "position": [-51, 451], "bounds": [100, 100], "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -122,6 +128,12 @@ "position": [-51, 87], "bounds": [174, 464], "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/layer-creation/spanOverlapsCanvas-expected.txt b/third_party/blink/web_tests/compositing/layer-creation/spanOverlapsCanvas-expected.txt index dac32d8..cf64eced 100644 --- a/third_party/blink/web_tests/compositing/layer-creation/spanOverlapsCanvas-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-creation/spanOverlapsCanvas-expected.txt
@@ -12,6 +12,11 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='world'", + "bounds": [100, 50], + "transform": 1 + }, + { "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (positioned) DIV id='output')", "bounds": [100, 50], "transform": 1
diff --git a/third_party/blink/web_tests/compositing/layer-tree-expected.txt b/third_party/blink/web_tests/compositing/layer-tree-expected.txt index 75f042a9..a16581c 100644 --- a/third_party/blink/web_tests/compositing/layer-tree-expected.txt +++ b/third_party/blink/web_tests/compositing/layer-tree-expected.txt
@@ -1,69 +1,7 @@ -Layer tree: -{ - "name": "Root Transform Layer", - "drawsContent": false, - "children": [ - { - "name": "Inner Viewport Scroll Layer", - "bounds": [800, 600], - "drawsContent": false, - "children": [ - { - "name": "LayoutView #document", - "bounds": [800, 600], - "drawsContent": false, - "backgroundColor": "#FFFFFF", - "children": [ - { - "name": "Scrolling Layer", - "bounds": [780, 580], - "drawsContent": false, - "children": [ - { - "name": "Scrolling Contents Layer", - "bounds": [1200, 900], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" - } - ] - } - ] - } - ] - }, - { - "name": "Overflow Controls Host Layer", - "bounds": [800, 600], - "drawsContent": false, - "children": [ - { - "name": "Horizontal Scrollbar Layer", - "position": [0, 580], - "bounds": [780, 20] - }, - { - "name": "Vertical Scrollbar Layer", - "position": [780, 0], - "bounds": [20, 580] - }, - { - "name": "Scroll Corner Layer", - "position": [780, 580], - "bounds": [20, 20] - } - ] - } - ] -} - Layer list { "layers": [ { - "name": "Root Transform Layer", - "drawsContent": false - }, - { "name": "Inner Viewport Scroll Layer", "bounds": [800, 600], "drawsContent": false @@ -75,22 +13,12 @@ "backgroundColor": "#FFFFFF" }, { - "name": "Scrolling Layer", - "bounds": [780, 580], - "drawsContent": false - }, - { "name": "Scrolling Contents Layer", "bounds": [1200, 900], "contentsOpaque": true, "backgroundColor": "#FFFFFF" }, { - "name": "Overflow Controls Host Layer", - "bounds": [800, 600], - "drawsContent": false - }, - { "name": "Horizontal Scrollbar Layer", "position": [0, 580], "bounds": [780, 20]
diff --git a/third_party/blink/web_tests/compositing/layer-tree.html b/third_party/blink/web_tests/compositing/layer-tree.html index 9a1bb24..bfda22f0 100644 --- a/third_party/blink/web_tests/compositing/layer-tree.html +++ b/third_party/blink/web_tests/compositing/layer-tree.html
@@ -12,11 +12,7 @@ testRunner.dumpAsText(); testRunner.setCustomTextOutput( - "Layer tree:\n" + - internals.layerTreeAsText(document, - internals.OUTPUT_AS_LAYER_TREE | - internals.LAYER_TREE_INCLUDES_ROOT_LAYER) + - "\nLayer list\n" + + "Layer list\n" + internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_ROOT_LAYER)); </script>
diff --git a/third_party/blink/web_tests/compositing/masks/mask-layer-size-expected.txt b/third_party/blink/web_tests/compositing/masks/mask-layer-size-expected.txt index 31448dd..edee064 100644 --- a/third_party/blink/web_tests/compositing/masks/mask-layer-size-expected.txt +++ b/third_party/blink/web_tests/compositing/masks/mask-layer-size-expected.txt
@@ -10,12 +10,11 @@ "name": "LayoutNGBlockFlow DIV id='masked'", "bounds": [400, 200], "backgroundColor": "#000000", - "maskLayer": [ - { - "name": "Mask Layer", - "bounds": [400, 200] - } - ], + "transform": 1 + }, + { + "name": "Mask Layer", + "bounds": [400, 200], "transform": 1 } ],
diff --git a/third_party/blink/web_tests/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt b/third_party/blink/web_tests/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt index a23604a..fbf0d28 100644 --- a/third_party/blink/web_tests/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt
@@ -26,6 +26,18 @@ "transform": 6 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/compositing/overflow/composited-scrolling-paint-phases-expected.txt b/third_party/blink/web_tests/compositing/overflow/composited-scrolling-paint-phases-expected.txt index 2c7c1e1..c93e9e2 100644 --- a/third_party/blink/web_tests/compositing/overflow/composited-scrolling-paint-phases-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/composited-scrolling-paint-phases-expected.txt
@@ -52,6 +52,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 186], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [186, 1], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [186, 186], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/compositing/overflow/content-gains-scrollbars-expected.txt b/third_party/blink/web_tests/compositing/overflow/content-gains-scrollbars-expected.txt index bdcca32..b8f418c 100644 --- a/third_party/blink/web_tests/compositing/overflow/content-gains-scrollbars-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/content-gains-scrollbars-expected.txt
@@ -12,16 +12,40 @@ "transform": 1 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 100], + "transform": 1 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [100, 15], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [85, 15], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 85], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [85, 85], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/compositing/overflow/overflow-scrollbar-layers-expected.txt b/third_party/blink/web_tests/compositing/overflow/overflow-scrollbar-layers-expected.txt index 2f580d4..be64b0a 100644 --- a/third_party/blink/web_tests/compositing/overflow/overflow-scrollbar-layers-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/overflow-scrollbar-layers-expected.txt
@@ -12,16 +12,40 @@ "transform": 1 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 100], + "transform": 1 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [100, 15], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [85, 15], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 85], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [85, 85], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/compositing/overflow/overflow-visible-with-touch-expected.txt b/third_party/blink/web_tests/compositing/overflow/overflow-visible-with-touch-expected.txt index bdce9d6c..0661e08 100644 --- a/third_party/blink/web_tests/compositing/overflow/overflow-visible-with-touch-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/overflow-visible-with-touch-expected.txt
@@ -5,6 +5,23 @@ "bounds": [1008, 1008], "contentsOpaque": true, "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
diff --git a/third_party/blink/web_tests/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt b/third_party/blink/web_tests/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt index 61f5db6..6aa2a8b 100644 --- a/third_party/blink/web_tests/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt
@@ -20,6 +20,27 @@ "name": "Scrolling Contents Layer", "bounds": [1200, 10000], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1193, 0], + "bounds": [7, 1000], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 593], + "bounds": [793, 7] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [793, 0], + "bounds": [7, 593] + }, + { + "name": "Scroll Corner Layer", + "position": [793, 593], + "bounds": [7, 7] } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/overflow/resources/composited-scroll.js b/third_party/blink/web_tests/compositing/overflow/resources/composited-scroll.js index ea10b1b..587c4c4 100644 --- a/third_party/blink/web_tests/compositing/overflow/resources/composited-scroll.js +++ b/third_party/blink/web_tests/compositing/overflow/resources/composited-scroll.js
@@ -1,39 +1,37 @@ +function layerSubtreeHasCompositedScrollLayer(layer, contents_opaque = undefined) { + return layer.children && layer.children.some(function (child) { + if (child.name == "Scrolling Contents Layer") { + if (contents_opaque === undefined) + return true; + if (contents_opaque == !!child.contentsOpaque) + return true; + } + if (layerSubtreeHasCompositedScrollLayer(child, contents_opaque)) + return true; + return false; + }); +} + function elementSubtreeHasCompositedScrollLayers(element) { var layerTree = internals.elementLayerTreeAsText(element); if (layerTree === '') return false; - var layers = JSON.parse(layerTree); - var foundScrollingContentsLayer = false; - layers["layers"].forEach(function(layer) { - if (layer.name == "Scrolling Contents Layer") - foundScrollingContentsLayer = true; - }); - - return foundScrollingContentsLayer; + var layer = JSON.parse(layerTree); + return layerSubtreeHasCompositedScrollLayer(layer); } function elementSubtreeHasOpaqueCompositedScrollingContentsLayer(element) { var layerTree = internals.elementLayerTreeAsText(element); if (layerTree === '') return false; - var layers = JSON.parse(layerTree); - var found = false; - layers["layers"].forEach(function(layer) { - if (layer.name == "Scrolling Contents Layer") - found = found || layer.contentsOpaque; - }); - return found; + var layer = JSON.parse(layerTree); + return layerSubtreeHasCompositedScrollLayer(layer, true); } function elementSubtreeHasNotOpaqueCompositedScrollingContentsLayer(element) { var layerTree = internals.elementLayerTreeAsText(element); if (layerTree === '') return false; - var layers = JSON.parse(layerTree); - var found = false; - layers["layers"].forEach(function(layer) { - if (layer.name == "Scrolling Contents Layer") - found = found || !layer.contentsOpaque; - }); - return found; -} + var layer = JSON.parse(layerTree); + return layerSubtreeHasCompositedScrollLayer(layer, false); +} \ No newline at end of file
diff --git a/third_party/blink/web_tests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt b/third_party/blink/web_tests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt index 1e08ad8..6551461 100644 --- a/third_party/blink/web_tests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt
@@ -41,6 +41,13 @@ "bounds": [60, 128], "backfaceVisibility": "hidden", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [94, 1], + "bounds": [7, 100], + "backfaceVisibility": "hidden", + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-expected.txt b/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-expected.txt index 77c1859d..af60aeb 100644 --- a/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-expected.txt
@@ -27,6 +27,12 @@ "transform": 2 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='outer B'", "position": [-21, -21], "bounds": [352, 294], @@ -54,6 +60,12 @@ "transform": 5 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 4 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='outer C'", "position": [-21, -21], "bounds": [352, 294], @@ -81,6 +93,12 @@ "transform": 8 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 7 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='outer D'", "position": [-21, -21], "bounds": [352, 294], @@ -112,6 +130,12 @@ "contentsOpaque": true, "backgroundColor": "#DDDDDD", "transform": 12 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 11 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt b/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt index 965d460..9abfb82e 100644 --- a/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt
@@ -38,6 +38,12 @@ "bounds": [220, 236], "backgroundColor": "#FFFFFF", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 2 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned-expected.txt b/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned-expected.txt index f165bd64..5b4b269 100644 --- a/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned-expected.txt
@@ -38,6 +38,12 @@ "bounds": [220, 236], "backgroundColor": "#FFFFFF", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 2 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt b/third_party/blink/web_tests/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt index 9d95c0c..7b64742 100644 --- a/third_party/blink/web_tests/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt
@@ -11,6 +11,16 @@ "bounds": [320, 340] }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 325], + "bounds": [305, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [305, 0], + "bounds": [15, 325] + }, + { "name": "Scroll Corner Layer", "position": [305, 325], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt b/third_party/blink/web_tests/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt index 3d781d9..1318cc3b 100644 --- a/third_party/blink/web_tests/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt +++ b/third_party/blink/web_tests/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
@@ -18,6 +18,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -54,6 +66,18 @@ "transform": 5 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 4 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -78,6 +102,18 @@ "transform": 7 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 7 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 7 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -114,6 +150,18 @@ "transform": 11 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 10 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 10 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -150,6 +198,18 @@ "transform": 14 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 13 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 13 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -174,6 +234,18 @@ "transform": 16 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 16 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 16 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -204,6 +276,18 @@ "transform": 19 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 19 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 19 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -228,6 +312,18 @@ "transform": 22 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 22 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 22 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -258,6 +354,18 @@ "transform": 26 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 25 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 25 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -289,6 +397,18 @@ "transform": 29 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 29 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 29 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -326,6 +446,18 @@ "transform": 34 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 33 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 33 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -357,6 +489,18 @@ "transform": 37 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 37 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 37 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -579,6 +723,12 @@ "position": [0, 56], "bounds": [75, 80], "transform": 58 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/rtl/rtl-absolute-overflow-expected.txt b/third_party/blink/web_tests/compositing/rtl/rtl-absolute-overflow-expected.txt index ec078b6..b29b1a0d 100644 --- a/third_party/blink/web_tests/compositing/rtl/rtl-absolute-overflow-expected.txt +++ b/third_party/blink/web_tests/compositing/rtl/rtl-absolute-overflow-expected.txt
@@ -13,6 +13,23 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt b/third_party/blink/web_tests/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt index dbd39d9..ecc12fa 100644 --- a/third_party/blink/web_tests/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt +++ b/third_party/blink/web_tests/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt
@@ -13,6 +13,23 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/rtl/rtl-fixed-overflow-expected.txt b/third_party/blink/web_tests/compositing/rtl/rtl-fixed-overflow-expected.txt index b8820c85..b72861de 100644 --- a/third_party/blink/web_tests/compositing/rtl/rtl-fixed-overflow-expected.txt +++ b/third_party/blink/web_tests/compositing/rtl/rtl-fixed-overflow-expected.txt
@@ -20,6 +20,23 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 3 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt b/third_party/blink/web_tests/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt index 9c586104..795d8a8 100644 --- a/third_party/blink/web_tests/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt +++ b/third_party/blink/web_tests/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt
@@ -20,6 +20,23 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 3 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt b/third_party/blink/web_tests/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt index a6223576..9176798 100644 --- a/third_party/blink/web_tests/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt +++ b/third_party/blink/web_tests/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
@@ -25,6 +25,15 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 385], + "bounds": [385, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "bounds": [15, 385] + }, + { "name": "Scroll Corner Layer", "position": [0, 385], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt b/third_party/blink/web_tests/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt index eae6632c..66ed47ff 100644 --- a/third_party/blink/web_tests/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt +++ b/third_party/blink/web_tests/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
@@ -25,6 +25,15 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 385], + "bounds": [385, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "bounds": [15, 385] + }, + { "name": "Scroll Corner Layer", "position": [0, 385], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt b/third_party/blink/web_tests/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt index 642e7936..0a240a1 100644 --- a/third_party/blink/web_tests/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt +++ b/third_party/blink/web_tests/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
@@ -32,6 +32,15 @@ "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 385], + "bounds": [385, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "bounds": [15, 385] + }, + { "name": "Scroll Corner Layer", "position": [0, 385], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt b/third_party/blink/web_tests/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt index 642e7936..0a240a1 100644 --- a/third_party/blink/web_tests/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt +++ b/third_party/blink/web_tests/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
@@ -32,6 +32,15 @@ "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 385], + "bounds": [385, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "bounds": [15, 385] + }, + { "name": "Scroll Corner Layer", "position": [0, 385], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.txt b/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.txt index 1dcb86c..f907918 100644 --- a/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.txt +++ b/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
@@ -42,10 +42,28 @@ "transform": 4 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 195], + "bounds": [193, 7], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [195, 2], + "bounds": [7, 193], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [195, 195], "bounds": [7, 7], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [395, 2], + "bounds": [7, 400], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/squashing/composited-bounds-for-negative-z-expected.txt b/third_party/blink/web_tests/compositing/squashing/composited-bounds-for-negative-z-expected.txt index d1fec12b..e9a7c70 100644 --- a/third_party/blink/web_tests/compositing/squashing/composited-bounds-for-negative-z-expected.txt +++ b/third_party/blink/web_tests/compositing/squashing/composited-bounds-for-negative-z-expected.txt
@@ -21,6 +21,12 @@ "transform": 2 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 300], + "transform": 2 + }, + { "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (relative positioned) DIV)", "bounds": [285, 1000], "transform": 2
diff --git a/third_party/blink/web_tests/compositing/squashing/dont-squash-into-animated-layers.html b/third_party/blink/web_tests/compositing/squashing/dont-squash-into-animated-layers.html index fb3a091..6c633be 100644 --- a/third_party/blink/web_tests/compositing/squashing/dont-squash-into-animated-layers.html +++ b/third_party/blink/web_tests/compositing/squashing/dont-squash-into-animated-layers.html
@@ -14,7 +14,7 @@ } </style> <div id="target" class="animated" style="position: absolute; width: 200px; height: 200px; background: lightblue"></div> -<div style="position: absolute; width: 200px; height: 200px; top: 100px; left: 100px; background: lightgray"></div> +<div id="affected" style="position: absolute; width: 200px; height: 200px; top: 100px; left: 100px; background: lightgray"></div> <script src="../../resources/testharness.js"></script> <script> if (window.testRunner) { @@ -23,8 +23,7 @@ onload = function() { target.style.transform = "translateX(10px)"; if (window.internals) { - var layers = JSON.parse(internals.layerTreeAsText(document, 1))["layers"] - var nonAnimatedDIVLayer = layers[2]; + var nonAnimatedDIVLayer = JSON.parse(internals.elementLayerTreeAsText(document.getElementById("affected"), internals.LAYER_TREE_INCLUDES_DEBUG_INFO)); assert_true(nonAnimatedDIVLayer.compositingReasons[1] == "Layer was separately composited because it could not be squashed."); assert_true(nonAnimatedDIVLayer.squashingDisallowedReasons[0] == "Cannot squash into a layer that is animating."); }
diff --git a/third_party/blink/web_tests/compositing/squashing/dont-squash-into-blend-mode.html b/third_party/blink/web_tests/compositing/squashing/dont-squash-into-blend-mode.html index 0df307a..d34acff7 100644 --- a/third_party/blink/web_tests/compositing/squashing/dont-squash-into-blend-mode.html +++ b/third_party/blink/web_tests/compositing/squashing/dont-squash-into-blend-mode.html
@@ -1,15 +1,14 @@ <!doctype HTML> Any errors will show below this line. <div id="target" style="position: absolute; width: 200px; height: 200px; will-change: transform; background: lightblue; mix-blend-mode: overlay;"></div> -<div style="position: absolute; width: 200px; height: 200px; top: 100px; left: 100px; background: lightgray"></div> +<div id="affected" style="position: absolute; width: 200px; height: 200px; top: 100px; left: 100px; background: lightgray"></div> <script src="../../resources/testharness.js"></script> <script> if (window.testRunner) testRunner.dumpAsText(); onload = function() { if (window.internals) { - var layers = JSON.parse(internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_DEBUG_INFO))["layers"]; - var nonBlendDIVlayer = layers[2]; + var nonBlendDIVlayer = JSON.parse(internals.elementLayerTreeAsText(document.getElementById("affected"), internals.LAYER_TREE_INCLUDES_DEBUG_INFO)); assert_true(nonBlendDIVlayer.compositingReasons[1] == "Layer was separately composited because it could not be squashed."); assert_true(nonBlendDIVlayer.squashingDisallowedReasons[0] == "Squashing a layer with blending is not supported."); }
diff --git a/third_party/blink/web_tests/compositing/squashing/frame-clip-squashed-scrolled-expected.txt b/third_party/blink/web_tests/compositing/squashing/frame-clip-squashed-scrolled-expected.txt index b3d4b08b5..83488ae 100644 --- a/third_party/blink/web_tests/compositing/squashing/frame-clip-squashed-scrolled-expected.txt +++ b/third_party/blink/web_tests/compositing/squashing/frame-clip-squashed-scrolled-expected.txt
@@ -6,6 +6,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-1-expected.txt b/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-1-expected.txt index ba28f5f3..3289cc1 100644 --- a/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-1-expected.txt +++ b/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-1-expected.txt
@@ -30,6 +30,12 @@ "position": [0, 100], "bounds": [200, 300], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -109,6 +115,12 @@ } ], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -172,6 +184,12 @@ "position": [0, 100], "bounds": [200, 300], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -261,6 +279,12 @@ } ], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-2-expected.txt b/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-2-expected.txt index 1e21fc95..9dc850c1 100644 --- a/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-2-expected.txt +++ b/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-2-expected.txt
@@ -29,6 +29,12 @@ "contentsOpaque": true, "backgroundColor": "#00FFFF", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -74,6 +80,12 @@ "contentsOpaque": true, "backgroundColor": "#00FFFF", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-2.html b/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-2.html index 80cf10fa..b47e22a 100644 --- a/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-2.html +++ b/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-2.html
@@ -61,12 +61,12 @@ // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block"; // Case 1 - document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document); // Case 2 window.scrollTo(0, 80); runAfterLayoutAndPaint(function() { - document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document); if (window.testRunner) { testRunner.notifyDone(); }
diff --git a/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-3-expected.txt b/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-3-expected.txt index a51ccb3..413ecfe4 100644 --- a/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-3-expected.txt +++ b/third_party/blink/web_tests/compositing/squashing/squash-above-fixed-3-expected.txt
@@ -37,6 +37,12 @@ "contentsOpaque": true, "backgroundColor": "#00FF00", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -107,6 +113,12 @@ "contentsOpaque": true, "backgroundColor": "#00FF00", "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -186,6 +198,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/compositing/update-paint-phases-expected.txt b/third_party/blink/web_tests/compositing/update-paint-phases-expected.txt index 0db1d7b..dc52ff8 100644 --- a/third_party/blink/web_tests/compositing/update-paint-phases-expected.txt +++ b/third_party/blink/web_tests/compositing/update-paint-phases-expected.txt
@@ -34,6 +34,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 86], + "bounds": [85, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [86, 1], + "bounds": [15, 85], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [86, 86], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-composited-reason-children-expected.txt b/third_party/blink/web_tests/css3/blending/mix-blend-mode-composited-reason-children-expected.txt index 32dac8e..3f6b0c61 100644 --- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-composited-reason-children-expected.txt +++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-composited-reason-children-expected.txt
@@ -18,6 +18,11 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutImage IMG class='accelerated'", + "bounds": [160, 90], + "transform": 1 + }, + { "name": "LayoutNGBlockFlow HTML (foreground) Layer", "bounds": [800, 600] }
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-2-stacking-contexts-expected.txt b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-2-stacking-contexts-expected.txt index 1844b2f5..2c2badf 100644 --- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-2-stacking-contexts-expected.txt +++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-2-stacking-contexts-expected.txt
@@ -12,6 +12,11 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutImage IMG class='accelerated blended'", + "bounds": [160, 90], + "transform": 1 + }, + { "name": "LayoutNGBlockFlow (positioned) DIV class='stacking-context'", "bounds": [160, 90], "contentsOpaque": true, @@ -19,6 +24,11 @@ "transform": 2 }, { + "name": "ContentsLayer for LayoutImage IMG class='accelerated blended'", + "bounds": [160, 90], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow HTML (foreground) Layer", "bounds": [800, 600] }
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-layer-expected.txt b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-layer-expected.txt index 8dba0c2..bcb5449 100644 --- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-layer-expected.txt +++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-layer-expected.txt
@@ -12,6 +12,11 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutImage IMG class='accelerated blended'", + "bounds": [160, 90], + "transform": 1 + }, + { "name": "LayoutNGBlockFlow HTML (foreground) Layer", "bounds": [800, 600] }
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-remove-expected.txt b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-remove-expected.txt index 8def472..f90c7379 100644 --- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-remove-expected.txt +++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolation-remove-expected.txt
@@ -20,6 +20,11 @@ "backfaceVisibility": "hidden", "backgroundColor": "#008000", "transform": 1 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='accelerated blended'", + "bounds": [160, 90], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-addresses.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-addresses.tentative-expected.txt index 35155a7..96e3eae 100644 --- a/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-addresses.tentative-expected.txt +++ b/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-addresses.tentative-expected.txt
@@ -1,6 +1,6 @@ This is a testharness.js-based test. PASS Relative URL-like addresses / should accept strings prefixed with ./, ../, or / -FAIL Relative URL-like addresses / should not accept strings prefixed with ./, ../, or / for data: base URLs assert_equals: expected "{\"imports\":{\"dotDotSlash\":[],\"dotSlash\":[],\"slash\":[]},\"scopes\":{}}" but got "{\"imports\":{\"dotDotSlash\":[\"http://web-platform.test:8001/import-maps/builtin-support.tentative/foo\"],\"dotSlash\":[\"http://web-platform.test:8001/import-maps/builtin-support.tentative/imported/foo\"],\"slash\":[\"http://web-platform.test:8001/foo\"]},\"scopes\":{}}" +FAIL Relative URL-like addresses / should not accept strings prefixed with ./, ../, or / for data: base URLs test helper does not support data: base URLs PASS Relative URL-like addresses / should accept the literal strings ./, ../, or / with no suffix PASS Relative URL-like addresses / should ignore percent-encoded variants of ./, ../, or / PASS Built-in module addresses / should accept URLs using the built-in module scheme
diff --git a/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-scope-keys.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-scope-keys.tentative-expected.txt index 501c084..a50431d4 100644 --- a/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-scope-keys.tentative-expected.txt +++ b/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-scope-keys.tentative-expected.txt
@@ -7,6 +7,6 @@ PASS Relative URL scope keys / should deduplicate based on URL parsing rules PASS Absolute URL scope keys / should accept all absolute URL scope keys, with or without fetch schemes FAIL Absolute URL scope keys / should parse absolute URL scope keys, ignoring unparseable ones assert_equals: expected "{\"imports\":{},\"scopes\":{\"https://base.example/path1/path2/example.org\":{},\"https://example.com/%41\":{},\"https://example.com///\":{},\"https://example.com/foo/\":{},\"https://example.net/\":{}}}" but got "{\"imports\":{},\"scopes\":{\"https://base.example/path1/path2/example.org\":{},\"https://ex%20ample.org/\":{},\"https://example.com///\":{},\"https://example.com/A\":{},\"https://example.com/foo/\":{},\"https://example.net/\":{}}}" -FAIL Absolute URL scope keys / should ignore relative URL scope keys when the base URL is a data: URL assert_equals: expected "{\"imports\":{},\"scopes\":{}}" but got "{\"imports\":{},\"scopes\":{\"http://web-platform.test:8001/foo\":{},\"http://web-platform.test:8001/import-maps/builtin-support.tentative/foo\":{},\"http://web-platform.test:8001/import-maps/builtin-support.tentative/imported/foo\":{}}}" +FAIL Absolute URL scope keys / should ignore relative URL scope keys when the base URL is a data: URL test helper does not support data: base URLs Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-specifier-keys.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-specifier-keys.tentative-expected.txt index 7f14731..dd9937092 100644 --- a/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-specifier-keys.tentative-expected.txt +++ b/third_party/blink/web_tests/external/wpt/import-maps/builtin-support.tentative/imported/parsing-specifier-keys.tentative-expected.txt
@@ -1,6 +1,6 @@ This is a testharness.js-based test. PASS Relative URL-like specifier keys / should absolutize strings prefixed with ./, ../, or / into the corresponding URLs -FAIL Relative URL-like specifier keys / should not absolutize strings prefixed with ./, ../, or / with a data: URL base assert_equals: expected "{\"imports\":{\"../foo\":[\"https://example.com/dotdotslash\"],\"./foo\":[\"https://example.com/dotslash\"],\"/foo\":[\"https://example.com/slash\"]},\"scopes\":{}}" but got "{\"imports\":{\"http://web-platform.test:8001/foo\":[\"https://example.com/slash\"],\"http://web-platform.test:8001/import-maps/builtin-support.tentative/foo\":[\"https://example.com/dotdotslash\"],\"http://web-platform.test:8001/import-maps/builtin-support.tentative/imported/foo\":[\"https://example.com/dotslash\"]},\"scopes\":{}}" +FAIL Relative URL-like specifier keys / should not absolutize strings prefixed with ./, ../, or / with a data: URL base test helper does not support data: base URLs PASS Relative URL-like specifier keys / should absolutize the literal strings ./, ../, or / with no suffix PASS Relative URL-like specifier keys / should treat percent-encoded variants of ./, ../, or / as bare specifiers FAIL Absolute URL specifier keys / should only accept absolute URL specifier keys with fetch schemes, treating others as bare specifiers assert_equals: expected "{\"imports\":{\"about:good\":[\"https://base.example/about\"],\"blob:good\":[\"https://base.example/blob\"],\"data:good\":[\"https://base.example/data\"],\"file:///good\":[\"https://base.example/file\"],\"filesystem:good\":[\"https://base.example/filesystem\"],\"ftp://good/\":[\"https://base.example/ftp/\"],\"http://good/\":[\"https://base.example/http/\"],\"https://good/\":[\"https://base.example/https/\"],\"import:bad\":[\"https://base.example/import\"],\"javascript:bad\":[\"https://base.example/javascript\"],\"mailto:bad\":[\"https://base.example/mailto\"],\"wss:bad\":[\"https://base.example/wss\"]},\"scopes\":{}}" but got "{\"imports\":{\"about:good\":[\"https://base.example/about\"],\"blob:good\":[\"https://base.example/blob\"],\"data:good\":[\"https://base.example/data\"],\"file:///good\":[\"https://base.example/file\"],\"filesystem:good\":[\"https://base.example/filesystem\"],\"ftp://good/\":[\"https://base.example/ftp/\"],\"http://good/\":[\"https://base.example/http/\"],\"https://good/\":[\"https://base.example/https/\"],\"import:bad\":[\"https://base.example/import\"],\"javascript:bad\":[\"https://base.example/javascript\"],\"mailto:bad\":[\"https://base.example/mailto\"],\"wss://bad/\":[\"https://base.example/wss\"]},\"scopes\":{}}"
diff --git a/third_party/blink/web_tests/external/wpt/import-maps/resources/jest-test-helper.js b/third_party/blink/web_tests/external/wpt/import-maps/resources/jest-test-helper.js index e6f12cd..8fa7b65a 100644 --- a/third_party/blink/web_tests/external/wpt/import-maps/resources/jest-test-helper.js +++ b/third_party/blink/web_tests/external/wpt/import-maps/resources/jest-test-helper.js
@@ -89,6 +89,11 @@ // Currently document.write() is used to make everything synchronous, which // is just needed for running the existing Jest-based tests easily. function parseFromString(mapString, mapBaseURL) { + // We can't test data: base URLs because <base> rejects data: URLs. + if (new URL(mapBaseURL).protocol === 'data:') { + throw Error('test helper does not support data: base URLs'); + } + const iframe = document.createElement('iframe'); document.body.appendChild(iframe); iframe.contentDocument.write(`
diff --git a/third_party/blink/web_tests/external/wpt/wake-lock/wakelockpermissiondescriptor.https.html b/third_party/blink/web_tests/external/wpt/wake-lock/wakelockpermissiondescriptor.https.html new file mode 100644 index 0000000..673990f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/wake-lock/wakelockpermissiondescriptor.https.html
@@ -0,0 +1,16 @@ +<!DOCTYPE html> +<link rel="help" href="https://w3c.github.io/wake-lock/#the-wakelockpermissiondescriptor-dictionary"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +// Checking for the permission status requires testdriver.js support for permissions. +// See https://github.com/web-platform-tests/wpt/issues/5671. + +promise_test(t => { + return promise_rejects(t, new TypeError(), navigator.permissions.query({ name:'wake-lock' })); +}, "WakeLockPermissionDescriptor's type attribute is required"); + +promise_test(t => { + return promise_rejects(t, new TypeError(), navigator.permissions.query({ name: 'wake-lock', type: 'foo' })); +}, "WakeLockPermissionDescriptor's type attribute must be a WakeLockType"); +</script> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-max-value.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-max-value.html new file mode 100644 index 0000000..d74a5f6 --- /dev/null +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-max-value.html
@@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../../resources/testharness.js"></script> +<script src="../../../../resources/testharnessreport.js"></script> +<script src="../../../forms/resources/common.js"></script> +<script src="../../../forms/resources/picker-common.js"></script> +<script src="../../../forms/calendar-picker/resources/calendar-picker-common.js"></script> +</head> +<body> +<input type="time" id="time" value="14:15" max="17:12"> +<script> + +let t = async_test('Test select invalid max value in time popup'); + +function selectValue() { + let timeElement = document.getElementById("time"); + timeElement.addEventListener("change", t.step_func_done(() => { + assert_equals(timeElement.value, "18:17"); + assert_true(timeElement.validity.rangeOverflow); + assert_false(timeElement.validity.valid); + })); + clickTimeCellAt(0, 4); + clickTimeCellAt(1, 2); + clickSubmitTimeButton(); +} + +t.step(() => { + openPicker(document.getElementById('time'), t.step_func(selectValue), t.step_func_done(() => { + assert_false(internals.runtimeFlags.formControlsRefreshEnabled, "Popup did not open."); + })); +}); +</script> +</body> +</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-min-value.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-min-value.html new file mode 100644 index 0000000..2f6f090b --- /dev/null +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-min-value.html
@@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../../resources/testharness.js"></script> +<script src="../../../../resources/testharnessreport.js"></script> +<script src="../../../forms/resources/common.js"></script> +<script src="../../../forms/resources/picker-common.js"></script> +<script src="../../../forms/calendar-picker/resources/calendar-picker-common.js"></script> +</head> +<body> +<input type="time" id="time" value="14:15" min="10:12"> +<script> + +let t = async_test('Test select invalid min value in time popup'); + +function selectValue() { + let timeElement = document.getElementById("time"); + timeElement.addEventListener("change", t.step_func_done(() => { + assert_equals(timeElement.value, "06:16"); + assert_true(timeElement.validity.rangeUnderflow); + assert_false(timeElement.validity.valid); + })); + clickTimeCellAt(0, 4); + clickTimeCellAt(1, 1); + clickTimeCellAt(2, 1); + clickSubmitTimeButton(); +} + +t.step(() => { + openPicker(document.getElementById('time'), t.step_func(selectValue), t.step_func_done(() => { + assert_false(internals.runtimeFlags.formControlsRefreshEnabled, "Popup did not open."); + })); +}); +</script> +</body> +</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-12-AM.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-12-AM.html new file mode 100644 index 0000000..d991691 --- /dev/null +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-12-AM.html
@@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../../resources/testharness.js"></script> +<script src="../../../../resources/testharnessreport.js"></script> +<script src="../../../forms/resources/common.js"></script> +<script src="../../../forms/resources/picker-common.js"></script> +<script src="../../../forms/calendar-picker/resources/calendar-picker-common.js"></script> +</head> +<body> +<input type="time" id="time" value="22:15" step="3"> +<script> + +let t = async_test('Test select invalid 12AM value in time popup'); + +function selectValue() { + let timeElement = document.getElementById("time"); + timeElement.addEventListener("change", t.step_func_done(() => { + assert_equals(timeElement.value, "00:17:02"); + assert_true(timeElement.validity.stepMismatch); + assert_false(timeElement.validity.valid); + })); + clickTimeCellAt(0, 2); + clickTimeCellAt(1, 2); + clickTimeCellAt(2, 2); + clickTimeCellAt(3, 1); + clickSubmitTimeButton(); +} + +t.step(() => { + openPicker(document.getElementById('time'), t.step_func(selectValue), t.step_func_done(() => { + assert_false(internals.runtimeFlags.formControlsRefreshEnabled, "Popup did not open."); + })); +}); +</script> +</body> +</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-12-PM.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-12-PM.html new file mode 100644 index 0000000..106782a --- /dev/null +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-12-PM.html
@@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../../resources/testharness.js"></script> +<script src="../../../../resources/testharnessreport.js"></script> +<script src="../../../forms/resources/common.js"></script> +<script src="../../../forms/resources/picker-common.js"></script> +<script src="../../../forms/calendar-picker/resources/calendar-picker-common.js"></script> +</head> +<body> +<input type="time" id="time" value="23:15" step="2"> +<script> + +let t = async_test('Test select invalid 12PM value in time popup'); + +function selectValue() { + let timeElement = document.getElementById("time"); + timeElement.addEventListener("change", t.step_func_done(() => { + assert_equals(timeElement.value, "12:17:05"); + assert_true(timeElement.validity.stepMismatch); + assert_false(timeElement.validity.valid); + })); + clickTimeCellAt(0, 1); + clickTimeCellAt(1, 2); + clickTimeCellAt(2, 5); + clickSubmitTimeButton(); +} + +t.step(() => { + openPicker(document.getElementById('time'), t.step_func(selectValue), t.step_func_done(() => { + assert_false(internals.runtimeFlags.formControlsRefreshEnabled, "Popup did not open."); + })); +}); +</script> +</body> +</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-24-hour.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-24-hour.html new file mode 100644 index 0000000..44ae93c --- /dev/null +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-invalid-value-24-hour.html
@@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../../resources/testharness.js"></script> +<script src="../../../../resources/testharnessreport.js"></script> +<script src="../../../forms/resources/common.js"></script> +<script src="../../../forms/resources/picker-common.js"></script> +<script src="../../../forms/calendar-picker/resources/calendar-picker-common.js"></script> +<script> +if (window.internals) + internals.settings.setLangAttributeAwareFormControlUIEnabled(true); +</script> +</head> +<body> +<input type="time" id="time" value="23:15:00" step="2" lang="ru"> +<script> + +let t = async_test('Test select invalid 24h value in time popup'); + +function selectValue() { + let timeElement = document.getElementById("time"); + timeElement.addEventListener("change", t.step_func_done(() => { + assert_equals(timeElement.value, "00:17:05"); + assert_true(timeElement.validity.stepMismatch); + assert_false(timeElement.validity.valid); + })); + clickTimeCellAt(0, 1); + clickTimeCellAt(1, 2); + clickTimeCellAt(2, 5); + clickSubmitTimeButton(); +} + +t.step(() => { + openPicker(document.getElementById('time'), t.step_func(selectValue), t.step_func_done(() => { + assert_false(internals.runtimeFlags.formControlsRefreshEnabled, "Popup did not open."); + })); +}); +</script> +</body> +</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-value-step2.html b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-value-step2.html new file mode 100644 index 0000000..6144d926 --- /dev/null +++ b/third_party/blink/web_tests/fast/forms/controls-new-ui/time-picker/time-picker-select-value-step2.html
@@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> +<head> +<script src="../../../../resources/testharness.js"></script> +<script src="../../../../resources/testharnessreport.js"></script> +<script src="../../../forms/resources/common.js"></script> +<script src="../../../forms/resources/picker-common.js"></script> +<script src="../../../forms/calendar-picker/resources/calendar-picker-common.js"></script> +</head> +<body> +<input type="time" id="time" value="14:15:00" step="2"> +<script> + +let t = async_test('Test select invalid value in time popup'); + +function selectValue() { + let timeElement = document.getElementById("time"); + timeElement.addEventListener("change", t.step_func_done(() => { + assert_equals(timeElement.value, "18:16:01"); + assert_true(timeElement.validity.stepMismatch); + assert_false(timeElement.validity.valid); + })); + clickTimeCellAt(0, 4); + clickTimeCellAt(1, 1); + clickTimeCellAt(2, 1); + clickSubmitTimeButton(); +} + +t.step(() => { + openPicker(document.getElementById('time'), t.step_func(selectValue), t.step_func_done(() => { + assert_false(internals.runtimeFlags.formControlsRefreshEnabled, "Popup did not open."); + })); +}); +</script> +</body> +</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/absolute-inside-out-of-view-fixed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/absolute-inside-out-of-view-fixed-expected.txt index 74b03a5..3732492 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/absolute-inside-out-of-view-fixed-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/absolute-inside-out-of-view-fixed-expected.txt
@@ -11,6 +11,12 @@ "name": "LayoutBlockFlow (positioned) DIV class='fixed'", "bounds": [100, 100], "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/geometry/bounds-ignores-hidden-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/geometry/bounds-ignores-hidden-expected.txt index f8f9b0d..c0ef39c 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/geometry/bounds-ignores-hidden-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/geometry/bounds-ignores-hidden-expected.txt
@@ -11,6 +11,23 @@ "position": [10, 10], "bounds": [50, 50], "contentsOpaque": true + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/become-composited-nested-iframes-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/become-composited-nested-iframes-expected.txt index 946cba0..a2a6ac5f 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/become-composited-nested-iframes-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/become-composited-nested-iframes-expected.txt
@@ -67,6 +67,12 @@ "bounds": [100, 100], "contentsOpaque": true, "backgroundColor": "#0000FF" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/become-overlapped-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/become-overlapped-iframe-expected.txt index 33989de..fc40ec9 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/become-overlapped-iframe-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/become-overlapped-iframe-expected.txt
@@ -25,6 +25,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [305, 0], + "bounds": [15, 170], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV id='overlay'", "bounds": [150, 150], "backgroundColor": "#00000099",
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/composited-parent-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/composited-parent-iframe-expected.txt index 559f181..64fc1028 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/composited-parent-iframe-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/composited-parent-iframe-expected.txt
@@ -24,6 +24,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe-delayed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe-delayed-expected.txt index 17c62a5..61117227 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe-delayed-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
@@ -28,6 +28,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutBlockFlow DIV id='box' class='composited'", "bounds": [100, 100], "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe-expected.txt index 09468b1..8745837d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe2-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe2-expected.txt index 658642e3..dcd8db8 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe2-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe2-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe3-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe3-expected.txt index 157e20e9..763e69a9 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe3-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/connect-compositing-iframe3-expected.txt
@@ -24,6 +24,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/enter-compositing-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/enter-compositing-iframe-expected.txt index 09468b1..8745837d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/enter-compositing-iframe-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/enter-compositing-iframe-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/iframe-resize-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/iframe-resize-expected.txt index 571379b..d067aa3 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/iframe-resize-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/iframe-resize-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 120], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/iframe-size-from-zero-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/iframe-size-from-zero-expected.txt index 00466768..3a0ba53 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/iframe-size-from-zero-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/iframe-size-from-zero-expected.txt
@@ -25,6 +25,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/invisible-nested-iframe-show-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/invisible-nested-iframe-show-expected.txt index 25ca3e982..ee5fded 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/invisible-nested-iframe-show-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/invisible-nested-iframe-show-expected.txt
@@ -36,6 +36,12 @@ "transform": 5 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutBlockFlow DIV class='box'", "bounds": [210, 210], "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/overlapped-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/overlapped-iframe-expected.txt index 4beda0e..0ecd31d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/overlapped-iframe-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/overlapped-iframe-expected.txt
@@ -26,6 +26,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='overlay'", "bounds": [50, 50], "backgroundColor": "#00000033",
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/overlapped-nested-iframes-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/overlapped-nested-iframes-expected.txt index d3115742..acbd9c8 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/overlapped-nested-iframes-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/overlapped-nested-iframes-expected.txt
@@ -67,6 +67,12 @@ "name": "LayoutBlockFlow (positioned) DIV id='banner'", "bounds": [785, 120], "backgroundColor": "#00000080" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/resizer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/resizer-expected.txt index 968852c..8cb0c91 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/resizer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/resizer-expected.txt
@@ -25,6 +25,12 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "Scroll Corner Layer", "position": [287, 137], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/scrolling-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/scrolling-iframe-expected.txt index cf9a651..ac66ea9b 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/scrolling-iframe-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/iframes/scrolling-iframe-expected.txt
@@ -26,6 +26,18 @@ "transform": 4 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 135], + "bounds": [285, 15], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 135], + "transform": 2 + }, + { "name": "Scroll Corner Layer", "position": [285, 135], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-and-transform-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-and-transform-expected.txt index d9e52fe5..40c5be1 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-and-transform-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-and-transform-expected.txt
@@ -19,6 +19,12 @@ "bounds": [500, 500], "contentsOpaque": true, "backgroundColor": "#008000" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt index 2819154c..1b304246 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt
@@ -13,6 +13,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -50,6 +56,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -89,6 +101,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt index ee1d2b9..1779682a 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt
@@ -22,6 +22,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFF00", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-no-content-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-no-content-expected.txt index c9e3471..d6b5c81 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-no-content-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-no-content-expected.txt
@@ -12,6 +12,12 @@ "contentsOpaque": true, "backgroundColor": "#808080", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt index 6f84788..af3138d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt
@@ -20,6 +20,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 286], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [286, 1], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [286, 286], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt index fa60f39..f93db11 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt
@@ -23,6 +23,12 @@ "name": "LayoutIFrame (positioned) IFRAME id='iframe3'", "bounds": [154, 154], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-expected.txt index 055da79..c6094c3 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-expected.txt
@@ -34,6 +34,12 @@ { "name": "LayoutBlockFlow HTML (foreground) Layer", "bounds": [785, 1021] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt index 3ab39dc..a56471d2 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt
@@ -19,6 +19,23 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [ @@ -60,6 +77,23 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 3 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt index 18fbfbb..73fcd62 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt
@@ -42,6 +42,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [ @@ -143,6 +153,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [ @@ -244,6 +264,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt index adaafdbd..5153e03 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt
@@ -42,6 +42,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [ @@ -153,6 +163,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [ @@ -264,6 +284,16 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 1 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt index 79a751f..2b06a446 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt
@@ -26,6 +26,12 @@ { "name": "LayoutBlockFlow HTML (foreground) Layer", "bounds": [785, 1021] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-under-transform-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-under-transform-expected.txt index 5d3e9d5..2577e49 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-under-transform-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/fixed-position-under-transform-expected.txt
@@ -18,6 +18,12 @@ "bounds": [500, 500], "contentsOpaque": true, "backgroundColor": "#008000" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt index 02fc149..8be9e74 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt
@@ -20,6 +20,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/overlap-animation-clipping-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/overlap-animation-clipping-expected.txt index e5c40a4..b61a7f6 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/overlap-animation-clipping-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/overlap-animation-clipping-expected.txt
@@ -47,6 +47,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFF00", "transform": 9 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/overlap-animation-container-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/overlap-animation-container-expected.txt index 70a3e0a6..b4deb11 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/overlap-animation-container-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/overlap-animation-container-expected.txt
@@ -33,6 +33,12 @@ "position": [-51, 451], "bounds": [100, 100], "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -122,6 +128,12 @@ "position": [-51, 87], "bounds": [174, 464], "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/spanOverlapsCanvas-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/spanOverlapsCanvas-expected.txt index 12b80e89..51451f2 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/spanOverlapsCanvas-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/layer-creation/spanOverlapsCanvas-expected.txt
@@ -12,6 +12,11 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutHTMLCanvas CANVAS id='world'", + "bounds": [100, 50], + "transform": 1 + }, + { "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='output')", "bounds": [100, 50], "transform": 1
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/masks/mask-layer-size-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/masks/mask-layer-size-expected.txt index 37704706..1930db8 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/masks/mask-layer-size-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/masks/mask-layer-size-expected.txt
@@ -10,12 +10,11 @@ "name": "LayoutBlockFlow DIV id='masked'", "bounds": [400, 200], "backgroundColor": "#000000", - "maskLayer": [ - { - "name": "Mask Layer", - "bounds": [400, 200] - } - ], + "transform": 1 + }, + { + "name": "Mask Layer", + "bounds": [400, 200], "transform": 1 } ],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt index 7c96e8e..d56f7045 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt
@@ -26,6 +26,18 @@ "transform": 6 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/composited-scrolling-paint-phases-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/composited-scrolling-paint-phases-expected.txt index f395ca3..912e1cf 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/composited-scrolling-paint-phases-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/composited-scrolling-paint-phases-expected.txt
@@ -52,6 +52,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 186], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [186, 1], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [186, 186], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/content-gains-scrollbars-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/content-gains-scrollbars-expected.txt index 3af0c56..babe478 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/content-gains-scrollbars-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/content-gains-scrollbars-expected.txt
@@ -12,16 +12,40 @@ "transform": 1 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 100], + "transform": 1 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [100, 15], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [85, 15], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 85], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [85, 85], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/overflow-scrollbar-layers-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/overflow-scrollbar-layers-expected.txt index 4c803c0a..9f02dd9b 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/overflow-scrollbar-layers-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/overflow-scrollbar-layers-expected.txt
@@ -12,16 +12,40 @@ "transform": 1 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 100], + "transform": 1 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [100, 15], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [85, 15], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 85], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [85, 85], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt index 9ae1786..95d7713 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt
@@ -20,6 +20,27 @@ "name": "Scrolling Contents Layer", "bounds": [1200, 10000], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [1193, 0], + "bounds": [7, 1000], + "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 593], + "bounds": [793, 7] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [793, 0], + "bounds": [7, 593] + }, + { + "name": "Scroll Corner Layer", + "position": [793, 593], + "bounds": [7, 7] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt index 92b63cc7f..35a608e 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt
@@ -41,6 +41,13 @@ "bounds": [60, 128], "backfaceVisibility": "hidden", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [94, 1], + "bounds": [7, 100], + "backfaceVisibility": "hidden", + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrollbar-layer-placement-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrollbar-layer-placement-expected.txt index 2b75c2a..762c699 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrollbar-layer-placement-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrollbar-layer-placement-expected.txt
@@ -27,6 +27,12 @@ "transform": 2 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='outer B'", "position": [-21, -21], "bounds": [352, 294], @@ -54,6 +60,12 @@ "transform": 5 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 4 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='outer C'", "position": [-21, -21], "bounds": [352, 294], @@ -81,6 +93,12 @@ "transform": 8 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 7 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='outer D'", "position": [-21, -21], "bounds": [352, 294], @@ -112,6 +130,12 @@ "contentsOpaque": true, "backgroundColor": "#DDDDDD", "transform": 12 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 11 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned-expected.txt index 508ee8b..d0f4d22db 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned-expected.txt
@@ -38,6 +38,12 @@ "bounds": [220, 236], "backgroundColor": "#FFFFFF", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [218, 5], + "bounds": [7, 160], + "transform": 2 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt index 30eed759..73c8e531 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt
@@ -11,6 +11,16 @@ "bounds": [320, 340] }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 325], + "bounds": [305, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [305, 0], + "bounds": [15, 325] + }, + { "name": "Scroll Corner Layer", "position": [305, 325], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt index eec7ca7..622050d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
@@ -18,6 +18,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -54,6 +66,18 @@ "transform": 5 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 4 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -78,6 +102,18 @@ "transform": 7 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 7 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 7 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -114,6 +150,18 @@ "transform": 11 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 10 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 10 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -150,6 +198,18 @@ "transform": 14 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 13 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 13 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -174,6 +234,18 @@ "transform": 16 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 16 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 16 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -204,6 +276,18 @@ "transform": 19 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 19 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 19 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -228,6 +312,18 @@ "transform": 22 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 22 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 22 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -258,6 +354,18 @@ "transform": 26 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 25 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 25 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -289,6 +397,18 @@ "transform": 29 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 29 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 29 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -326,6 +446,18 @@ "transform": 34 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 33 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 33 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -357,6 +489,18 @@ "transform": 37 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 87], + "bounds": [85, 15], + "transform": 37 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [87, 2], + "bounds": [15, 85], + "transform": 37 + }, + { "name": "Scroll Corner Layer", "position": [87, 87], "bounds": [15, 15], @@ -579,6 +723,12 @@ "position": [0, 56], "bounds": [75, 80], "transform": 58 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-absolute-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-absolute-overflow-expected.txt index f45865a7..87e9ad5 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-absolute-overflow-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-absolute-overflow-expected.txt
@@ -13,6 +13,23 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt index 7bbcbdb3..9e2b03b 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt
@@ -13,6 +13,23 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-fixed-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-fixed-overflow-expected.txt index 30ce4c0..2f03e9a 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-fixed-overflow-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-fixed-overflow-expected.txt
@@ -20,6 +20,23 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 3 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt index d020c6b..a5b79fc 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt
@@ -20,6 +20,23 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 3 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt index cd8aaea7..5984e94 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
@@ -25,6 +25,15 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 385], + "bounds": [385, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "bounds": [15, 385] + }, + { "name": "Scroll Corner Layer", "position": [0, 385], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt index 3f60348..eca78de 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
@@ -25,6 +25,15 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 385], + "bounds": [385, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "bounds": [15, 385] + }, + { "name": "Scroll Corner Layer", "position": [0, 385], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt index 77d9bc1..4b9a3be0d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
@@ -32,6 +32,15 @@ "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 385], + "bounds": [385, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "bounds": [15, 385] + }, + { "name": "Scroll Corner Layer", "position": [0, 385], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt index 77d9bc1..4b9a3be0d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
@@ -32,6 +32,15 @@ "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [15, 385], + "bounds": [385, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "bounds": [15, 385] + }, + { "name": "Scroll Corner Layer", "position": [0, 385], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/scrollbars/nested-overlay-scrollbars-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/scrollbars/nested-overlay-scrollbars-expected.txt index 4be6b751..1f6acaa 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/scrollbars/nested-overlay-scrollbars-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
@@ -42,10 +42,28 @@ "transform": 4 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [2, 195], + "bounds": [193, 7], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [195, 2], + "bounds": [7, 193], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [195, 195], "bounds": [7, 7], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [395, 2], + "bounds": [7, 400], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/composited-bounds-for-negative-z-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/composited-bounds-for-negative-z-expected.txt index 79f966d5..b56f096e5 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/composited-bounds-for-negative-z-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/composited-bounds-for-negative-z-expected.txt
@@ -21,6 +21,12 @@ "transform": 2 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 300], + "transform": 2 + }, + { "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV)", "bounds": [285, 1000], "transform": 2
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-1-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-1-expected.txt index 8079d9a0..e052d2d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-1-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-1-expected.txt
@@ -30,6 +30,12 @@ "position": [0, 100], "bounds": [200, 300], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -109,6 +115,12 @@ } ], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -172,6 +184,12 @@ "position": [0, 100], "bounds": [200, 300], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -261,6 +279,12 @@ } ], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-2-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-2-expected.txt index 996e3430..fd04133 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-2-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-2-expected.txt
@@ -29,6 +29,12 @@ "contentsOpaque": true, "backgroundColor": "#00FFFF", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -74,6 +80,12 @@ "contentsOpaque": true, "backgroundColor": "#00FFFF", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-3-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-3-expected.txt index ae32965..1d98acc 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-3-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/squashing/squash-above-fixed-3-expected.txt
@@ -37,6 +37,12 @@ "contentsOpaque": true, "backgroundColor": "#00FF00", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -107,6 +113,12 @@ "contentsOpaque": true, "backgroundColor": "#00FF00", "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -186,6 +198,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/tiled-layers-hidpi-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/tiled-layers-hidpi-expected.txt index 442cc09..475aff1 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/tiled-layers-hidpi-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/tiled-layers-hidpi-expected.txt
@@ -12,6 +12,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 1170], + "bounds": [1600, 30], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/update-paint-phases-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/update-paint-phases-expected.txt index c6f594b..0741f320 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/update-paint-phases-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/update-paint-phases-expected.txt
@@ -34,6 +34,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 86], + "bounds": [85, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [86, 1], + "bounds": [15, 85], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [86, 86], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/video/video-poster-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/video/video-poster-expected.txt index 4e18e70..1d09d511 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/video/video-poster-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/video/video-poster-expected.txt
@@ -22,6 +22,12 @@ "bounds": [785, 605], "contentsOpaque": true, "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] } @@ -32,11 +38,16 @@ "layers": [ { "name": "Scrolling Contents Layer", - "bounds": [785, 813], + "bounds": [785, 909], "contentsOpaque": true, "backgroundColor": "#FFFFFF" }, { + "name": "ContentsLayer for LayoutVideo VIDEO", + "bounds": [352, 288], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-scrubbing'", "bounds": [352, 288], "transform": 1 @@ -45,6 +56,12 @@ "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)", "bounds": [352, 288], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/visibility/visibility-image-layers-dynamic-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/visibility/visibility-image-layers-dynamic-expected.txt index d62365f..d0c4b13 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/visibility/visibility-image-layers-dynamic-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/visibility/visibility-image-layers-dynamic-expected.txt
@@ -6,36 +6,17 @@ "bounds": [785, 626], "contentsOpaque": true, "backgroundColor": "#FFFFFF" - } - ] -} - -After step 1 -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [785, 806], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" - } - ] -} - -After step 2 -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [785, 985], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" }, { - "name": "LayoutBlockFlow DIV class='composited hidden container'", - "position": [-4, -4], - "bounds": [757, 153], - "transform": 1 + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -45,8 +26,250 @@ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} + +After step 1 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 1494], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='hidden composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 6 + }, + { + "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], + [18, 10, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} + +After step 2 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 2921], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='hidden composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "LayoutBlockFlow DIV class='composited hidden container'", + "position": [-4, -4], + "bounds": [757, 153], + "transform": 4 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='composited box'", + "bounds": [184, 124], + "transform": 6 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 9 + }, + { + "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], + [18, 10, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], [18, 165, 0, 1] ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 7, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 8, + "parent": 7, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 9, + "parent": 8, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-composited-reason-children-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-composited-reason-children-expected.txt index 3b46e57..cfcce1f4 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-composited-reason-children-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-composited-reason-children-expected.txt
@@ -18,6 +18,11 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutImage IMG class='accelerated'", + "bounds": [160, 90], + "transform": 1 + }, + { "name": "LayoutBlockFlow HTML (foreground) Layer", "bounds": [800, 600] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-2-stacking-contexts-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-2-stacking-contexts-expected.txt index 36ed585..16b4275 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-2-stacking-contexts-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-2-stacking-contexts-expected.txt
@@ -12,6 +12,11 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutImage IMG class='accelerated blended'", + "bounds": [160, 90], + "transform": 1 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='stacking-context'", "bounds": [160, 90], "contentsOpaque": true, @@ -19,6 +24,11 @@ "transform": 2 }, { + "name": "ContentsLayer for LayoutImage IMG class='accelerated blended'", + "bounds": [160, 90], + "transform": 2 + }, + { "name": "LayoutBlockFlow HTML (foreground) Layer", "bounds": [800, 600] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-layer-expected.txt index 8632f11..dfff570 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-layer-expected.txt
@@ -12,6 +12,11 @@ "transform": 1 }, { + "name": "ContentsLayer for LayoutImage IMG class='accelerated blended'", + "bounds": [160, 90], + "transform": 1 + }, + { "name": "LayoutBlockFlow HTML (foreground) Layer", "bounds": [800, 600] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-remove-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-remove-expected.txt index 426b4ad4..78a2916 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-remove-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/css3/blending/mix-blend-mode-isolation-remove-expected.txt
@@ -20,6 +20,11 @@ "backfaceVisibility": "hidden", "backgroundColor": "#008000", "transform": 1 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='accelerated blended'", + "bounds": [160, 90], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/background/composited-background-on-both-layers-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/background/composited-background-on-both-layers-expected.txt index 3cb011b..09bb5f44 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/background/composited-background-on-both-layers-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/background/composited-background-on-both-layers-expected.txt
@@ -36,6 +36,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [20, 205], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [205, 20], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [205, 205], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/clip/clip-path-constant-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/clip/clip-path-constant-repaint-expected.txt index 67af238..9892e76 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/clip/clip-path-constant-repaint-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/clip/clip-path-constant-repaint-expected.txt
@@ -10,12 +10,11 @@ "name": "LayoutBlockFlow (positioned) DIV id='clip'", "bounds": [800, 300], "backgroundColor": "#FF0000E6", - "maskLayer": [ - { - "name": "Mask Layer", - "bounds": [800, 300] - } - ], + "transform": 2 + }, + { + "name": "Mask Layer", + "bounds": [800, 300], "transform": 2 } ],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt index bc088c05..08db8ce 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt
@@ -17,17 +17,16 @@ "reason": "full" } ], - "maskLayer": [ + "transform": 1 + }, + { + "name": "Mask Layer", + "bounds": [200, 200], + "paintInvalidations": [ { - "name": "Mask Layer", - "bounds": [200, 200], - "paintInvalidations": [ - { - "object": "Mask Layer", - "rect": [0, 0, 200, 200], - "reason": "paint property change" - } - ] + "object": "Mask Layer", + "rect": [0, 0, 200, 200], + "reason": "paint property change" } ], "transform": 1
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt index 5921712e..d1952d7a 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt
@@ -19,6 +19,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFF00", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt index f2c232a0..d8dd844 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
@@ -26,6 +26,12 @@ "contentsOpaque": true, "backgroundColor": "#00FF00", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt index a3f16770..d6e72fb 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt
@@ -13,6 +13,12 @@ "bounds": [360, 90], "contentsOpaque": true, "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt index 1f69818..9c20b0a 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt
@@ -24,6 +24,12 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt index ade0670..8f9a5c5 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt
@@ -17,6 +17,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt index 187b5b0..7af432c8 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt
@@ -22,6 +22,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt index b15e18f5..d4ca243 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt
@@ -25,6 +25,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt index 58ea852f..2340865 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt
@@ -20,6 +20,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt index d2631bd..424ac35 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt
@@ -20,6 +20,12 @@ "contentsOpaque": true, "backgroundColor": "#90EE90", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scrolling-without-painting-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scrolling-without-painting-expected.txt index 0345e98..2c6957dc 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scrolling-without-painting-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/scrolling-without-painting-expected.txt
@@ -18,6 +18,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 186], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [186, 1], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [186, 186], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt index 9fb8948..9e0b92a4 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt
@@ -24,6 +24,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [385, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [385, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt index 689f19f6..e9e3c3a0 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt
@@ -13,6 +13,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt index 29d7340..d601957 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt
@@ -30,6 +30,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt index f13daed4..e1335138 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
@@ -28,6 +28,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/updating-scrolling-content-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/updating-scrolling-content-expected.txt index baa4049..26ab2661 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/updating-scrolling-content-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/compositing/updating-scrolling-content-expected.txt
@@ -24,6 +24,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt index cf2a932..74fcf987 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt
@@ -18,6 +18,12 @@ "contentsOpaque": true, "backgroundColor": "#D3D3D3", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt index 0b2e0b0..f1d60dbb 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
@@ -449,6 +449,11 @@ ] }, { + "name": "ContentsLayer for LayoutVideo VIDEO id='video'", + "bounds": [150, 60], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'", "bounds": [150, 60], "transform": 1 @@ -457,6 +462,12 @@ "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)", "bounds": [150, 60], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/in-scaled-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/in-scaled-iframe-expected.txt index 9a875f71..5a947c2 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/in-scaled-iframe-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/in-scaled-iframe-expected.txt
@@ -12,6 +12,12 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt index 2db28e78..5140ec585 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt index 387c94f..9d56a6b 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
@@ -39,6 +39,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/outline/outline-change-vertical-rl-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/outline/outline-change-vertical-rl-expected.txt index fa435443..9054169 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/outline/outline-change-vertical-rl-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/outline/outline-change-vertical-rl-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt index 4d2bc7e..4abcc0d 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt
@@ -31,6 +31,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt index 70e24901..f0be362 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
@@ -36,6 +36,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [10, 195], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [195, 10], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [195, 195], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt index 12c216d..9b247a8 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
@@ -27,6 +27,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt index ef6d1973..58a7c52 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt
@@ -17,6 +17,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/resize-child-within-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/resize-child-within-overflow-expected.txt index 5f4dc5a..858faa5 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/resize-child-within-overflow-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/overflow/resize-child-within-overflow-expected.txt
@@ -12,6 +12,23 @@ "reason": "incremental" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/absolute-position-changed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/absolute-position-changed-expected.txt index 8419448..0553b841 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/absolute-position-changed-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/absolute-position-changed-expected.txt
@@ -34,6 +34,16 @@ } ], "transform": 3 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt index 02440e18..4174b20 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
@@ -32,6 +32,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/fixed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/fixed-expected.txt index aa051a5..ffda1355 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/fixed-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/fixed-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/fixed-tranformed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/fixed-tranformed-expected.txt index 1f47949..c6f4009 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/fixed-tranformed-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/fixed-tranformed-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt index 3bd82b2..76e0b64c 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
@@ -27,6 +27,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt index bca0227..0c8f534 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
@@ -17,6 +17,12 @@ "reason": "paint property change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/raster-under-invalidation-checking-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/raster-under-invalidation-checking-expected.txt index 2227ec3..bc231ff 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/raster-under-invalidation-checking-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/raster-under-invalidation-checking-expected.txt
@@ -1267,6 +1267,18 @@ "transform": 4 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 135], + "bounds": [135, 15], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [135, 0], + "bounds": [15, 135], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [135, 135], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/repaint-overlay/layers-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/repaint-overlay/layers-expected.txt index 4725b20..ab0cef12 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/repaint-overlay/layers-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/repaint-overlay/layers-expected.txt
@@ -50,6 +50,11 @@ "position": [301, 1], "bounds": [0, 300], "transform": 3 + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt index fc91424..59aecf1 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt
@@ -40,6 +40,12 @@ "reason": "paint property change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt index 8e8ccca7..1ee0bde 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt index 8e8ccca7..1ee0bde 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt index 3e5955f..daa5c44 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt
@@ -18,6 +18,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt index 8e8ccca7..1ee0bde 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt index ca2bc98..80039a65 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt
@@ -27,6 +27,12 @@ "reason": "incremental" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt index eef35cc2..61de414a 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt
@@ -27,6 +27,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt index 011f1dd8..cad4b8e 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt
@@ -22,6 +22,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 385], + "bounds": [400, 15], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt index 792cce6..bd6c9f7 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt
@@ -13,6 +13,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt index cbf5035..4247619 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt
@@ -22,6 +22,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 200], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt index 45da238..f55ce7dc 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
@@ -18,6 +18,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt index 7cad2ed6..9b394e66 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/outline-change-scrollable-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/outline-change-scrollable-expected.txt index c50fe26..5264417 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/outline-change-scrollable-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/outline-change-scrollable-expected.txt
@@ -12,6 +12,12 @@ "reason": "style change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt index 44fe7b6..7f765f9 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt
@@ -29,6 +29,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 385], + "bounds": [685, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [685, 0], + "bounds": [15, 385], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [685, 385], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt index a39f710..5992aee 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt
@@ -29,6 +29,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 385], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 385], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 385], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt index 9e55ad2a..6fed56c 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
@@ -27,6 +27,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt index 9d4792f9..16d8a63 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt
@@ -25,6 +25,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt index 7dadb065..bcfe07b3 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt
@@ -11,6 +11,12 @@ "name": "LayoutBlockFlow (positioned) DIV id='searchbar'", "bounds": [150, 150], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/selection/selection-within-composited-scroller-expected.txt index 3862a3f..7647611 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/selection/selection-within-composited-scroller-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -27,6 +27,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt index a324659..b356aec 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
@@ -10,6 +10,23 @@ "name": "LayoutBlockFlow DIV id='targetDiv'", "bounds": [2000, 2000], "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt index 7896ecc..ef0293a 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
@@ -63,6 +63,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt index 70a5c22..897edda 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt
@@ -12,6 +12,12 @@ "reason": "appeared" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/table/table-shrink-row-repaint-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/table/table-shrink-row-repaint-expected.txt index 45c2f3b3..02c6fb58 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/table/table-shrink-row-repaint-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/table/table-shrink-row-repaint-expected.txt
@@ -222,6 +222,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/video-paint-invalidation-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/video-paint-invalidation-expected.txt index fd50174..7b86626 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/video-paint-invalidation-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/video-paint-invalidation-expected.txt
@@ -7,6 +7,11 @@ "backgroundColor": "#FFFFFF" }, { + "name": "ContentsLayer for LayoutVideo VIDEO id='video'", + "bounds": [320, 240], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small test-mode phase-ready state-scrubbing'", "bounds": [320, 240], "transform": 1
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt index 193fc6e..ba727b3e 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt
@@ -12,21 +12,28 @@ "reason": "background" } ] - } - ] -} -{ - "layers": [ + }, { - "name": "Scrolling Contents Layer", - "bounds": [1008, 1016], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [585, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [585, 0], + "bounds": [15, 235], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [585, 235], + "bounds": [15, 15], "paintInvalidations": [ { - "object": "LayoutBlockFlow DIV id='target'", - "rect": [8, 8, 1000, 1000], - "reason": "background" + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" } ] } @@ -46,6 +53,30 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [385, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 235], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [385, 235], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] } @@ -63,6 +94,71 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [385, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [385, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] + } + ] +} +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1008, 1016], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "paintInvalidations": [ + { + "object": "LayoutBlockFlow DIV id='target'", + "rect": [8, 8, 1000, 1000], + "reason": "background" + } + ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled-expected.txt index 193fc6e..ba727b3e 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled-expected.txt
@@ -12,21 +12,28 @@ "reason": "background" } ] - } - ] -} -{ - "layers": [ + }, { - "name": "Scrolling Contents Layer", - "bounds": [1008, 1016], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [585, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [585, 0], + "bounds": [15, 235], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [585, 235], + "bounds": [15, 15], "paintInvalidations": [ { - "object": "LayoutBlockFlow DIV id='target'", - "rect": [8, 8, 1000, 1000], - "reason": "background" + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" } ] } @@ -46,6 +53,30 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [385, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 235], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [385, 235], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] } @@ -63,6 +94,71 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [385, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [385, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] + } + ] +} +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1008, 1016], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "paintInvalidations": [ + { + "object": "LayoutBlockFlow DIV id='target'", + "rect": [8, 8, 1000, 1000], + "reason": "background" + } + ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt index a34083d1..b07aab2 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [600, 15], + "contentsOpaque": true } ], "transforms": [ @@ -42,6 +48,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [400, 15], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/android/fullscreen/video-overlay-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/android/fullscreen/video-overlay-scroll-expected.txt index 3944fff..ee5b2ca 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/android/fullscreen/video-overlay-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/android/fullscreen/video-overlay-scroll-expected.txt
@@ -2,7 +2,10 @@ END OF TEST { - "layers": [ + "name": "LayoutVideo (positioned) VIDEO id='video'", + "bounds": [800, 600], + "drawsContent": false, + "children": [ { "name": "LayoutFlexibleBox (relative positioned) DIV class='phase-pre-ready state-no-source sizing-small use-default-poster'", "bounds": [800, 600], @@ -10,6 +13,11 @@ "backgroundColor": "#333333" }, { + "name": "LayoutBlockFlow (positioned) DIV", + "bounds": [800, 600], + "drawsContent": false + }, + { "name": "LayoutFlexibleBox DIV", "bounds": [800, 600] }
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt index 7c96e8e..d56f7045 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt
@@ -26,6 +26,18 @@ "transform": 6 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/content-gains-scrollbars-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/content-gains-scrollbars-expected.txt index 3af0c56..babe478 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/content-gains-scrollbars-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/content-gains-scrollbars-expected.txt
@@ -12,16 +12,40 @@ "transform": 1 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 100], + "transform": 1 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [100, 15], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [85, 15], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 85], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [85, 85], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt index 6b5354b..8d59128 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt
@@ -17,6 +17,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt index 6b5354b..8d59128 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
@@ -17,6 +17,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-overlay-with-touch-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-overlay-with-touch-expected.txt index 6b5354b..8d59128 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-overlay-with-touch-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-overlay-with-touch-expected.txt
@@ -17,6 +17,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-scrollbar-layers-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-scrollbar-layers-expected.txt index 4c803c0a..9f02dd9b 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-scrollbar-layers-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-scrollbar-layers-expected.txt
@@ -12,16 +12,40 @@ "transform": 1 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 100], + "transform": 1 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [100, 15], + "transform": 2 + }, + { "name": "LayoutBlockFlow (positioned) DIV class='container'", "bounds": [100, 100], "transform": 3 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 85], + "bounds": [85, 15], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [85, 0], + "bounds": [15, 85], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [85, 85], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt index 30eed759..73c8e531 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt
@@ -11,6 +11,16 @@ "bounds": [320, 340] }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 325], + "bounds": [305, 15] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [305, 0], + "bounds": [15, 325] + }, + { "name": "Scroll Corner Layer", "position": [305, 325], "bounds": [15, 15]
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbars-within-overflow-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbars-within-overflow-scroll-expected.txt index c22a880c..53632c1 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbars-within-overflow-scroll-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbars-within-overflow-scroll-expected.txt
@@ -26,6 +26,17 @@ "position": [1, 1], "bounds": [100, 500], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [94, 1], + "bounds": [7, 100], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [394, 1], + "bounds": [7, 300] } ], "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/threaded/compositing/visibility/visibility-image-layers-dynamic-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/threaded/compositing/visibility/visibility-image-layers-dynamic-expected.txt index d62365f..d0c4b13 100644 --- a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/threaded/compositing/visibility/visibility-image-layers-dynamic-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/threaded/compositing/visibility/visibility-image-layers-dynamic-expected.txt
@@ -6,36 +6,17 @@ "bounds": [785, 626], "contentsOpaque": true, "backgroundColor": "#FFFFFF" - } - ] -} - -After step 1 -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [785, 806], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" - } - ] -} - -After step 2 -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [785, 985], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" }, { - "name": "LayoutBlockFlow DIV class='composited hidden container'", - "position": [-4, -4], - "bounds": [757, 153], - "transform": 1 + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -45,8 +26,250 @@ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} + +After step 1 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 1494], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='hidden composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 6 + }, + { + "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], + [18, 10, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} + +After step 2 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 2921], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='hidden composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "LayoutBlockFlow DIV class='composited hidden container'", + "position": [-4, -4], + "bounds": [757, 153], + "transform": 4 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='composited box'", + "bounds": [184, 124], + "transform": 6 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 9 + }, + { + "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], + [18, 10, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], [18, 165, 0, 1] ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 7, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 8, + "parent": 7, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 9, + "parent": 8, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] } ] }
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-tree-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-tree-expected.txt index 99dbba43..60cced8 100644 --- a/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-tree-expected.txt +++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/layer-tree-expected.txt
@@ -1,20 +1,3 @@ -Layer tree: -{ - "layers": [ - { - "name": "Scrolling background of LayoutView #document", - "bounds": [1200, 900], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" - }, - { - "name": "LayoutCustomScrollbarPart (anonymous)", - "bounds": [800, 600], - "backgroundColor": "#0000FF" - } - ] -} - Layer list { "layers": [
diff --git a/third_party/blink/web_tests/http/tests/devtools/audits/audits-emulate-run-expected.txt b/third_party/blink/web_tests/http/tests/devtools/audits/audits-emulate-run-expected.txt index 44d2af54..5dc5c06 100644 --- a/third_party/blink/web_tests/http/tests/devtools/audits/audits-emulate-run-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/audits/audits-emulate-run-expected.txt
@@ -12,7 +12,7 @@ =============== Lighthouse Results =============== URL: http://127.0.0.1:8000/devtools/audits/resources/audits-emulate-pass.html -Version: 5.4.0 +Version: 5.5.0 TestedAsMobileDevice: true ViewportDimensions: { "innerWidth": 412,
diff --git a/third_party/blink/web_tests/http/tests/devtools/audits/audits-successful-run-expected.txt b/third_party/blink/web_tests/http/tests/devtools/audits/audits-successful-run-expected.txt index 2ec356c..e4d4852 100644 --- a/third_party/blink/web_tests/http/tests/devtools/audits/audits-successful-run-expected.txt +++ b/third_party/blink/web_tests/http/tests/devtools/audits/audits-successful-run-expected.txt
@@ -162,7 +162,7 @@ Auditing: Time to Interactive Auditing: User Timing marks and measures Computing artifact: UserTimings -Auditing: Minimize Critical Requests Depth +Auditing: Avoid chaining critical requests Computing artifact: CriticalRequestChains Auditing: Avoid multiple page redirects Auditing: Web app manifest meets the installability requirements @@ -193,7 +193,7 @@ Auditing: Performance budget Computing artifact: ResourceSummary Auditing: Keep request counts low and transfer sizes small -Auditing: Third-Party usage +Auditing: Minimize third-party usage Auditing: Site works cross-browser Auditing: Page transitions don't feel like they block on the network Auditing: Each page has a URL @@ -282,7 +282,7 @@ =============== Lighthouse Results =============== URL: http://127.0.0.1:8000/devtools/resources/inspected-page.html -Version: 5.4.0 +Version: 5.5.0 TestedAsMobileDevice: true ViewportDimensions: { "innerWidth": 981,
diff --git a/third_party/blink/web_tests/paint/invalidation/background/animated-svg-background-offscreen-firstline-expected.txt b/third_party/blink/web_tests/paint/invalidation/background/animated-svg-background-offscreen-firstline-expected.txt index cb1fad6..2a43ebb 100644 --- a/third_party/blink/web_tests/paint/invalidation/background/animated-svg-background-offscreen-firstline-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/background/animated-svg-background-offscreen-firstline-expected.txt
@@ -6,6 +6,23 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/background/background-image-paint-invalidation-expected.txt b/third_party/blink/web_tests/paint/invalidation/background/background-image-paint-invalidation-expected.txt index 04933f0..35a1213d 100644 --- a/third_party/blink/web_tests/paint/invalidation/background/background-image-paint-invalidation-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/background/background-image-paint-invalidation-expected.txt
@@ -12,6 +12,23 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/background/composited-background-on-both-layers-expected.txt b/third_party/blink/web_tests/paint/invalidation/background/composited-background-on-both-layers-expected.txt index f3bb2ba..1e780d6 100644 --- a/third_party/blink/web_tests/paint/invalidation/background/composited-background-on-both-layers-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/background/composited-background-on-both-layers-expected.txt
@@ -36,6 +36,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [20, 205], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [205, 20], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [205, 205], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt b/third_party/blink/web_tests/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt index d3f63787..6ca88eb3 100644 --- a/third_party/blink/web_tests/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/clip/clip-path-constant-repaint-expected.txt b/third_party/blink/web_tests/paint/invalidation/clip/clip-path-constant-repaint-expected.txt index f204f032..2eae1a16 100644 --- a/third_party/blink/web_tests/paint/invalidation/clip/clip-path-constant-repaint-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/clip/clip-path-constant-repaint-expected.txt
@@ -10,12 +10,11 @@ "name": "LayoutNGBlockFlow (positioned) DIV id='clip'", "bounds": [800, 300], "backgroundColor": "#FF0000E6", - "maskLayer": [ - { - "name": "Mask Layer", - "bounds": [800, 300] - } - ], + "transform": 2 + }, + { + "name": "Mask Layer", + "bounds": [800, 300], "transform": 2 } ],
diff --git a/third_party/blink/web_tests/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt index 2bd5684..c0bd139 100644 --- a/third_party/blink/web_tests/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt
@@ -17,17 +17,16 @@ "reason": "full" } ], - "maskLayer": [ + "transform": 1 + }, + { + "name": "Mask Layer", + "bounds": [200, 200], + "paintInvalidations": [ { - "name": "Mask Layer", - "bounds": [200, 200], - "paintInvalidations": [ - { - "object": "Mask Layer", - "rect": [0, 0, 200, 200], - "reason": "paint property change" - } - ] + "object": "Mask Layer", + "rect": [0, 0, 200, 200], + "reason": "paint property change" } ], "transform": 1
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt index 7c9c35e..5a87075 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt
@@ -19,6 +19,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFF00", "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt index 6125265f..3f8ba64 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
@@ -26,6 +26,12 @@ "contentsOpaque": true, "backgroundColor": "#00FF00", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt index 3b4c5e8..d0e58ab4 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt
@@ -13,6 +13,12 @@ "bounds": [360, 90], "contentsOpaque": true, "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt index 4677f96..2de55a7c 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt
@@ -24,6 +24,12 @@ "contentsOpaque": true, "backgroundColor": "#008000", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt index c7a8da7..a096f0bc 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt
@@ -17,6 +17,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt index 38b201d..d4d464a 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt
@@ -25,6 +25,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-layer-no-content-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-layer-no-content-expected.txt index ed08e35..afaa2c1 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-layer-no-content-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-layer-no-content-expected.txt
@@ -6,6 +6,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt index 5321425a..3e4f536 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt
@@ -20,6 +20,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt index b5504b7..945db75 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt
@@ -20,6 +20,12 @@ "contentsOpaque": true, "backgroundColor": "#90EE90", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/scrolling-without-painting-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/scrolling-without-painting-expected.txt index b3dc2123..85594709 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/scrolling-without-painting-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/scrolling-without-painting-expected.txt
@@ -18,6 +18,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 186], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [186, 1], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [186, 186], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/should-invoke-deferred-compositing-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/should-invoke-deferred-compositing-expected.txt index 1739d83..f92b87f 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/should-invoke-deferred-compositing-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/should-invoke-deferred-compositing-expected.txt
@@ -16,6 +16,10 @@ "reason": "full layer" } ] + }, + { + "name": "ContentsLayer for LayoutHTMLCanvas (positioned) CANVAS", + "bounds": [200, 200] } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt index d157e13..19aee694 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt
@@ -24,6 +24,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [385, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [385, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt index 51d462b9..8f95551 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt
@@ -13,6 +13,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt index a698223..f520da79 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt
@@ -30,6 +30,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt index 5f3ec615..793d8f13 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
@@ -28,6 +28,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/compositing/updating-scrolling-content-expected.txt b/third_party/blink/web_tests/paint/invalidation/compositing/updating-scrolling-content-expected.txt index b7d7dd2..6723c0e3a 100644 --- a/third_party/blink/web_tests/paint/invalidation/compositing/updating-scrolling-content-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/compositing/updating-scrolling-content-expected.txt
@@ -24,6 +24,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt b/third_party/blink/web_tests/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt index 9a5589ce..a083d0755 100644 --- a/third_party/blink/web_tests/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt
@@ -18,6 +18,12 @@ "contentsOpaque": true, "backgroundColor": "#D3D3D3", "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt b/third_party/blink/web_tests/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt index d6512bd..468d394 100644 --- a/third_party/blink/web_tests/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
@@ -39,6 +39,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/outline/outline-change-vertical-rl-expected.txt b/third_party/blink/web_tests/paint/invalidation/outline/outline-change-vertical-rl-expected.txt index c3970f3..b2c8d001 100644 --- a/third_party/blink/web_tests/paint/invalidation/outline/outline-change-vertical-rl-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/outline/outline-change-vertical-rl-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt b/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt index 00daa05..fb0bf60 100644 --- a/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt
@@ -31,6 +31,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt b/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt index 970441d..3c50188 100644 --- a/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
@@ -36,6 +36,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [10, 195], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [195, 10], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [195, 195], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt b/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt index 5ffc7434..a897da74 100644 --- a/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
@@ -27,6 +27,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt b/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt index fc3317f..d80867a 100644 --- a/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt
@@ -17,6 +17,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/overflow/resize-child-within-overflow-expected.txt b/third_party/blink/web_tests/paint/invalidation/overflow/resize-child-within-overflow-expected.txt index 4d98d79..d57b58523 100644 --- a/third_party/blink/web_tests/paint/invalidation/overflow/resize-child-within-overflow-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/overflow/resize-child-within-overflow-expected.txt
@@ -12,6 +12,23 @@ "reason": "incremental" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/position/absolute-position-changed-expected.txt b/third_party/blink/web_tests/paint/invalidation/position/absolute-position-changed-expected.txt index 653436f..d23d0756 100644 --- a/third_party/blink/web_tests/paint/invalidation/position/absolute-position-changed-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/position/absolute-position-changed-expected.txt
@@ -34,6 +34,16 @@ } ], "transform": 3 + }, + { + "name": "Horizontal Scrollbar Layer", + "position": [0, 600], + "bounds": [800, 0] + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/position/fixed-tranformed-expected.txt b/third_party/blink/web_tests/paint/invalidation/position/fixed-tranformed-expected.txt index 3189fc7b..fdd5ab1 100644 --- a/third_party/blink/web_tests/paint/invalidation/position/fixed-tranformed-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/position/fixed-tranformed-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt b/third_party/blink/web_tests/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt index 7ecccef..fb2798e 100644 --- a/third_party/blink/web_tests/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
@@ -27,6 +27,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt b/third_party/blink/web_tests/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt index 901beb2..f38c1de6 100644 --- a/third_party/blink/web_tests/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt
@@ -22,6 +22,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt b/third_party/blink/web_tests/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt index 4df6301..11e1e4b 100644 --- a/third_party/blink/web_tests/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
@@ -17,6 +17,12 @@ "reason": "paint property change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/raster-under-invalidation-checking-expected.txt b/third_party/blink/web_tests/paint/invalidation/raster-under-invalidation-checking-expected.txt index 7cd4593..5dee297 100644 --- a/third_party/blink/web_tests/paint/invalidation/raster-under-invalidation-checking-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/raster-under-invalidation-checking-expected.txt
@@ -1267,6 +1267,18 @@ "transform": 4 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 135], + "bounds": [135, 15], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [135, 0], + "bounds": [15, 135], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [135, 135], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/repaint-overlay/layers-expected.txt b/third_party/blink/web_tests/paint/invalidation/repaint-overlay/layers-expected.txt index 80ea4e4..6c3a10dd 100644 --- a/third_party/blink/web_tests/paint/invalidation/repaint-overlay/layers-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/repaint-overlay/layers-expected.txt
@@ -50,6 +50,11 @@ "position": [301, 1], "bounds": [0, 300], "transform": 3 + }, + { + "name": "Vertical Scrollbar Layer", + "position": [800, 0], + "bounds": [0, 600] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt b/third_party/blink/web_tests/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt index 3065af29..a67cbd50e 100644 --- a/third_party/blink/web_tests/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt
@@ -40,6 +40,12 @@ "reason": "paint property change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/document-flipped-blocks-writing-mode-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/document-flipped-blocks-writing-mode-scroll-expected.txt index 321c68f..ba58f18 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/document-flipped-blocks-writing-mode-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/document-flipped-blocks-writing-mode-scroll-expected.txt
@@ -5,6 +5,12 @@ "bounds": [1516, 585], "contentsOpaque": true, "backgroundColor": "#008000" + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt index 2131405..2d35e417 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt index 2131405..2d35e417 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt index 4707012..e87bd122 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt
@@ -18,6 +18,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt index 2131405..2d35e417 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt index 6a583b86..21ec91a1 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt
@@ -27,6 +27,12 @@ "reason": "incremental" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt index 36657808..827de99 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt
@@ -27,6 +27,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt index 52bc90a..d23ac3b9 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt
@@ -22,6 +22,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 385], + "bounds": [400, 15], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt index 8032319..3b391aca 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt
@@ -22,6 +22,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 200], + "transform": 1 } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt index 6763d3dd..9ac72ec7 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/outline-change-scrollable-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/outline-change-scrollable-expected.txt index 9baa8b5..fa311226 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/outline-change-scrollable-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/outline-change-scrollable-expected.txt
@@ -12,6 +12,12 @@ "reason": "style change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt index fa59184e..cbe2e91 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt
@@ -29,6 +29,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 385], + "bounds": [685, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [685, 0], + "bounds": [15, 385], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [685, 385], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt index 578b034..cdbaf8a 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt
@@ -29,6 +29,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 385], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 385], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 385], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt b/third_party/blink/web_tests/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt index b9bf8c7..a017ef1 100644 --- a/third_party/blink/web_tests/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt
@@ -17,6 +17,12 @@ "name": "LayoutNGBlockFlow (sticky positioned) DIV id='sticky'", "bounds": [345, 20], "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt b/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt index cb1fad6..2a43ebb 100644 --- a/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt
@@ -6,6 +6,23 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt b/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt index cb1fad6..2a43ebb 100644 --- a/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt
@@ -6,6 +6,23 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt b/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt index edbda59..b60ba2c 100644 --- a/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
@@ -10,6 +10,23 @@ "name": "LayoutNGBlockFlow DIV id='targetDiv'", "bounds": [2000, 2000], "transform": 2 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt b/third_party/blink/web_tests/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt index 6a82996..4b33f7a 100644 --- a/third_party/blink/web_tests/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt
@@ -13,6 +13,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt b/third_party/blink/web_tests/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt index 9ebb2baf..3e32b76 100644 --- a/third_party/blink/web_tests/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt
@@ -12,6 +12,12 @@ "reason": "appeared" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/video-paint-invalidation-expected.txt b/third_party/blink/web_tests/paint/invalidation/video-paint-invalidation-expected.txt index 59c57c21..447157d 100644 --- a/third_party/blink/web_tests/paint/invalidation/video-paint-invalidation-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/video-paint-invalidation-expected.txt
@@ -7,6 +7,11 @@ "backgroundColor": "#FFFFFF" }, { + "name": "ContentsLayer for LayoutVideo VIDEO id='video'", + "bounds": [320, 240], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small test-mode phase-ready state-scrubbing'", "bounds": [320, 240], "transform": 1
diff --git a/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents-expected.txt b/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents-expected.txt index a7ad298..fcc509c 100644 --- a/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents-expected.txt
@@ -12,6 +12,12 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [585, 0], + "bounds": [15, 250], + "contentsOpaque": true } ] } @@ -29,6 +35,12 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 250], + "contentsOpaque": true } ] } @@ -46,6 +58,12 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] } @@ -63,6 +81,12 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt b/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt index 9b59a54..67360d9 100644 --- a/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered-expected.txt
@@ -12,21 +12,28 @@ "reason": "background" } ] - } - ] -} -{ - "layers": [ + }, { - "name": "Scrolling Contents Layer", - "bounds": [1008, 1016], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [585, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [585, 0], + "bounds": [15, 235], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [585, 235], + "bounds": [15, 15], "paintInvalidations": [ { - "object": "LayoutNGBlockFlow DIV id='target'", - "rect": [8, 8, 1000, 1000], - "reason": "background" + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" } ] } @@ -46,6 +53,30 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [385, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 235], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [385, 235], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] } @@ -63,6 +94,71 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [385, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [385, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] + } + ] +} +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1008, 1016], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "paintInvalidations": [ + { + "object": "LayoutNGBlockFlow DIV id='target'", + "rect": [8, 8, 1000, 1000], + "reason": "background" + } + ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] }
diff --git a/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled-expected.txt b/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled-expected.txt index 9b59a54..67360d9 100644 --- a/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled-expected.txt +++ b/third_party/blink/web_tests/paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled-expected.txt
@@ -12,21 +12,28 @@ "reason": "background" } ] - } - ] -} -{ - "layers": [ + }, { - "name": "Scrolling Contents Layer", - "bounds": [1008, 1016], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF", + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [585, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [585, 0], + "bounds": [15, 235], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [585, 235], + "bounds": [15, 15], "paintInvalidations": [ { - "object": "LayoutNGBlockFlow DIV id='target'", - "rect": [8, 8, 1000, 1000], - "reason": "background" + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" } ] } @@ -46,6 +53,30 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [385, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 235], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [385, 235], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] } @@ -63,6 +94,71 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [385, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [385, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [385, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] + } + ] +} +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [1008, 1016], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF", + "paintInvalidations": [ + { + "object": "LayoutNGBlockFlow DIV id='target'", + "rect": [8, 8, 1000, 1000], + "reason": "background" + } + ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] }
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt index 77c49822..36cc8e40 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
@@ -449,6 +449,11 @@ ] }, { + "name": "ContentsLayer for LayoutVideo VIDEO id='video'", + "bounds": [150, 60], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'", "bounds": [150, 60], "transform": 1 @@ -457,6 +462,12 @@ "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (positioned) DIV)", "bounds": [150, 60], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt index efe64ac..35354ad 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt index 58e78dc..abefc0d 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt
@@ -13,6 +13,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt index a2ccf03..d0870dd 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
@@ -18,6 +18,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt index 1cea71f..a5d118f 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt
@@ -32,6 +32,30 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] }
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-within-composited-scroller-expected.txt index a811dac..d4577da 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-within-composited-scroller-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -27,6 +27,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
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 36cff711f..ae577667 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
@@ -43,6 +43,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt index 585268d5..4bde7ea 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt
@@ -17,6 +17,23 @@ "reason": "disappeared" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
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 7e93cbf..123b769 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
@@ -27,6 +27,12 @@ "reason": "style change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt index e6dcac36..2961688 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [600, 15], + "contentsOpaque": true } ], "transforms": [ @@ -42,6 +48,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [400, 15], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/pointerevents/extension/pointerevent_coalesced_events_attributes-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/pointerevents/extension/pointerevent_coalesced_events_attributes-expected.txt new file mode 100644 index 0000000..e7df530 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac-mac10.13/external/wpt/pointerevents/extension/pointerevent_coalesced_events_attributes-expected.txt
@@ -0,0 +1,15 @@ +This is a testharness.js-based test. +PASS touch coalesced events attributes in pointerevents +PASS touch pointercancel should not have any coalesced events +PASS touch pointerover should not have any coalesced events +PASS touch pointerenter should not have any coalesced events +PASS touch pointerdown should not have any coalesced events +FAIL touch pointermove should have >2 coalesced events as main thread is busy. +PASS touch pointermove coalesced events should all be marked as trusted. +PASS touch time stamps of coalesced events must be ascending. +PASS touch pointermove coalesced events should all bubbles and cancelable as false. +PASS touch pointerup should not have any coalesced events +PASS touch pointerout should not have any coalesced events +PASS touch pointerleave should not have any coalesced events +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt index 51ade3e..9a1af90 100644 --- a/third_party/blink/web_tests/platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt +++ b/third_party/blink/web_tests/platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt
@@ -36,6 +36,12 @@ "transform": 5 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow DIV class='box'", "bounds": [210, 210], "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt index a18de54..a0b3e47 100644 --- a/third_party/blink/web_tests/platform/mac/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt +++ b/third_party/blink/web_tests/platform/mac/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt
@@ -20,6 +20,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 286], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [286, 1], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [286, 286], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/platform/mac/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt index 9518537f..3514c06 100644 --- a/third_party/blink/web_tests/platform/mac/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt +++ b/third_party/blink/web_tests/platform/mac/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt
@@ -20,6 +20,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/compositing/overflow/textarea-scroll-touch-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/overflow/textarea-scroll-touch-expected.txt index f464bdb..8ecf4569 100644 --- a/third_party/blink/web_tests/platform/mac/compositing/overflow/textarea-scroll-touch-expected.txt +++ b/third_party/blink/web_tests/platform/mac/compositing/overflow/textarea-scroll-touch-expected.txt
@@ -22,6 +22,12 @@ "transform": 2 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [190, 1], + "bounds": [15, 109], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [190, 110], "bounds": [15, 15], @@ -42,6 +48,12 @@ "transform": 4 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [190, 1], + "bounds": [15, 109], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [190, 110], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/platform/mac/compositing/squashing/frame-clip-squashed-scrolled-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/squashing/frame-clip-squashed-scrolled-expected.txt index 139d82a..62b51292 100644 --- a/third_party/blink/web_tests/platform/mac/compositing/squashing/frame-clip-squashed-scrolled-expected.txt +++ b/third_party/blink/web_tests/platform/mac/compositing/squashing/frame-clip-squashed-scrolled-expected.txt
@@ -6,6 +6,12 @@ "contentsOpaque": true, "backgroundColor": "#FFFFFF", "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/compositing/tiled-layers-hidpi-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/tiled-layers-hidpi-expected.txt index 80b7c226..7df2070 100644 --- a/third_party/blink/web_tests/platform/mac/compositing/tiled-layers-hidpi-expected.txt +++ b/third_party/blink/web_tests/platform/mac/compositing/tiled-layers-hidpi-expected.txt
@@ -12,6 +12,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/compositing/video/video-poster-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/video/video-poster-expected.txt index cb170c8..2d64a74c 100644 --- a/third_party/blink/web_tests/platform/mac/compositing/video/video-poster-expected.txt +++ b/third_party/blink/web_tests/platform/mac/compositing/video/video-poster-expected.txt
@@ -37,6 +37,11 @@ "backgroundColor": "#FFFFFF" }, { + "name": "ContentsLayer for LayoutVideo VIDEO", + "bounds": [352, 288], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-scrubbing'", "bounds": [352, 288], "transform": 1 @@ -45,6 +50,12 @@ "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (positioned) DIV)", "bounds": [352, 288], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt index 009d7f9..b986b0c 100644 --- a/third_party/blink/web_tests/platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt +++ b/third_party/blink/web_tests/platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt
@@ -6,36 +6,17 @@ "bounds": [785, 626], "contentsOpaque": true, "backgroundColor": "#FFFFFF" - } - ] -} - -After step 1 -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [785, 796], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" - } - ] -} - -After step 2 -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [785, 965], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" }, { - "name": "LayoutNGBlockFlow DIV class='composited hidden container'", - "position": [-4, -4], - "bounds": [757, 152], - "transform": 1 + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -45,8 +26,250 @@ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], + [18, 318, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} + +After step 1 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 1441], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='hidden composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 6 + }, + { + "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], + [18, 10, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [18, 318, 0, 1] + ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} + +After step 2 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 2780], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='hidden composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "LayoutNGBlockFlow DIV class='composited hidden container'", + "position": [-4, -4], + "bounds": [757, 152], + "transform": 4 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='composited box'", + "bounds": [184, 124], + "transform": 6 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 9 + }, + { + "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], + [18, 10, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], [18, 164, 0, 1] ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 7, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [18, 318, 0, 1] + ] + }, + { + "id": 8, + "parent": 7, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 9, + "parent": 8, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt index af1287ff..29e492a 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt
@@ -35,6 +35,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt index 1c1935c9..4668bb6 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt
@@ -22,6 +22,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt index 190069f3..00b7eff 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
@@ -449,6 +449,11 @@ ] }, { + "name": "ContentsLayer for LayoutVideo VIDEO id='video'", + "bounds": [150, 60], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'", "bounds": [150, 60], "transform": 1 @@ -457,6 +462,12 @@ "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (positioned) DIV)", "bounds": [150, 60], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/in-scaled-iframe-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/in-scaled-iframe-expected.txt index e9752af1..aa35aaa6 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/in-scaled-iframe-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/in-scaled-iframe-expected.txt
@@ -12,6 +12,12 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt index b236d87f..743281c 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt index 88a43c9..edf932e 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/overflow/composited-overflow-local-background-removed-expected.txt
@@ -31,6 +31,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt index 7b1496a..c8dfdca4 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
@@ -32,6 +32,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/fixed-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/fixed-expected.txt index 570522c9..5416e7f 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/fixed-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/fixed-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt index 52d2360..67b2712 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
@@ -27,6 +27,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt index eebdd530..b58db900 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt
@@ -22,6 +22,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt index c354f363..aa0c1da 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
@@ -17,6 +17,12 @@ "reason": "paint property change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt index 1b536f2..a82eaa8 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt
@@ -13,6 +13,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt index 9f231f8..1ae8074 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
@@ -18,6 +18,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt index ec70c289..c34879b 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt
@@ -32,6 +32,30 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt index 11f3860..212f16dd 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
@@ -27,6 +27,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt index ed1a3e5..d6f88303 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt
@@ -25,6 +25,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt index 3988ea5..5a5f23a 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt
@@ -11,6 +11,12 @@ "name": "LayoutNGBlockFlow (positioned) DIV id='searchbar'", "bounds": [150, 150], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt index 94abecf..042d658 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt
@@ -17,6 +17,12 @@ "name": "LayoutNGBlockFlow (sticky positioned) DIV id='sticky'", "bounds": [345, 18], "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-within-composited-scroller-expected.txt index 59948cec..42ac640 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-within-composited-scroller-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -27,6 +27,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
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 736e21f..a562a8d 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
@@ -43,6 +43,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt index 53c41bb..221e6c9 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt
@@ -17,6 +17,23 @@ "reason": "disappeared" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt index 7fa4331..7ccd7cf8 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt
@@ -12,6 +12,12 @@ "reason": "appeared" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
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 a01315dd..4f2f401 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
@@ -27,6 +27,12 @@ "reason": "style change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/table/table-shrink-row-repaint-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/table/table-shrink-row-repaint-expected.txt index 8c06d09..b1d826d 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/table/table-shrink-row-repaint-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/table/table-shrink-row-repaint-expected.txt
@@ -222,6 +222,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt index a8b42ed..97760b08 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [600, 15], + "contentsOpaque": true } ], "transforms": [ @@ -42,6 +48,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [400, 15], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/pagination/pagination-change-clip-crash-expected.txt b/third_party/blink/web_tests/platform/mac/paint/pagination/pagination-change-clip-crash-expected.txt index 29aa6d4..d05b5e1 100644 --- a/third_party/blink/web_tests/platform/mac/paint/pagination/pagination-change-clip-crash-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/pagination/pagination-change-clip-crash-expected.txt
@@ -12,6 +12,12 @@ "reason": "incremental" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/mac/virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt index 0416f42..b5042ab 100644 --- a/third_party/blink/web_tests/platform/mac/virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt +++ b/third_party/blink/web_tests/platform/mac/virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt
@@ -17,9 +17,21 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [345, 0], + "bounds": [15, 640], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (sticky positioned) DIV id='sticky'", "bounds": [345, 18], "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/compositing/iframes/invisible-nested-iframe-show-expected.txt b/third_party/blink/web_tests/platform/win/compositing/iframes/invisible-nested-iframe-show-expected.txt index c7e4761..c28db90d 100644 --- a/third_party/blink/web_tests/platform/win/compositing/iframes/invisible-nested-iframe-show-expected.txt +++ b/third_party/blink/web_tests/platform/win/compositing/iframes/invisible-nested-iframe-show-expected.txt
@@ -36,6 +36,12 @@ "transform": 5 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 150], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow DIV class='box'", "bounds": [210, 210], "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/win/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt b/third_party/blink/web_tests/platform/win/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt index 8ec3dc06..e8e544c 100644 --- a/third_party/blink/web_tests/platform/win/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt +++ b/third_party/blink/web_tests/platform/win/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt
@@ -20,6 +20,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [1, 286], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [286, 1], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [286, 286], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/platform/win/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt b/third_party/blink/web_tests/platform/win/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt index 412f11c..aa6f724 100644 --- a/third_party/blink/web_tests/platform/win/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt +++ b/third_party/blink/web_tests/platform/win/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt
@@ -20,6 +20,12 @@ "contentsOpaque": true, "backgroundColor": "#C0C0C0", "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/compositing/overflow/textarea-scroll-touch-expected.txt b/third_party/blink/web_tests/platform/win/compositing/overflow/textarea-scroll-touch-expected.txt index 335ebfc..414cf8c 100644 --- a/third_party/blink/web_tests/platform/win/compositing/overflow/textarea-scroll-touch-expected.txt +++ b/third_party/blink/web_tests/platform/win/compositing/overflow/textarea-scroll-touch-expected.txt
@@ -22,6 +22,12 @@ "transform": 2 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [190, 1], + "bounds": [15, 109], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [190, 110], "bounds": [15, 15], @@ -42,6 +48,12 @@ "transform": 4 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [190, 1], + "bounds": [15, 109], + "transform": 3 + }, + { "name": "Scroll Corner Layer", "position": [190, 110], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/platform/win/compositing/tiled-layers-hidpi-expected.txt b/third_party/blink/web_tests/platform/win/compositing/tiled-layers-hidpi-expected.txt index 9eb6df2e..81f30c2 100644 --- a/third_party/blink/web_tests/platform/win/compositing/tiled-layers-hidpi-expected.txt +++ b/third_party/blink/web_tests/platform/win/compositing/tiled-layers-hidpi-expected.txt
@@ -12,6 +12,12 @@ "contentsOpaque": true, "backgroundColor": "#0000FF", "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 1170], + "bounds": [1600, 30], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/compositing/video/video-poster-expected.txt b/third_party/blink/web_tests/platform/win/compositing/video/video-poster-expected.txt index bccfafec..7720490 100644 --- a/third_party/blink/web_tests/platform/win/compositing/video/video-poster-expected.txt +++ b/third_party/blink/web_tests/platform/win/compositing/video/video-poster-expected.txt
@@ -22,6 +22,12 @@ "bounds": [785, 605], "contentsOpaque": true, "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] } @@ -32,11 +38,16 @@ "layers": [ { "name": "Scrolling Contents Layer", - "bounds": [785, 813], + "bounds": [785, 909], "contentsOpaque": true, "backgroundColor": "#FFFFFF" }, { + "name": "ContentsLayer for LayoutVideo VIDEO", + "bounds": [352, 288], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-scrubbing'", "bounds": [352, 288], "transform": 1 @@ -45,6 +56,12 @@ "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (positioned) DIV)", "bounds": [352, 288], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/compositing/visibility/visibility-image-layers-dynamic-expected.txt b/third_party/blink/web_tests/platform/win/compositing/visibility/visibility-image-layers-dynamic-expected.txt index d5fb00c..7ea220c 100644 --- a/third_party/blink/web_tests/platform/win/compositing/visibility/visibility-image-layers-dynamic-expected.txt +++ b/third_party/blink/web_tests/platform/win/compositing/visibility/visibility-image-layers-dynamic-expected.txt
@@ -6,36 +6,17 @@ "bounds": [785, 626], "contentsOpaque": true, "backgroundColor": "#FFFFFF" - } - ] -} - -After step 1 -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [785, 806], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" - } - ] -} - -After step 2 -{ - "layers": [ - { - "name": "Scrolling Contents Layer", - "bounds": [785, 985], - "contentsOpaque": true, - "backgroundColor": "#FFFFFF" }, { - "name": "LayoutNGBlockFlow DIV class='composited hidden container'", - "position": [-4, -4], - "bounds": [757, 153], - "transform": 1 + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [ @@ -45,8 +26,250 @@ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} + +After step 1 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 1494], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='hidden composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 6 + }, + { + "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], + [18, 10, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + } + ] +} + +After step 2 +{ + "layers": [ + { + "name": "Scrolling Contents Layer", + "bounds": [785, 2921], + "contentsOpaque": true, + "backgroundColor": "#FFFFFF" + }, + { + "name": "ContentsLayer for LayoutImage IMG class='hidden composited box'", + "bounds": [184, 124], + "transform": 3 + }, + { + "name": "LayoutNGBlockFlow DIV class='composited hidden container'", + "position": [-4, -4], + "bounds": [757, 153], + "transform": 4 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='composited box'", + "bounds": [184, 124], + "transform": 6 + }, + { + "name": "ContentsLayer for LayoutImage IMG class='visible composited box'", + "bounds": [184, 124], + "transform": 9 + }, + { + "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], + [18, 10, 0, 1] + ] + }, + { + "id": 2, + "parent": 1, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 3, + "parent": 2, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], [18, 165, 0, 1] ] + }, + { + "id": 5, + "parent": 4, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 6, + "parent": 5, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] + }, + { + "id": 7, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [18, 320, 0, 1] + ] + }, + { + "id": 8, + "parent": 7, + "transform": [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [20, 20, 0, 1] + ] + }, + { + "id": 9, + "parent": 8, + "transform": [ + [0.54347825050354, 0, 0, 0], + [0, 0.806451618671417, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ], + "origin": [0, 0] } ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt index f1ae139..c726166 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt
@@ -35,6 +35,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt index b0ec989e..46ab2d62f 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt
@@ -22,6 +22,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt index 9230b97..a70426e 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
@@ -449,6 +449,11 @@ ] }, { + "name": "ContentsLayer for LayoutVideo VIDEO id='video'", + "bounds": [150, 60], + "transform": 1 + }, + { "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'", "bounds": [150, 60], "transform": 1 @@ -457,6 +462,12 @@ "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (positioned) DIV)", "bounds": [150, 60], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/in-scaled-iframe-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/in-scaled-iframe-expected.txt index 58400f96..f0c49d9 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/in-scaled-iframe-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/in-scaled-iframe-expected.txt
@@ -12,6 +12,12 @@ "reason": "background" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt index 2a95ff29..a0e6e9c3 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt index 078557b..1ea3ad3 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
@@ -32,6 +32,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/position/fixed-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/position/fixed-expected.txt index 018f92e..35b4b37 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/position/fixed-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/position/fixed-expected.txt
@@ -20,6 +20,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt index 42cc3210..e1e4488 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt
@@ -13,6 +13,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt index f0bfca12..729db34 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
@@ -18,6 +18,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt index a626aff..22e10cd 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt
@@ -32,6 +32,30 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15], + "paintInvalidations": [ + { + "object": "Scroll Corner Layer", + "rect": [0, 0, 15, 15], + "reason": "full layer" + } + ] } ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt index 2aac395a..9d6757d 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
@@ -27,6 +27,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt index 388a0122..8c58368d 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt
@@ -25,6 +25,12 @@ } ], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt index 760e5b6..9d8e439 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt
@@ -11,6 +11,12 @@ "name": "LayoutNGBlockFlow (positioned) DIV id='searchbar'", "bounds": [150, 150], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-within-composited-scroller-expected.txt index 13de8a8..e5057e63 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-within-composited-scroller-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -27,6 +27,18 @@ "transform": 2 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 185], + "bounds": [185, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [185, 0], + "bounds": [15, 185], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [185, 185], "bounds": [15, 15],
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 7d486fd..bbc867d2 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
@@ -43,6 +43,23 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt index 09c4f50..52c92d1 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt
@@ -17,6 +17,23 @@ "reason": "disappeared" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [785, 15], + "contentsOpaque": true + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 585], + "contentsOpaque": true + }, + { + "name": "Scroll Corner Layer", + "position": [785, 585], + "bounds": [15, 15] } ] }
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 7e16351b..5f7e109 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
@@ -27,6 +27,12 @@ "reason": "style change" } ] + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 585], + "bounds": [800, 15], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/table/table-shrink-row-repaint-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/table/table-shrink-row-repaint-expected.txt index 4f686ba..68f9d470 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/table/table-shrink-row-repaint-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/table/table-shrink-row-repaint-expected.txt
@@ -222,6 +222,12 @@ "reason": "geometry" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt index 3d1894b..62f907e 100644 --- a/third_party/blink/web_tests/platform/win/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
@@ -13,6 +13,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [600, 15], + "contentsOpaque": true } ], "transforms": [ @@ -42,6 +48,12 @@ } ], "transform": 1 + }, + { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 235], + "bounds": [400, 15], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/pagination/pagination-change-clip-crash-expected.txt b/third_party/blink/web_tests/platform/win/paint/pagination/pagination-change-clip-crash-expected.txt index dbac93e..2780fb7e 100644 --- a/third_party/blink/web_tests/platform/win/paint/pagination/pagination-change-clip-crash-expected.txt +++ b/third_party/blink/web_tests/platform/win/paint/pagination/pagination-change-clip-crash-expected.txt
@@ -12,6 +12,12 @@ "reason": "incremental" } ] + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ] }
diff --git a/third_party/blink/web_tests/platform/win/virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt b/third_party/blink/web_tests/platform/win/virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt index f59fc24..6e534e1 100644 --- a/third_party/blink/web_tests/platform/win/virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt +++ b/third_party/blink/web_tests/platform/win/virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky-expected.txt
@@ -17,9 +17,21 @@ "transform": 3 }, { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [345, 0], + "bounds": [15, 640], + "transform": 2 + }, + { "name": "LayoutNGBlockFlow (sticky positioned) DIV id='sticky'", "bounds": [345, 20], "transform": 4 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [785, 0], + "bounds": [15, 600], + "contentsOpaque": true } ], "transforms": [
diff --git a/third_party/blink/web_tests/virtual/android/fullscreen/video-overlay-scroll-expected.txt b/third_party/blink/web_tests/virtual/android/fullscreen/video-overlay-scroll-expected.txt index 3944fff..6605733 100644 --- a/third_party/blink/web_tests/virtual/android/fullscreen/video-overlay-scroll-expected.txt +++ b/third_party/blink/web_tests/virtual/android/fullscreen/video-overlay-scroll-expected.txt
@@ -2,7 +2,10 @@ END OF TEST { - "layers": [ + "name": "LayoutVideo (positioned) VIDEO id='video'", + "bounds": [800, 600], + "drawsContent": false, + "children": [ { "name": "LayoutFlexibleBox (relative positioned) DIV class='phase-pre-ready state-no-source sizing-small use-default-poster'", "bounds": [800, 600], @@ -10,6 +13,11 @@ "backgroundColor": "#333333" }, { + "name": "LayoutNGBlockFlow (positioned) DIV", + "bounds": [800, 600], + "drawsContent": false + }, + { "name": "LayoutFlexibleBox DIV", "bounds": [800, 600] }
diff --git a/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-addresses.tentative-expected.txt b/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-addresses.tentative-expected.txt index 8d7447d..4b1defcb 100644 --- a/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-addresses.tentative-expected.txt +++ b/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-addresses.tentative-expected.txt
@@ -1,6 +1,6 @@ This is a testharness.js-based test. PASS Relative URL-like addresses / should accept strings prefixed with ./, ../, or / -FAIL Relative URL-like addresses / should not accept strings prefixed with ./, ../, or / for data: base URLs assert_equals: expected "{\"imports\":{},\"scopes\":{}}" but got "{\"imports\":{\"dotDotSlash\":\"http://web-platform.test:8001/import-maps/foo\",\"dotSlash\":\"http://web-platform.test:8001/import-maps/imported/foo\",\"slash\":\"http://web-platform.test:8001/foo\"},\"scopes\":{}}" +FAIL Relative URL-like addresses / should not accept strings prefixed with ./, ../, or / for data: base URLs test helper does not support data: base URLs PASS Relative URL-like addresses / should accept the literal strings ./, ../, or / with no suffix FAIL Relative URL-like addresses / should ignore percent-encoded variants of ./, ../, or / assert_equals: expected "{\"imports\":{},\"scopes\":{}}" but got "{\"imports\":{\"dotDotSlash1\":[],\"dotDotSlash2\":[],\"dotDotSlash3\":[],\"dotSlash1\":[],\"dotSlash2\":[],\"dotSlash3\":[],\"slash2\":[]},\"scopes\":{}}" PASS Absolute URL addresses / should only accept absolute URL addresses with fetch schemes
diff --git a/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-scope-keys.tentative-expected.txt b/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-scope-keys.tentative-expected.txt index f2c8f28..a50431d4 100644 --- a/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-scope-keys.tentative-expected.txt +++ b/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-scope-keys.tentative-expected.txt
@@ -7,6 +7,6 @@ PASS Relative URL scope keys / should deduplicate based on URL parsing rules PASS Absolute URL scope keys / should accept all absolute URL scope keys, with or without fetch schemes FAIL Absolute URL scope keys / should parse absolute URL scope keys, ignoring unparseable ones assert_equals: expected "{\"imports\":{},\"scopes\":{\"https://base.example/path1/path2/example.org\":{},\"https://example.com/%41\":{},\"https://example.com///\":{},\"https://example.com/foo/\":{},\"https://example.net/\":{}}}" but got "{\"imports\":{},\"scopes\":{\"https://base.example/path1/path2/example.org\":{},\"https://ex%20ample.org/\":{},\"https://example.com///\":{},\"https://example.com/A\":{},\"https://example.com/foo/\":{},\"https://example.net/\":{}}}" -FAIL Absolute URL scope keys / should ignore relative URL scope keys when the base URL is a data: URL assert_equals: expected "{\"imports\":{},\"scopes\":{}}" but got "{\"imports\":{},\"scopes\":{\"http://web-platform.test:8001/foo\":{},\"http://web-platform.test:8001/import-maps/foo\":{},\"http://web-platform.test:8001/import-maps/imported/foo\":{}}}" +FAIL Absolute URL scope keys / should ignore relative URL scope keys when the base URL is a data: URL test helper does not support data: base URLs Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-specifier-keys.tentative-expected.txt b/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-specifier-keys.tentative-expected.txt index d27449d..e855dbe0 100644 --- a/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-specifier-keys.tentative-expected.txt +++ b/third_party/blink/web_tests/virtual/import-maps-without-builtin-modules/external/wpt/import-maps/imported/parsing-specifier-keys.tentative-expected.txt
@@ -1,6 +1,6 @@ This is a testharness.js-based test. PASS Relative URL-like specifier keys / should absolutize strings prefixed with ./, ../, or / into the corresponding URLs -FAIL Relative URL-like specifier keys / should not absolutize strings prefixed with ./, ../, or / with a data: URL base assert_equals: expected "{\"imports\":{\"../foo\":\"https://example.com/dotdotslash\",\"./foo\":\"https://example.com/dotslash\",\"/foo\":\"https://example.com/slash\"},\"scopes\":{}}" but got "{\"imports\":{\"http://web-platform.test:8001/foo\":\"https://example.com/slash\",\"http://web-platform.test:8001/import-maps/foo\":\"https://example.com/dotdotslash\",\"http://web-platform.test:8001/import-maps/imported/foo\":\"https://example.com/dotslash\"},\"scopes\":{}}" +FAIL Relative URL-like specifier keys / should not absolutize strings prefixed with ./, ../, or / with a data: URL base test helper does not support data: base URLs PASS Relative URL-like specifier keys / should absolutize the literal strings ./, ../, or / with no suffix PASS Relative URL-like specifier keys / should treat percent-encoded variants of ./, ../, or / as bare specifiers PASS Absolute URL specifier keys / Accept all absolute URL specifier keys even with fetch schemes as URLs
diff --git a/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt b/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt index 6c30c19a..3fe8b77 100644 --- a/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt +++ b/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt
@@ -17,6 +17,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt b/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt index 6c30c19a..3fe8b77 100644 --- a/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt +++ b/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
@@ -17,6 +17,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-overlay-with-touch-expected.txt b/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-overlay-with-touch-expected.txt index 6c30c19a..3fe8b77 100644 --- a/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-overlay-with-touch-expected.txt +++ b/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-overlay-with-touch-expected.txt
@@ -17,6 +17,18 @@ "transform": 1 }, { + "name": "ContentsLayer for Horizontal Scrollbar Layer", + "position": [0, 285], + "bounds": [285, 15], + "transform": 1 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [285, 0], + "bounds": [15, 285], + "transform": 1 + }, + { "name": "Scroll Corner Layer", "position": [285, 285], "bounds": [15, 15],
diff --git a/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbars-within-overflow-scroll-expected.txt b/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbars-within-overflow-scroll-expected.txt index 01ed37b..b355d28 100644 --- a/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbars-within-overflow-scroll-expected.txt +++ b/third_party/blink/web_tests/virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbars-within-overflow-scroll-expected.txt
@@ -26,6 +26,17 @@ "position": [1, 1], "bounds": [100, 500], "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [94, 1], + "bounds": [7, 100], + "transform": 2 + }, + { + "name": "ContentsLayer for Vertical Scrollbar Layer", + "position": [394, 1], + "bounds": [7, 300] } ], "transforms": [
diff --git a/third_party/blink/web_tests/wpt_internal/wake-lock/wakelockpermissiondescriptor.https.html b/third_party/blink/web_tests/wpt_internal/wake-lock/wakelockpermissiondescriptor.https.html new file mode 100644 index 0000000..1c00faf --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/wake-lock/wakelockpermissiondescriptor.https.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<link rel="help" href="https://w3c.github.io/wake-lock/#the-wakelockpermissiondescriptor-dictionary"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +// TODO(https://crbug.com/1015327): Move this to WPT once we can change +// permissions via testdriver.js. + +promise_test(t => { + return navigator.permissions.query({name:'wake-lock', type: 'screen'}).then(status => { + assert_class_string(status, "PermissionStatus"); + assert_equals(status.state, "denied"); + }); +}, "WakeLockPermissionDescriptor with type=screen works"); + +promise_test(t => { + return navigator.permissions.query({ name: 'wake-lock', type: 'system' }).then(status => { + assert_class_string(status, "PermissionStatus"); + assert_equals(status.state, "denied"); + }); +}, "WakeLockPermissionDescriptor with type=system works"); +</script>
diff --git a/third_party/boringssl/BUILD.generated_tests.gni b/third_party/boringssl/BUILD.generated_tests.gni index 1e9ca794..3a0ea64c 100644 --- a/third_party/boringssl/BUILD.generated_tests.gni +++ b/third_party/boringssl/BUILD.generated_tests.gni
@@ -129,6 +129,7 @@ "src/crypto/evp/scrypt_tests.txt", "src/crypto/fipsmodule/aes/aes_tests.txt", "src/crypto/fipsmodule/bn/bn_tests.txt", + "src/crypto/fipsmodule/bn/miller_rabin_tests.txt", "src/crypto/fipsmodule/ec/ec_scalar_base_mult_tests.txt", "src/crypto/fipsmodule/ec/p256-x86_64_tests.txt", "src/crypto/fipsmodule/ecdsa/ecdsa_sign_tests.txt",
diff --git a/third_party/crashpad/README.chromium b/third_party/crashpad/README.chromium index 907127bf..8b96957 100644 --- a/third_party/crashpad/README.chromium +++ b/third_party/crashpad/README.chromium
@@ -2,7 +2,7 @@ Short Name: crashpad URL: https://crashpad.chromium.org/ Version: unknown -Revision: fe52a01df1e9c8a5fe8b92872d4bf8689d0cd3b4 +Revision: 47a342133d60018f2ffda0037ffe2b5f0d3f7482 License: Apache 2.0 License File: crashpad/LICENSE Security Critical: yes
diff --git a/third_party/crashpad/crashpad/client/crash_report_database_test.cc b/third_party/crashpad/crashpad/client/crash_report_database_test.cc index ca66bce6..ef217c1 100644 --- a/third_party/crashpad/crashpad/client/crash_report_database_test.cc +++ b/third_party/crashpad/crashpad/client/crash_report_database_test.cc
@@ -20,7 +20,6 @@ #include "test/errors.h" #include "test/file.h" #include "test/filesystem.h" -#include "test/gtest_disabled.h" #include "test/scoped_temp_dir.h" #include "util/file/file_io.h" #include "util/file/filesystem.h" @@ -671,7 +670,7 @@ TEST_F(CrashReportDatabaseTest, Attachments) { #if defined(OS_MACOSX) || defined(OS_WIN) // Attachments aren't supported on Mac and Windows yet. - DISABLED_TEST(); + GTEST_SKIP(); #else std::unique_ptr<CrashReportDatabase::NewReport> new_report; ASSERT_EQ(db()->PrepareNewCrashReport(&new_report), @@ -717,7 +716,7 @@ TEST_F(CrashReportDatabaseTest, OrphanedAttachments) { #if defined(OS_MACOSX) || defined(OS_WIN) // Attachments aren't supported on Mac and Windows yet. - DISABLED_TEST(); + GTEST_SKIP(); #else // TODO: This is using paths that are specific to the generic implementation // and will need to be generalized for Mac and Windows.
diff --git a/third_party/crashpad/crashpad/compat/mac/AvailabilityMacros.h b/third_party/crashpad/crashpad/compat/mac/AvailabilityMacros.h index f105f94..a83d2a4 100644 --- a/third_party/crashpad/crashpad/compat/mac/AvailabilityMacros.h +++ b/third_party/crashpad/crashpad/compat/mac/AvailabilityMacros.h
@@ -59,4 +59,16 @@ #define MAC_OS_X_VERSION_10_13 101300 #endif +// 10.14 SDK + +#ifndef MAC_OS_X_VERSION_10_14 +#define MAC_OS_X_VERSION_10_14 101400 +#endif + +// 10.15 SDK + +#ifndef MAC_OS_X_VERSION_10_15 +#define MAC_OS_X_VERSION_10_15 101500 +#endif + #endif // CRASHPAD_COMPAT_MAC_AVAILABILITYMACROS_H_
diff --git a/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux_test.cc b/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux_test.cc index d767700..5b57236 100644 --- a/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux_test.cc +++ b/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux_test.cc
@@ -38,7 +38,6 @@ #include "build/build_config.h" #include "gtest/gtest.h" #include "test/errors.h" -#include "test/gtest_disabled.h" #include "test/linux/fake_ptrace_connection.h" #include "test/linux/get_tls.h" #include "test/multiprocess.h" @@ -428,7 +427,7 @@ } void MultiprocessChild() override { - const LinuxVMSize stack_size = page_size_ * 3; + const LinuxVMSize stack_size = page_size_ * 4; GrowStack(stack_size, reinterpret_cast<LinuxVMAddress>(&stack_size)); } @@ -441,7 +440,7 @@ } else { // Write-protect a page on our stack to split up the mapping LinuxVMAddress page_addr = - stack_address - (stack_address % page_size_) + page_size_; + stack_address - (stack_address % page_size_) + 2 * page_size_; ASSERT_EQ( mprotect(reinterpret_cast<void*>(page_addr), page_size_, PROT_READ), 0) @@ -809,7 +808,7 @@ // presence of a libc symbol which was introduced in Q. if (!crashpad::internal::Dlsym(RTLD_DEFAULT, "android_fdsan_close_with_tag")) { - DISABLED_TEST(); + GTEST_SKIP(); } android_set_abort_message(kTestAbortMessage);
diff --git a/third_party/crashpad/crashpad/snapshot/mac/process_types/custom.cc b/third_party/crashpad/crashpad/snapshot/mac/process_types/custom.cc index 3ca5646c..a76c3eb 100644 --- a/third_party/crashpad/crashpad/snapshot/mac/process_types/custom.cc +++ b/third_party/crashpad/crashpad/snapshot/mac/process_types/custom.cc
@@ -19,6 +19,7 @@ #include <sys/types.h> #include <algorithm> +#include <limits> #include <type_traits> #include "base/logging.h" @@ -26,6 +27,7 @@ #include "base/stl_util.h" #include "base/strings/stringprintf.h" #include "snapshot/mac/process_types/internal.h" +#include "util/mac/mac_util.h" #include "util/process/process_memory_mac.h" #if !DOXYGEN @@ -140,8 +142,8 @@ offsetof(dyld_all_image_infos<Traits>, sharedCacheSlide), // 11 offsetof(dyld_all_image_infos<Traits>, sharedCacheUUID), // 12 offsetof(dyld_all_image_infos<Traits>, infoArrayChangeTimestamp), // 13 - offsetof(dyld_all_image_infos<Traits>, end_14_15), // 14 - offsetof(dyld_all_image_infos<Traits>, end_14_15), // 15 + offsetof(dyld_all_image_infos<Traits>, end_14), // 14 + std::numeric_limits<size_t>::max(), // 15, see below sizeof(dyld_all_image_infos<Traits>), // 16 }; @@ -151,7 +153,27 @@ static_assert(std::is_unsigned<decltype(version)>::value, "version must be unsigned"); - return kSizeForVersion[version]; + + if (version == 15) { + // Disambiguate between the two different layouts for version 15. The + // original one introduced in macOS 10.12 had the same size as version 14. + // The revised one in macOS 10.13 grew. It’s safe to assume that the + // dyld_all_image_infos structure came from the same system that’s now + // interpreting it, so use an OS version check. + int mac_os_x_minor_version = MacOSXMinorVersion(); + if (mac_os_x_minor_version == 12) { + return offsetof(dyld_all_image_infos<Traits>, end_14); + } + + DCHECK_GE(mac_os_x_minor_version, 13); + DCHECK_LE(mac_os_x_minor_version, 14); + return offsetof(dyld_all_image_infos<Traits>, platform); + } + + size_t size = kSizeForVersion[version]; + DCHECK_NE(size, std::numeric_limits<size_t>::max()); + + return size; } // static
diff --git a/third_party/crashpad/crashpad/snapshot/mac/process_types/dyld_images.proctype b/third_party/crashpad/crashpad/snapshot/mac/process_types/dyld_images.proctype index f92a800..3b040854 100644 --- a/third_party/crashpad/crashpad/snapshot/mac/process_types/dyld_images.proctype +++ b/third_party/crashpad/crashpad/snapshot/mac/process_types/dyld_images.proctype
@@ -121,23 +121,29 @@ // the runtimes that use versions 14 and 15 were built with SDKs that did not // have this extra padding, it’s necessary to treat the element at index 4 on // 32-bit systems as outside of the version 14 and 15 structure. This is why - // |reserved| is only declared a 4-element array, with a special end_14_15 - // member (not present in the native definition) available to indicate the - // end of the native version 14 and 15 structure, preceding the padding in the - // 32-bit structure that would natively be addressed at index 4 of |reserved|. - // Treat reserved_4_32 as only available in version 16 of the structure. + // |reserved| is only declared a 4-element array, with a special end_14 member + // (not present in the native definition) available to indicate the end of the + // native version 14 structure and the 10.12 version 15 structure, preceding + // the padding in the 32-bit structure that would natively be addressed at + // index 4 of |reserved|. Treat reserved_4_32 as only available in version 16 + // of the structure. PROCESS_TYPE_STRUCT_MEMBER(UIntPtr, reserved, [4]) PROCESS_TYPE_STRUCT_MEMBER(Reserved64_64Only, reserved_4_64) PROCESS_TYPE_STRUCT_MEMBER(Reserved64_64Only, reserved_5) PROCESS_TYPE_STRUCT_MEMBER(Reserved64_64Only, reserved_6) PROCESS_TYPE_STRUCT_MEMBER(Reserved64_64Only, reserved_7) PROCESS_TYPE_STRUCT_MEMBER(Reserved64_64Only, reserved_8) - PROCESS_TYPE_STRUCT_MEMBER(Nothing, end_14_15) + PROCESS_TYPE_STRUCT_MEMBER(Nothing, end_14) PROCESS_TYPE_STRUCT_MEMBER(Reserved32_32Only, reserved_4_32) - // Version 16 (macOS 10.13) + // Version 15 (macOS 10.13). <mach-o/dyld_images.h> incorrectly claims that + // these were introduced at version 16. These fields are not present in macOS + // 10.12, which also identifies its structure as version 15. PROCESS_TYPE_STRUCT_MEMBER(UIntPtr, compact_dyld_image_info_addr) PROCESS_TYPE_STRUCT_MEMBER(ULong, compact_dyld_image_info_size) // size_t + + // Version 16 (macOS 10.15) + PROCESS_TYPE_STRUCT_MEMBER(uint32_t, platform) // dyld_platform_t PROCESS_TYPE_STRUCT_END(dyld_all_image_infos) #endif // ! PROCESS_TYPE_STRUCT_IMPLEMENT_INTERNAL_READ_INTO &&
diff --git a/third_party/crashpad/crashpad/snapshot/mac/process_types_test.cc b/third_party/crashpad/crashpad/snapshot/mac/process_types_test.cc index 2ab3034c..8523b9c 100644 --- a/third_party/crashpad/crashpad/snapshot/mac/process_types_test.cc +++ b/third_party/crashpad/crashpad/snapshot/mac/process_types_test.cc
@@ -18,6 +18,7 @@ #include <mach/mach.h> #include <string.h> +#include <limits> #include <vector> #include "base/stl_util.h" @@ -47,13 +48,11 @@ TEST(ProcessTypes, DyldImagesSelf) { // Get the in-process view of dyld_all_image_infos, and check it for sanity. const dyld_all_image_infos* self_image_infos = DyldGetAllImageInfos(); - int mac_os_x_minor_version = MacOSXMinorVersion(); + const int mac_os_x_minor_version = MacOSXMinorVersion(); - // The 10.13 SDK defines dyld_all_image_infos version 16 and says that it’s - // used on 10.13, but 10.13db1 17A264c uses version 15. - // - // TODO(mark): Recheck later in the beta period, up to the 10.13 release. - if (mac_os_x_minor_version >= 12) { + if (mac_os_x_minor_version >= 15) { + EXPECT_GE(self_image_infos->version, 16u); + } else if (mac_os_x_minor_version >= 12) { EXPECT_GE(self_image_infos->version, 15u); } else if (mac_os_x_minor_version >= 9) { EXPECT_GE(self_image_infos->version, 13u); @@ -104,7 +103,7 @@ ProcessReaderMac process_reader; ASSERT_TRUE(process_reader.Initialize(mach_task_self())); -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13 +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_15 constexpr uint32_t kDyldAllImageInfosVersionInSDK = 16; #elif MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12 constexpr uint32_t kDyldAllImageInfosVersionInSDK = 15; @@ -120,12 +119,33 @@ // Make sure that the size of the structure as declared in the SDK matches the // size expected for the version of the structure that the SDK describes. - EXPECT_EQ(process_types::dyld_all_image_infos::ExpectedSizeForVersion( - &process_reader, kDyldAllImageInfosVersionInSDK), - sizeof(dyld_all_image_infos)); + // + // There are two possible layouts for version 15, and the + // ExpectedSizeForVersion() implementation infers the correct one based on the + // run-time OS version, so if the SDK defines the version 15 structure, this + // test can only be performed if the run-time OS natively uses the same format + // structure as the SDK. + bool test_expected_size_for_version_matches_sdk_sizeof; +#if MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_12 + test_expected_size_for_version_matches_sdk_sizeof = + mac_os_x_minor_version == 12; +#elif MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13 && \ + MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_14 + test_expected_size_for_version_matches_sdk_sizeof = + mac_os_x_minor_version >= 13 && mac_os_x_minor_version <= 14; +#else + test_expected_size_for_version_matches_sdk_sizeof = true; +#endif + + if (test_expected_size_for_version_matches_sdk_sizeof) { + EXPECT_EQ(process_types::dyld_all_image_infos::ExpectedSizeForVersion( + &process_reader, kDyldAllImageInfosVersionInSDK), + sizeof(dyld_all_image_infos)); + } // Make sure that the computed sizes of various versions of this structure are // correct at different bitnessses. + constexpr size_t kSpecialCase = std::numeric_limits<size_t>::max(); constexpr struct { uint32_t version; size_t size_32; @@ -144,13 +164,40 @@ {12, 84, 160}, {13, 104, 184}, {14, 164, 304}, - {15, 164, 304}, - {16, 176, 320}, + {15, kSpecialCase, kSpecialCase}, + {16, 184, 328}, }; for (size_t index = 0; index < base::size(kVersionsAndSizes); ++index) { uint32_t version = kVersionsAndSizes[index].version; SCOPED_TRACE(base::StringPrintf("index %zu, version %u", index, version)); + if (version == 15) { + if (mac_os_x_minor_version == 12) { + EXPECT_EQ(process_types::internal::dyld_all_image_infos< + process_types::internal::Traits32>:: + ExpectedSizeForVersion(version), + 164u); + EXPECT_EQ(process_types::internal::dyld_all_image_infos< + process_types::internal::Traits64>:: + ExpectedSizeForVersion(version), + 304u); + } else if (mac_os_x_minor_version >= 13 && mac_os_x_minor_version <= 14) { + EXPECT_EQ(process_types::internal::dyld_all_image_infos< + process_types::internal::Traits32>:: + ExpectedSizeForVersion(version), + 176u); + EXPECT_EQ(process_types::internal::dyld_all_image_infos< + process_types::internal::Traits64>:: + ExpectedSizeForVersion(version), + 320u); + } + + continue; + } + + ASSERT_NE(kVersionsAndSizes[index].size_32, kSpecialCase); + ASSERT_NE(kVersionsAndSizes[index].size_64, kSpecialCase); + EXPECT_EQ( process_types::internal::dyld_all_image_infos< process_types::internal::Traits32>::ExpectedSizeForVersion(version), @@ -306,7 +353,7 @@ #endif #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13 - if (proctype_image_infos.version >= 16) { + if (proctype_image_infos.version >= 15 && mac_os_x_minor_version >= 13) { EXPECT_EQ(proctype_image_infos.compact_dyld_image_info_addr, self_image_infos->compact_dyld_image_info_addr); EXPECT_EQ(proctype_image_infos.compact_dyld_image_info_size, @@ -314,6 +361,12 @@ } #endif +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_15 + if (proctype_image_infos.version >= 16) { + EXPECT_EQ(proctype_image_infos.platform, self_image_infos->platform); + } +#endif + if (proctype_image_infos.version >= 1) { std::vector<process_types::dyld_image_info> proctype_image_info_vector( proctype_image_infos.infoArrayCount);
diff --git a/third_party/crashpad/crashpad/snapshot/win/exception_snapshot_win_test.cc b/third_party/crashpad/crashpad/snapshot/win/exception_snapshot_win_test.cc index 486e6df..b4c44a83 100644 --- a/third_party/crashpad/crashpad/snapshot/win/exception_snapshot_win_test.cc +++ b/third_party/crashpad/crashpad/snapshot/win/exception_snapshot_win_test.cc
@@ -23,7 +23,6 @@ #include "gtest/gtest.h" #include "snapshot/win/process_snapshot_win.h" #include "test/errors.h" -#include "test/gtest_disabled.h" #include "test/test_paths.h" #include "test/win/child_launcher.h" #include "util/file/file_io.h" @@ -176,7 +175,7 @@ #if defined(ARCH_CPU_64_BITS) TEST(ExceptionSnapshotWinTest, ChildCrashWOW64) { if (!TestPaths::Has32BitBuildArtifacts()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestCrashingChild(TestPaths::Architecture::k32Bit); @@ -293,7 +292,7 @@ #if defined(ARCH_CPU_64_BITS) TEST(SimulateCrash, ChildDumpWithoutCrashingWOW64) { if (!TestPaths::Has32BitBuildArtifacts()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestDumpWithoutCrashingChild(TestPaths::Architecture::k32Bit);
diff --git a/third_party/crashpad/crashpad/snapshot/win/extra_memory_ranges_test.cc b/third_party/crashpad/crashpad/snapshot/win/extra_memory_ranges_test.cc index dcef805..e0c17a2 100644 --- a/third_party/crashpad/crashpad/snapshot/win/extra_memory_ranges_test.cc +++ b/third_party/crashpad/crashpad/snapshot/win/extra_memory_ranges_test.cc
@@ -25,7 +25,6 @@ #include "client/simple_address_range_bag.h" #include "gtest/gtest.h" #include "snapshot/win/process_snapshot_win.h" -#include "test/gtest_disabled.h" #include "test/test_paths.h" #include "test/win/child_launcher.h" #include "util/file/file_io.h" @@ -110,7 +109,7 @@ #if defined(ARCH_CPU_64_BITS) TEST(ExtraMemoryRanges, DontCrashWOW64) { if (!TestPaths::Has32BitBuildArtifacts()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestExtraMemoryRanges(kDontCrash, TestPaths::Architecture::k32Bit); @@ -118,7 +117,7 @@ TEST(ExtraMemoryRanges, CrashDebugBreakWOW64) { if (!TestPaths::Has32BitBuildArtifacts()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestExtraMemoryRanges(kCrashDebugBreak, TestPaths::Architecture::k32Bit);
diff --git a/third_party/crashpad/crashpad/snapshot/win/module_snapshot_win_test.cc b/third_party/crashpad/crashpad/snapshot/win/module_snapshot_win_test.cc index 6a14cf5e..d9786cf 100644 --- a/third_party/crashpad/crashpad/snapshot/win/module_snapshot_win_test.cc +++ b/third_party/crashpad/crashpad/snapshot/win/module_snapshot_win_test.cc
@@ -30,7 +30,6 @@ #include "snapshot/annotation_snapshot.h" #include "snapshot/win/pe_image_reader.h" #include "snapshot/win/process_reader_win.h" -#include "test/gtest_disabled.h" #include "test/test_paths.h" #include "test/win/child_launcher.h" #include "util/file/file_io.h" @@ -152,7 +151,7 @@ #if defined(ARCH_CPU_64_BITS) TEST(ModuleSnapshotWinTest, DontCrashWOW64) { if (!TestPaths::Has32BitBuildArtifacts()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestAnnotationsOnCrash(kDontCrash, TestPaths::Architecture::k32Bit); @@ -160,7 +159,7 @@ TEST(ModuleSnapshotWinTest, CrashDebugBreakWOW64) { if (!TestPaths::Has32BitBuildArtifacts()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestAnnotationsOnCrash(kCrashDebugBreak, TestPaths::Architecture::k32Bit);
diff --git a/third_party/crashpad/crashpad/snapshot/win/process_snapshot_win_test.cc b/third_party/crashpad/crashpad/snapshot/win/process_snapshot_win_test.cc index 8a3e6a4..7192aa85 100644 --- a/third_party/crashpad/crashpad/snapshot/win/process_snapshot_win_test.cc +++ b/third_party/crashpad/crashpad/snapshot/win/process_snapshot_win_test.cc
@@ -20,7 +20,6 @@ #include "snapshot/win/pe_image_reader.h" #include "snapshot/win/process_reader_win.h" #include "test/errors.h" -#include "test/gtest_disabled.h" #include "test/test_paths.h" #include "test/win/child_launcher.h" #include "util/file/file_io.h" @@ -120,7 +119,7 @@ #if defined(ARCH_CPU_64_BITS) TEST(ProcessSnapshotTest, CrashpadInfoChildWOW64) { if (!TestPaths::Has32BitBuildArtifacts()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestImageReaderChild(TestPaths::Architecture::k32Bit);
diff --git a/third_party/crashpad/crashpad/test/BUILD.gn b/third_party/crashpad/crashpad/test/BUILD.gn index fb99bce6..7f44863 100644 --- a/third_party/crashpad/crashpad/test/BUILD.gn +++ b/third_party/crashpad/crashpad/test/BUILD.gn
@@ -25,8 +25,6 @@ "filesystem.cc", "filesystem.h", "gtest_death.h", - "gtest_disabled.cc", - "gtest_disabled.h", "hex_string.cc", "hex_string.h", "main_arguments.cc",
diff --git a/third_party/crashpad/crashpad/test/gtest_disabled.cc b/third_party/crashpad/crashpad/test/gtest_disabled.cc deleted file mode 100644 index fab6802..0000000 --- a/third_party/crashpad/crashpad/test/gtest_disabled.cc +++ /dev/null
@@ -1,83 +0,0 @@ -// Copyright 2017 The Crashpad Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "test/gtest_disabled.h" - -#include <stdio.h> - -#include "base/format_macros.h" -#include "base/logging.h" -#include "base/strings/stringprintf.h" - -namespace crashpad { -namespace test { - -namespace { - -DisabledTestGtestEnvironment* g_instance; - -} // namespace - -// static -DisabledTestGtestEnvironment* DisabledTestGtestEnvironment::Get() { - if (!g_instance) { - g_instance = new DisabledTestGtestEnvironment(); - } - return g_instance; -} - -void DisabledTestGtestEnvironment::DisabledTest() { - const testing::TestInfo* test_info = - testing::UnitTest::GetInstance()->current_test_info(); - std::string disabled_test = base::StringPrintf( - "%s.%s", test_info->test_case_name(), test_info->name()); - - // Show a DISABLED message using a format similar to gtest, along with a hint - // explaining that OK or FAILED will also appear. - printf( - "This test has been disabled dynamically.\n" - "It will appear as both DISABLED and OK or FAILED.\n" - "[ DISABLED ] %s\n", - disabled_test.c_str()); - - disabled_tests_.push_back(disabled_test); -} - -DisabledTestGtestEnvironment::DisabledTestGtestEnvironment() - : testing::Environment(), - disabled_tests_() { - DCHECK(!g_instance); -} - -DisabledTestGtestEnvironment::~DisabledTestGtestEnvironment() { - DCHECK_EQ(this, g_instance); - g_instance = nullptr; -} - -void DisabledTestGtestEnvironment::TearDown() { - if (!disabled_tests_.empty()) { - printf( - "[ DISABLED ] %" PRIuS " dynamically disabled test%s, listed below:\n" - "[ DISABLED ] %s also counted in PASSED or FAILED below.\n", - disabled_tests_.size(), - disabled_tests_.size() == 1 ? "" : "s", - disabled_tests_.size() == 1 ? "This test is" : "These tests are"); - for (const std::string& disabled_test : disabled_tests_) { - printf("[ DISABLED ] %s\n", disabled_test.c_str()); - } - } -} - -} // namespace test -} // namespace crashpad
diff --git a/third_party/crashpad/crashpad/test/gtest_disabled.h b/third_party/crashpad/crashpad/test/gtest_disabled.h deleted file mode 100644 index 9415cba..0000000 --- a/third_party/crashpad/crashpad/test/gtest_disabled.h +++ /dev/null
@@ -1,87 +0,0 @@ -// Copyright 2017 The Crashpad Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef CRASHPAD_TEST_GTEST_DISABLED_H_ -#define CRASHPAD_TEST_GTEST_DISABLED_H_ - -#include <string> -#include <vector> - -#include "base/macros.h" -#include "gtest/gtest.h" - -//! \file - -namespace crashpad { -namespace test { - -//! \brief Provides support for dynamically disabled gtest tests. -//! -//! A test runner must register this with gtest as follows prior to calling -//! `RUN_ALL_TESTS()`: -//! \code -//! testing::AddGlobalTestEnvironment( -//! crashpad::test::DisabledTestGtestEnvironment::Get()); -//! \endcode -class DisabledTestGtestEnvironment final : public testing::Environment { - public: - //! \brief Returns the DisabledTestGtestEnvironment singleton instance, - //! creating it if necessary. - static DisabledTestGtestEnvironment* Get(); - - //! \brief Displays a message about a test being disabled, and arranges for - //! this information to be duplicated in TearDown(). - //! - //! This method is for the internal use of the DISABLED_TEST() macro. Do not - //! call it directly, use the macro instead. - void DisabledTest(); - - private: - DisabledTestGtestEnvironment(); - ~DisabledTestGtestEnvironment() override; - - // testing::Environment: - void TearDown() override; - - std::vector<std::string> disabled_tests_; - - DISALLOW_COPY_AND_ASSIGN(DisabledTestGtestEnvironment); -}; - -} // namespace test -} // namespace crashpad - -//! \brief Displays a message about a test being disabled, and returns early. -//! -//! gtest only provides a mechanism for tests to be disabled statically, by -//! prefixing test case names or test names with `DISABLED_`. When it is -//! necessary to disable tests dynamically, gtest provides no assistance. This -//! macro displays a message about the disabled test and returns early. The -//! dynamically disabled test will also be displayed during gtest global test -//! environment tear-down before the test executable exits. -//! -//! This macro may only be invoked from the context of a gtest test. -//! -//! There’s a long-standing <a -//! href="https://groups.google.com/d/topic/googletestframework/Nwh3u7YFuN4">gtest -//! feature request</a> to provide this functionality directly in gtest, but -//! since it hasn’t been implemented, this macro provides a local mechanism to -//! achieve it. -#define DISABLED_TEST() \ - do { \ - ::crashpad::test::DisabledTestGtestEnvironment::Get()->DisabledTest(); \ - return; \ - } while (false) - -#endif // CRASHPAD_TEST_GTEST_DISABLED_H_
diff --git a/third_party/crashpad/crashpad/test/gtest_main.cc b/third_party/crashpad/crashpad/test/gtest_main.cc index ebdbeb9d5..5a54691 100644 --- a/third_party/crashpad/crashpad/test/gtest_main.cc +++ b/third_party/crashpad/crashpad/test/gtest_main.cc
@@ -14,7 +14,6 @@ #include "build/build_config.h" #include "gtest/gtest.h" -#include "test/gtest_disabled.h" #include "test/main_arguments.h" #include "test/multiprocess_exec.h" @@ -51,8 +50,6 @@ int main(int argc, char* argv[]) { crashpad::test::InitializeMainArguments(argc, argv); - testing::AddGlobalTestEnvironment( - crashpad::test::DisabledTestGtestEnvironment::Get()); std::string child_func_name; if (GetChildTestFunctionName(&child_func_name)) {
diff --git a/third_party/crashpad/crashpad/test/test.gyp b/third_party/crashpad/crashpad/test/test.gyp index 8101f8f..d00256a7 100644 --- a/third_party/crashpad/crashpad/test/test.gyp +++ b/third_party/crashpad/crashpad/test/test.gyp
@@ -37,8 +37,6 @@ 'filesystem.cc', 'filesystem.h', 'gtest_death.h', - 'gtest_disabled.cc', - 'gtest_disabled.h', 'hex_string.cc', 'hex_string.h', 'linux/fake_ptrace_connection.cc',
diff --git a/third_party/crashpad/crashpad/util/file/directory_reader_test.cc b/third_party/crashpad/crashpad/util/file/directory_reader_test.cc index f03669e2..812deaf 100644 --- a/third_party/crashpad/crashpad/util/file/directory_reader_test.cc +++ b/third_party/crashpad/crashpad/util/file/directory_reader_test.cc
@@ -22,7 +22,6 @@ #include "base/strings/utf_string_conversions.h" #include "gtest/gtest.h" #include "test/filesystem.h" -#include "test/gtest_disabled.h" #include "test/scoped_temp_dir.h" #include "util/file/file_io.h" #include "util/file/filesystem.h" @@ -48,7 +47,7 @@ TEST(DirectoryReader, BadPaths_SymbolicLinks) { if (!CanCreateSymbolicLinks()) { - DISABLED_TEST(); + GTEST_SKIP(); } ScopedTempDir temp_dir; @@ -144,7 +143,7 @@ TEST(DirectoryReader, FilesAndDirectories_SymbolicLinks) { if (!CanCreateSymbolicLinks()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestFilesAndDirectories(true);
diff --git a/third_party/crashpad/crashpad/util/file/filesystem_test.cc b/third_party/crashpad/crashpad/util/file/filesystem_test.cc index 3430c3f..37a9290b 100644 --- a/third_party/crashpad/crashpad/util/file/filesystem_test.cc +++ b/third_party/crashpad/crashpad/util/file/filesystem_test.cc
@@ -21,7 +21,6 @@ #include "gtest/gtest.h" #include "test/errors.h" #include "test/filesystem.h" -#include "test/gtest_disabled.h" #include "test/scoped_temp_dir.h" #include "util/misc/time.h" @@ -93,7 +92,7 @@ TEST(Filesystem, FileModificationTime_SymbolicLinks) { if (!CanCreateSymbolicLinks()) { - DISABLED_TEST(); + GTEST_SKIP(); } ScopedTempDir temp_dir; @@ -224,7 +223,7 @@ TEST(Filesystem, MoveFileOrDirectory_SymbolicLinks) { if (!CanCreateSymbolicLinks()) { - DISABLED_TEST(); + GTEST_SKIP(); } ScopedTempDir temp_dir; @@ -302,7 +301,7 @@ TEST(Filesystem, IsRegularFile_SymbolicLinks) { if (!CanCreateSymbolicLinks()) { - DISABLED_TEST(); + GTEST_SKIP(); } ScopedTempDir temp_dir; @@ -344,7 +343,7 @@ TEST(Filesystem, IsDirectory_SymbolicLinks) { if (!CanCreateSymbolicLinks()) { - DISABLED_TEST(); + GTEST_SKIP(); } ScopedTempDir temp_dir; @@ -393,7 +392,7 @@ TEST(Filesystem, RemoveFile_SymbolicLinks) { if (!CanCreateSymbolicLinks()) { - DISABLED_TEST(); + GTEST_SKIP(); } ScopedTempDir temp_dir; @@ -450,7 +449,7 @@ TEST(Filesystem, RemoveDirectory_SymbolicLinks) { if (!CanCreateSymbolicLinks()) { - DISABLED_TEST(); + GTEST_SKIP(); } ScopedTempDir temp_dir;
diff --git a/third_party/crashpad/crashpad/util/linux/auxiliary_vector_test.cc b/third_party/crashpad/crashpad/util/linux/auxiliary_vector_test.cc index d4cfcb7..00af5abe 100644 --- a/third_party/crashpad/crashpad/util/linux/auxiliary_vector_test.cc +++ b/third_party/crashpad/crashpad/util/linux/auxiliary_vector_test.cc
@@ -120,8 +120,9 @@ #if defined(AT_SYSINFO_EHDR) LinuxVMAddress vdso_addr; - ASSERT_TRUE(aux.GetValue(AT_SYSINFO_EHDR, &vdso_addr)); - EXPECT_TRUE(mappings.FindMapping(vdso_addr)); + if (aux.GetValue(AT_SYSINFO_EHDR, &vdso_addr)) { + EXPECT_TRUE(mappings.FindMapping(vdso_addr)); + } #endif // AT_SYSINFO_EHDR #if defined(AT_EXECFN)
diff --git a/third_party/crashpad/crashpad/util/net/tls.gni b/third_party/crashpad/crashpad/util/net/tls.gni index f979b62..eb968450 100644 --- a/third_party/crashpad/crashpad/util/net/tls.gni +++ b/third_party/crashpad/crashpad/util/net/tls.gni
@@ -18,5 +18,6 @@ # TODO(scottmg): https://crbug.com/crashpad/266 fuchsia:DX-690: BoringSSL # was removed from the Fuchsia SDK. Re-enable it when we have a way to acquire # a BoringSSL lib again. - crashpad_use_boringssl_for_http_transport_socket = crashpad_is_in_fuchsia + crashpad_use_boringssl_for_http_transport_socket = + crashpad_is_in_fuchsia || (crashpad_is_linux && crashpad_is_in_chromium) }
diff --git a/third_party/crashpad/crashpad/util/win/process_info_test.cc b/third_party/crashpad/crashpad/util/win/process_info_test.cc index 59aaa7a9..a43358d 100644 --- a/third_party/crashpad/crashpad/util/win/process_info_test.cc +++ b/third_party/crashpad/crashpad/util/win/process_info_test.cc
@@ -26,7 +26,6 @@ #include "build/build_config.h" #include "gtest/gtest.h" #include "test/errors.h" -#include "test/gtest_disabled.h" #include "test/scoped_temp_dir.h" #include "test/test_paths.h" #include "test/win/child_launcher.h" @@ -203,7 +202,7 @@ #if defined(ARCH_CPU_64_BITS) TEST(ProcessInfo, OtherProcessWOW64) { if (!TestPaths::Has32BitBuildArtifacts()) { - DISABLED_TEST(); + GTEST_SKIP(); } TestOtherProcess(TestPaths::Architecture::k32Bit);
diff --git a/third_party/expat/README.chromium b/third_party/expat/README.chromium index 8a380591..95aa72a9 100644 --- a/third_party/expat/README.chromium +++ b/third_party/expat/README.chromium
@@ -1,9 +1,9 @@ Name: Expat XML Parser Short Name: expat URL: https://github.com/libexpat/libexpat -Version: R_2_2_9-0-ga7bc26b -Date: 20190927 -Revision: a7bc26b69768f7fb24f0c7976fae24b157b85b13 +Version: R_2_2_9-38-g25d3c19 +Date: 20191016 +Revision: 25d3c190c69ea7f98e2826f901fd9e28b6f7f3fd Security Critical: yes License: MIT License File: src/expat/COPYING
diff --git a/tools/android/BUILD.gn b/tools/android/BUILD.gn index 72ba13a..9ad5bb3 100644 --- a/tools/android/BUILD.gn +++ b/tools/android/BUILD.gn
@@ -9,9 +9,7 @@ group("android_tools") { testonly = true deps = [ - "//build/android:wrapper_scripts", "//build/android/pylib/device/commands", - "//third_party/android_platform:stack_wrapper", "//third_party/catapult/telemetry:bitmaptools($host_toolchain)", "//tools/android/adb_reboot", "//tools/android/forwarder2",
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 57a374a7..63d90f7 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -18330,11 +18330,12 @@ <int value="624" label="LegacySameSiteCookieBehaviorEnabledForDomainList"/> <int value="625" label="PrintJobHistoryExpirationPeriod"/> <int value="626" label="TLS13HardeningForLocalAnchorsEnabled"/> - <int value="627" label="ForceDisableAudioSandbox"/> + <int value="627" label="AudioSandboxEnabled"/> <int value="628" label="DeviceLoginScreenScreenMagnifierType"/> <int value="629" label="CorsMitigationList"/> <int value="630" label="CorsLegacyModeEnabled"/> <int value="631" label="ExternalPrintServersWhitelist"/> + <int value="632" label="ExternalProtocolDialogShowAlwaysOpenCheckbox"/> </enum> <enum name="EnterprisePolicyInvalidations"> @@ -37329,6 +37330,7 @@ <int value="807447752" label="ChromeMemex:disabled"/> <int value="807734471" label="tab-management-experiment-type-disabled"/> <int value="809698565" label="WebRtcHybridAgc:enabled"/> + <int value="811057677" label="ConfirmNtpSuggestionRemovals:disabled"/> <int value="811374216" label="disable-new-bookmark-apps"/> <int value="811726957" label="SlideTopChromeWithPageScrolls:enabled"/> <int value="812710781" label="SyncUSSBookmarks:disabled"/> @@ -38030,6 +38032,7 @@ <int value="1766676896" label="affiliation-based-matching:disabled"/> <int value="1767411597" label="DisallowUnsafeHttpDownloads:enabled"/> <int value="1768759000" label="AutofillProfileServerValidation:disabled"/> + <int value="1770189877" label="ConfirmNtpSuggestionRemovals:enabled"/> <int value="1771548551" label="DisableKeepaliveFetch:enabled"/> <int value="1772454319" label="enable-storage-manager"/> <int value="1775475563" label="malware-interstitial-v3"/> @@ -63627,6 +63630,13 @@ </int> </enum> +<enum name="VRStartReason"> + <int value="1" label="Headset Activation"/> + <int value="2" label="Presentation Requset"/> + <int value="3" label="(obsolete) Deep linked app"/> + <int value="4" label="Intent Launch"/> +</enum> + <enum name="VRSuppressedElement"> <int value="0" label="File chooser was suppressed in VR"/> <int value="1" label="Bluetooth picker was suppressed in VR"/> @@ -67302,6 +67312,19 @@ <int value="1" label="OpenVR"/> </enum> +<enum name="XRSessionMode"> + <int value="0" label="Unknown"/> + <int value="1" label="Inline"/> + <int value="2" label="Immersive VR"/> + <int value="3" label="Immersive AR"/> +</enum> + +<enum name="XRSessionModeRequest"> + <int value="0" label="Inline"/> + <int value="1" label="Immersive VR"/> + <int value="2" label="Immersive AR"/> +</enum> + <enum name="XRSessionRequestDialogAction"> <int value="0" label="UserConsented"/> <int value="1" label="UserDenied"/> @@ -67309,6 +67332,11 @@ <int value="3" label="UserConsentedAfterBounce"/> </enum> +<enum name="XRSessionRequestStatus"> + <int value="0" label="Success"/> + <int value="1" label="Error"/> +</enum> + <enum name="YoungGenerationHandling"> <int value="0" label="Regular Scavenge"/> <int value="1" label="Scavenge using fast promotion mode"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 0b1267d0..b12137b 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -2904,6 +2904,16 @@ </summary> </histogram> +<histogram name="Android.Language.UiIsSystemLanguage" enum="BooleanMatched" + expires_after="2020-10-14"> + <owner>perrier@chromium.org</owner> + <owner>megjablon@chromium.org</owner> + <summary> + Reports whether the Chrome UI language is the same as the Android system + lanaguage. Recorded once per top-level ChromeActivty start. + </summary> +</histogram> + <histogram name="Android.Language.WrongLanguageAfterResume" enum="Boolean" expires_after="2020-03-01"> <owner>tiborg@chromium.org</owner> @@ -58152,14 +58162,14 @@ </histogram> <histogram name="LanguageUsage.AcceptLanguage" enum="LanguageCode" - expires_after="2018-08-30"> + expires_after="2020-10-14"> <owner>anthonyvd@chromium.org</owner> <owner>frechette@chromium.org</owner> <summary>Accept languages.</summary> </histogram> <histogram name="LanguageUsage.ApplicationLanguage" enum="LanguageCode" - expires_after="2018-08-30"> + expires_after="2020-10-14"> <owner>anthonyvd@chromium.org</owner> <owner>frechette@chromium.org</owner> <summary>Application languages used for UI.</summary> @@ -174320,6 +174330,8 @@ <affected-histogram name="PageLoad.PaintTiming.NavigationToFirstPaint"/> <affected-histogram name="PageLoad.PaintTiming.NavigationToFirstTextPaint"/> <affected-histogram + name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint"/> + <affected-histogram name="PageLoad.PaintTiming.ParseStartToFirstContentfulPaint"/> <affected-histogram name="PageLoad.ParseTiming.NavigationToParseStart"/> <affected-histogram name="PageLoad.ParseTiming.ParseBlockedOnScriptLoad"/>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml index 351f8f5..ea26b87c 100644 --- a/tools/metrics/ukm/ukm.xml +++ b/tools/metrics/ukm/ukm.xml
@@ -8894,6 +8894,7 @@ <event name="XR.PageSession" singular="True"> <owner>offenwanger@chromium.org</owner> + <owner>xr-dev@chromium.org</owner> <summary> Records properties of page use in XR, including VR browsing and WebXR presentation. @@ -8905,42 +8906,81 @@ get rounded to minutes and then hours as they get larger. This is done by SessionTracker::GetRoundedDurationInSeconds. </summary> + <aggregation> + <history> + <statistics> + <quantiles type="std-percentiles"/> + </statistics> + </history> + </aggregation> </metric> - <metric name="EnteredFullscreen"> + <metric name="EnteredFullscreen" enum="Boolean"> <summary> A boolean that is set to 1 if the user requested fullscreen while in XR on some element on the page. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="EnteredVROnPageReason"> + <metric name="EnteredVROnPageReason" enum="VRStartReason"> <summary> An enum that indicates that the user entered VR on this page and what triggered the entry into VR, where 1 means VR was entered through headset activation, and 2 means that request presentation triggered the entry into VR. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> <metric name="TimeOnPage"> + <obsolete> + Deprecated. + </obsolete> <summary> Deprecated. </summary> </metric> - <metric name="WasOmniboxNavigation"> + <metric name="WasOmniboxNavigation" enum="Boolean"> <summary> A boolean that is set to 1 if this page was entered into the omnibox, either manually or using autocomplete. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="WasVoiceSearchNavigation"> + <metric name="WasVoiceSearchNavigation" enum="Boolean"> <summary> A boolean that is set to 1 if this page was specifically requested and recognized by a voice search. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> </event> <event name="XR.WebXR" singular="True"> <owner>billorr@chromium.org</owner> + <owner>xr-dev@chromium.org</owner> <summary> Records information about WebXR methods that were used in a single navigation. The event will be recorded as the WebXR functions are called - @@ -8956,43 +8996,92 @@ site. </summary> </metric> - <metric name="DidGetXRInputSources"> + <metric name="DidGetXRInputSources" enum="Boolean"> <summary> Boolean value that indicates that the WebXR input API was used. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="DidRequestAvailableDevices"> + <metric name="DidRequestAvailableDevices" enum="Boolean"> <summary> Boolean value that indicates that the API to enumerate devices was called. This API is only exposed through WebVR. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="DidRequestPose"> + <metric name="DidRequestPose" enum="Boolean"> <summary> Boolean value that indicates that poses were requested. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="DidRequestPresentation"> + <metric name="DidRequestPresentation" enum="Boolean"> <summary> Boolean value that indicates that presentation was requested. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="DidUseNavigatorXR"> + <metric name="DidUseNavigatorXR" enum="Boolean"> <summary> Boolean value that indicates that the WebXR Device API was used. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="ReturnedDevice"> + <metric name="ReturnedDevice" enum="Boolean"> <summary> Boolean value that indicates that a device was returned by the API to enumerate devices. This API is only exposed through WebVR. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="ReturnedPresentationCapableDevice"> + <metric name="ReturnedPresentationCapableDevice" enum="Boolean"> <summary> Boolean value that indicates that a device was returned by the API to enumerate devices, and that the device supports presentation. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> </event> @@ -9043,19 +9132,40 @@ get larger. This is done by SessionTracker::GetRoundedDurationInSeconds. For inline sessions, this might get pretty large. </summary> + <aggregation> + <history> + <statistics> + <quantiles type="std-percentiles"/> + </statistics> + </history> + </aggregation> </metric> - <metric name="IsLegacyWebVR"> + <metric name="IsLegacyWebVR" enum="Boolean"> <summary> Boolean value indicating whether a session was created using the legacy WebVR API rather than WebXR. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="Mode"> + <metric name="Mode" enum="XRSessionMode"> <summary> An enum value specifying WebXR session's mode. See `device::SessionMode` for enum type declaration. 0: Unknown, catch all. 1: Inline session. 2: Immersive VR session. 3: Immersive AR session. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> </event> @@ -9064,19 +9174,33 @@ <summary> Recorded when promise returned by `requestSession` gets resolved / rejected. </summary> - <metric name="Mode"> + <metric name="Mode" enum="XRSessionModeRequest"> <summary> An enum value that indicates that the `requestSession` API was called to request session with this mode. See `device::SessionMode` for enum type declaration. 0: Unknown, catch all. 1: Inline session was requested. 2: Immersive VR session was requested. 3: Immersive AR session was requested. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> - <metric name="Status"> + <metric name="Status" enum="XRSessionRequestStatus"> <summary> An enum value that describes the result of the call to `requestSession` method. See `` for enum type declaration. 0: Success. 1: Other failure. </summary> + <aggregation> + <history> + <statistics> + <enumeration/> + </statistics> + </history> + </aggregation> </metric> </event>
diff --git a/tools/perf/BUILD.gn b/tools/perf/BUILD.gn index eea77d11..0c1b6e77 100644 --- a/tools/perf/BUILD.gn +++ b/tools/perf/BUILD.gn
@@ -43,11 +43,15 @@ } if (is_android) { - import("//build/config/android/rules.gni") + import("//build/util/generate_wrapper.gni") - wrapper_script("run_benchmark_wrapper") { - target = "run_benchmark" - flag_name = "--chromium-output-directory" + generate_wrapper("run_benchmark_wrapper") { + executable = "run_benchmark" + wrapper_script = "$root_build_dir/bin/run_benchmark" + executable_args = [ + "--chromium-output-directory", + "@WrappedPath(.)", + ] } }
diff --git a/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm b/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm index edf0b6d..affa91f 100644 --- a/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm +++ b/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm
@@ -16,6 +16,10 @@ #include "ui/gl/ca_renderer_layer_params.h" #include "ui/gl/gl_image_io_surface.h" +@interface CALayer (Private) +@property BOOL wantsExtendedDynamicRangeContent; +@end + namespace gpu { namespace { @@ -1102,4 +1106,70 @@ } } +// Verify that sorting context zero is split at non-flat transforms. +TEST_F(CALayerTreeTest, HDRTrigger) { + std::unique_ptr<ui::CARendererLayerTree> ca_layer_trees[3]{ + std::make_unique<ui::CARendererLayerTree>(true, true), + std::make_unique<ui::CARendererLayerTree>(true, true), + std::make_unique<ui::CARendererLayerTree>(true, true), + }; + CALayerProperties properties; + properties.is_clipped = false; + properties.clip_rect = gfx::Rect(); + properties.rect = gfx::Rect(0, 0, 256, 256); + bool result = false; + + // We'll use the IOSurface contents to identify the content layers. + scoped_refptr<gl::GLImageIOSurface> sdr_image = + CreateGLImage(gfx::Size(256, 256), gfx::BufferFormat::BGRA_8888, false); + scoped_refptr<gl::GLImageIOSurface> hdr_image = + CreateGLImage(gfx::Size(256, 256), gfx::BufferFormat::BGRA_8888, false); + sdr_image->SetColorSpace(gfx::ColorSpace::CreateSRGB()); + hdr_image->SetColorSpace(gfx::ColorSpace::CreateExtendedSRGB()); + + // Schedule and commit the HDR layer. + properties.gl_image = hdr_image; + result = ScheduleCALayer(ca_layer_trees[0].get(), &properties); + EXPECT_TRUE(result); + ca_layer_trees[0]->CommitScheduledCALayers( + superlayer_, nullptr, properties.rect.size(), properties.scale_factor); + + // Validate that the root layer has is triggering HDR. + CALayer* content_layer = nil; + if (@available(macos 10.15, *)) { + CALayer* root_layer = [[superlayer_ sublayers] objectAtIndex:0]; + CALayer* clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0]; + CALayer* clip_and_sorting_rounded_layer = + [[clip_and_sorting_layer sublayers] objectAtIndex:0]; + CALayer* transform_layer = + [[clip_and_sorting_rounded_layer sublayers] objectAtIndex:0]; + content_layer = [[transform_layer sublayers] objectAtIndex:0]; + EXPECT_TRUE([content_layer wantsExtendedDynamicRangeContent]); + } + + // Commit the SDR layer. + properties.gl_image = sdr_image; + result = ScheduleCALayer(ca_layer_trees[1].get(), &properties); + EXPECT_TRUE(result); + ca_layer_trees[1]->CommitScheduledCALayers( + superlayer_, std::move(ca_layer_trees[0]), properties.rect.size(), + properties.scale_factor); + + // Validate that HDR is off. + if (@available(macos 10.15, *)) + EXPECT_FALSE([content_layer wantsExtendedDynamicRangeContent]); + + // Commit the HDR layer. + properties.gl_image = hdr_image; + result = ScheduleCALayer(ca_layer_trees[2].get(), &properties); + EXPECT_TRUE(result); + ca_layer_trees[2]->CommitScheduledCALayers( + superlayer_, std::move(ca_layer_trees[1]), properties.rect.size(), + properties.scale_factor); + + // Validate that HDR is back on. + if (@available(macos 10.15, *)) + EXPECT_TRUE([content_layer wantsExtendedDynamicRangeContent]); +} + } // namespace gpu
diff --git a/ui/accelerated_widget_mac/ca_renderer_layer_tree.h b/ui/accelerated_widget_mac/ca_renderer_layer_tree.h index b1ef3ec7..f5fefa0 100644 --- a/ui/accelerated_widget_mac/ca_renderer_layer_tree.h +++ b/ui/accelerated_widget_mac/ca_renderer_layer_tree.h
@@ -160,6 +160,7 @@ const gfx::RectF& contents_rect, const gfx::Rect& rect, unsigned background_color, + bool triggers_hdr, unsigned edge_aa_mask, float opacity, unsigned filter); @@ -181,6 +182,7 @@ gfx::RectF contents_rect; gfx::RectF rect; unsigned background_color = 0; + const bool triggers_hdr; // Note that the CoreAnimation edge antialiasing mask is not the same as // the edge antialiasing mask passed to the constructor. CAEdgeAntialiasingMask ca_edge_aa_mask = 0;
diff --git a/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm b/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm index 5bc5c08..2a70537 100644 --- a/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm +++ b/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm
@@ -21,6 +21,10 @@ #include "ui/gl/ca_renderer_layer_params.h" #include "ui/gl/gl_image_io_surface.h" +@interface CALayer (Private) +@property BOOL wantsExtendedDynamicRangeContent; +@end + namespace ui { namespace { @@ -384,6 +388,7 @@ const gfx::RectF& contents_rect, const gfx::Rect& rect_in, unsigned background_color, + bool triggers_hdr, unsigned edge_aa_mask, float opacity, unsigned filter) @@ -392,6 +397,7 @@ contents_rect(contents_rect), rect(rect_in), background_color(background_color), + triggers_hdr(triggers_hdr), ca_edge_aa_mask(0), opacity(opacity), ca_filter(filter == GL_LINEAR ? kCAFilterLinear : kCAFilterNearest) { @@ -478,6 +484,7 @@ contents_rect(layer.contents_rect), rect(layer.rect), background_color(layer.background_color), + triggers_hdr(layer.triggers_hdr), ca_edge_aa_mask(layer.ca_edge_aa_mask), opacity(layer.opacity), ca_filter(layer.ca_filter), @@ -553,6 +560,7 @@ const CARendererLayerParams& params) { base::ScopedCFTypeRef<IOSurfaceRef> io_surface; base::ScopedCFTypeRef<CVPixelBufferRef> cv_pixel_buffer; + bool triggers_hdr = false; if (params.image) { gl::GLImageIOSurface* io_surface_image = gl::GLImageIOSurface::FromGLImage(params.image); @@ -566,12 +574,12 @@ // TODO(ccameron): If this indeed causes the bug to disappear, then // extirpate the CVPixelBufferRef path. // cv_pixel_buffer = io_surface_image->cv_pixel_buffer(); + triggers_hdr = params.image->color_space().IsHDR(); } - content_layers.push_back( ContentLayer(tree, io_surface, cv_pixel_buffer, params.contents_rect, - params.rect, params.background_color, params.edge_aa_mask, - params.opacity, params.filter)); + params.rect, params.background_color, triggers_hdr, + params.edge_aa_mask, params.opacity, params.filter)); } void CARendererLayerTree::RootLayer::CommitToCA(CALayer* superlayer, @@ -747,6 +755,7 @@ bool update_contents_rect = true; bool update_rect = true; bool update_background_color = true; + bool update_triggers_hdr = true; bool update_ca_edge_aa_mask = true; bool update_opacity = true; bool update_ca_filter = true; @@ -760,6 +769,7 @@ update_contents_rect = old_layer->contents_rect != contents_rect; update_rect = old_layer->rect != rect; update_background_color = old_layer->background_color != background_color; + update_triggers_hdr = old_layer->triggers_hdr != triggers_hdr; update_ca_edge_aa_mask = old_layer->ca_edge_aa_mask != ca_edge_aa_mask; update_opacity = old_layer->opacity != opacity; update_ca_filter = old_layer->ca_filter != ca_filter; @@ -780,8 +790,8 @@ DCHECK_EQ([ca_layer superlayer], superlayer); bool update_anything = update_contents || update_contents_rect || update_rect || update_background_color || - update_ca_edge_aa_mask || update_opacity || - update_ca_filter; + update_triggers_hdr || update_ca_edge_aa_mask || + update_opacity || update_ca_filter; if (use_av_layer) { if (update_contents) { bool result = false; @@ -835,6 +845,15 @@ CGColorSpaceCreateWithName(kCGColorSpaceSRGB), rgba_color_components)); [ca_layer setBackgroundColor:srgb_background_color]; } + if (update_triggers_hdr) { + if (@available(macos 10.15, *)) { + if ([ca_layer + respondsToSelector:(@selector + (setWantsExtendedDynamicRangeContent:))]) { + [ca_layer setWantsExtendedDynamicRangeContent:triggers_hdr]; + } + } + } if (update_ca_edge_aa_mask) [ca_layer setEdgeAntialiasingMask:ca_edge_aa_mask]; if (update_opacity)
diff --git a/ui/login/display_manager.js b/ui/login/display_manager.js index 4a59ff6..c58de8f 100644 --- a/ui/login/display_manager.js +++ b/ui/login/display_manager.js
@@ -319,6 +319,14 @@ }, /** + * Sets the hint for calculating OOBE dialog inner padding. + * @param {OobeTypes.DialogPaddingMode} mode. + */ + setDialogPaddingMode: function(mode) { + document.documentElement.setAttribute('dialog-padding', mode); + }, + + /** * Toggles background of main body between transparency and solid. * @param {boolean} solid Whether to show a solid background. */
diff --git a/ui/login/oobe.css b/ui/login/oobe.css index de526a2..ca88408 100644 --- a/ui/login/oobe.css +++ b/ui/login/oobe.css
@@ -56,6 +56,7 @@ --oobe-dialog-side-margin: 0px; } + @media screen and (max-width: 864px), (max-height: 736px) { html[screen=oobe] { --oobe-dialog-footer-height: 80px; @@ -64,6 +65,12 @@ } } +html[screen=gaia-signin][dialog-padding=narrow] { + --oobe-dialog-footer-height: 80px; + --oobe-dialog-footer-padding: 24px; + --oobe-dialog-content-padding: 32px; +} + body.solid { background-color: white; }
diff --git a/ui/ozone/platform/drm/gpu/drm_display.cc b/ui/ozone/platform/drm/gpu/drm_display.cc index f5bf25f..a8324d2 100644 --- a/ui/ozone/platform/drm/gpu/drm_display.cc +++ b/ui/ozone/platform/drm/gpu/drm_display.cc
@@ -88,13 +88,24 @@ DrmDisplay::~DrmDisplay() { } +uint32_t DrmDisplay::connector() const { + return connector_->connector_id; +} + std::unique_ptr<display::DisplaySnapshot> DrmDisplay::Update( HardwareDisplayControllerInfo* info, size_t device_index) { std::unique_ptr<display::DisplaySnapshot> params = CreateDisplaySnapshot( info, drm_->get_fd(), drm_->device_path(), device_index, origin_); crtc_ = info->crtc()->crtc_id; - connector_ = info->connector()->connector_id; + // TODO(dcastagna): consider taking ownership of |info->connector()| + connector_ = ScopedDrmConnectorPtr( + drm_->GetConnector(info->connector()->connector_id)); + if (!connector_) { + PLOG(ERROR) << "Failed to get connector " + << info->connector()->connector_id; + } + display_id_ = params->display_id(); modes_ = GetDrmModeVector(info->connector()); return params; @@ -108,8 +119,8 @@ << " size=" << (mode ? GetDrmModeSize(*mode).ToString() : "0x0"); if (mode) { - if (!screen_manager_->ConfigureDisplayController(drm_, crtc_, connector_, - origin, *mode)) { + if (!screen_manager_->ConfigureDisplayController( + drm_, crtc_, connector_->connector_id, origin, *mode)) { VLOG(1) << "Failed to configure: device=" << drm_->device_path().value() << " crtc=" << crtc_ << " connector=" << connector_; return false; @@ -127,21 +138,18 @@ } bool DrmDisplay::GetHDCPState(display::HDCPState* state) { - ScopedDrmConnectorPtr connector(drm_->GetConnector(connector_)); - if (!connector) { - PLOG(ERROR) << "Failed to get connector " << connector_; + if (!connector_) return false; - } ScopedDrmPropertyPtr hdcp_property( - drm_->GetProperty(connector.get(), kContentProtection)); + drm_->GetProperty(connector_.get(), kContentProtection)); if (!hdcp_property) { - PLOG(ERROR) << "'" << kContentProtection << "' property doesn't exist."; + PLOG(INFO) << "'" << kContentProtection << "' property doesn't exist."; return false; } std::string name = - GetEnumNameForProperty(connector.get(), hdcp_property.get()); + GetEnumNameForProperty(connector_.get(), hdcp_property.get()); for (size_t i = 0; i < base::size(kContentProtectionStates); ++i) { if (name == kContentProtectionStates[i].name) { *state = kContentProtectionStates[i].state; @@ -155,21 +163,20 @@ } bool DrmDisplay::SetHDCPState(display::HDCPState state) { - ScopedDrmConnectorPtr connector(drm_->GetConnector(connector_)); - if (!connector) { - PLOG(ERROR) << "Failed to get connector " << connector_; + if (!connector_) { return false; } ScopedDrmPropertyPtr hdcp_property( - drm_->GetProperty(connector.get(), kContentProtection)); + drm_->GetProperty(connector_.get(), kContentProtection)); + if (!hdcp_property) { - LOG(ERROR) << "'" << kContentProtection << "' property doesn't exist."; + PLOG(INFO) << "'" << kContentProtection << "' property doesn't exist."; return false; } return drm_->SetProperty( - connector_, hdcp_property->prop_id, + connector_->connector_id, hdcp_property->prop_id, GetContentProtectionValue(hdcp_property.get(), state)); }
diff --git a/ui/ozone/platform/drm/gpu/drm_display.h b/ui/ozone/platform/drm/gpu/drm_display.h index d0f5911..c2516cb 100644 --- a/ui/ozone/platform/drm/gpu/drm_display.h +++ b/ui/ozone/platform/drm/gpu/drm_display.h
@@ -15,6 +15,7 @@ #include "ui/display/types/display_constants.h" #include "ui/gfx/geometry/point.h" #include "ui/ozone/common/gpu/ozone_gpu_message_params.h" +#include "ui/ozone/platform/drm/common/scoped_drm_types.h" typedef struct _drmModeModeInfo drmModeModeInfo; @@ -38,7 +39,7 @@ int64_t display_id() const { return display_id_; } scoped_refptr<DrmDevice> drm() const { return drm_; } uint32_t crtc() const { return crtc_; } - uint32_t connector() const { return connector_; } + uint32_t connector() const; const std::vector<drmModeModeInfo>& modes() const { return modes_; } std::unique_ptr<display::DisplaySnapshot> Update( @@ -60,7 +61,7 @@ int64_t display_id_ = -1; const scoped_refptr<DrmDevice> drm_; uint32_t crtc_ = 0; - uint32_t connector_ = 0; + ScopedDrmConnectorPtr connector_; std::vector<drmModeModeInfo> modes_; gfx::Point origin_;
diff --git a/ui/views/test/ui_controls_factory_desktop_aurax11.cc b/ui/views/test/ui_controls_factory_desktop_aurax11.cc index 6e69e40..a258860 100644 --- a/ui/views/test/ui_controls_factory_desktop_aurax11.cc +++ b/ui/views/test/ui_controls_factory_desktop_aurax11.cc
@@ -251,10 +251,10 @@ // Most interactive_ui_tests run inside of the aura_test_helper // environment. This means that we can't rely on display::Screen and several // other things to work properly. Therefore we hack around this by - // iterating across the windows owned DesktopWindowTreeHostLinux since this + // iterating across the windows owned DesktopWindowTreeHostX11 since this // doesn't rely on having a DesktopScreenX11. std::vector<aura::Window*> windows = - DesktopWindowTreeHostLinux::GetAllOpenWindows(); + DesktopWindowTreeHostX11::GetAllOpenWindows(); const auto i = std::find_if(windows.cbegin(), windows.cend(), [point](auto* window) { return window->GetBoundsInScreen().Contains(point) ||
diff --git a/ui/views/test/widget_test_aura.cc b/ui/views/test/widget_test_aura.cc index 0ae91d8f..e1d6b9b8 100644 --- a/ui/views/test/widget_test_aura.cc +++ b/ui/views/test/widget_test_aura.cc
@@ -13,13 +13,10 @@ #include "ui/views/widget/widget.h" #include "ui/wm/core/shadow_controller.h" -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) -#include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h" -#endif - #if defined(USE_X11) #include "ui/gfx/x/x11.h" // nogncheck #include "ui/gfx/x/x11_types.h" // nogncheck +#include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" #endif namespace views { @@ -72,8 +69,8 @@ std::vector<aura::Window*> GetAllTopLevelWindows() { std::vector<aura::Window*> roots; -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) - roots = DesktopWindowTreeHostLinux::GetAllOpenWindows(); +#if defined(USE_X11) + roots = DesktopWindowTreeHostX11::GetAllOpenWindows(); #elif defined(OS_WIN) { FindAllWindowsData data = {&roots};
diff --git a/ui/views/widget/desktop_aura/desktop_screen_x11.cc b/ui/views/widget/desktop_aura/desktop_screen_x11.cc index 6ca1be4..a4e8174 100644 --- a/ui/views/widget/desktop_aura/desktop_screen_x11.cc +++ b/ui/views/widget/desktop_aura/desktop_screen_x11.cc
@@ -118,8 +118,8 @@ // aura::Window's screen bounds. aura::WindowTreeHost* host = window->GetHost(); if (host) { - auto* rwh = DesktopWindowTreeHostLinux::GetHostForWidget( - host->GetAcceleratedWidget()); + DesktopWindowTreeHostX11* rwh = + DesktopWindowTreeHostX11::GetHostForXID(host->GetAcceleratedWidget()); if (rwh) { const gfx::Rect pixel_rect = rwh->GetBoundsInPixels(); const gfx::Rect dip_rect =
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc index 4f888a1..62e8913 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc
@@ -19,17 +19,8 @@ #include "ui/views/widget/desktop_aura/window_event_filter_linux.h" #include "ui/views/widget/widget.h" -DEFINE_UI_CLASS_PROPERTY_TYPE(views::DesktopWindowTreeHostLinux*) - namespace views { -std::list<gfx::AcceleratedWidget>* DesktopWindowTreeHostLinux::open_windows_ = - nullptr; - -DEFINE_UI_CLASS_PROPERTY_KEY(DesktopWindowTreeHostLinux*, - kHostForRootWindow, - nullptr) - namespace { class SwapWithNewSizeObserverHelper : public ui::CompositorObserver { @@ -72,48 +63,7 @@ : DesktopWindowTreeHostPlatform(native_widget_delegate, desktop_native_widget_aura) {} -DesktopWindowTreeHostLinux::~DesktopWindowTreeHostLinux() { - window()->ClearProperty(kHostForRootWindow); -} - -// static -aura::Window* DesktopWindowTreeHostLinux::GetContentWindowForWidget( - gfx::AcceleratedWidget widget) { - auto* host = DesktopWindowTreeHostLinux::GetHostForWidget(widget); - return host ? host->GetContentWindow() : nullptr; -} - -// static -DesktopWindowTreeHostLinux* DesktopWindowTreeHostLinux::GetHostForWidget( - gfx::AcceleratedWidget widget) { - aura::WindowTreeHost* host = - aura::WindowTreeHost::GetForAcceleratedWidget(widget); - return host ? host->window()->GetProperty(kHostForRootWindow) : nullptr; -} - -// static -std::vector<aura::Window*> DesktopWindowTreeHostLinux::GetAllOpenWindows() { - std::vector<aura::Window*> windows(open_windows().size()); - std::transform(open_windows().begin(), open_windows().end(), windows.begin(), - GetContentWindowForWidget); - return windows; -} - -// static -void DesktopWindowTreeHostLinux::CleanUpWindowList( - void (*func)(aura::Window* window)) { - if (!open_windows_) - return; - while (!open_windows_->empty()) { - gfx::AcceleratedWidget widget = open_windows_->front(); - func(GetContentWindowForWidget(widget)); - if (!open_windows_->empty() && open_windows_->front() == widget) - open_windows_->erase(open_windows_->begin()); - } - - delete open_windows_; - open_windows_ = nullptr; -} +DesktopWindowTreeHostLinux::~DesktopWindowTreeHostLinux() = default; void DesktopWindowTreeHostLinux::SetPendingXVisualId(int x_visual_id) { pending_x_visual_id_ = x_visual_id; @@ -156,8 +106,6 @@ void DesktopWindowTreeHostLinux::OnNativeWidgetCreated( const Widget::InitParams& params) { - window()->SetProperty(kHostForRootWindow, this); - CreateNonClientEventFilter(); DesktopWindowTreeHostPlatform::OnNativeWidgetCreated(params); } @@ -281,26 +229,10 @@ } void DesktopWindowTreeHostLinux::OnClosed() { - open_windows().remove(GetAcceleratedWidget()); DestroyNonClientEventFilter(); DesktopWindowTreeHostPlatform::OnClosed(); } -void DesktopWindowTreeHostLinux::OnAcceleratedWidgetAvailable( - gfx::AcceleratedWidget widget) { - open_windows().push_front(widget); - DesktopWindowTreeHostPlatform::OnAcceleratedWidgetAvailable(widget); -} - -void DesktopWindowTreeHostLinux::OnActivationChanged(bool active) { - if (active) { - auto widget = GetAcceleratedWidget(); - open_windows().remove(widget); - open_windows().insert(open_windows().begin(), widget); - } - DesktopWindowTreeHostPlatform::OnActivationChanged(active); -} - void DesktopWindowTreeHostLinux::AddAdditionalInitProperties( const Widget::InitParams& params, ui::PlatformWindowInitProperties* properties) { @@ -386,12 +318,6 @@ return static_cast<ui::PlatformWindowLinux*>(platform_window()); } -std::list<gfx::AcceleratedWidget>& DesktopWindowTreeHostLinux::open_windows() { - if (!open_windows_) - open_windows_ = new std::list<gfx::AcceleratedWidget>(); - return *open_windows_; -} - // As DWTHX11 subclasses DWTHPlatform through DWTHLinux now (during transition // period. see https://crbug.com/990756), we need to guard this factory method. // TODO(msisov): remove this guard once DWTHX11 is finally merged into
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h index 0dd3955..ceeabac 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h
@@ -35,23 +35,6 @@ DesktopNativeWidgetAura* desktop_native_widget_aura); ~DesktopWindowTreeHostLinux() override; - // A way of converting a |widget| into the content_window() - // of the associated DesktopNativeWidgetAura. - static aura::Window* GetContentWindowForWidget(gfx::AcceleratedWidget widget); - - // A way of converting a |widget| into this object. - static DesktopWindowTreeHostLinux* GetHostForWidget( - gfx::AcceleratedWidget widget); - - // Get all open top-level windows. This includes windows that may not be - // visible. This list is sorted in their stacking order, i.e. the first window - // is the topmost window. - static std::vector<aura::Window*> GetAllOpenWindows(); - - // Runs the |func| callback for each content-window, and deallocates the - // internal list of open windows. - static void CleanUpWindowList(void (*func)(aura::Window* window)); - // This must be called before the window is created, because the visual cannot // be changed after. Useful for X11. Not in use for Wayland. void SetPendingXVisualId(int x_visual_id); @@ -81,8 +64,6 @@ // PlatformWindowDelegateBase: void DispatchEvent(ui::Event* event) override; void OnClosed() override; - void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) override; - void OnActivationChanged(bool active) override; private: FRIEND_TEST_ALL_PREFIXES(DesktopWindowTreeHostLinuxTest, HitTest); @@ -113,9 +94,6 @@ const ui::PlatformWindowLinux* GetPlatformWindowLinux() const; ui::PlatformWindowLinux* GetPlatformWindowLinux(); - // See comment for variable open_windows_. - static std::list<gfx::AcceleratedWidget>& open_windows(); - // A handler for events intended for non client area. // A posthandler for events intended for non client area. Handles events if no // other consumer handled them. @@ -132,10 +110,6 @@ uint32_t modal_dialog_counter_ = 0; - // A list of all (top-level) windows that have been created but not yet - // destroyed. - static std::list<gfx::AcceleratedWidget>* open_windows_; - // The display and the native X window hosting the root window. base::WeakPtrFactory<DesktopWindowTreeHostLinux> weak_factory_{this};
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc index 3f3097b..cbcebb0 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
@@ -66,8 +66,18 @@ #include "ui/accessibility/platform/atk_util_auralinux.h" #endif +DEFINE_UI_CLASS_PROPERTY_TYPE(views::DesktopWindowTreeHostX11*) + namespace views { +std::list<XID>* DesktopWindowTreeHostX11::open_windows_ = nullptr; + +DEFINE_UI_CLASS_PROPERTY_KEY(aura::Window*, kViewsWindowForRootWindow, NULL) + +DEFINE_UI_CLASS_PROPERTY_KEY(DesktopWindowTreeHostX11*, + kHostForRootWindow, + NULL) + namespace { bool ShouldDiscardKeyEvent(XEvent* xev) { @@ -90,12 +100,35 @@ desktop_native_widget_aura) {} DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() { + window()->ClearProperty(kHostForRootWindow); wm::SetWindowMoveClient(window(), nullptr); // ~DWTHPlatform notifies the DestkopNativeWidgetAura about destruction and // also destroyes the dispatcher. } +// static +aura::Window* DesktopWindowTreeHostX11::GetContentWindowForXID(XID xid) { + aura::WindowTreeHost* host = + aura::WindowTreeHost::GetForAcceleratedWidget(xid); + return host ? host->window()->GetProperty(kViewsWindowForRootWindow) : NULL; +} + +// static +DesktopWindowTreeHostX11* DesktopWindowTreeHostX11::GetHostForXID(XID xid) { + aura::WindowTreeHost* host = + aura::WindowTreeHost::GetForAcceleratedWidget(xid); + return host ? host->window()->GetProperty(kHostForRootWindow) : nullptr; +} + +// static +std::vector<aura::Window*> DesktopWindowTreeHostX11::GetAllOpenWindows() { + std::vector<aura::Window*> windows(open_windows().size()); + std::transform(open_windows().begin(), open_windows().end(), windows.begin(), + GetContentWindowForXID); + return windows; +} + void DesktopWindowTreeHostX11::AddObserver( DesktopWindowTreeHostObserverX11* observer) { observer_list_.AddObserver(observer); @@ -106,6 +139,21 @@ observer_list_.RemoveObserver(observer); } +void DesktopWindowTreeHostX11::CleanUpWindowList( + void (*func)(aura::Window* window)) { + if (!open_windows_) + return; + while (!open_windows_->empty()) { + gfx::AcceleratedWidget widget = open_windows_->front(); + func(GetContentWindowForXID(widget)); + if (!open_windows_->empty() && open_windows_->front() == widget) + open_windows_->erase(open_windows_->begin()); + } + + delete open_windows_; + open_windows_ = nullptr; +} + //////////////////////////////////////////////////////////////////////////////// // DesktopWindowTreeHostX11, DesktopWindowTreeHost implementation: @@ -123,6 +171,9 @@ void DesktopWindowTreeHostX11::OnNativeWidgetCreated( const Widget::InitParams& params) { + window()->SetProperty(kViewsWindowForRootWindow, GetContentWindow()); + window()->SetProperty(kHostForRootWindow, this); + // Ensure that the X11DesktopHandler exists so that it tracks create/destroy // notify events. X11DesktopHandler::get(); @@ -163,8 +214,41 @@ } //////////////////////////////////////////////////////////////////////////////// +// DesktopWindowTreeHostX11, private: + +std::list<gfx::AcceleratedWidget>& DesktopWindowTreeHostX11::open_windows() { + if (!open_windows_) + open_windows_ = new std::list<gfx::AcceleratedWidget>(); + return *open_windows_; +} + +//////////////////////////////////////////////////////////////////////////////// // DesktopWindowTreeHostX11 implementation: +void DesktopWindowTreeHostX11::OnClosed() { + open_windows().remove(GetAcceleratedWidget()); + DesktopWindowTreeHostLinux::OnClosed(); +} + +void DesktopWindowTreeHostX11::OnAcceleratedWidgetAvailable( + gfx::AcceleratedWidget widget) { + open_windows().push_front(widget); + WindowTreeHostPlatform::OnAcceleratedWidgetAvailable(widget); +} + +void DesktopWindowTreeHostX11::OnAcceleratedWidgetDestroyed() {} + +void DesktopWindowTreeHostX11::OnActivationChanged(bool active) { + if (active) { + // TODO(thomasanderson): Remove this window shuffling and use XWindowCache + // instead. + auto widget = GetAcceleratedWidget(); + open_windows().remove(widget); + open_windows().insert(open_windows().begin(), widget); + } + DesktopWindowTreeHostPlatform::OnActivationChanged(active); +} + void DesktopWindowTreeHostX11::OnXWindowMapped() { for (DesktopWindowTreeHostObserverX11& observer : observer_list_) observer.OnWindowMapped(GetXWindow()->window());
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h index 4f4263c7..e641d8b 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
@@ -44,9 +44,25 @@ DesktopNativeWidgetAura* desktop_native_widget_aura); ~DesktopWindowTreeHostX11() override; + // A way of converting an X11 |xid| host window into the content_window() + // of the associated DesktopNativeWidgetAura. + static aura::Window* GetContentWindowForXID(XID xid); + + // A way of converting an X11 |xid| host window into this object. + static DesktopWindowTreeHostX11* GetHostForXID(XID xid); + + // Get all open top-level windows. This includes windows that may not be + // visible. This list is sorted in their stacking order, i.e. the first window + // is the topmost window. + static std::vector<aura::Window*> GetAllOpenWindows(); + void AddObserver(DesktopWindowTreeHostObserverX11* observer); void RemoveObserver(DesktopWindowTreeHostObserverX11* observer); + // Runs the |func| callback for each content-window, and deallocates the + // internal list of open windows. + static void CleanUpWindowList(void (*func)(aura::Window* window)); + protected: // Overridden from DesktopWindowTreeHost: void Init(const Widget::InitParams& params) override; @@ -62,11 +78,18 @@ private: friend class DesktopWindowTreeHostX11HighDPITest; + // See comment for variable open_windows_. + static std::list<XID>& open_windows(); + // PlatformWindowDelegate overrides: // // DWTHX11 temporarily overrides the PlatformWindowDelegate methods instead of // underlying DWTHPlatform and WTHPlatform. Eventually, these will be removed // from here as we progress in https://crbug.com/990756. + void OnClosed() override; + void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) override; + void OnAcceleratedWidgetDestroyed() override; + void OnActivationChanged(bool active) override; void OnXWindowMapped() override; void OnXWindowUnmapped() override; @@ -88,6 +111,10 @@ base::ObserverList<DesktopWindowTreeHostObserverX11>::Unchecked observer_list_; + // A list of all (top-level) windows that have been created but not yet + // destroyed. + static std::list<gfx::AcceleratedWidget>* open_windows_; + // The display and the native X window hosting the root window. base::WeakPtrFactory<DesktopWindowTreeHostX11> weak_factory_{this};
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc index 1c43e58..f82417b 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc
@@ -454,7 +454,7 @@ ASSERT_NE(parent_widget.GetNativeWindow()->GetHost()->GetAcceleratedWidget(), child_widget.GetNativeWindow()->GetHost()->GetAcceleratedWidget()); Widget::CloseAllSecondaryWidgets(); - EXPECT_TRUE(DesktopWindowTreeHostLinux::GetAllOpenWindows().empty()); + EXPECT_TRUE(DesktopWindowTreeHostX11::GetAllOpenWindows().empty()); } // A Widget that allows setting the min/max size for the widget.
diff --git a/ui/views/widget/desktop_aura/x11_topmost_window_finder.cc b/ui/views/widget/desktop_aura/x11_topmost_window_finder.cc index 670b2e1..4ef8e358e 100644 --- a/ui/views/widget/desktop_aura/x11_topmost_window_finder.cc +++ b/ui/views/widget/desktop_aura/x11_topmost_window_finder.cc
@@ -23,7 +23,7 @@ ignore_ = ignore; std::vector<aura::Window*> local_process_windows = - DesktopWindowTreeHostLinux::GetAllOpenWindows(); + DesktopWindowTreeHostX11::GetAllOpenWindows(); if (std::none_of(local_process_windows.cbegin(), local_process_windows.cend(), [this](auto* window) { return ShouldStopIteratingAtLocalProcessWindow(window); @@ -31,8 +31,7 @@ return nullptr; ui::EnumerateTopLevelWindows(this); - return DesktopWindowTreeHostLinux::GetContentWindowForWidget( - static_cast<gfx::AcceleratedWidget>(toplevel_)); + return DesktopWindowTreeHostX11::GetContentWindowForXID(toplevel_); } XID X11TopmostWindowFinder::FindWindowAt( @@ -46,8 +45,8 @@ if (!ui::IsWindowVisible(xid)) return false; - auto* window = DesktopWindowTreeHostLinux::GetContentWindowForWidget( - static_cast<gfx::AcceleratedWidget>(xid)); + aura::Window* window = + views::DesktopWindowTreeHostX11::GetContentWindowForXID(xid); if (window) { if (ShouldStopIteratingAtLocalProcessWindow(window)) { toplevel_ = xid; @@ -73,11 +72,9 @@ if (!window->IsVisible()) return false; - auto* host = DesktopWindowTreeHostLinux::GetHostForWidget( + DesktopWindowTreeHostX11* host = DesktopWindowTreeHostX11::GetHostForXID( window->GetHost()->GetAcceleratedWidget()); - if (!static_cast<DesktopWindowTreeHostX11*>(host) - ->GetXRootWindowOuterBounds() - .Contains(screen_loc_in_pixels_)) + if (!host->GetXRootWindowOuterBounds().Contains(screen_loc_in_pixels_)) return false; aura::client::ScreenPositionClient* screen_position_client =
diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc index 0769f9b6..894b80a 100644 --- a/ui/views/widget/native_widget_aura.cc +++ b/ui/views/widget/native_widget_aura.cc
@@ -59,7 +59,7 @@ #include "ui/views/widget/desktop_aura/desktop_window_tree_host_win.h" #endif -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) +#if defined(USE_X11) #include "ui/views/linux_ui/linux_ui.h" #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" #endif @@ -1065,7 +1065,7 @@ // Widget, public: namespace { -#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) +#if defined(OS_WIN) || defined(USE_X11) void CloseWindow(aura::Window* window) { if (window) { Widget* widget = Widget::GetWidgetForNativeView(window); @@ -1095,13 +1095,13 @@ EnumThreadWindows(GetCurrentThreadId(), WindowCallbackProc, 0); #endif -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) - DesktopWindowTreeHostLinux::CleanUpWindowList(CloseWindow); +#if defined(USE_X11) + DesktopWindowTreeHostX11::CleanUpWindowList(CloseWindow); #endif } const ui::NativeTheme* Widget::GetNativeTheme() const { -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) +#if defined(USE_X11) const LinuxUI* linux_ui = LinuxUI::instance(); if (linux_ui) { ui::NativeTheme* native_theme =
diff --git a/weblayer/app/content_main_delegate_impl.cc b/weblayer/app/content_main_delegate_impl.cc index 287761e..94798ce6 100644 --- a/weblayer/app/content_main_delegate_impl.cc +++ b/weblayer/app/content_main_delegate_impl.cc
@@ -7,7 +7,6 @@ #include <iostream> #include "base/base_switches.h" -#include "base/command_line.h" #include "base/cpu.h" #include "base/lazy_instance.h" #include "base/logging.h" @@ -23,12 +22,8 @@ #if defined(OS_ANDROID) #include "base/android/apk_assets.h" -#include "base/android/locale_utils.h" -#include "base/i18n/rtl.h" #include "base/posix/global_descriptors.h" #include "content/public/browser/android/compositor.h" -#include "ui/base/resource/resource_bundle_android.h" -#include "ui/base/ui_base_switches.h" #include "weblayer/browser/android_descriptors.h" #endif @@ -123,49 +118,34 @@ void ContentMainDelegateImpl::InitializeResourceBundle() { #if defined(OS_ANDROID) - const base::CommandLine& command_line = - *base::CommandLine::ForCurrentProcess(); - - bool is_browser_process = - command_line.GetSwitchValueASCII(switches::kProcessType).empty(); - if (is_browser_process) { - ui::SetLocalePaksStoredInApk(true); - std::string locale = ui::ResourceBundle::InitSharedInstanceWithLocale( - base::android::GetDefaultLocaleString(), nullptr, - ui::ResourceBundle::LOAD_COMMON_RESOURCES); - if (locale.empty()) { - LOG(WARNING) << "Failed to load locale .pak from apk."; - } - base::i18n::SetICUDefaultLocale(locale); - - // Try to directly mmap the resources.pak from the apk. Fall back to load - // from file, using PATH_SERVICE, otherwise. - base::FilePath pak_file_path; - base::PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &pak_file_path); - pak_file_path = pak_file_path.AppendASCII("resources.pak"); - ui::LoadMainAndroidPackFile("assets/resources.pak", pak_file_path); + // On Android, the renderer runs with a different UID and can never access + // the file system. Use the file descriptor passed in at launch time. + auto* global_descriptors = base::GlobalDescriptors::GetInstance(); + int pak_fd = global_descriptors->MaybeGet(kPakDescriptor); + base::MemoryMappedFile::Region pak_region; + if (pak_fd >= 0) { + pak_region = global_descriptors->GetRegion(kPakDescriptor); } else { - base::i18n::SetICUDefaultLocale( - command_line.GetSwitchValueASCII(switches::kLang)); - - auto* global_descriptors = base::GlobalDescriptors::GetInstance(); - int pak_fd = global_descriptors->Get(kWebLayerLocalePakDescriptor); - base::MemoryMappedFile::Region pak_region = - global_descriptors->GetRegion(kWebLayerLocalePakDescriptor); - ui::ResourceBundle::InitSharedInstanceWithPakFileRegion(base::File(pak_fd), - pak_region); - - std::pair<int, ui::ScaleFactor> extra_paks[] = { - {kWebLayerMainPakDescriptor, ui::SCALE_FACTOR_NONE}, - {kWebLayer100PercentPakDescriptor, ui::SCALE_FACTOR_100P}}; - - for (const auto& pak_info : extra_paks) { - pak_fd = global_descriptors->Get(pak_info.first); - pak_region = global_descriptors->GetRegion(pak_info.first); - ui::ResourceBundle::GetSharedInstance().AddDataPackFromFileRegion( - base::File(pak_fd), pak_region, pak_info.second); + pak_fd = base::android::OpenApkAsset( + std::string("assets/") + params_.pak_name, &pak_region); + if (pak_fd < 0) { + base::FilePath pak_file; + bool r = base::PathService::Get(base::DIR_ANDROID_APP_DATA, &pak_file); + DCHECK(r); + pak_file = pak_file.Append(FILE_PATH_LITERAL("paks")); + pak_file = pak_file.AppendASCII(params_.pak_name); + int flags = base::File::FLAG_OPEN | base::File::FLAG_READ; + pak_fd = base::File(pak_file, flags).TakePlatformFile(); + pak_region = base::MemoryMappedFile::Region::kWholeFile; } + global_descriptors->Set(kPakDescriptor, pak_fd, pak_region); } + DCHECK_GE(pak_fd, 0); + // This is clearly wrong. See crbug.com/330930 + ui::ResourceBundle::InitSharedInstanceWithPakFileRegion(base::File(pak_fd), + pak_region); + ui::ResourceBundle::GetSharedInstance().AddDataPackFromFileRegion( + base::File(pak_fd), pak_region, ui::SCALE_FACTOR_100P); #else base::FilePath pak_file; bool r = base::PathService::Get(base::DIR_ASSETS, &pak_file);
diff --git a/weblayer/app/entry_point.cc b/weblayer/app/entry_point.cc index 2b8535d..b2cac033 100644 --- a/weblayer/app/entry_point.cc +++ b/weblayer/app/entry_point.cc
@@ -9,7 +9,7 @@ namespace { bool NativeInit(base::android::LibraryProcessType) { - return weblayer::OnJNIOnLoadInit(); + return weblayer::OnJNIOnLoadInit("weblayer_support.pak"); } } // namespace
diff --git a/weblayer/app/jni_onload.cc b/weblayer/app/jni_onload.cc index ed5d3b6..154438c 100644 --- a/weblayer/app/jni_onload.cc +++ b/weblayer/app/jni_onload.cc
@@ -18,11 +18,12 @@ }; // This is called by the VM when the shared library is first loaded. -bool OnJNIOnLoadInit() { +bool OnJNIOnLoadInit(const std::string& pak_name) { if (!content::android::OnJNIOnLoadInit()) return false; weblayer::MainParams params; params.delegate = new weblayer::MainDelegateImpl; + params.pak_name = pak_name; params.brand = "WebLayer"; base::android::SetVersionNumber(PRODUCT_VERSION);
diff --git a/weblayer/app/jni_onload.h b/weblayer/app/jni_onload.h index 5b05b04e..520c6e5 100644 --- a/weblayer/app/jni_onload.h +++ b/weblayer/app/jni_onload.h
@@ -9,7 +9,7 @@ namespace weblayer { -bool OnJNIOnLoadInit(); +bool OnJNIOnLoadInit(const std::string& pak_name); } // namespace weblayer
diff --git a/weblayer/browser/android_descriptors.h b/weblayer/browser/android_descriptors.h index 55b17fc..f6f5252 100644 --- a/weblayer/browser/android_descriptors.h +++ b/weblayer/browser/android_descriptors.h
@@ -12,9 +12,7 @@ // This is a list of global descriptor keys to be used with the // base::GlobalDescriptors object (see base/posix/global_descriptors.h) enum { - kWebLayerLocalePakDescriptor = kContentIPCDescriptorMax + 1, - kWebLayerMainPakDescriptor, - kWebLayer100PercentPakDescriptor, + kPakDescriptor = kContentIPCDescriptorMax + 1, }; } // namespace weblayer
diff --git a/weblayer/browser/browser_controller_impl.cc b/weblayer/browser/browser_controller_impl.cc index 008165e..4be05e6c 100644 --- a/weblayer/browser/browser_controller_impl.cc +++ b/weblayer/browser/browser_controller_impl.cc
@@ -237,7 +237,7 @@ // If |processing_enter_fullscreen_| is true, it means the callback is being // called while processing EnterFullscreenModeForTab(). WebContents doesn't // deal well with this. FATAL as Android generally doesn't run with DCHECKs. - LOG_IF(FATAL, processing_enter_fullscreen_) + LOG_IF(FATAL, !processing_enter_fullscreen_) << "exiting fullscreen while entering fullscreen is not supported"; web_contents_->ExitFullscreen(/* will_cause_resize */ false); }
diff --git a/weblayer/browser/content_browser_client_impl.cc b/weblayer/browser/content_browser_client_impl.cc index e13b80b..114469f0 100644 --- a/weblayer/browser/content_browser_client_impl.cc +++ b/weblayer/browser/content_browser_client_impl.cc
@@ -31,8 +31,8 @@ #include "weblayer/public/main.h" #if defined(OS_ANDROID) +#include "base/android/apk_assets.h" #include "base/android/path_utils.h" -#include "ui/base/resource/resource_bundle_android.h" #include "weblayer/browser/android_descriptors.h" #endif @@ -141,15 +141,10 @@ int child_process_id, content::PosixFileDescriptorInfo* mappings) { #if defined(OS_ANDROID) - base::MemoryMappedFile::Region region; - int fd = ui::GetMainAndroidPackFd(®ion); - mappings->ShareWithRegion(kWebLayerMainPakDescriptor, fd, region); - - fd = ui::GetCommonResourcesPackFd(®ion); - mappings->ShareWithRegion(kWebLayer100PercentPakDescriptor, fd, region); - - fd = ui::GetLocalePackFd(®ion); - mappings->ShareWithRegion(kWebLayerLocalePakDescriptor, fd, region); + mappings->ShareWithRegion( + kPakDescriptor, + base::GlobalDescriptors::GetInstance()->Get(kPakDescriptor), + base::GlobalDescriptors::GetInstance()->GetRegion(kPakDescriptor)); #endif } #endif // defined(OS_LINUX) || defined(OS_ANDROID)
diff --git a/weblayer/browser/java/BUILD.gn b/weblayer/browser/java/BUILD.gn index 8fc8ae14..f1f772a 100644 --- a/weblayer/browser/java/BUILD.gn +++ b/weblayer/browser/java/BUILD.gn
@@ -4,17 +4,12 @@ import("//build/config/android/config.gni") import("//build/config/android/rules.gni") -import("//weblayer/variables.gni") android_resources("weblayer_resources") { resource_dirs = [] custom_package = "org.chromium.weblayer_private" } -generate_locale_config_srcjar("weblayer_locale_config") { - java_package = weblayer_locale_config_java_package -} - android_library("java") { java_files = [ "org/chromium/weblayer_private/BrowserControllerImpl.java", @@ -42,8 +37,6 @@ "//content/public/android:content_java", "//ui/android:ui_java", ] - srcjar_deps = [ ":weblayer_locale_config" ] - jar_excluded_patterns = [ "*/LocaleConfig.class" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java index 069eaca8..80a7811 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java
@@ -60,7 +60,7 @@ Context context = ObjectWrapper.unwrap(webLayerContextWrapper, Context.class); ContextUtils.initApplicationContext(context); - ResourceBundle.setAvailablePakLocales(new String[] {}, LocaleConfig.UNCOMPRESSED_LOCALES); + ResourceBundle.setNoAvailableLocalePaks(); PathUtils.setPrivateDataDirectorySuffix(PRIVATE_DATA_DIRECTORY_SUFFIX); ChildProcessCreationParams.set(context.getPackageName(), false /* isExternalService */,
diff --git a/weblayer/public/java/org/chromium/weblayer/BrowserController.java b/weblayer/public/java/org/chromium/weblayer/BrowserController.java index 3af8ac8..ff1aa7c 100644 --- a/weblayer/public/java/org/chromium/weblayer/BrowserController.java +++ b/weblayer/public/java/org/chromium/weblayer/BrowserController.java
@@ -40,7 +40,6 @@ mImpl.setFullscreenDelegateClient(mFullscreenDelegateClient); } else { mImpl.setFullscreenDelegateClient(null); - mFullscreenDelegateClient = null; } } catch (RemoteException e) { throw new APICallException(e);
diff --git a/weblayer/shell/android/BUILD.gn b/weblayer/shell/android/BUILD.gn index a91ee77..1ff9881 100644 --- a/weblayer/shell/android/BUILD.gn +++ b/weblayer/shell/android/BUILD.gn
@@ -7,7 +7,6 @@ import("//build/config/android/rules.gni") import("//third_party/icu/config.gni") import("//tools/v8_context_snapshot/v8_context_snapshot.gni") -import("//weblayer/variables.gni") android_assets("weblayer_shell_assets") { testonly = true @@ -207,14 +206,30 @@ output = weblayer_support_manifest } +android_assets("weblayer_support_assets") { + testonly = true + + sources = [ + "$root_out_dir/weblayer_support.pak", + ] + disable_compression = true + deps = [ + "//third_party/icu:icu_assets", + "//weblayer/shell:support_pak", + ] + if (use_v8_context_snapshot) { + deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ] + } else { + deps += [ "//v8:v8_external_startup_data_assets" ] + } +} + android_apk("weblayer_support_apk") { testonly = true deps = [ + ":weblayer_support_assets", ":weblayer_support_manifest", - "//android_webview:locale_pak_assets", - "//android_webview:monochrome_webview_assets", - "//android_webview:pak_file_assets", "//base:base_java", "//weblayer/browser/java", ] @@ -234,8 +249,6 @@ android_manifest_dep = ":weblayer_support_manifest" shared_resources = true - locale_config_java_packages = [ weblayer_locale_config_java_package ] - native_lib_version_rule = "//build/util:chrome_version_json" _native_lib_file = rebase_path("$root_gen_dir/CHROME_VERSION.json", root_build_dir) @@ -252,13 +265,10 @@ deps = [ "//base:base_java_test_support", "//content/public/test/android:content_java_test_support", - "//net/android:net_java_test_support", "//third_party/android_support_test_runner:runner_java", ] java_files = [ "javatests/src/org/chromium/weblayer/test/BrowserObserverTest.java", - "javatests/src/org/chromium/weblayer/test/EventUtils.java", - "javatests/src/org/chromium/weblayer/test/FullscreenDelegateTest.java", "javatests/src/org/chromium/weblayer/test/NavigationTest.java", "javatests/src/org/chromium/weblayer/test/SmokeTest.java", "javatests/src/org/chromium/weblayer/test/RenderingTest.java", @@ -266,11 +276,5 @@ "javatests/src/org/chromium/weblayer/test/FragmentRestoreTest.java", "shell_apk/src/org/chromium/weblayer/shell/WebLayerShellActivity.java", ] - additional_apks = [ - "//weblayer/shell/android:weblayer_support_apk", - "//net/android:net_test_support_apk", - ] - data = [ - "//weblayer/test/data/", - ] + additional_apks = [ "//weblayer/shell/android:weblayer_support_apk" ] }
diff --git a/weblayer/shell/android/javatests/src/org/chromium/weblayer/test/EventUtils.java b/weblayer/shell/android/javatests/src/org/chromium/weblayer/test/EventUtils.java deleted file mode 100644 index 5a4485d3..0000000 --- a/weblayer/shell/android/javatests/src/org/chromium/weblayer/test/EventUtils.java +++ /dev/null
@@ -1,31 +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. - -package org.chromium.weblayer.test; - -import android.os.SystemClock; -import android.view.MotionEvent; -import android.view.View; - -/** - * Utilities related to event generation. - */ -public final class EventUtils { - private EventUtils() {} - - /** - * Asynchronously posts a touch-down and touch-up event at the center of the supplied View. - */ - public static void simulateTouchCenterOfView(final View view) { - view.post(() -> { - long eventTime = SystemClock.uptimeMillis(); - float x = (float) (view.getRight() - view.getLeft()) / 2; - float y = (float) (view.getBottom() - view.getTop()) / 2; - view.dispatchTouchEvent( - MotionEvent.obtain(eventTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0)); - view.dispatchTouchEvent( - MotionEvent.obtain(eventTime, eventTime, MotionEvent.ACTION_UP, x, y, 0)); - }); - } -}
diff --git a/weblayer/shell/android/javatests/src/org/chromium/weblayer/test/FullscreenDelegateTest.java b/weblayer/shell/android/javatests/src/org/chromium/weblayer/test/FullscreenDelegateTest.java deleted file mode 100644 index 0da8e976..0000000 --- a/weblayer/shell/android/javatests/src/org/chromium/weblayer/test/FullscreenDelegateTest.java +++ /dev/null
@@ -1,126 +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. - -package org.chromium.weblayer.test; - -import android.support.test.InstrumentationRegistry; -import android.support.test.filters.SmallTest; - -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.chromium.base.test.BaseJUnit4ClassRunner; -import org.chromium.content_public.browser.test.util.Criteria; -import org.chromium.content_public.browser.test.util.CriteriaHelper; -import org.chromium.content_public.browser.test.util.TestThreadUtils; -import org.chromium.net.test.EmbeddedTestServer; -import org.chromium.weblayer.FullscreenDelegate; -import org.chromium.weblayer.shell.WebLayerShellActivity; - -/** - * Tests that FullscreenDelegate methods are invoked as expected. - */ -@RunWith(BaseJUnit4ClassRunner.class) -public class FullscreenDelegateTest { - @Rule - public WebLayerShellActivityTestRule mActivityTestRule = new WebLayerShellActivityTestRule(); - - private EmbeddedTestServer mTestServer; - private WebLayerShellActivity mActivity; - private Delegate mDelegate; - - private static class Delegate extends FullscreenDelegate { - public int mEnterFullscreenCount; - public int mExitFullscreenCount; - public Runnable mExitFullscreenRunnable; - - @Override - public void enterFullscreen(Runnable exitFullscreenRunner) { - mEnterFullscreenCount++; - mExitFullscreenRunnable = exitFullscreenRunner; - } - - @Override - public void exitFullscreen() { - mExitFullscreenCount++; - } - - public void waitForFullscreen() { - CriteriaHelper.pollInstrumentationThread(new Criteria() { - @Override - public boolean isSatisfied() { - return mEnterFullscreenCount == 1; - } - }, CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL, CriteriaHelper.DEFAULT_POLLING_INTERVAL); - } - - public void waitForExitFullscreen() { - CriteriaHelper.pollInstrumentationThread(new Criteria() { - @Override - public boolean isSatisfied() { - return mExitFullscreenCount == 1; - } - }, CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL, CriteriaHelper.DEFAULT_POLLING_INTERVAL); - } - } - - @Before - public void setUp() { - mTestServer = new EmbeddedTestServer(); - mTestServer.initializeNative(InstrumentationRegistry.getInstrumentation().getContext(), - EmbeddedTestServer.ServerHTTPSSetting.USE_HTTP); - mTestServer.addDefaultHandlers("weblayer/test/data"); - Assert.assertTrue(mTestServer.start(0)); - - String url = mTestServer.getURL("/fullscreen.html"); - mActivity = mActivityTestRule.launchShellWithUrl(url); - Assert.assertNotNull(mActivity); - mActivityTestRule.waitForNavigation(url); - mDelegate = new Delegate(); - TestThreadUtils.runOnUiThreadBlocking( - () -> { mActivity.getBrowserController().setFullscreenDelegate(mDelegate); }); - - // First touch enters fullscreen. - EventUtils.simulateTouchCenterOfView(mActivity.getWindow().getDecorView()); - mDelegate.waitForFullscreen(); - Assert.assertEquals(1, mDelegate.mEnterFullscreenCount); - } - - @After - public void tearDown() { - mTestServer.stopAndDestroyServer(); - } - - @Test - @SmallTest - public void testFullscreen() { - // Second touch exits. - EventUtils.simulateTouchCenterOfView(mActivity.getWindow().getDecorView()); - mDelegate.waitForExitFullscreen(); - Assert.assertEquals(1, mDelegate.mExitFullscreenCount); - } - - @Test - @SmallTest - public void testExitFullscreenWhenDelegateCleared() { - // Clearing the FullscreenDelegate should exit fullscreen. - TestThreadUtils.runOnUiThreadBlocking( - () -> { mActivity.getBrowserController().setFullscreenDelegate(null); }); - mDelegate.waitForExitFullscreen(); - Assert.assertEquals(1, mDelegate.mExitFullscreenCount); - } - - @Test - @SmallTest - public void testExitFullscreenUsingRunnable() { - // Running the runnable supplied to the delegate should exit fullscreen. - TestThreadUtils.runOnUiThreadBlocking(mDelegate.mExitFullscreenRunnable); - mDelegate.waitForExitFullscreen(); - Assert.assertEquals(1, mDelegate.mExitFullscreenCount); - } -}
diff --git a/weblayer/test/data/fullscreen.html b/weblayer/test/data/fullscreen.html deleted file mode 100644 index c27289ab..0000000 --- a/weblayer/test/data/fullscreen.html +++ /dev/null
@@ -1,15 +0,0 @@ -<html> - <body> - <p id='x'></p> - </body> - <script> - function toggleFullscreen() { - if (!document.fullscreenElement) { - document.getElementById('x').requestFullscreen(); - } else { - document.exitFullscreen(); - } - } - document.addEventListener('touchstart', function(e) { toggleFullscreen(); }, false); - </script> -</html>
diff --git a/weblayer/variables.gni b/weblayer/variables.gni deleted file mode 100644 index ea0cbdb1..0000000 --- a/weblayer/variables.gni +++ /dev/null
@@ -1,5 +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. - -weblayer_locale_config_java_package = "org.chromium.weblayer_private"